@codeflow-ai/cli 1.11.1 → 1.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +15 -0
  2. package/dist/cli.js +20 -20
  3. package/package.json +1 -1
package/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # CodeFlow CLI
2
+
3
+ CodeFlow 命令行客户端:自动创建令牌并写入 AI 客户端配置,支持切换分组、切换接入线路、查看余额与用量
4
+
5
+ ## 安装
6
+
7
+ ```sh
8
+ npm install -g @codeflow-ai/cli
9
+ ```
10
+
11
+ ## 启动
12
+
13
+ ```sh
14
+ codeflow
15
+ ```
package/dist/cli.js CHANGED
@@ -1,31 +1,31 @@
1
1
  #!/usr/bin/env node
2
- import{once as Yb}from"events";import{createInterface as Qb}from"readline/promises";import{parseArgs as Xb}from"util";var Js={name:"@codeflow-ai/cli",version:"1.11.1",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 lt="codeflow",ut=Js.version,Ys="https://codeflow.asia",In="@codeflow-ai/cli",ro=0,Ln=1,mi=2,cn=3,Qs=4;import{randomBytes as Ed}from"crypto";import{mkdirSync as ta,readFileSync as Pd,rmSync as na,statSync as Ad,writeFileSync as Nd}from"fs";import{join as oa}from"path";import{setTimeout as Id}from"timers/promises";import{z as xt}from"zod";var U=class extends Error{exitCode;hint;constructor(t,o={}){super(t,{cause:o.cause}),this.name="CliError",this.exitCode=o.exitCode??Ln,this.hint=o.hint}};function Ue(e){return e instanceof Error?e.message:String(e)}import{chmodSync as Td,existsSync as wd,mkdirSync as kd,readFileSync as vd,writeFileSync as Rd}from"fs";import{dirname as _d}from"path";function Mn(e){return wd(e)?vd(e,"utf8"):null}function di(e,t,o){kd(_d(e),{recursive:!0,mode:448});try{Rd(e,t,{mode:o}),Td(e,o)}catch(n){throw new U(`\u5199\u5165 ${e} \u5931\u8D25\uFF1A${Ue(n)}`,{cause:n})}}function Ho(e){let t=Mn(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 Wo(e,t,o){di(e,`${JSON.stringify(t,null,2)}
3
- `,o)}function zo(e,t,o,n){let r=null,i=()=>{if(r)return r;let s=t(),a=Mn(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),Wo(t(),a,384),r=a,a}}}import{homedir as Cd}from"os";import{join as On}from"path";function Ft(){let e=process.env.XDG_CONFIG_HOME;if(e)return On(e,"codeflow");if(process.platform==="win32"){let t=process.env.APPDATA;if(t)return On(t,"codeflow")}return On(Cd(),".config","codeflow")}var Xs=()=>On(Ft(),"config.json"),Zs=()=>On(Ft(),"credentials.json"),ea=()=>On(Ft(),"refresh.lock");var Ld=xt.object({refreshCookie:xt.string(),accessToken:xt.string(),accessExpiresAt:xt.number(),username:xt.string(),email:xt.string(),site:xt.string()}),Md=xt.object({site:xt.string(),cookie:xt.string()}),Od=xt.object({session:Ld.nullable().default(null),device:Md.nullable().default(null)}),pi=zo(Od,Zs,"\u672C\u5730\u51ED\u636E","\u91CD\u65B0\u767B\u5F55"),Tt=pi.load,ra=pi.reload,fi=pi.update;function ia(){let{session:e}=Tt();if(!e)throw new U("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:cn});return e}var Dd=6e4,$d=75e3,Bd=120;function Fd(e,t){try{ta(e)}catch{try{Date.now()-Ad(e).mtimeMs>Dd&&na(e,{recursive:!0,force:!0})}catch{}return!1}return Nd(oa(e,"owner"),t),!0}function Ud(e,t){let o;try{o=Pd(oa(e,"owner"),"utf8")}catch{return}o===t&&na(e,{recursive:!0,force:!0})}async function sa(e){let t=ea(),o=Ed(16).toString("hex");ta(Ft(),{recursive:!0,mode:448});let n=Date.now()+$d;for(;!Fd(t,o);){if(Date.now()>n)throw new U(`\u7B49\u5F85\u5237\u65B0\u9501\u8D85\u65F6\uFF0C\u82E5\u786E\u8BA4\u6CA1\u6709\u5176\u4ED6 ${lt} \u5728\u8FD0\u884C\uFF0C\u8BF7\u5220\u9664 ${t}`);await Id(Bd)}try{return await e()}finally{Ud(t,o)}}function jd(){let e=process.env.CODEFLOW_SITE;if(e)return e;let t=Tt().session;return t?t.site:Ys}function aa(){return{site:jd()}}function io(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 Pp,rmSync as Ap}from"fs";import{z as Le}from"zod";var qd=["active","disabled"],My=Le.enum(qd),Hd=["openai","anthropic"],Oy=Le.enum(Hd),Wd=["openai-chat","openai-responses","anthropic-messages"],ca=Le.enum(Wd);var zd=["enabled","auto_disabled","disabled"],Dy=Le.enum(zd),so=["pending","paid","refund_requested","partially_refunded","refunded","failed","expired"],la=Le.enum(so),Gd=["recharge","subscription"],$y=Le.enum(Gd),Vd=["requested","pending","succeeded","failed","rejected","canceled"],ua=Le.enum(Vd),gi=["pending","issued","rejected"],ma=Le.enum(gi),Kd=["special","general"],hi=Le.enum(Kd),Jd=["info","success","warning","error"],da=Le.enum(Jd),Yd=["terms","privacy"],By=Le.enum(Yd),bi=["recharge","reserve","consume","reserve_refund","refund","refund_release","reward","admin_adjust"],pa=Le.enum(bi),Qd=["usage_log","order","invitation","admin"],fa=Le.enum(Qd),yi=["first_inviter","first_invitee","subsequent_inviter"],ga=Le.enum(yi),Si=["success","error","canceled","anomaly"],ha=Le.enum(Si),xi=["open","replied","closed"],ba=Le.enum(xi),Ti=["billing","technical","account","other"],ya=Le.enum(Ti),wi=["low","normal","high"],Sa=Le.enum(wi),Xd=["user","admin"],xa=Le.enum(Xd);import{z as Dn}from"zod";var Zd=["internal_error","validation_error","not_found","conflict","model_in_use","model_in_plan","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"],ep=Dn.enum(Zd),Ta=Dn.object({error:Dn.object({code:ep,message:Dn.string(),details:Dn.unknown().optional(),requestId:Dn.string().optional()})});var wa={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",model_in_plan:"\u8BE5\u6A21\u578B\u4ECD\u88AB\u8BA2\u9605\u5957\u9910\u9650\u5B9A\u4F7F\u7528\uFF0C\u8BF7\u5148\u5728\u5957\u9910\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\u5DF2\u65E0\u53EF\u9000\u7684\u5269\u4F59\u65F6\u957F",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 le}from"zod";var tp=le.string().trim().min(1),ki=tp.pipe(le.url()),np=le.object({name:le.string().trim().min(1).max(64),description:le.string().trim().min(1).max(200),url:ki}),ka=le.array(np),op=["string","number","boolean","secret","markdown","money","api-lines","origins"],rp=le.enum(op),ip=le.object({key:le.string(),type:rp,label:le.string(),description:le.string().optional(),value:le.unknown().optional(),secret:le.boolean().default(!1),required:le.boolean().default(!1),min:le.number().optional(),max:le.number().optional(),step:le.number().optional(),unit:le.string().optional(),placeholder:le.string().optional()}),Wy=le.object({key:le.string(),label:le.string(),description:le.string().optional(),fields:le.array(ip)}),zy=le.object({values:le.record(le.string(),le.unknown()).refine(e=>Object.keys(e).length>0,{message:"at least one value required"})}),Gy=le.object({fields:le.record(le.string(),le.string())});function va(e){return`codeflow-cli/${e.cliVersion} (${e.platform} ${e.release}; ${e.arch}) node/${e.nodeVersion}`}function Go(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 mt}from"zod";var vi=1e8;var Yy=mt.object({id:mt.coerce.number().int().positive()}),Qy=mt.object({page:mt.coerce.number().int().min(1).default(1),pageSize:mt.coerce.number().int().min(1).max(100).default(20)});function ao(e){return mt.object({items:mt.array(e),total:mt.number().int().nonnegative(),page:mt.number().int().positive(),pageSize:mt.number().int().positive()})}var ye=mt.object({ok:mt.literal(!0)});import{z as W}from"zod";var ln=W.email().max(254).toLowerCase(),ot=8,co=W.string().min(ot).max(128),lo=W.string().min(1).max(128),un=32,Ri=W.string().trim().min(1).max(un),_i=W.string().trim().min(1).max(254),sp=["register","reset_password"],eS=W.object({email:ln,purpose:W.enum(sp)}),tS=W.object({username:Ri,email:ln,password:co,code:W.string().min(4).max(8),inviteCode:W.string().trim().min(1).max(32).optional()}),nS=W.object({account:_i,password:lo}),oS=W.object({email:ln,code:W.string().min(4).max(8),password:co}),rS=W.object({oldPassword:lo,newPassword:co}),iS=W.object({email:ln}),sS=W.object({email:ln,code:W.string().min(4).max(8),password:lo}),Ra=W.object({username:W.string(),email:W.string()}),$n=W.object({accessToken:W.string(),user:Ra}),_a=W.discriminatedUnion("status",[$n.extend({status:W.literal("ok")}),W.object({status:W.literal("totp_required"),ticket:W.string()})]),Ca=W.object({user:Ra}),ap=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()}),cp=W.object({id:W.number().int(),ip:W.string().nullable(),userAgent:W.string().nullable(),device:ap.nullable(),loginAt:W.string(),lastActiveAt:W.string(),expiresAt:W.string(),current:W.boolean()}),Ea=W.object({sessions:W.array(cp)});import{z as ue}from"zod";var Bn=ue.string().trim().length(6),lp=ue.string().trim().min(10).max(20),Vo=ue.string().trim().min(1).max(64),Ko=ue.record(ue.string(),ue.unknown()),lS=ue.object({ticket:ue.string().min(1),code:Bn}),uS=ue.object({ticket:ue.string().min(1),code:lp}),mS=ue.object({code:Bn.optional()}),dS=ue.object({code:Bn}),Pa=ue.object({secret:ue.string(),otpauthUri:ue.string()}),Ci=ue.object({recoveryCodes:ue.array(ue.string())}),up=ue.object({id:ue.number().int(),name:ue.string(),createdAt:ue.string(),lastUsedAt:ue.string().nullable()}),Aa=ue.object({totp:ue.object({enabled:ue.boolean(),enabledAt:ue.string().nullable(),recoveryCodesRemaining:ue.number().int()}),passkeys:ue.array(up)}),pS=ue.object({name:Vo,response:Ko}),fS=ue.object({name:Vo}),gS=ue.object({response:Ko});import{z as xe}from"zod";var xS=xe.object({account:_i,password:lo}),mp=xe.object({totp:xe.boolean(),passkeys:xe.boolean()}),TS=xe.discriminatedUnion("status",[xe.object({status:xe.literal("totp_required"),ticket:xe.string()}),xe.object({status:xe.literal("setup_required"),ticket:xe.string(),missing:mp})]),wS=xe.object({ticket:xe.string().min(1)}),kS=xe.object({ticket:xe.string().min(1),code:Bn}),vS=xe.object({ticket:xe.string().min(1),name:Vo,response:Ko}),RS=xe.object({ticket:xe.string().min(1),code:Bn.optional()}),Na=xe.object({username:xe.string(),email:xe.string()}),_S=xe.object({accessToken:xe.string(),admin:Na}),CS=xe.object({admin:Na});import{z as Ei}from"zod";var IS=Ei.object({siteName:Ei.string().trim().min(1).max(64),siteDescription:Ei.string().trim().max(200).optional(),siteOrigin:ki,username:Ri,email:ln,password:co});import{z as Ee}from"zod";var Ia={orderNo:Ee.string(),amountCny:Ee.number().int(),status:la,credited:Ee.boolean(),refundedAmountCny:Ee.number().int(),succeededRefundCny:Ee.number().int(),pendingRefundCny:Ee.number().int(),createdAt:Ee.string()},uo=Ee.object({...Ia,quota:Ee.number(),refundedQuota:Ee.number()}),mo=Ee.object({...Ia,planName:Ee.string(),renewal:Ee.boolean(),grantedDurationDays:Ee.number().int()}),La=Ee.object({id:Ee.number().int(),amountCny:Ee.number().int(),status:ua,refundTradeNo:Ee.string().nullable(),reason:Ee.string().nullable(),rejectReason:Ee.string().nullable(),createdAt:Ee.string()});function Ma(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 Jo=wt.object({id:wt.number().int(),title:wt.string(),category:ya,priority:Sa,status:ba,createdAt:wt.string(),updatedAt:wt.string()}),Pi=wt.object({id:wt.number().int(),authorKind:xa,content:wt.string(),createdAt:wt.string()}),Oa=wt.object({ticket:Jo,messages:wt.array(Pi)});import{z as Fn}from"zod";var Da=Fn.object({id:Fn.number().int(),title:Fn.string(),content:Fn.string(),level:da,publishedAt:Fn.string(),read:Fn.boolean()});var $a="Asia/Shanghai",dp="+08:00";function pp(e){return new Date(new Date(e).getTime()+288e5)}function fp(e=Date.now()){let t=pp(e);return{day:t.toISOString().slice(0,10),hour:t.getUTCHours()}}function Ai(e=Date.now()){return fp(e).day}function Ni(e=Ai()){return new Date(`${e}T00:00:00${dp}`)}function Kt(e,t){let o=new Date(`${e}T00:00:00Z`);return new Date(o.getTime()+t*864e5).toISOString().slice(0,10)}var gp=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium",timeZone:$a}),hp=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeZone:$a});function te(e){return gp.format(new Date(e))}function Ut(e){return hp.format(new Date(e))}var bp=[{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 yp(e){return e>=10?Math.round(e).toLocaleString("en-US"):e>=1?e.toFixed(1):e.toFixed(-Math.floor(Math.log10(e)))}function Sp(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 xp=[...bp.map(e=>({min:0,suffix:t=>`\u7EA6\u4E3A${e.name}\u7684 ${yp(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 ${Sp(e)}`}];function Ba(e){let{tokens:t,scope:o,range:n}=e;if(t<=0)return null;let r=xp.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 Jt(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown label value: ${t}`);return o}}var Yt=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"}}),zS=Jt({recharge:"\u5145\u503C",subscription:"\u8BA2\u9605"}),Yo=jt({pending:{label:"\u5F85\u5904\u7406",tone:"warning"},issued:{label:"\u5DF2\u5F00\u5177",tone:"success"},rejected:{label:"\u5DF2\u9A73\u56DE",tone:"danger"}}),GS=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 VS=jt({active:{label:"\u6B63\u5E38",tone:"success"},disabled:{label:"\u7981\u7528",tone:"danger"}}),Ii=Jt({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"}),Fa=Jt({usage_log:"\u7528\u91CF",order:"\u8BA2\u5355",invitation:"\u9080\u8BF7",admin:"\u7BA1\u7406\u5458"}),Ua=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"}}),Qo=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"}}),ja=Jt({"openai-chat":"OpenAI Chat","openai-responses":"OpenAI Responses","anthropic-messages":"Anthropic Messages"}),po=Jt({special:"\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968",general:"\u589E\u503C\u7A0E\u666E\u901A\u53D1\u7968"}),mn=Jt({special:"\u4E13\u7968",general:"\u666E\u7968"}),Xo=Jt({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"}),fo=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"}}),Li=jt({open:{label:"\u5F85\u5904\u7406",tone:"warning"},replied:{label:"\u5DF2\u56DE\u590D",tone:"success"},closed:{label:"\u5DF2\u5173\u95ED",tone:"neutral"}}),Zo=Jt({billing:"\u8BA1\u8D39",technical:"\u6280\u672F",account:"\u8D26\u53F7",other:"\u5176\u4ED6"}),Mi=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 Oi(e){return Math.round(e*100)}function qa(e){return e/100}function Ha(e,t,o){let n=e/t;return`${n<0?"-":""}$${Math.abs(n).toLocaleString("en-US",{minimumFractionDigits:o,maximumFractionDigits:o})}`}function me(e,t){return Ha(e,t,2)}function Un(e,t){return Ha(e,t,6)}var er=10080,tr=1440;function Wa(e){if(e%er===0){let t=e/er;return t===1?"\u6BCF\u5468\u9650\u989D":`${t} \u5468\u9650\u989D`}if(e%tr===0){let t=e/tr;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 Tp(e){if(e%er===0){let t=e/er;return t===1?"\u6BCF\u5468":`\u6BCF ${t} \u5468`}if(e%tr===0){let t=e/tr;return t===1?"\u6BCF\u5929":`\u6BCF ${t} \u5929`}return e%60===0?`\u6BCF ${e/60} \u5C0F\u65F6`:`\u6BCF ${e} \u5206\u949F`}function za(e,t){return e.windows.length===0?["\u8BA2\u9605\u671F\u5185\u4E0D\u9650\u91CF"]:e.windows.map(o=>`${Tp(o.durationMinutes)} ${me(o.quota,t)}`)}function Di(e){return e.quota<=0?100:Math.min(100,Math.floor(e.used/e.quota*100))}function $i(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 nr(e){return e>0?`${e} \u4E2A\u6A21\u578B`:"\u5168\u90E8\u6A21\u578B"}function Me(e){return e.toLocaleString("en-US")}function Qt(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`:Me(e)}function dn(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 pn(e){return(e/1e3).toFixed(2)}function or(e,t){return`${e}******${t}`}var Bi={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,\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,\u4E0D\u591F\u7528","\u8C03\u7528\u7ECF\u5E38\u62A5\u9519\u6216\u8D85\u65F6","\u4F7F\u7528\u9891\u7387\u4F4E,\u4E0D\u5212\u7B97"]},Ga={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\u8BA2\u9605\u5269\u4F59\u65F6\u957F\u7ACB\u5373\u5931\u6548\uFF1B\u5BA1\u6838\u901A\u8FC7\u540E\u6309\u5269\u4F59\u65F6\u957F\u6BD4\u4F8B\u539F\u8DEF\u9000\u6B3E\uFF0C\u9A73\u56DE\u6216\u64A4\u9500\u540E\u81EA\u52A8\u6062\u590D"};import{release as wp}from"os";var kp=3e4,vp=va({cliVersion:ut,platform:process.platform,release:wp(),arch:process.arch,nodeVersion:process.versions.node});async function dt(e,t={}){let o=new Headers(t.headers);o.set("user-agent",vp);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??kp),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:Qs,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 Rp(e,t){let o=Ta.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"?cn:void 0;return new U(wa[n]??r,i?{exitCode:i}:{})}function At(e){if(!e.ok)throw Rp(e.status,e.data)}var Ja="cf_refresh",Ya="cf_device",Va=6e4;function Ka(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 go(e,t){return{refresh:Ka(t,Ja)??e.refresh,device:Ka(t,Ya)??e.device}}function rr(e){let t=[];return e.refresh&&t.push(`${Ja}=${e.refresh}`),e.device&&t.push(`${Ya}=${e.device}`),t.length>0?{cookie:t.join("; ")}:{}}function _p(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 ho(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:_p(o.accessToken),username:o.user.username,email:o.user.email,site:e};return fi(r=>{r.session=n,t.device&&(r.device={site:e,cookie:t.device})}),n}function Fi(e){let{device:t}=Tt();return t!==null&&t.site===e?t.cookie:null}async function Qa(e,t,o){let n={refresh:null,device:Fi(e)},r=await dt(`${e}/api/auth/login`,{json:{account:t,password:o},headers:rr(n)});At(r);let i=_a.parse(r.data),s=go(n,r.headers);return i.status==="totp_required"?{status:"totp_required",ticket:i.ticket,jar:s}:{status:"ok",session:ho(e,s,i)}}async function Xa(e,t,o,n,r){let s=await dt(`${e}/api/auth/${r==="totp"?"login/totp":"login/recovery-code"}`,{json:{ticket:o,code:n},headers:rr(t)});At(s);let a=$n.parse(s.data);return ho(e,go(t,s.headers),a)}function Za(){fi(e=>{e.session=null})}async function Cp(e){let t={refresh:e.refreshCookie,device:Fi(e.site)},o=await dt(`${e.site}/api/auth/refresh`,{method:"POST",headers:rr(t)});if(o.status===401||o.status===403)throw Za(),new U("\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",{exitCode:cn});At(o);let n=$n.parse(o.data);return ho(e.site,go(t,o.headers),n)}async function Ui(e=!1){let t=ia();return!e&&Date.now()<t.accessExpiresAt-Va?t:sa(async()=>{let o=ra().session;if(!o)throw new U("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:cn});return(o.refreshCookie!==t.refreshCookie||o.accessToken!==t.accessToken)&&Date.now()<o.accessExpiresAt-Va?o:Cp(o)})}async function ir(){let e=Tt().session;if(!e)return;let t=await dt(`${e.site}/api/auth/logout`,{method:"POST",headers:rr({refresh:e.refreshCookie,device:Fi(e.site)})});Za(),At(t)}import{spawn as Ep}from"child_process";function bo(e,t={}){return new Promise((o,n)=>{let r=Ep("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 ec(e){let t=[],o=async(n,r)=>{try{await r(),e.done(n)}catch(i){t.push(`${n}\uFF1A${Ue(i)}`),e.failed(n)}};return await o("\u9000\u51FA\u767B\u5F55",()=>ir()),await o("\u5220\u9664\u672C\u5730\u6587\u4EF6",()=>{let n=Ft();Pp(n)&&Ap(n,{recursive:!0,force:!0})}),await o("\u5378\u8F7D\u672C\u7A0B\u5E8F",async()=>{await bo(["uninstall","-g",In])}),t}import{z as yo}from"zod";var Np=yo.object({line:yo.object({name:yo.string(),url:yo.string()}).nullable().default(null),lastUpdateCheckAt:yo.number().nullable().default(null)}),tc=zo(Np,Xs,"\u672C\u5730\u914D\u7F6E","\u91CD\u65B0\u8FD0\u884C"),fn=tc.load,sr=tc.update;var Ip=1440*60*1e3;async function nc(){let e=(await bo(["view",In,"version"])).trim();if(e==="")throw new U(`npm \u6CA1\u6709\u62A5\u51FA ${In} \u7684\u7248\u672C`);return e}async function oc(e,t){return await bo(["install","-g",`${In}@${e}`],{background:t}),e}async function rc(){let e=await nc();return e===ut?null:await oc(e,!1)}function Lp(){let e=Date.now(),t=fn().lastUpdateCheckAt;return t!==null&&e-t<Ip?!1:(sr(o=>{o.lastUpdateCheckAt=e}),!0)}async function ic(){if(!Lp())return null;let e;try{e=await nc()}catch{return null}return e===ut?null:await oc(e,!0)}import{Box as $b,render as Bb,useInput as Fb}from"ink";import{useEffect as Ks,useRef as Ub}from"react";import{z as Mp}from"zod";async function kt(e,t,o={}){let n=await dt(t,o);return At(n),e.parse(n.data)}async function O(e,t,o={}){let n=await Ui(),r=s=>dt(`${n.site}/api${t}`,{...o,headers:{...o.headers,authorization:`Bearer ${s}`}}),i=await r(n.accessToken);if(i.status===401){let s=await Ui(!0);i=await r(s.accessToken)}return At(i),e.parse(i.data)}function jn(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 ar=()=>O(Mp.array(Da),"/announcements"),sc=e=>O(ye,`/announcements/${e}/read`,{method:"POST"}).then(()=>{}),ac=()=>O(ye,"/announcements/read-all",{method:"POST"}).then(()=>{});import{Box as cc,useWindowSize as Op}from"ink";import{Children as Dp}from"react";import{jsx as lc}from"react/jsx-runtime";var $p=1,ji=1,J=1;function j(){let{columns:e,rows:t}=Op();return{width:Math.max(1,e-$p*2),columns:e,rows:t}}function uc({height:e,children:t}){return lc(cc,{flexDirection:"column",height:e,justifyContent:"space-between",children:Dp.toArray(t).map((o,n)=>lc(cc,{flexDirection:"column",flexShrink:0,children:o},n))})}import{useInput as dc}from"ink";import{createContext as Wi,useCallback as cr,useContext as Bp,useEffect as zi,useMemo as qi,useRef as So,useState as mc}from"react";import{jsx as Hi}from"react/jsx-runtime";var lr=Wi(null),Gi=Wi(null),qn={screen:0,panel:10,input:20},Vi=Wi(null);function pc({children:e}){let[t,o]=mc(!1),[n,r]=mc(!1),i=So(0),s=So(0),a=So([]),c=So(0),l=cr(()=>(i.current+=1,o(!0),()=>{i.current-=1,i.current===0&&o(!1)}),[]),d=cr(()=>(s.current+=1,r(!0),()=>{s.current-=1,s.current===0&&r(!1)}),[]),g=cr(h=>{let b={...h,seq:c.current+=1};return a.current.push(b),()=>{a.current=a.current.filter(x=>x!==b)}},[]),u=cr(()=>{a.current.reduce((b,x)=>b===null||x.layer>b.layer||x.layer===b.layer&&x.seq>b.seq?x:b,null)?.handler()},[]);dc((h,b)=>{b.escape&&u()});let p=qi(()=>({active:t,acquire:l}),[t,l]),S=qi(()=>({locked:n,acquire:d}),[n,d]),f=qi(()=>({push:g,fire:u}),[g,u]);return Hi(lr.Provider,{value:p,children:Hi(Gi.Provider,{value:S,children:Hi(Vi.Provider,{value:f,children:e})})})}function gn(e){let t=Bp(e);if(!t)throw new Error("\u952E\u76D8\u94A9\u5B50\u5FC5\u987B\u5728 KeyboardProvider \u5185\u4F7F\u7528");return t}function ur(e){let{acquire:t}=gn(lr);zi(()=>{if(e)return t()},[e,t])}function fc(e){let{acquire:t}=gn(Gi);zi(()=>{if(e)return t()},[e,t])}function mr(){return gn(Gi).locked}function dr(){return gn(lr).active}function z(e,t=!0){let o=gn(lr).active;dc(e,{isActive:t&&!o})}function gc(){return gn(Vi).fire}function Xt(e,{isActive:t=!0,layer:o=qn.screen}={}){let{push:n}=gn(Vi),r=So(e);r.current=e,zi(()=>{if(t)return n({handler:()=>r.current(),layer:o})},[t,o,n])}import{measureElement as Fp}from"ink";import{PassThrough as Up}from"stream";import{createContext as jp,useCallback as qp,useContext as Hp,useEffect as Sc,useRef as pr}from"react";import{jsx as Zp}from"react/jsx-runtime";var Wp="\x1B[?1000h\x1B[?1003h\x1B[?1006h",zp="\x1B[?1006l\x1B[?1003l\x1B[?1000l",Gp=27,Vp=91,Kp=60,hc=77,bc=109,yc=20,Jp=64,Yp=32,Qp=20;function Xp(e){let t=[],o=[],n=0;for(;n<e.length;){let r=e[n];if(r===void 0)break;if(r!==Gp){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!==Vp){o.push(r),n+=1;continue}if(s===hc){if(n+6>e.length)break;n+=6;continue}if(s!==Kp){o.push(r),n+=1;continue}let a=n+3,c;for(;a<e.length&&a-n<yc;){let p=e[a];if(p===hc||p===bc){c=p;break}a+=1}if(c===void 0){if(a-n<yc)break;o.push(r),n+=1;continue}let l=e.subarray(n+3,a).toString("latin1").split(";");if(n=a+1,c===bc||l.length!==3)continue;let d=Number(l[0]),g=Number(l[1]),u=Number(l[2]);!Number.isFinite(d)||!Number.isFinite(g)||!Number.isFinite(u)||t.push((d&Jp)!==0?{row:u,column:g,kind:"wheel",delta:(d&1)===0?-1:1}:{row:u,column:g,kind:(d&Yp)!==0?"move":"press"})}return{events:t,clean:Buffer.from(o),pending:e.subarray(n)}}function xc(e,t){let o=new Set,n=new Up,r=Buffer.alloc(0),i=null,s=()=>{i=null,r.length!==0&&(n.write(r),r=Buffer.alloc(0))},a=u=>{i!==null&&clearTimeout(i),i=null;let p=Xp(Buffer.concat([r,u]));r=p.pending,p.clean.length>0&&n.write(p.clean);for(let S of p.events)for(let f of o)f(S);r.length>0&&(i=setTimeout(s,Qp))},c=()=>{t.write(zp)},l={SIGHUP:1,SIGINT:2,SIGTERM:15},d=u=>{process.exit(128+(l[u]??0))};e.on("data",a),process.once("exit",c);for(let u of Object.keys(l))process.on(u,d);t.write(Wp);let g=n;return Object.assign(g,{isTTY:!0,setRawMode(u){return e.setRawMode(u),g},ref(){return e.ref(),g},unref(){return e.unref(),g}}),{stdin:g,subscribe(u){return o.add(u),()=>{o.delete(u)}},dispose(){c(),i!==null&&clearTimeout(i),process.off("exit",c);for(let u of Object.keys(l))process.off(u,d);e.off("data",a),o.clear()}}}var Tc=jp(null);function wc({subscribe:e,children:t}){let o=pr(new Set).current,n=pr(null),r=qp(i=>(o.add(i),()=>{o.delete(i)}),[o]);return Sc(()=>e(i=>{let s=i.row-1,a=i.column-1,c=null;for(let d of o){let g=d.node.current;if(g===null||d.handlers.current.isActive===!1)continue;let u=Fp(g);if(s<u.y||s>=u.y+u.height||a<u.x||a>=u.x+u.width)continue;let p=u.width*u.height;(c===null||p<c.area)&&(c={region:d,top:u.y,left:u.x,area:p})}if(i.kind==="move"){let d=c===null?null:c.region;if(n.current!==d){let g=n.current;g!==null&&o.has(g)&&g.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]),Zp(Tc.Provider,{value:r,children:t})}function $e(e){let t=Hp(Tc);if(t===null)throw new Error("useMouseRegion \u5FC5\u987B\u5728 MouseProvider \u5185\u4F7F\u7528");let o=pr(null),n=pr(e);return n.current=e,Sc(()=>t({node:o,handlers:n}),[t]),o}import{useApp as ef}from"ink";import{createContext as tf,useCallback as hn,useContext as nf,useEffect as Ki,useRef as gr,useState as To}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"}],kc="usage",xo=e=>Ye.findIndex(t=>t.id===e),fr=e=>xo(e)>=0;import{jsx as rf}from"react/jsx-runtime";var of=3500,Rc=tf(null),_c=e=>({id:e,params:void 0}),vc=()=>Tt().session===null?[{id:"home",params:void 0}]:[_c(kc)];function D(){let e=nf(Rc);if(!e)throw new Error("useNav \u5FC5\u987B\u5728 NavProvider \u5185\u4F7F\u7528");return e}function Cc({ctx:e,children:t}){let o=ef(),[n,r]=To(vc),[i,s]=To(0),[a,c]=To([]),l=gr({announcementsChecked:!1,announcementsShown:!1}).current,d=gr(new WeakMap).current,g=hn((E,...M)=>{r(F=>[...F,{id:E,params:M[0]}])},[]),u=hn(()=>{r(E=>E.length>1?E.slice(0,-1):E),s(E=>E+1)},[]),p=hn(E=>{r([_c(E)]),s(M=>M+1)},[]),S=hn(()=>{r(vc()),s(E=>E+1)},[]),f=hn(()=>s(E=>E+1),[]),h=hn((E,M)=>{c(F=>[...F,{tone:E,message:M}])},[]),b=hn(()=>c(E=>E.slice(1)),[]),x=a[0]??null;Ki(()=>{if(x===null)return;let E=setTimeout(b,of);return()=>clearTimeout(E)},[x,b]);let w=n[n.length-1];if(w===void 0)throw new Error("\u5BFC\u822A\u6808\u4E3A\u7A7A");let y=d.get(w);y===void 0&&(y=new Map,d.set(w,y));let v={ctx:e,current:w,depth:n.length,push:g,pop:u,select:p,home:S,reload:f,toast:h,message:x,dismissToast:b,exit:o.exit,revision:i,gate:l,retained:y};return rf(Rc.Provider,{value:v,children:t})}function Ge(e,t){let{retained:o}=D(),[n,r]=To(()=>e!==void 0&&o.has(e)?o.get(e):t());return Ki(()=>{e!==void 0&&o.set(e,n)},[o,e,n]),[n,r]}function Y(e,t){let[o,n]=To({phase:"loading"}),r=gr(t);r.current=t;let i=gr(0);return Ki(()=>{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:Ue(a),hint:a instanceof U?a.hint:void 0})})},e),o}import{Box as Ir,Text as tn,useInput as Df}from"ink";import{useState as tl}from"react";import{Box as Ro,Text as zn}from"ink";import wo from"string-width";var m={background:"#0d0d0d",foreground:"#f3f3f3",mutedForeground:"#949494",faintForeground:"#696969",border:"#393939",accent:"#37be95",success:"#34d399",warning:"#fbbf24",danger:"#f87171"},hr=["#242424","#5a4233","#746533","#70924f","#37be95"],br=["#37be95","#2d9273","#246e58","#1e5443","#193f33"],Be={accent:m.accent,success:m.success,warning:m.warning,danger:m.danger},Ji=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Ec=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 sf=wo(X.ellipsis),af=(e,t)=>e+" ".repeat(Math.max(0,t-wo(e))),cf=(e,t)=>" ".repeat(Math.max(0,t-wo(e)))+e;function Te(e,t){if(t<=0)return"";if(wo(e)<=t)return e;let o=t-sf,n="";for(let r of e){if(wo(n+r)>o)break;n+=r}return n+X.ellipsis}var Pe=(e,t)=>af(Te(e,t),t),Nt=(e,t)=>cf(Te(e,t),t),Oe=e=>e.filter(t=>typeof t=="string"&&t!=="").join(` ${X.bullet} `);import{Text as vt,useInput as lf}from"ink";import{useImperativeHandle as uf,useRef as Pc,useEffect as mf,useState as Nc}from"react";import Yi from"string-width";import{jsx as Zt,jsxs as Qi}from"react/jsx-runtime";var df=e=>e.replace(new RegExp("\\p{Cc}","gu"),"");function Ac(e,t,o){let n=t,r=0;for(;n>0;){let s=Yi(e[n-1]??"");if(r+s>o)break;r+=s,n-=1}let i=t;for(r+=1;i<e.length;){let s=Yi(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 yr({value:e,onChange:t,onSubmit:o,placeholder:n,mask:r=!1,isActive:i=!0,width:s=40,ref:a}){let c=[...e],[l,d]=Nc(c.length),g=Math.min(l,c.length),u=Math.max(8,s),p=Pc(e),S=Pc(g);p.current=e,S.current=g,ur(i);let f=v=>{S.current=v,d(v)},h=(v,E)=>{p.current=v,f(E),t(v)};if(uf(a,()=>({moveToColumn:v=>{let E=[...p.current],M=r?Array.from({length:E.length},()=>"\u2022"):E,T=Ac(M,Math.min(S.current,E.length),u).start,C=0;for(;T<E.length;){let R=Yi(M[T]??"");if(C+R>v)break;C+=R,T+=1}f(T)}})),lf((v,E)=>{let M=[...p.current],F=Math.min(S.current,M.length);if(E.return){o(p.current);return}if(E.tab||E.upArrow||E.downArrow)return;if(E.leftArrow){f(Math.max(0,F-1));return}if(E.rightArrow){f(Math.min(M.length,F+1));return}if(E.home){f(0);return}if(E.end){f(M.length);return}if(E.backspace){if(F===0)return;h([...M.slice(0,F-1),...M.slice(F)].join(""),F-1);return}if(E.delete){if(F>=M.length)return;h([...M.slice(0,F),...M.slice(F+1)].join(""),F);return}if(E.ctrl){if(v==="a")f(0);else if(v==="e")f(M.length);else if(v==="k")h(M.slice(0,F).join(""),F);else if(v==="u")h(M.slice(F).join(""),0);else if(v==="w"){let P=F;for(;P>0&&M[P-1]===" ";)P-=1;for(;P>0&&M[P-1]!==" ";)P-=1;h([...M.slice(0,P),...M.slice(F)].join(""),P)}return}if(E.meta||!v)return;let T=v.search(/[\r\n]/),C=df(T===-1?v:v.slice(0,T)),R=[...M.slice(0,F),C,...M.slice(F)].join("");h(R,F+[...C].length),T!==-1&&o(R)},{isActive:i}),e==="")return Qi(vt,{children:[i&&Zt(vt,{inverse:!0,children:" "}),!i&&n!==void 0&&Zt(vt,{color:m.faintForeground,children:n})]});let b=r?Array.from({length:c.length},()=>"\u2022"):c;if(!i)return Zt(vt,{color:m.foreground,children:b.join("")});let{before:x,at:w,after:y}=Ac(b,g,u);return Qi(vt,{children:[Zt(vt,{color:m.foreground,children:x}),Zt(vt,{inverse:!0,children:w}),Zt(vt,{color:m.foreground,children:y})]})}function Qe({label:e}){let[t,o]=Nc(0);return mf(()=>{let n=setInterval(()=>o(r=>(r+1)%Ji.length),Ec);return()=>clearInterval(n)},[]),Qi(vt,{children:[Zt(vt,{color:m.accent,children:Ji[t]}),Zt(vt,{color:m.mutedForeground,children:` ${e}`})]})}import{Box as Mc,Text as Hn}from"ink";import{useEffect as Dc,useState as ff}from"react";import Oc from"string-width";import{Box as Ic,Text as Sr}from"ink";import pf from"string-width";import{jsx as ko,jsxs as Lc}from"react/jsx-runtime";var ae=2,rt=1,De=1,Rt=rt+De;function vo({title:e,note:t,width:o}){let n=t===void 0?0:pf(t)+2,r=Math.max(0,o-ae-n);return Lc(Sr,{wrap:"truncate",children:[ko(Sr,{color:m.accent,children:`${X.section} `}),ko(Sr,{bold:!0,color:m.foreground,children:Te(e,r)}),t!==void 0&&ko(Sr,{color:m.faintForeground,children:` ${t}`})]})}function oe({title:e,note:t,width:o,gap:n=De,children:r}){return Lc(Ic,{flexDirection:"column",children:[ko(vo,{title:e,note:t,width:o}),ko(Ic,{flexDirection:"column",marginTop:n,paddingLeft:ae,children:r})]})}import{jsx as qt,jsxs as Bc}from"react/jsx-runtime";var Wn=e=>!("heading"in e),gf=e=>e.flatMap(t=>!Wn(t)&&t.heading!==""?[t,{heading:""}]:[t]),$c=2,xr=2,hf=(e,t)=>t===void 0?e:e>t?Math.max(1,t-1):t;function bf(e,t,o,n){let[r,i]=Ge(n,()=>e.findIndex(d=>Wn(d)&&d.disabled!==!0));Dc(()=>{i(d=>d>=e.length?Math.max(0,e.length-1):d)},[e.length]);let s=d=>{i(g=>{let u=e.length;if(u===0)return g;let p=g;for(let S=0;S<u;S+=1){p=(p+d+u)%u;let f=e[p];if(f!==void 0&&Wn(f)&&f.disabled!==!0)return p}return g})},a=d=>{let g=e[d];return g!==void 0&&Wn(g)&&g.disabled!==!0?g:null},c=d=>{a(d)!==null&&i(d)},l=d=>{let g=a(d);g!==null&&(i(d),o(g.value))};return z((d,g)=>{if(g.upArrow||d==="k"){s(-1);return}if(g.downArrow||d==="j"){s(1);return}g.return&&l(r)},t),{index:Math.max(0,r),step:s,pick:l,moveTo:c}}function Xi(e,t){let[o,n]=ff(()=>e>=t?e-t+1:0);return Dc(()=>{n(r=>e<r?e:e>=r+t?e-t+1:r)},[e,t]),o}function yf(e,t){let o=e.filter(Wn),n=Math.max(0,...o.map(s=>Oc(s.label))),r=Math.max(0,...o.map(s=>s.badge===void 0?0:Oc(s.badge))),i=$c+n+(r>0?r+xr:0)+xr;return{label:n,badge:r,hint:Math.max(0,t-i)}}function Sf({item:e,active:t,metrics:o}){let n=e.disabled===!0,r=n?m.faintForeground:e.labelTone!==void 0?Be[e.labelTone]:t?m.accent:m.foreground;return Bc(Hn,{wrap:"truncate",children:[qt(Hn,{color:m.accent,children:t?`${X.cursor} `:" "}),qt(Hn,{color:r,bold:t,children:Pe(e.label,o.label)}),o.badge>0&&qt(Hn,{color:e.badgeTone===void 0?m.faintForeground:Be[e.badgeTone],children:`${" ".repeat(xr)}${Pe(e.badge??"",o.badge)}`}),e.hint!==void 0&&o.hint>0&&qt(Hn,{color:n||!t?m.faintForeground:m.mutedForeground,children:`${" ".repeat(xr)}${Te(e.hint,o.hint)}`})]})}function xf({items:e,cursor:t,metrics:o,window:n,width:r,isActive:i,onPick:s,onHover:a,onScroll:c}){let l=Xi(t,n),d=e.slice(l,l+n),g=p=>p<d.length?l+p:null,u=$e({isActive:i,onWheel:c,onClick:({row:p})=>{let S=g(p);S!==null&&s(S)},onHover:({row:p})=>{let S=g(p);S!==null&&a(S)}});return Bc(Mc,{ref:u,flexDirection:"column",children:[d.map((p,S)=>{let f=l+S;return Wn(p)?qt(Sf,{item:p,active:f===t&&i,metrics:o},f):p.heading===""?qt(Mc,{height:1},f):qt(vo,{title:p.heading,width:r},f)}),e.length>n&&qt(Hn,{color:m.faintForeground,children:`${" ".repeat($c)}${l+1}-${Math.min(l+n,e.length)} / ${e.length}`})]})}function ce({items:e,onSelect:t,width:o,height:n,isActive:r=!0,retain:i}){let s=gf(e),a=bf(s,r,t,i);return qt(xf,{items:s,cursor:a.index,metrics:yf(s,o),window:hf(s.length,n),width:o,isActive:r,onPick:a.pick,onHover:a.moveTo,onScroll:a.step})}import{jsx as pt,jsxs as Tr}from"react/jsx-runtime";var Fc={ok:{glyph:X.ok,color:m.success},warn:{glyph:X.warn,color:m.warning},fail:{glyph:X.fail,color:m.danger},info:{glyph:X.bullet,color:m.mutedForeground}};function fe({tone:e,title:t,detail:o,width:n}){let r=Fc[e];return Tr(Ro,{flexDirection:"column",children:[Tr(zn,{children:[pt(zn,{color:r.color,children:`${r.glyph} `}),pt(zn,{color:m.foreground,children:Te(t,n-2)})]}),o!==void 0&&pt(zn,{color:m.faintForeground,children:` ${Te(o,n-2)}`})]})}function bn({message:e,hint:t,width:o}){return pt(fe,{tone:"fail",title:e,detail:t,width:o})}var Tf=2,wf=2;function Uc({tone:e,message:t,width:o,onDismiss:n}){let r=Fc[e],i=$e({onClick:n});return Tr(Ro,{ref:i,children:[pt(zn,{backgroundColor:m.border,color:r.color,wrap:"truncate",children:` ${r.glyph} `}),pt(zn,{backgroundColor:m.border,color:m.foreground,wrap:"truncate",children:`${Te(t,o-Tf-wf)} `})]})}function je({title:e,detail:t,confirmLabel:o,onConfirm:n,onCancel:r,width:i,busy:s,error:a}){return Tr(Ro,{flexDirection:"column",children:[pt(fe,{tone:"warn",title:e,detail:t,width:i}),a!=null&&pt(Ro,{marginTop:1,children:pt(bn,{message:a.message,hint:a.hint,width:i})}),pt(Ro,{marginTop:1,children:typeof s=="string"?pt(Qe,{label:s}):pt(ce,{items:[{value:"cancel",label:"\u53D6\u6D88"},{value:"confirm",label:o,labelTone:"danger"}],width:i,onSelect:c=>c==="confirm"?n():r()})})]})}import{Box as kf,Text as wr,useInput as vf}from"ink";import{useRef as Rf,useState as _f}from"react";import{jsx as kr,jsxs as Cf}from"react/jsx-runtime";function en({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]=_f(n?s:0),l=Rf(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));vf((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 g=$e({isActive:o&&r,onWheel:d}),u=e.slice(a,a+i);return Cf(kf,{ref:g,flexDirection:"column",children:[u.map((p,S)=>kr(wr,{wrap:"truncate",children:p.spans.length===0?" ":p.spans.map((f,h)=>kr(wr,{color:f.color??m.foreground,bold:f.bold===!0,children:f.text},h))},a+S)),Array.from({length:Math.max(0,i-u.length)},(p,S)=>kr(wr,{children:" "},S)),r&&kr(wr,{color:m.faintForeground,wrap:"truncate",children:`${a+1}-${Math.min(a+i,e.length)} / ${e.length}`})]})}function He(e){return e.tone==="neutral"?void 0:e.tone}function Ht(e){let t=He(e);return t===void 0?e.label:{text:e.label,tone:t}}import{useCallback as Zi,useRef as Ef,useState as jc}from"react";function ge(){let e=D(),[t,o]=jc(null),[n,r]=jc(null),i=Ef(0),s=Zi(()=>{i.current+=1,o(null),r(null)},[]),a=Zi((l,d)=>{r({message:l,hint:d})},[]),c=Zi((l,d,g={})=>{let u=i.current+=1;o(l),r(null),d().then(p=>{i.current===u&&(o(null),g.onSuccess?.(p))}).catch(p=>{if(i.current!==u)return;o(null);let S={message:Ue(p),hint:p instanceof U?p.hint:void 0};g.failToast===!0?e.toast("fail",S.message):r(S)})},[e]);return{busy:t,error:n,reset:s,fail:a,run:c}}import{Lexer as Pf}from"marked";import vr from"string-width";var Af={spans:[]},es=e=>e===void 0||e.spans.every(t=>t.text.trim()==="");function qc(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(qc(i)),a=!1,i=n(),s=o};for(let l of e)for(let d of l.text){if(d===`
5
- `){c();continue}let g=vr(d);if(s+g>t&&i.length>(a?0:o)){let u=a?0:o,p=-1;for(let S=i.length-1;S>u;S-=1)if(i[S]?.ch===" "){p=S;break}if(p>u){let S=i.slice(p+1);i=i.slice(0,p),c(),i=[...i,...S],s=i.reduce((f,h)=>f+vr(h.ch),0)}else c()}i.push({ch:d,color:l.color,bold:l.bold}),s+=g}return(i.length>0||r.length===0)&&r.push(qc(i)),r}function Lt(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?Lt(n.tokens,t):[{text:n.text,...t}]);break;case"strong":o.push(...Lt(n.tokens,{...t,bold:!0}));break;case"em":o.push(...Lt(n.tokens,t));break;case"del":o.push(...Lt(n.tokens,{...t,color:m.faintForeground}));break;case"codespan":o.push({text:n.text,color:m.accent,bold:t.bold});break;case"link":{let r=Lt(n.tokens,{...t,color:m.accent});o.push(...r);let i=r.map(s=>s.text).join("");n.href!==i&&o.push({text:`\uFF08${n.href}\uFF09`,color:m.faintForeground});break}case"image":o.push({text:n.text===""?"\u56FE\u7247":n.text,...t}),o.push({text:`\uFF08${n.href}\uFF09`,color:m.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 Hc=2,Wc=e=>e.reduce((t,o)=>t+vr(o.text),0);function Nf(e,t,o,n){let r=e.map(u=>({spans:Lt(u.tokens,{bold:!0,color:m.foreground}),align:u.align})),i=t.map(u=>u.map(p=>({spans:Lt(p.tokens,{color:m.foreground}),align:p.align}))),s=n-(e.length+1)-e.length*2;if(s<e.length*Hc)return It([{text:o,color:m.foreground}],n);let a=e.map(()=>Hc);for(let u of[r,...i])u.forEach((p,S)=>{for(let f of It(p.spans,Number.MAX_SAFE_INTEGER)){let h=a[S],b=Wc(f.spans);h!==void 0&&b>h&&(a[S]=b)}});let c=a.reduce((u,p)=>u+p,0);for(;c>s;){let u=0,p=0;a.forEach((S,f)=>{S>p&&(u=f,p=S)}),a[u]=p-1,c-=1}let l=u=>({text:u,color:m.faintForeground}),d=(u,p,S)=>({spans:[l(`${u}${a.map(f=>"\u2500".repeat(f+2)).join(p)}${S}`)]}),g=u=>{let p=a.map((h,b)=>{let x=u[b];return{width:h,align:x?.align??null,lines:It(x?.spans??[],h)}}),S=p.reduce((h,b)=>Math.max(h,b.lines.length),1),f=[];for(let h=0;h<S;h+=1){let b=[];for(let x of p){let w=x.lines[h]?.spans??[],y=x.width-Wc(w),v=x.align==="right"?y:x.align==="center"?Math.floor(y/2):0;b.push(l("\u2502"),{text:` ${" ".repeat(v)}`}),b.push(...w),b.push({text:`${" ".repeat(y-v)} `})}b.push(l("\u2502")),f.push({spans:b})}return f};return[d("\u250C","\u252C","\u2510"),...g(r),d("\u251C","\u253C","\u2524"),...i.flatMap(g),d("\u2514","\u2534","\u2518")]}function ts(e,t){let o=[],n=()=>{o.length>0&&!es(o[o.length-1])&&o.push(Af)};for(let r of e)switch(r.type){case"space":n();break;case"heading":{let i=Lt(r.tokens,{bold:!0,color:m.foreground}),s=r.depth<=2?[{text:`${X.section} `,color:m.accent},...i]:i;o.push(...It(s,t,r.depth<=2?2:0)),n();break}case"paragraph":o.push(...It(Lt(r.tokens,{color:m.foreground}),t)),n();break;case"text":o.push(...It("tokens"in r&&r.tokens!==void 0?Lt(r.tokens,{color:m.foreground}):[{text:r.text,color:m.foreground}],t));break;case"code":for(let i of r.text.split(`
7
- `))o.push(...It([{text:` ${i}`,color:m.mutedForeground}],t,2));n();break;case"blockquote":{let i=ts(r.tokens??[],Math.max(4,t-2));for(let s of i)o.push({spans:[{text:`${X.section} `,color:m.accent},...s.spans.map(a=>({...a,color:a.color??m.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=vr(l),g=ts(a.tokens,Math.max(4,t-d));g.forEach((u,p)=>{es(u)&&p===g.length-1||o.push({spans:p===0?[{text:l,color:m.mutedForeground},...u.spans]:[{text:" ".repeat(d)},...u.spans]})})}),n();break}case"hr":o.push({spans:[{text:"\u2500".repeat(Math.max(1,t)),color:m.faintForeground}]}),n();break;case"table":o.push(...Nf(r.header,r.rows,r.raw,t)),n();break;default:o.push(...It([{text:r.raw,color:m.foreground}],t))}return o}function Gn(e,t){let o=Pf.lex(e,{gfm:!0,breaks:!0}),n=ts(o,Math.max(8,t));for(;n.length>0&&es(n[n.length-1]);)n.pop();return n}import{Box as Co}from"ink";import{Box as If,Text as zc}from"ink";import Vc from"string-width";import{jsx as Gc,jsxs as Lf}from"react/jsx-runtime";var Rr=["\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"],Kc=Math.max(...Rr.map(e=>Vc(e))),_r=Rr.length,Cr=e=>Kc<=e;function Er({width:e}){let t=`v${ut}`,o=Kc+2+Vc(t)<=e;return Gc(If,{flexDirection:"column",children:Rr.map((n,r)=>Lf(zc,{color:m.accent,children:[n,r===Rr.length-1&&o&&Gc(zc,{color:m.faintForeground,children:` ${t}`})]},n))})}import{Box as rs,Text as it}from"ink";import{useState as Jc}from"react";import Kn from"string-width";import{jsx as ft,jsxs as Pr}from"react/jsx-runtime";var Ar=2,ns=` ${X.crumb} `;function Nr({trail:e,width:t,onBack:o,isActive:n}){let r=e[e.length-1]??"",i=e.slice(0,-1),s=i.reduce((u,p)=>u+Kn(p)+Kn(ns),0),a=s+Kn(r)<=t,c=a?s:0,[l,d]=Jc(!1),g=$e({isActive:n,onClick:({column:u})=>{u<c&&o()},onHover:({column:u})=>d(u<c),onHoverLeave:()=>d(!1)});return ft(rs,{ref:g,marginBottom:1,children:a?Pr(it,{children:[i.map((u,p)=>Pr(it,{children:[ft(it,{color:p===0?m.accent:l&&n?m.foreground:m.mutedForeground,children:u}),ft(it,{color:m.faintForeground,children:ns})]},p)),ft(it,{bold:!0,color:m.foreground,children:r})]}):ft(it,{color:m.mutedForeground,children:Te(e.join(ns),t)})})}var os=2,_o=2,Vn=2;function Yc({current:e,width:t,onPick:o,isActive:n}){let r=Math.max(0,xo(e)),[i,s]=Jc(null),a=Math.max(...Ye.map(b=>Kn(b.label))),l=(b=>b*a+(b-1)*_o+os)(Ye.length)>t,d=l?t-Vn*2:t,g=l?Math.max(1,Math.floor((d+_o-os)/(a+_o))):Ye.length,u=Math.min(Math.max(0,r-Math.floor((g-1)/2)),Ye.length-g),p=Ye.slice(u,u+g),S=[],f=l?Vn:0;p.forEach((b,x)=>{x>0&&(f+=_o);let w=Kn(b.label)+(b.id===e?os:0);S.push({id:b.id,from:f,to:f+w}),f+=w});let h=$e({isActive:n,onHover:({column:b})=>{let x=S.find(w=>b>=w.from&&b<w.to);s(x?.id??null)},onHoverLeave:()=>s(null),onClick:({column:b})=>{let x=S.find(y=>b>=y.from&&b<y.to);if(x!==void 0){o(x.id);return}if(!l||b>=Vn&&b<f)return;let w=b<Vn?Ye[u-1]:Ye[u+g];w!==void 0&&o(w.id)}});return ft(rs,{ref:h,marginBottom:1,children:Pr(it,{wrap:"truncate",children:[l&&ft(it,{color:m.border,children:u>0?`${X.prev} `:" ".repeat(Vn)}),p.map((b,x)=>Pr(it,{children:[x>0&&" ".repeat(_o),b.id===e?ft(it,{backgroundColor:m.foreground,color:m.background,bold:!0,children:` ${b.label} `}):ft(it,{color:n&&b.id===i?m.foreground:m.mutedForeground,children:b.label})]},b.id)),l&&ft(it,{color:m.border,children:u+g<Ye.length?` ${X.next}`:" ".repeat(Vn)})]})})}function Qc({hints:e,width:t}){let o=[];for(let n of e){if(Kn(Oe([...o,n]))>t)break;o.push(n)}return ft(rs,{children:ft(it,{color:m.faintForeground,children:Oe(o)})})}import{Fragment as Of,jsx as Xe,jsxs as el}from"react/jsx-runtime";var Xc=3,Mf=8;function Eo(e){let{rows:t}=j();return Math.max(1,t-ji-Xc-e)}function Zc(){let e=D(),{width:t,rows:o}=j(),n=e.current.id,r=e.depth===1&&fr(n)?n:null,i=Math.max(1,o-ji-Xc),s=_r+J,a=r!==null&&Cr(t)&&i-Ar-s>=Mf;return{tab:r,mark:a,rows:a?Ar+s:Ar}}var re=()=>Eo(Zc().rows);function yn({header:e,hints:t,children:o}){let{width:n}=j(),{message:r,dismissToast:i}=D();return el(Co,{flexDirection:"column",flexGrow:1,children:[e,Xe(Co,{flexDirection:"column",flexGrow:1,overflow:"hidden",children:Xe(Co,{flexDirection:"column",flexShrink:0,children:o})}),Xe(Co,{height:1,marginTop:1,justifyContent:"flex-end",children:r!==null&&Xe(Uc,{tone:r.tone,message:r.message,width:n,onDismiss:i})}),Xe(Qc,{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}=Zc(),g=mr(),u=dr(),p=u?[]:["[] \u5207\u529F\u80FD","q \u9000\u51FA","? \u5E2E\u52A9"],S=u?[]:["? \u5E2E\u52A9"];Xt(n??a.pop,{isActive:r});let f=gc(),h=r&&!i&&!g;return z(b=>{if(l===null||b!=="["&&b!=="]")return;let x=Ye[(xo(l)+(b==="["?-1:1)+Ye.length)%Ye.length];x!==void 0&&a.select(x.id)},r&&!i&&!g&&!s),s?Xe(yn,{header:null,hints:i?t:[...t,"Esc \u8FD4\u56DE",...S],children:o}):l!==null?Xe(yn,{header:el(Of,{children:[d&&Xe(Co,{marginBottom:J,children:Xe(Er,{width:c})}),Xe(Yc,{current:l,width:c,onPick:b=>{b===l?f():a.select(b)},isActive:h})]}),hints:i?t:[...t,...p],children:o}):Xe(yn,{header:Xe(Nr,{trail:["CodeFlow",...e??[]],width:c,onBack:f,isActive:h}),hints:i?t:[...t,"Esc \u8FD4\u56DE",...S],children:o})}function Q({state:e,loading:t,width:o,children:n}){return e.phase==="loading"?Xe(Qe,{label:t}):e.phase==="error"?Xe(bn,{message:e.message,hint:e.hint,width:o}):n(e.data)}import{jsx as st,jsxs as is}from"react/jsx-runtime";function nl({params:e}){let t=D(),{width:o}=j(),n=re(),[r]=tl(()=>[...e.items].sort((f,h)=>Date.parse(f.publishedAt)-Date.parse(h.publishedAt)||f.id-h.id)),[i,s]=tl(0),{busy:a,error:c,run:l}=ge(),d=r[i];if(Df((f,h)=>{!h.return||d===void 0||l("\u6B63\u5728\u786E\u8BA4",()=>sc(d.id),{onSuccess:()=>{if(i+1>=r.length){t.pop();return}s(i+1)}})},{isActive:a===null}),d===void 0)return null;let g=fo(d.level),u=He(g),p=r.length-i-1,S=Math.max(3,n-4-(c===null?0:2));return st(G,{trail:["\u7CFB\u7EDF\u516C\u544A","\u672A\u8BFB\u786E\u8BA4"],hints:["\u2191\u2193 \u6EDA\u52A8","Enter \u6211\u77E5\u9053\u4E86"],locked:!0,onEscape:()=>{},children:is(Ir,{flexDirection:"column",children:[is(tn,{wrap:"truncate",children:[st(tn,{bold:!0,color:m.foreground,children:d.title}),st(tn,{color:u===void 0?m.mutedForeground:Be[u],children:` ${g.label}`}),st(tn,{color:m.faintForeground,children:` \u53D1\u5E03\u4E8E ${Ut(d.publishedAt)}`})]}),st(Ir,{marginTop:1,children:st(en,{lines:Gn(d.content,o),height:S})}),c!==null&&st(Ir,{marginTop:1,children:st(bn,{message:c.message,hint:c.hint,width:o})}),st(Ir,{marginTop:1,children:a!==null?st(Qe,{label:a}):is(tn,{wrap:"truncate",children:[st(tn,{color:m.accent,children:`${X.cursor} `}),st(tn,{bold:!0,color:m.accent,children:"\u6211\u77E5\u9053\u4E86"}),st(tn,{color:m.faintForeground,children:Nt(p>0?`\u8FD8\u6709 ${p} \u6761\u672A\u8BFB`:"",Math.max(0,o-2-10))})]})})]})})}import{Box as sl,Text as Lr}from"ink";import{useState as qf}from"react";import{Box as ss,Text as Wt}from"ink";import{useEffect as ol,useRef as $f,useState as rl}from"react";import as from"string-width";import{jsx as nn,jsxs as Ao}from"react/jsx-runtime";var il=e=>e===void 0?"":typeof e=="string"?e:e.text,cs=2,Bf=6;function Ff(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 ls(e,t,o){let n=e.map((c,l)=>Math.max(as(c.label),...t.map(d=>as(d[l]??"")))),r=n.reduce((c,l)=>c+l,0),i=r+cs*Math.max(0,e.length-1)-o;if(i<0)return Ff(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)>Bf).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 Uf=(e,t,o)=>t.map((n,r)=>n.align==="right"?Nt(e[r]??"",o[r]??0):Pe(e[r]??"",o[r]??0)).join(" ".repeat(cs)),Po=2,jf=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 g=$=>d===void 0?void 0:`${d}:${$}`,u=i!==void 0,[p,S]=Ge(u?g("cursor"):void 0,()=>0),[f,h]=Ge(g("query"),()=>""),[b,x]=rl(!1),w=f.trim().toLowerCase(),y=w===""||s===void 0?e:e.filter($=>s($).toLowerCase().includes(w)),v=b||w!=="",E=Math.max(1,r-1-(v?1:0)),M=y.length>E?Math.max(1,E-1):E,F=Math.max(0,y.length-M),[T,C]=rl(()=>p>=M?p-M+1:0);ol(()=>{S($=>Math.min($,Math.max(0,y.length-1)))},[y.length]),ol(()=>{C($=>u?p<$?p:p>=$+M?p-M+1:$:Math.min($,F))},[p,M,F,u]);let R=$=>{if(!u){C(ne=>Math.min(Math.max(0,ne+$),F));return}y.length!==0&&S(ne=>(ne+$+y.length)%y.length)};z(($,ne)=>{if(ne.upArrow||$==="k"){R(-1);return}if(ne.downArrow||$==="j"){R(1);return}if(ne.return){let q=y[p];q!==void 0&&i?.(q,p);return}s!==void 0&&$.startsWith("/")&&(x(!0),$.length>1&&h($.slice(1)))},a&&!b),Xt(()=>{x(!1),h("")},{isActive:b||w!=="",layer:b?qn.input:qn.panel});let P=v?1:0,k=$f(null),I=$=>{if($<=P)return null;let ne=T+$-P-1;return y[ne]===void 0?null:ne},_=$e({isActive:a,onWheel:R,onClick:({row:$,column:ne})=>{if(v&&$===0){x(!0),k.current?.moveToColumn(ne-jf);return}if(i===void 0)return;let q=I($);if(q===null)return;let se=y[q];se!==void 0&&(S(q),i(se,q))},onHover:u?({row:$})=>{let ne=I($);ne!==null&&S(ne)}:void 0}),N=ls(t,y.map($=>o($).map(il)),n-Po),H=y.slice(T,T+M);return Ao(ss,{ref:_,flexDirection:"column",children:[v&&Ao(ss,{children:[nn(Wt,{color:m.accent,children:"/ "}),nn(yr,{ref:k,value:f,onChange:h,onSubmit:()=>x(!1),isActive:b,placeholder:"\u8F93\u5165\u5173\u952E\u8BCD\u8FC7\u6EE4",width:n-2-as(` ${y.length}/${e.length}`)}),nn(Wt,{color:m.faintForeground,children:` ${y.length}/${e.length}`})]}),Ao(Wt,{wrap:"truncate",color:m.faintForeground,children:[" ".repeat(Po),Uf(t.map($=>$.label),t,N)]}),y.length===0?Ao(ss,{flexDirection:"column",children:[nn(Wt,{wrap:"truncate",color:m.mutedForeground,children:`${" ".repeat(Po)}${w===""?c:"\u65E0\u5339\u914D\u7ED3\u679C"}`}),l!==void 0&&w===""&&E>1&&nn(Wt,{wrap:"truncate",color:m.faintForeground,children:`${" ".repeat(Po)}${l}`})]}):H.map(($,ne)=>{let q=T+ne,se=u&&q===p&&a,nt=se?m.accent:a?m.foreground:m.mutedForeground,A=o($);return Ao(Wt,{wrap:"truncate",children:[nn(Wt,{color:m.accent,children:se?`${X.cursor} `:" "}),t.map((B,K)=>{let de=A[K],Ne=il(de),yt=B.align==="right"?Nt(Ne,N[K]??0):Pe(Ne,N[K]??0),St=typeof de=="object"?de.tone:void 0,Ie=!se&&a&&St!==void 0?Be[St]:nt;return nn(Wt,{color:Ie,bold:se,children:K>0?`${" ".repeat(cs)}${yt}`:yt},B.label)})]},q)}),(T>0||T+M<y.length)&&nn(Wt,{color:m.faintForeground,children:`${" ".repeat(Po)}${T+1}-${Math.min(T+M,y.length)} / ${y.length}`})]})}import{jsx as on,jsxs as al}from"react/jsx-runtime";function cl(){let e=D(),{width:t}=j(),o=re(),[n,r]=qf({name:"list"}),i=Y([e.revision],async()=>{let a=await ar();return ac().catch(()=>e.toast("warn","\u5DF2\u8BFB\u56DE\u6267\u53D1\u9001\u5931\u8D25")),a});z(a=>{n.name==="list"&&a==="r"&&e.reload()});let s=()=>{n.name==="list"?e.pop():r({name:"list"})};return on(G,{hints:n.name==="list"?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","/ \u8FC7\u6EE4","r \u5237\u65B0"]:["\u2191\u2193 \u6EDA\u52A8","Esc \u8FD4\u56DE"],onEscape:s,children:on(Q,{state:i,loading:"\u6B63\u5728\u8BFB\u53D6\u516C\u544A",width:t,children:a=>{if(n.name==="detail"){let c=fo(n.item.level),l=He(c);return al(sl,{flexDirection:"column",children:[al(Lr,{wrap:"truncate",children:[on(Lr,{bold:!0,color:m.foreground,children:n.item.title}),on(Lr,{color:l===void 0?m.mutedForeground:Be[l],children:` ${c.label}`}),on(Lr,{color:m.faintForeground,children:` ${Oe([`\u53D1\u5E03\u4E8E ${Ut(n.item.publishedAt)}`])}`})]}),on(sl,{marginTop:1,children:on(en,{lines:Gn(n.item.content,t),height:Math.max(3,o-2)})})]})}return on(Re,{retain:"list",items:a,width:t,height:o,columns:[{label:"\u6807\u9898",shrink:!0},{label:"\u7EA7\u522B"},{label:"\u53D1\u5E03\u4E8E",align:"right"}],row:c=>[c.title,Ht(fo(c.level)),Ut(c.publishedAt)],searchOf:c=>c.title,onOpen:c=>r({name:"detail",item:c}),emptyLabel:"\u6682\u65E0\u516C\u544A",emptyDescription:"\u5E73\u53F0\u6709\u65B0\u901A\u77E5\u65F6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"})}})})}import{Box as ht,Text as Lo}from"ink";import{useState as zl}from"react";import dg from"string-width";var ll=()=>O(Ca,"/auth/me"),ul=e=>O(ye,"/auth/me",{method:"PATCH",json:e}).then(()=>{}),ml=e=>O(ye,"/auth/me/password",{method:"POST",json:e}).then(()=>{}),dl=e=>O(ye,"/auth/me/email/code",{method:"POST",json:e}).then(()=>{}),pl=e=>O(ye,"/auth/me/email",{method:"POST",json:e}).then(()=>{}),fl=()=>O(Ea,"/auth/me/sessions"),gl=e=>O(ye,`/auth/me/sessions/${e}`,{method:"DELETE"}).then(()=>{}),hl=()=>O(Aa,"/auth/me/security"),us=e=>O(Pa,"/auth/me/totp/setup",{method:"POST",json:e}),bl=e=>O(Ci,"/auth/me/totp/confirm",{method:"POST",json:e}),yl=e=>O(ye,"/auth/me/totp/disable",{method:"POST",json:e}).then(()=>{}),Sl=e=>O(Ci,"/auth/me/totp/recovery-codes",{method:"POST",json:e}),xl=(e,t)=>O(ye,`/auth/me/passkeys/${e}`,{method:"PATCH",json:t}).then(()=>{}),Tl=e=>O(ye,`/auth/me/passkeys/${e}`,{method:"DELETE"}).then(()=>{});import{Box as Mt,measureElement as El,Text as _e,useInput as Ll}from"ink";import{useEffect as Kf,useRef as Pl,useState as Jn}from"react";import fs from"string-width";import{Box as Hf,Text as Sn,useInput as Wf}from"ink";import{useRef as wl,useState as kl}from"react";import ds from"string-width";import{jsx as xn,jsxs as Vf}from"react/jsx-runtime";var zf=e=>e.replace(/\r\n?/g,`
2
+ import{once as Yb}from"events";import{createInterface as Qb}from"readline/promises";import{parseArgs as Xb}from"util";var Ys={name:"@codeflow-ai/cli",version:"1.12.1",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 lt="codeflow",ut=Ys.version,Qs="https://codeflow.asia",Ln="@codeflow-ai/cli",io=0,Mn=1,pi=2,un=3,Xs=4;import{randomBytes as Pd}from"crypto";import{mkdirSync as na,readFileSync as Ad,rmSync as oa,statSync as Nd,writeFileSync as Id}from"fs";import{join as ra}from"path";import{setTimeout as Ld}from"timers/promises";import{z as xt}from"zod";var U=class extends Error{exitCode;hint;constructor(t,o={}){super(t,{cause:o.cause}),this.name="CliError",this.exitCode=o.exitCode??Mn,this.hint=o.hint}};function Ue(e){return e instanceof Error?e.message:String(e)}import{chmodSync as wd,existsSync as kd,mkdirSync as vd,readFileSync as Rd,writeFileSync as _d}from"fs";import{dirname as Cd}from"path";function On(e){return kd(e)?Rd(e,"utf8"):null}function fi(e,t,o){vd(Cd(e),{recursive:!0,mode:448});try{_d(e,t,{mode:o}),wd(e,o)}catch(n){throw new U(`\u5199\u5165 ${e} \u5931\u8D25\uFF1A${Ue(n)}`,{cause:n})}}function zo(e){let t=On(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 Go(e,t,o){fi(e,`${JSON.stringify(t,null,2)}
3
+ `,o)}function Vo(e,t,o,n){let r=null,i=()=>{if(r)return r;let s=t(),a=On(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),Go(t(),a,384),r=a,a}}}import{homedir as Ed}from"os";import{join as Dn}from"path";function Ut(){let e=process.env.XDG_CONFIG_HOME;if(e)return Dn(e,"codeflow");if(process.platform==="win32"){let t=process.env.APPDATA;if(t)return Dn(t,"codeflow")}return Dn(Ed(),".config","codeflow")}var Zs=()=>Dn(Ut(),"config.json"),ea=()=>Dn(Ut(),"credentials.json"),ta=()=>Dn(Ut(),"refresh.lock");var Md=xt.object({refreshCookie:xt.string(),accessToken:xt.string(),accessExpiresAt:xt.number(),username:xt.string(),email:xt.string(),site:xt.string()}),Od=xt.object({site:xt.string(),cookie:xt.string()}),Dd=xt.object({session:Md.nullable().default(null),device:Od.nullable().default(null)}),gi=Vo(Dd,ea,"\u672C\u5730\u51ED\u636E","\u91CD\u65B0\u767B\u5F55"),Tt=gi.load,ia=gi.reload,hi=gi.update;function sa(){let{session:e}=Tt();if(!e)throw new U("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:un});return e}var $d=6e4,Bd=75e3,Fd=120;function Ud(e,t){try{na(e)}catch{try{Date.now()-Nd(e).mtimeMs>$d&&oa(e,{recursive:!0,force:!0})}catch{}return!1}return Id(ra(e,"owner"),t),!0}function jd(e,t){let o;try{o=Ad(ra(e,"owner"),"utf8")}catch{return}o===t&&oa(e,{recursive:!0,force:!0})}async function aa(e){let t=ta(),o=Pd(16).toString("hex");na(Ut(),{recursive:!0,mode:448});let n=Date.now()+Bd;for(;!Ud(t,o);){if(Date.now()>n)throw new U(`\u7B49\u5F85\u5237\u65B0\u9501\u8D85\u65F6\uFF0C\u82E5\u786E\u8BA4\u6CA1\u6709\u5176\u4ED6 ${lt} \u5728\u8FD0\u884C\uFF0C\u8BF7\u5220\u9664 ${t}`);await Ld(Fd)}try{return await e()}finally{jd(t,o)}}function qd(){let e=process.env.CODEFLOW_SITE;if(e)return e;let t=Tt().session;return t?t.site:Qs}function ca(){return{site:qd()}}function mn(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 Ap,rmSync as Np}from"fs";import{z as Le}from"zod";var Hd=["active","disabled"],Oy=Le.enum(Hd),Wd=["openai","anthropic"],Dy=Le.enum(Wd),zd=["openai-chat","openai-responses","anthropic-messages"],la=Le.enum(zd);var Gd=["enabled","auto_disabled","disabled"],$y=Le.enum(Gd),so=["pending","paid","refund_requested","partially_refunded","refunded","failed","expired"],ua=Le.enum(so),Vd=["recharge","subscription"],By=Le.enum(Vd),Kd=["requested","pending","succeeded","failed","rejected","canceled"],ma=Le.enum(Kd),bi=["pending","issued","rejected"],da=Le.enum(bi),Jd=["special","general"],yi=Le.enum(Jd),Yd=["info","success","warning","error"],pa=Le.enum(Yd),Qd=["terms","privacy"],Fy=Le.enum(Qd),Si=["recharge","reserve","consume","reserve_refund","refund","refund_release","reward","admin_adjust"],fa=Le.enum(Si),Xd=["usage_log","order","invitation","admin"],ga=Le.enum(Xd),xi=["first_inviter","first_invitee","subsequent_inviter"],ha=Le.enum(xi),Ti=["success","error","canceled","anomaly"],ba=Le.enum(Ti),wi=["open","replied","closed"],ya=Le.enum(wi),ki=["billing","technical","account","other"],Sa=Le.enum(ki),vi=["low","normal","high"],xa=Le.enum(vi),Zd=["user","admin"],Ta=Le.enum(Zd);import{z as $n}from"zod";var ep=["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"],tp=$n.enum(ep),wa=$n.object({error:$n.object({code:tp,message:$n.string(),details:$n.unknown().optional(),requestId:$n.string().optional()})});var ka={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 le}from"zod";var np=le.string().trim().min(1),Ri=np.pipe(le.url()),op=le.object({name:le.string().trim().min(1).max(64),description:le.string().trim().min(1).max(200),url:Ri}),va=le.array(op),rp=["string","number","boolean","secret","markdown","money","api-lines","origins"],ip=le.enum(rp),sp=le.object({key:le.string(),type:ip,label:le.string(),description:le.string().optional(),value:le.unknown().optional(),secret:le.boolean().default(!1),required:le.boolean().default(!1),min:le.number().optional(),max:le.number().optional(),step:le.number().optional(),unit:le.string().optional(),placeholder:le.string().optional()}),zy=le.object({key:le.string(),label:le.string(),description:le.string().optional(),fields:le.array(sp)}),Gy=le.object({values:le.record(le.string(),le.unknown()).refine(e=>Object.keys(e).length>0,{message:"at least one value required"})}),Vy=le.object({fields:le.record(le.string(),le.string())});function Ra(e){return`codeflow-cli/${e.cliVersion} (${e.platform} ${e.release}; ${e.arch}) node/${e.nodeVersion}`}function Ko(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 mt}from"zod";var _i=1e8;var Qy=mt.object({id:mt.coerce.number().int().positive()}),Xy=mt.object({page:mt.coerce.number().int().min(1).default(1),pageSize:mt.coerce.number().int().min(1).max(100).default(20)});function ao(e){return mt.object({items:mt.array(e),total:mt.number().int().nonnegative(),page:mt.number().int().positive(),pageSize:mt.number().int().positive()})}var ye=mt.object({ok:mt.literal(!0)});import{z as W}from"zod";var dn=W.email().max(254).toLowerCase(),ot=8,co=W.string().min(ot).max(128),lo=W.string().min(1).max(128),pn=32,Ci=W.string().trim().min(1).max(pn),Ei=W.string().trim().min(1).max(254),ap=["register","reset_password"],tS=W.object({email:dn,purpose:W.enum(ap)}),nS=W.object({username:Ci,email:dn,password:co,code:W.string().min(4).max(8),inviteCode:W.string().trim().min(1).max(32).optional()}),oS=W.object({account:Ei,password:lo}),rS=W.object({email:dn,code:W.string().min(4).max(8),password:co}),iS=W.object({oldPassword:lo,newPassword:co}),sS=W.object({email:dn}),aS=W.object({email:dn,code:W.string().min(4).max(8),password:lo}),_a=W.object({username:W.string(),email:W.string()}),Bn=W.object({accessToken:W.string(),user:_a}),Ca=W.discriminatedUnion("status",[Bn.extend({status:W.literal("ok")}),W.object({status:W.literal("totp_required"),ticket:W.string()})]),Ea=W.object({user:_a}),cp=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()}),lp=W.object({id:W.number().int(),ip:W.string().nullable(),userAgent:W.string().nullable(),device:cp.nullable(),loginAt:W.string(),lastActiveAt:W.string(),expiresAt:W.string(),current:W.boolean()}),Pa=W.object({sessions:W.array(lp)});import{z as ue}from"zod";var Fn=ue.string().trim().length(6),up=ue.string().trim().min(10).max(20),Jo=ue.string().trim().min(1).max(64),Yo=ue.record(ue.string(),ue.unknown()),uS=ue.object({ticket:ue.string().min(1),code:Fn}),mS=ue.object({ticket:ue.string().min(1),code:up}),dS=ue.object({code:Fn.optional()}),pS=ue.object({code:Fn}),Aa=ue.object({secret:ue.string(),otpauthUri:ue.string()}),Pi=ue.object({recoveryCodes:ue.array(ue.string())}),mp=ue.object({id:ue.number().int(),name:ue.string(),createdAt:ue.string(),lastUsedAt:ue.string().nullable()}),Na=ue.object({totp:ue.object({enabled:ue.boolean(),enabledAt:ue.string().nullable(),recoveryCodesRemaining:ue.number().int()}),passkeys:ue.array(mp)}),fS=ue.object({name:Jo,response:Yo}),gS=ue.object({name:Jo}),hS=ue.object({response:Yo});import{z as xe}from"zod";var TS=xe.object({account:Ei,password:lo}),dp=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:dp})]),kS=xe.object({ticket:xe.string().min(1)}),vS=xe.object({ticket:xe.string().min(1),code:Fn}),RS=xe.object({ticket:xe.string().min(1),name:Jo,response:Yo}),_S=xe.object({ticket:xe.string().min(1),code:Fn.optional()}),Ia=xe.object({username:xe.string(),email:xe.string()}),CS=xe.object({accessToken:xe.string(),admin:Ia}),ES=xe.object({admin:Ia});import{z as Ai}from"zod";var LS=Ai.object({siteName:Ai.string().trim().min(1).max(64),siteDescription:Ai.string().trim().max(200).optional(),siteOrigin:Ri,username:Ci,email:dn,password:co});import{z as Ee}from"zod";var La={orderNo:Ee.string(),amountCny:Ee.number().int(),status:ua,credited:Ee.boolean(),refundedAmountCny:Ee.number().int(),succeededRefundCny:Ee.number().int(),pendingRefundCny:Ee.number().int(),createdAt:Ee.string()},uo=Ee.object({...La,quota:Ee.number(),refundedQuota:Ee.number()}),mo=Ee.object({...La,planName:Ee.string(),renewal:Ee.boolean(),grantedDurationDays:Ee.number().int()}),Ma=Ee.object({id:Ee.number().int(),amountCny:Ee.number().int(),status:ma,refundTradeNo:Ee.string().nullable(),reason:Ee.string().nullable(),rejectReason:Ee.string().nullable(),createdAt:Ee.string()});function Oa(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 Qo=wt.object({id:wt.number().int(),title:wt.string(),category:Sa,priority:xa,status:ya,createdAt:wt.string(),updatedAt:wt.string()}),Ni=wt.object({id:wt.number().int(),authorKind:Ta,content:wt.string(),createdAt:wt.string()}),Da=wt.object({ticket:Qo,messages:wt.array(Ni)});import{z as Un}from"zod";var $a=Un.object({id:Un.number().int(),title:Un.string(),content:Un.string(),level:pa,publishedAt:Un.string(),read:Un.boolean()});var Ba="Asia/Shanghai",pp="+08:00";function fp(e){return new Date(new Date(e).getTime()+288e5)}function gp(e=Date.now()){let t=fp(e);return{day:t.toISOString().slice(0,10),hour:t.getUTCHours()}}function Ii(e=Date.now()){return gp(e).day}function Li(e=Ii()){return new Date(`${e}T00:00:00${pp}`)}function Yt(e,t){let o=new Date(`${e}T00:00:00Z`);return new Date(o.getTime()+t*864e5).toISOString().slice(0,10)}var hp=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium",timeZone:Ba}),bp=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeZone:Ba});function ee(e){return hp.format(new Date(e))}function jt(e){return bp.format(new Date(e))}var yp=[{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 Sp(e){return e>=10?Math.round(e).toLocaleString("en-US"):e>=1?e.toFixed(1):e.toFixed(-Math.floor(Math.log10(e)))}function xp(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 Tp=[...yp.map(e=>({min:0,suffix:t=>`\u7EA6\u4E3A${e.name}\u7684 ${Sp(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 ${xp(e)}`}];function Fa(e){let{tokens:t,scope:o,range:n}=e;if(t<=0)return null;let r=Tp.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 qt(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown status value: ${t}`);return o}}function Qt(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown label value: ${t}`);return o}}var Xt=qt({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=Qt({recharge:"\u5145\u503C",subscription:"\u8BA2\u9605"}),Xo=qt({pending:{label:"\u5F85\u5904\u7406",tone:"warning"},issued:{label:"\u5DF2\u5F00\u5177",tone:"success"},rejected:{label:"\u5DF2\u9A73\u56DE",tone:"danger"}}),VS=qt({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=qt({active:{label:"\u6B63\u5E38",tone:"success"},disabled:{label:"\u7981\u7528",tone:"danger"}}),Mi=Qt({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"}),Ua=Qt({usage_log:"\u7528\u91CF",order:"\u8BA2\u5355",invitation:"\u9080\u8BF7",admin:"\u7BA1\u7406\u5458"}),ja=qt({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"}}),Zo=qt({success:{label:"\u6210\u529F",tone:"success"},error:{label:"\u5931\u8D25",tone:"danger"},canceled:{label:"\u53D6\u6D88",tone:"neutral"},anomaly:{label:"\u5F02\u5E38",tone:"warning"}}),qa=Qt({"openai-chat":"OpenAI Chat","openai-responses":"OpenAI Responses","anthropic-messages":"Anthropic Messages"}),po=Qt({special:"\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968",general:"\u589E\u503C\u7A0E\u666E\u901A\u53D1\u7968"}),fn=Qt({special:"\u4E13\u7968",general:"\u666E\u7968"}),er=Qt({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"}),fo=qt({info:{label:"\u4FE1\u606F",tone:"neutral"},success:{label:"\u6210\u529F",tone:"success"},warning:{label:"\u8B66\u544A",tone:"warning"},error:{label:"\u91CD\u8981",tone:"danger"}}),Oi=qt({open:{label:"\u5F85\u5904\u7406",tone:"warning"},replied:{label:"\u5DF2\u56DE\u590D",tone:"success"},closed:{label:"\u5DF2\u5173\u95ED",tone:"neutral"}}),tr=Qt({billing:"\u8BA1\u8D39",technical:"\u6280\u672F",account:"\u8D26\u53F7",other:"\u5176\u4ED6"}),Di=qt({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 $i(e){return Math.round(e*100)}function Ha(e){return e/100}function Wa(e,t,o){let n=e/t;return`${n<0?"-":""}$${Math.abs(n).toLocaleString("en-US",{minimumFractionDigits:o,maximumFractionDigits:o})}`}function me(e,t){return Wa(e,t,2)}function jn(e,t){return Wa(e,t,6)}var nr=10080,or=1440;function za(e){if(e%nr===0){let t=e/nr;return t===1?"\u6BCF\u5468\u9650\u989D":`${t} \u5468\u9650\u989D`}if(e%or===0){let t=e/or;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 wp(e){if(e%nr===0){let t=e/nr;return t===1?"\u6BCF\u5468":`\u6BCF ${t} \u5468`}if(e%or===0){let t=e/or;return t===1?"\u6BCF\u5929":`\u6BCF ${t} \u5929`}return e%60===0?`\u6BCF ${e/60} \u5C0F\u65F6`:`\u6BCF ${e} \u5206\u949F`}function Ga(e,t){return e.windows.map(o=>`${wp(o.durationMinutes)} ${me(o.quota,t)}`)}function Bi(e){return e.quota<=0?100:Math.min(100,Math.floor(e.used/e.quota*100))}function Fi(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 Me(e){return e.toLocaleString("en-US")}function Zt(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`:Me(e)}function gn(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 hn(e){return(e/1e3).toFixed(2)}function rr(e,t){return`${e}******${t}`}var Ui={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,\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,\u4E0D\u591F\u7528","\u8C03\u7528\u7ECF\u5E38\u62A5\u9519\u6216\u8D85\u65F6","\u4F7F\u7528\u9891\u7387\u4F4E,\u4E0D\u5212\u7B97"]},Va={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 kp}from"os";var vp=3e4,Rp=Ra({cliVersion:ut,platform:process.platform,release:kp(),arch:process.arch,nodeVersion:process.versions.node});async function dt(e,t={}){let o=new Headers(t.headers);o.set("user-agent",Rp);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??vp),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:Xs,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 _p(e,t){let o=wa.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"?un:void 0;return new U(ka[n]??r,i?{exitCode:i}:{})}function At(e){if(!e.ok)throw _p(e.status,e.data)}var Ya="cf_refresh",Qa="cf_device",Ka=6e4;function Ja(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 go(e,t){return{refresh:Ja(t,Ya)??e.refresh,device:Ja(t,Qa)??e.device}}function ir(e){let t=[];return e.refresh&&t.push(`${Ya}=${e.refresh}`),e.device&&t.push(`${Qa}=${e.device}`),t.length>0?{cookie:t.join("; ")}:{}}function Cp(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 ho(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:Cp(o.accessToken),username:o.user.username,email:o.user.email,site:e};return hi(r=>{r.session=n,t.device&&(r.device={site:e,cookie:t.device})}),n}function ji(e){let{device:t}=Tt();return t!==null&&t.site===e?t.cookie:null}async function Xa(e,t,o){let n={refresh:null,device:ji(e)},r=await dt(`${e}/api/auth/login`,{json:{account:t,password:o},headers:ir(n)});At(r);let i=Ca.parse(r.data),s=go(n,r.headers);return i.status==="totp_required"?{status:"totp_required",ticket:i.ticket,jar:s}:{status:"ok",session:ho(e,s,i)}}async function Za(e,t,o,n,r){let s=await dt(`${e}/api/auth/${r==="totp"?"login/totp":"login/recovery-code"}`,{json:{ticket:o,code:n},headers:ir(t)});At(s);let a=Bn.parse(s.data);return ho(e,go(t,s.headers),a)}function ec(){hi(e=>{e.session=null})}async function Ep(e){let t={refresh:e.refreshCookie,device:ji(e.site)},o=await dt(`${e.site}/api/auth/refresh`,{method:"POST",headers:ir(t)});if(o.status===401||o.status===403)throw ec(),new U("\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",{exitCode:un});At(o);let n=Bn.parse(o.data);return ho(e.site,go(t,o.headers),n)}async function qi(e=!1){let t=sa();return!e&&Date.now()<t.accessExpiresAt-Ka?t:aa(async()=>{let o=ia().session;if(!o)throw new U("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:un});return(o.refreshCookie!==t.refreshCookie||o.accessToken!==t.accessToken)&&Date.now()<o.accessExpiresAt-Ka?o:Ep(o)})}async function sr(){let e=Tt().session;if(!e)return;let t=await dt(`${e.site}/api/auth/logout`,{method:"POST",headers:ir({refresh:e.refreshCookie,device:ji(e.site)})});ec(),At(t)}import{spawn as Pp}from"child_process";function bo(e,t={}){return new Promise((o,n)=>{let r=Pp("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 tc(e){let t=[],o=async(n,r)=>{try{await r(),e.done(n)}catch(i){t.push(`${n}\uFF1A${Ue(i)}`),e.failed(n)}};return await o("\u9000\u51FA\u767B\u5F55",()=>sr()),await o("\u5220\u9664\u672C\u5730\u6587\u4EF6",()=>{let n=Ut();Ap(n)&&Np(n,{recursive:!0,force:!0})}),await o("\u5378\u8F7D\u672C\u7A0B\u5E8F",async()=>{await bo(["uninstall","-g",Ln])}),t}import{z as yo}from"zod";var Ip=yo.object({line:yo.object({name:yo.string(),url:yo.string()}).nullable().default(null),lastUpdateCheckAt:yo.number().nullable().default(null)}),nc=Vo(Ip,Zs,"\u672C\u5730\u914D\u7F6E","\u91CD\u65B0\u8FD0\u884C"),bn=nc.load,ar=nc.update;var Lp=1440*60*1e3;async function oc(){let e=(await bo(["view",Ln,"version"])).trim();if(e==="")throw new U(`npm \u6CA1\u6709\u62A5\u51FA ${Ln} \u7684\u7248\u672C`);return e}async function rc(e,t){return await bo(["install","-g",`${Ln}@${e}`],{background:t}),e}async function ic(){let e=await oc();return e===ut?null:await rc(e,!1)}function Mp(){let e=Date.now(),t=bn().lastUpdateCheckAt;return t!==null&&e-t<Lp?!1:(ar(o=>{o.lastUpdateCheckAt=e}),!0)}async function sc(){if(!Mp())return null;let e;try{e=await oc()}catch{return null}return e===ut?null:await rc(e,!0)}import{Box as $b,render as Bb,useInput as Fb}from"ink";import{useEffect as Js,useRef as Ub}from"react";import{z as Op}from"zod";async function kt(e,t,o={}){let n=await dt(t,o);return At(n),e.parse(n.data)}async function O(e,t,o={}){let n=await qi(),r=s=>dt(`${n.site}/api${t}`,{...o,headers:{...o.headers,authorization:`Bearer ${s}`}}),i=await r(n.accessToken);if(i.status===401){let s=await qi(!0);i=await r(s.accessToken)}return At(i),e.parse(i.data)}function qn(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 cr=()=>O(Op.array($a),"/announcements"),ac=e=>O(ye,`/announcements/${e}/read`,{method:"POST"}).then(()=>{}),cc=()=>O(ye,"/announcements/read-all",{method:"POST"}).then(()=>{});import{Box as lc,useWindowSize as Dp}from"ink";import{Children as $p}from"react";import{jsx as uc}from"react/jsx-runtime";var Bp=1,Hi=1,J=1;function j(){let{columns:e,rows:t}=Dp();return{width:Math.max(1,e-Bp*2),columns:e,rows:t}}function mc({height:e,children:t}){return uc(lc,{flexDirection:"column",height:e,justifyContent:"space-between",children:$p.toArray(t).map((o,n)=>uc(lc,{flexDirection:"column",flexShrink:0,children:o},n))})}import{useInput as pc}from"ink";import{createContext as Gi,useCallback as lr,useContext as Fp,useEffect as Vi,useMemo as Wi,useRef as So,useState as dc}from"react";import{jsx as zi}from"react/jsx-runtime";var ur=Gi(null),Ki=Gi(null),Hn={screen:0,panel:10,input:20},Ji=Gi(null);function fc({children:e}){let[t,o]=dc(!1),[n,r]=dc(!1),i=So(0),s=So(0),a=So([]),c=So(0),l=lr(()=>(i.current+=1,o(!0),()=>{i.current-=1,i.current===0&&o(!1)}),[]),d=lr(()=>(s.current+=1,r(!0),()=>{s.current-=1,s.current===0&&r(!1)}),[]),g=lr(h=>{let b={...h,seq:c.current+=1};return a.current.push(b),()=>{a.current=a.current.filter(x=>x!==b)}},[]),m=lr(()=>{a.current.reduce((b,x)=>b===null||x.layer>b.layer||x.layer===b.layer&&x.seq>b.seq?x:b,null)?.handler()},[]);pc((h,b)=>{b.escape&&m()});let p=Wi(()=>({active:t,acquire:l}),[t,l]),S=Wi(()=>({locked:n,acquire:d}),[n,d]),f=Wi(()=>({push:g,fire:m}),[g,m]);return zi(ur.Provider,{value:p,children:zi(Ki.Provider,{value:S,children:zi(Ji.Provider,{value:f,children:e})})})}function yn(e){let t=Fp(e);if(!t)throw new Error("\u952E\u76D8\u94A9\u5B50\u5FC5\u987B\u5728 KeyboardProvider \u5185\u4F7F\u7528");return t}function mr(e){let{acquire:t}=yn(ur);Vi(()=>{if(e)return t()},[e,t])}function gc(e){let{acquire:t}=yn(Ki);Vi(()=>{if(e)return t()},[e,t])}function dr(){return yn(Ki).locked}function pr(){return yn(ur).active}function z(e,t=!0){let o=yn(ur).active;pc(e,{isActive:t&&!o})}function hc(){return yn(Ji).fire}function en(e,{isActive:t=!0,layer:o=Hn.screen}={}){let{push:n}=yn(Ji),r=So(e);r.current=e,Vi(()=>{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 xc,useRef as fr}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,bc=77,yc=109,Sc=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===bc){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<Sc;){let p=e[a];if(p===bc||p===yc){c=p;break}a+=1}if(c===void 0){if(a-n<Sc)break;o.push(r),n+=1;continue}let l=e.subarray(n+3,a).toString("latin1").split(";");if(n=a+1,c===yc||l.length!==3)continue;let d=Number(l[0]),g=Number(l[1]),m=Number(l[2]);!Number.isFinite(d)||!Number.isFinite(g)||!Number.isFinite(m)||t.push((d&Yp)!==0?{row:m,column:g,kind:"wheel",delta:(d&1)===0?-1:1}:{row:m,column:g,kind:(d&Qp)!==0?"move":"press"})}return{events:t,clean:Buffer.from(o),pending:e.subarray(n)}}function Tc(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 f of o)f(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 g=n;return Object.assign(g,{isTTY:!0,setRawMode(m){return e.setRawMode(m),g},ref(){return e.ref(),g},unref(){return e.unref(),g}}),{stdin:g,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 wc=qp(null);function kc({subscribe:e,children:t}){let o=fr(new Set).current,n=fr(null),r=Hp(i=>(o.add(i),()=>{o.delete(i)}),[o]);return xc(()=>e(i=>{let s=i.row-1,a=i.column-1,c=null;for(let d of o){let g=d.node.current;if(g===null||d.handlers.current.isActive===!1)continue;let m=Up(g);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 g=n.current;g!==null&&o.has(g)&&g.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(wc.Provider,{value:r,children:t})}function $e(e){let t=Wp(wc);if(t===null)throw new Error("useMouseRegion \u5FC5\u987B\u5728 MouseProvider \u5185\u4F7F\u7528");let o=fr(null),n=fr(e);return n.current=e,xc(()=>t({node:o,handlers:n}),[t]),o}import{useApp as tf}from"ink";import{createContext as nf,useCallback as Sn,useContext as of,useEffect as Yi,useRef as hr,useState as To}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"}],vc="usage",xo=e=>Ye.findIndex(t=>t.id===e),gr=e=>xo(e)>=0;import{jsx as sf}from"react/jsx-runtime";var rf=3500,_c=nf(null),Cc=e=>({id:e,params:void 0}),Rc=()=>Tt().session===null?[{id:"home",params:void 0}]:[Cc(vc)];function D(){let e=of(_c);if(!e)throw new Error("useNav \u5FC5\u987B\u5728 NavProvider \u5185\u4F7F\u7528");return e}function Ec({ctx:e,children:t}){let o=tf(),[n,r]=To(Rc),[i,s]=To(0),[a,c]=To([]),l=hr({announcementsChecked:!1,announcementsShown:!1}).current,d=hr(new WeakMap).current,g=Sn((E,...M)=>{r(F=>[...F,{id:E,params:M[0]}])},[]),m=Sn(()=>{r(E=>E.length>1?E.slice(0,-1):E),s(E=>E+1)},[]),p=Sn(E=>{r([Cc(E)]),s(M=>M+1)},[]),S=Sn(()=>{r(Rc()),s(E=>E+1)},[]),f=Sn(()=>s(E=>E+1),[]),h=Sn((E,M)=>{c(F=>[...F,{tone:E,message:M}])},[]),b=Sn(()=>c(E=>E.slice(1)),[]),x=a[0]??null;Yi(()=>{if(x===null)return;let E=setTimeout(b,rf);return()=>clearTimeout(E)},[x,b]);let w=n[n.length-1];if(w===void 0)throw new Error("\u5BFC\u822A\u6808\u4E3A\u7A7A");let y=d.get(w);y===void 0&&(y=new Map,d.set(w,y));let k={ctx:e,current:w,depth:n.length,push:g,pop:m,select:p,home:S,reload:f,toast:h,message:x,dismissToast:b,exit:o.exit,revision:i,gate:l,retained:y};return sf(_c.Provider,{value:k,children:t})}function Ge(e,t){let{retained:o}=D(),[n,r]=To(()=>e!==void 0&&o.has(e)?o.get(e):t());return Yi(()=>{e!==void 0&&o.set(e,n)},[o,e,n]),[n,r]}function Y(e,t){let[o,n]=To({phase:"loading"}),r=hr(t);r.current=t;let i=hr(0);return Yi(()=>{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:Ue(a),hint:a instanceof U?a.hint:void 0})})},e),o}import{Box as Mr,Text as nn,useInput as $f}from"ink";import{useState as tl}from"react";import{Box as _o,Text as Vn}from"ink";import wo 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"},br=["#242424","#5a4233","#746533","#70924f","#37be95"],yr=["#37be95","#2d9273","#246e58","#1e5443","#193f33"],Be={accent:u.accent,success:u.success,warning:u.warning,danger:u.danger},Wn=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Sr=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=wo(X.ellipsis),cf=(e,t)=>e+" ".repeat(Math.max(0,t-wo(e))),lf=(e,t)=>" ".repeat(Math.max(0,t-wo(e)))+e;function Te(e,t){if(t<=0)return"";if(wo(e)<=t)return e;let o=t-af,n="";for(let r of e){if(wo(n+r)>o)break;n+=r}return n+X.ellipsis}var Pe=(e,t)=>cf(Te(e,t),t),Nt=(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 Pc,useEffect as df,useState as Nc}from"react";import Qi from"string-width";import{jsx as It,jsxs as Xi}from"react/jsx-runtime";var pf=e=>e.replace(new RegExp("\\p{Cc}","gu"),"");function Ac(e,t,o){let n=t,r=0;for(;n>0;){let s=Qi(e[n-1]??"");if(r+s>o)break;r+=s,n-=1}let i=t;for(r+=1;i<e.length;){let s=Qi(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 ko({char:e}){return It(vt,{backgroundColor:u.cursorBackground,color:u.foreground,children:e})}function xr({value:e,onChange:t,onSubmit:o,placeholder:n,mask:r=!1,isActive:i=!0,width:s=40,ref:a}){let c=[...e],[l,d]=Nc(c.length),g=Math.min(l,c.length),m=Math.max(8,s),p=Pc(e),S=Pc(g);p.current=e,S.current=g,mr(i);let f=k=>{S.current=k,d(k)},h=(k,E)=>{p.current=k,f(E),t(k)};if(mf(a,()=>({moveToColumn:k=>{let E=[...p.current],M=r?Array.from({length:E.length},()=>"\u2022"):E,T=Ac(M,Math.min(S.current,E.length),m).start,C=0;for(;T<E.length;){let R=Qi(M[T]??"");if(C+R>k)break;C+=R,T+=1}f(T)}})),uf((k,E)=>{let M=[...p.current],F=Math.min(S.current,M.length);if(E.return){o(p.current);return}if(E.tab||E.upArrow||E.downArrow)return;if(E.leftArrow){f(Math.max(0,F-1));return}if(E.rightArrow){f(Math.min(M.length,F+1));return}if(E.home){f(0);return}if(E.end){f(M.length);return}if(E.backspace){if(F===0)return;h([...M.slice(0,F-1),...M.slice(F)].join(""),F-1);return}if(E.delete){if(F>=M.length)return;h([...M.slice(0,F),...M.slice(F+1)].join(""),F);return}if(E.ctrl){if(k==="a")f(0);else if(k==="e")f(M.length);else if(k==="k")h(M.slice(0,F).join(""),F);else if(k==="u")h(M.slice(F).join(""),0);else if(k==="w"){let P=F;for(;P>0&&M[P-1]===" ";)P-=1;for(;P>0&&M[P-1]!==" ";)P-=1;h([...M.slice(0,P),...M.slice(F)].join(""),P)}return}if(E.meta||!k)return;let T=k.search(/[\r\n]/),C=pf(T===-1?k:k.slice(0,T)),R=[...M.slice(0,F),C,...M.slice(F)].join("");h(R,F+[...C].length),T!==-1&&o(R)},{isActive:i}),e===""){let k=[...n??""];return i?Xi(vt,{children:[It(ko,{char:k[0]??" "}),It(vt,{color:u.faintForeground,children:k.slice(1).join("")})]}):It(vt,{color:u.faintForeground,children:k.join("")})}let b=r?Array.from({length:c.length},()=>"\u2022"):c;if(!i)return It(vt,{color:u.foreground,children:b.join("")});let{before:x,at:w,after:y}=Ac(b,g,m);return Xi(vt,{children:[It(vt,{color:u.foreground,children:x}),It(ko,{char:w}),It(vt,{color:u.foreground,children:y})]})}function Qe({label:e}){let[t,o]=Nc(0);return df(()=>{let n=setInterval(()=>o(r=>(r+1)%Wn.length),Sr);return()=>clearInterval(n)},[]),Xi(vt,{children:[It(vt,{color:u.accent,children:Wn[t]}),It(vt,{color:u.mutedForeground,children:` ${e}`})]})}import{Box as Mc,Text as zn}from"ink";import{useEffect as Dc,useState as gf}from"react";import Oc from"string-width";import{Box as Ic,Text as Tr}from"ink";import ff from"string-width";import{jsx as vo,jsxs as Lc}from"react/jsx-runtime";var ae=2,rt=1,De=1,Rt=rt+De;function Ro({title:e,note:t,width:o}){let n=t===void 0?0:ff(t)+2,r=Math.max(0,o-ae-n);return Lc(Tr,{wrap:"truncate",children:[vo(Tr,{color:u.accent,children:`${X.section} `}),vo(Tr,{bold:!0,color:u.foreground,children:Te(e,r)}),t!==void 0&&vo(Tr,{color:u.faintForeground,children:` ${t}`})]})}function oe({title:e,note:t,width:o,gap:n=De,children:r}){return Lc(Ic,{flexDirection:"column",children:[vo(Ro,{title:e,note:t,width:o}),vo(Ic,{flexDirection:"column",marginTop:n,paddingLeft:ae,children:r})]})}import{jsx as Ht,jsxs as Bc}from"react/jsx-runtime";var Gn=e=>!("heading"in e),hf=e=>e.flatMap(t=>!Gn(t)&&t.heading!==""?[t,{heading:""}]:[t]),$c=2,wr=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]=Ge(n,()=>e.findIndex(d=>Gn(d)&&d.disabled!==!0));Dc(()=>{i(d=>d>=e.length?Math.max(0,e.length-1):d)},[e.length]);let s=d=>{i(g=>{let m=e.length;if(m===0)return g;let p=g;for(let S=0;S<m;S+=1){p=(p+d+m)%m;let f=e[p];if(f!==void 0&&Gn(f)&&f.disabled!==!0)return p}return g})},a=d=>{let g=e[d];return g!==void 0&&Gn(g)&&g.disabled!==!0?g:null},c=d=>{a(d)!==null&&i(d)},l=d=>{let g=a(d);g!==null&&(i(d),o(g.value))};return z((d,g)=>{if(g.upArrow||d==="k"){s(-1);return}if(g.downArrow||d==="j"){s(1);return}g.return&&l(r)},t),{index:Math.max(0,r),step:s,pick:l,moveTo:c}}function Zi(e,t){let[o,n]=gf(()=>e>=t?e-t+1:0);return Dc(()=>{n(r=>e<r?e:e>=r+t?e-t+1:r)},[e,t]),o}function Sf(e,t){let o=e.filter(Gn),n=Math.max(0,...o.map(s=>Oc(s.label))),r=Math.max(0,...o.map(s=>s.badge===void 0?0:Oc(s.badge))),i=$c+n+(r>0?r+wr:0)+wr;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 Bc(zn,{wrap:"truncate",children:[Ht(zn,{color:u.accent,children:t?`${X.cursor} `:" "}),Ht(zn,{color:r,bold:t,children:Pe(e.label,o.label)}),o.badge>0&&Ht(zn,{color:e.badgeTone===void 0?u.faintForeground:Be[e.badgeTone],children:`${" ".repeat(wr)}${Pe(e.badge??"",o.badge)}`}),e.hint!==void 0&&o.hint>0&&Ht(zn,{color:n||!t?u.faintForeground:u.mutedForeground,children:`${" ".repeat(wr)}${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=Zi(t,n),d=e.slice(l,l+n),g=p=>p<d.length?l+p:null,m=$e({isActive:i,onWheel:c,onClick:({row:p})=>{let S=g(p);S!==null&&s(S)},onHover:({row:p})=>{let S=g(p);S!==null&&a(S)}});return Bc(Mc,{ref:m,flexDirection:"column",children:[d.map((p,S)=>{let f=l+S;return Gn(p)?Ht(xf,{item:p,active:f===t&&i,metrics:o},f):p.heading===""?Ht(Mc,{height:1},f):Ht(Ro,{title:p.heading,width:r},f)}),e.length>n&&Ht(zn,{color:u.faintForeground,children:`${" ".repeat($c)}${l+1}-${Math.min(l+n,e.length)} / ${e.length}`})]})}function ce({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 pt,jsxs as kr}from"react/jsx-runtime";var Fc={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=Fc[e];return kr(_o,{flexDirection:"column",children:[kr(Vn,{children:[pt(Vn,{color:r.color,children:`${r.glyph} `}),pt(Vn,{color:u.foreground,children:Te(t,n-2)})]}),o!==void 0&&pt(Vn,{color:u.faintForeground,children:` ${Te(o,n-2)}`})]})}function xn({message:e,hint:t,width:o}){return pt(fe,{tone:"fail",title:e,detail:t,width:o})}var wf=2,kf=2;function Uc({tone:e,message:t,width:o,onDismiss:n}){let r=Fc[e],i=$e({onClick:n});return kr(_o,{ref:i,children:[pt(Vn,{backgroundColor:u.border,color:r.color,wrap:"truncate",children:` ${r.glyph} `}),pt(Vn,{backgroundColor:u.border,color:u.foreground,wrap:"truncate",children:`${Te(t,o-wf-kf)} `})]})}function je({title:e,detail:t,confirmLabel:o,onConfirm:n,onCancel:r,width:i,busy:s,error:a}){return kr(_o,{flexDirection:"column",children:[pt(fe,{tone:"warn",title:e,detail:t,width:i}),a!=null&&pt(_o,{marginTop:1,children:pt(xn,{message:a.message,hint:a.hint,width:i})}),pt(_o,{marginTop:1,children:typeof s=="string"?pt(Qe,{label:s}):pt(ce,{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 vr,useInput as Rf}from"ink";import{useRef as _f,useState as Cf}from"react";import{jsx as Rr,jsxs as Ef}from"react/jsx-runtime";function tn({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 g=$e({isActive:o&&r,onWheel:d}),m=e.slice(a,a+i);return Ef(vf,{ref:g,flexDirection:"column",children:[m.map((p,S)=>Rr(vr,{wrap:"truncate",children:p.spans.length===0?" ":p.spans.map((f,h)=>Rr(vr,{color:f.color??u.foreground,bold:f.bold===!0,children:f.text},h))},a+S)),Array.from({length:Math.max(0,i-m.length)},(p,S)=>Rr(vr,{children:" "},S)),r&&Rr(vr,{color:u.faintForeground,wrap:"truncate",children:`${a+1}-${Math.min(a+i,e.length)} / ${e.length}`})]})}function He(e){return e.tone==="neutral"?void 0:e.tone}function Wt(e){let t=He(e);return t===void 0?e.label:{text:e.label,tone:t}}import{useCallback as es,useRef as Pf,useState as jc}from"react";function ge(){let e=D(),[t,o]=jc(null),[n,r]=jc(null),i=Pf(0),s=es(()=>{i.current+=1,o(null),r(null)},[]),a=es((l,d)=>{r({message:l,hint:d})},[]),c=es((l,d,g={})=>{let m=i.current+=1;o(l),r(null),d().then(p=>{i.current===m&&(o(null),g.onSuccess?.(p))}).catch(p=>{if(i.current!==m)return;o(null);let S={message:Ue(p),hint:p instanceof U?p.hint:void 0};g.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 _r from"string-width";var Nf={spans:[]},ts=e=>e===void 0||e.spans.every(t=>t.text.trim()==="");function qc(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 Lt(e,t,o=0){let n=()=>Array.from({length:o},()=>({ch:" "})),r=[],i=[],s=0,a=!0,c=()=>{r.push(qc(i)),a=!1,i=n(),s=o};for(let l of e)for(let d of l.text){if(d===`
5
+ `){c();continue}let g=_r(d);if(s+g>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((f,h)=>f+_r(h.ch),0)}else c()}i.push({ch:d,color:l.color,bold:l.bold}),s+=g}return(i.length>0||r.length===0)&&r.push(qc(i)),r}function Mt(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?Mt(n.tokens,t):[{text:n.text,...t}]);break;case"strong":o.push(...Mt(n.tokens,{...t,bold:!0}));break;case"em":o.push(...Mt(n.tokens,t));break;case"del":o.push(...Mt(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=Mt(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 Hc=2,Wc=e=>e.reduce((t,o)=>t+_r(o.text),0);function If(e,t,o,n){let r=e.map(m=>({spans:Mt(m.tokens,{bold:!0,color:u.foreground}),align:m.align})),i=t.map(m=>m.map(p=>({spans:Mt(p.tokens,{color:u.foreground}),align:p.align}))),s=n-(e.length+1)-e.length*2;if(s<e.length*Hc)return Lt([{text:o,color:u.foreground}],n);let a=e.map(()=>Hc);for(let m of[r,...i])m.forEach((p,S)=>{for(let f of Lt(p.spans,Number.MAX_SAFE_INTEGER)){let h=a[S],b=Wc(f.spans);h!==void 0&&b>h&&(a[S]=b)}});let c=a.reduce((m,p)=>m+p,0);for(;c>s;){let m=0,p=0;a.forEach((S,f)=>{S>p&&(m=f,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(f=>"\u2500".repeat(f+2)).join(p)}${S}`)]}),g=m=>{let p=a.map((h,b)=>{let x=m[b];return{width:h,align:x?.align??null,lines:Lt(x?.spans??[],h)}}),S=p.reduce((h,b)=>Math.max(h,b.lines.length),1),f=[];for(let h=0;h<S;h+=1){let b=[];for(let x of p){let w=x.lines[h]?.spans??[],y=x.width-Wc(w),k=x.align==="right"?y:x.align==="center"?Math.floor(y/2):0;b.push(l("\u2502"),{text:` ${" ".repeat(k)}`}),b.push(...w),b.push({text:`${" ".repeat(y-k)} `})}b.push(l("\u2502")),f.push({spans:b})}return f};return[d("\u250C","\u252C","\u2510"),...g(r),d("\u251C","\u253C","\u2524"),...i.flatMap(g),d("\u2514","\u2534","\u2518")]}function ns(e,t){let o=[],n=()=>{o.length>0&&!ts(o[o.length-1])&&o.push(Nf)};for(let r of e)switch(r.type){case"space":n();break;case"heading":{let i=Mt(r.tokens,{bold:!0,color:u.foreground}),s=r.depth<=2?[{text:`${X.section} `,color:u.accent},...i]:i;o.push(...Lt(s,t,r.depth<=2?2:0)),n();break}case"paragraph":o.push(...Lt(Mt(r.tokens,{color:u.foreground}),t)),n();break;case"text":o.push(...Lt("tokens"in r&&r.tokens!==void 0?Mt(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(...Lt([{text:` ${i}`,color:u.mutedForeground}],t,2));n();break;case"blockquote":{let i=ns(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=_r(l),g=ns(a.tokens,Math.max(4,t-d));g.forEach((m,p)=>{ts(m)&&p===g.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(...Lt([{text:r.raw,color:u.foreground}],t))}return o}function Kn(e,t){let o=Af.lex(e,{gfm:!0,breaks:!0}),n=ns(o,Math.max(8,t));for(;n.length>0&&ts(n[n.length-1]);)n.pop();return n}import{Box as Eo}from"ink";import{Box as Lf,Text as zc}from"ink";import Vc from"string-width";import{jsx as Gc,jsxs as Mf}from"react/jsx-runtime";var Cr=["\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"],Kc=Math.max(...Cr.map(e=>Vc(e))),Er=Cr.length,Pr=e=>Kc<=e;function Ar({width:e}){let t=`v${ut}`,o=Kc+2+Vc(t)<=e;return Gc(Lf,{flexDirection:"column",children:Cr.map((n,r)=>Mf(zc,{color:u.accent,children:[n,r===Cr.length-1&&o&&Gc(zc,{color:u.faintForeground,children:` ${t}`})]},n))})}import{Box as is,Text as it}from"ink";import{useState as Jc}from"react";import Yn from"string-width";import{jsx as ft,jsxs as Nr}from"react/jsx-runtime";var Ir=2,os=` ${X.crumb} `;function Lr({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+Yn(p)+Yn(os),0),a=s+Yn(r)<=t,c=a?s:0,[l,d]=Jc(!1),g=$e({isActive:n,onClick:({column:m})=>{m<c&&o()},onHover:({column:m})=>d(m<c),onHoverLeave:()=>d(!1)});return ft(is,{ref:g,marginBottom:1,children:a?Nr(it,{children:[i.map((m,p)=>Nr(it,{children:[ft(it,{color:p===0?u.accent:l&&n?u.foreground:u.mutedForeground,children:m}),ft(it,{color:u.faintForeground,children:os})]},p)),ft(it,{bold:!0,color:u.foreground,children:r})]}):ft(it,{color:u.mutedForeground,children:Te(e.join(os),t)})})}var rs=2,Co=2,Jn=2;function Yc({current:e,width:t,onPick:o,isActive:n}){let r=Math.max(0,xo(e)),[i,s]=Jc(null),a=Math.max(...Ye.map(b=>Yn(b.label))),l=(b=>b*a+(b-1)*Co+rs)(Ye.length)>t,d=l?t-Jn*2:t,g=l?Math.max(1,Math.floor((d+Co-rs)/(a+Co))):Ye.length,m=Math.min(Math.max(0,r-Math.floor((g-1)/2)),Ye.length-g),p=Ye.slice(m,m+g),S=[],f=l?Jn:0;p.forEach((b,x)=>{x>0&&(f+=Co);let w=Yn(b.label)+(b.id===e?rs:0);S.push({id:b.id,from:f,to:f+w}),f+=w});let h=$e({isActive:n,onHover:({column:b})=>{let x=S.find(w=>b>=w.from&&b<w.to);s(x?.id??null)},onHoverLeave:()=>s(null),onClick:({column:b})=>{let x=S.find(y=>b>=y.from&&b<y.to);if(x!==void 0){o(x.id);return}if(!l||b>=Jn&&b<f)return;let w=b<Jn?Ye[m-1]:Ye[m+g];w!==void 0&&o(w.id)}});return ft(is,{ref:h,marginBottom:1,children:Nr(it,{wrap:"truncate",children:[l&&ft(it,{color:u.border,children:m>0?`${X.prev} `:" ".repeat(Jn)}),p.map((b,x)=>Nr(it,{children:[x>0&&" ".repeat(Co),b.id===e?ft(it,{backgroundColor:u.foreground,color:u.background,bold:!0,children:` ${b.label} `}):ft(it,{color:n&&b.id===i?u.foreground:u.mutedForeground,children:b.label})]},b.id)),l&&ft(it,{color:u.border,children:m+g<Ye.length?` ${X.next}`:" ".repeat(Jn)})]})})}function Qc({hints:e,width:t}){let o=[];for(let n of e){if(Yn(Oe([...o,n]))>t)break;o.push(n)}return ft(is,{children:ft(it,{color:u.faintForeground,children:Oe(o)})})}import{Fragment as Df,jsx as Xe,jsxs as el}from"react/jsx-runtime";var Xc=3,Of=8;function Po(e){let{rows:t}=j();return Math.max(1,t-Hi-Xc-e)}function Zc(){let e=D(),{width:t,rows:o}=j(),n=e.current.id,r=e.depth===1&&gr(n)?n:null,i=Math.max(1,o-Hi-Xc),s=Er+J,a=r!==null&&Pr(t)&&i-Ir-s>=Of;return{tab:r,mark:a,rows:a?Ir+s:Ir}}var re=()=>Po(Zc().rows);function Tn({header:e,hints:t,children:o}){let{width:n}=j(),{message:r,dismissToast:i}=D();return el(Eo,{flexDirection:"column",flexGrow:1,children:[e,Xe(Eo,{flexDirection:"column",flexGrow:1,overflow:"hidden",children:Xe(Eo,{flexDirection:"column",flexShrink:0,children:o})}),Xe(Eo,{height:1,marginTop:1,justifyContent:"flex-end",children:r!==null&&Xe(Uc,{tone:r.tone,message:r.message,width:n,onDismiss:i})}),Xe(Qc,{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}=Zc(),g=dr(),m=pr(),p=m?[]:["[] \u5207\u529F\u80FD","q \u9000\u51FA","? \u5E2E\u52A9"],S=m?[]:["? \u5E2E\u52A9"];en(n??a.pop,{isActive:r});let f=hc(),h=r&&!i&&!g;return z(b=>{if(l===null||b!=="["&&b!=="]")return;let x=Ye[(xo(l)+(b==="["?-1:1)+Ye.length)%Ye.length];x!==void 0&&a.select(x.id)},r&&!i&&!g&&!s),s?Xe(Tn,{header:null,hints:i?t:[...t,"Esc \u8FD4\u56DE",...S],children:o}):l!==null?Xe(Tn,{header:el(Df,{children:[d&&Xe(Eo,{marginBottom:J,children:Xe(Ar,{width:c})}),Xe(Yc,{current:l,width:c,onPick:b=>{b===l?f():a.select(b)},isActive:h})]}),hints:i?t:[...t,...p],children:o}):Xe(Tn,{header:Xe(Lr,{trail:["CodeFlow",...e??[]],width:c,onBack:f,isActive:h}),hints:i?t:[...t,"Esc \u8FD4\u56DE",...S],children:o})}function Q({state:e,loading:t,width:o,children:n}){return e.phase==="loading"?Xe(Qe,{label:t}):e.phase==="error"?Xe(xn,{message:e.message,hint:e.hint,width:o}):n(e.data)}import{jsx as st,jsxs as ss}from"react/jsx-runtime";function nl({params:e}){let t=D(),{width:o}=j(),n=re(),[r]=tl(()=>[...e.items].sort((f,h)=>Date.parse(f.publishedAt)-Date.parse(h.publishedAt)||f.id-h.id)),[i,s]=tl(0),{busy:a,error:c,run:l}=ge(),d=r[i];if($f((f,h)=>{!h.return||d===void 0||l("\u6B63\u5728\u786E\u8BA4",()=>ac(d.id),{onSuccess:()=>{if(i+1>=r.length){t.pop();return}s(i+1)}})},{isActive:a===null}),d===void 0)return null;let g=fo(d.level),m=He(g),p=r.length-i-1,S=Math.max(3,n-4-(c===null?0:2));return st(G,{trail:["\u7CFB\u7EDF\u516C\u544A","\u672A\u8BFB\u786E\u8BA4"],hints:["\u2191\u2193 \u6EDA\u52A8","Enter \u6211\u77E5\u9053\u4E86"],locked:!0,onEscape:()=>{},children:ss(Mr,{flexDirection:"column",children:[ss(nn,{wrap:"truncate",children:[st(nn,{bold:!0,color:u.foreground,children:d.title}),st(nn,{color:m===void 0?u.mutedForeground:Be[m],children:` ${g.label}`}),st(nn,{color:u.faintForeground,children:` \u53D1\u5E03\u4E8E ${jt(d.publishedAt)}`})]}),st(Mr,{marginTop:1,children:st(tn,{lines:Kn(d.content,o),height:S})}),c!==null&&st(Mr,{marginTop:1,children:st(xn,{message:c.message,hint:c.hint,width:o})}),st(Mr,{marginTop:1,children:a!==null?st(Qe,{label:a}):ss(nn,{wrap:"truncate",children:[st(nn,{color:u.accent,children:`${X.cursor} `}),st(nn,{bold:!0,color:u.accent,children:"\u6211\u77E5\u9053\u4E86"}),st(nn,{color:u.faintForeground,children:Nt(p>0?`\u8FD8\u6709 ${p} \u6761\u672A\u8BFB`:"",Math.max(0,o-2-10))})]})})]})})}import{Box as sl,Text as Or}from"ink";import{useState as Hf}from"react";import{Box as as,Text as zt}from"ink";import{useEffect as ol,useRef as Bf,useState as rl}from"react";import cs from"string-width";import{jsx as on,jsxs as No}from"react/jsx-runtime";var il=e=>e===void 0?"":typeof e=="string"?e:e.text,ls=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 us(e,t,o){let n=e.map((c,l)=>Math.max(cs(c.label),...t.map(d=>cs(d[l]??"")))),r=n.reduce((c,l)=>c+l,0),i=r+ls*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"?Nt(e[r]??"",o[r]??0):Pe(e[r]??"",o[r]??0)).join(" ".repeat(ls)),Ao=2,qf=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 g=$=>d===void 0?void 0:`${d}:${$}`,m=i!==void 0,[p,S]=Ge(m?g("cursor"):void 0,()=>0),[f,h]=Ge(g("query"),()=>""),[b,x]=rl(!1),w=f.trim().toLowerCase(),y=w===""||s===void 0?e:e.filter($=>s($).toLowerCase().includes(w)),k=b||w!=="",E=Math.max(1,r-1-(k?1:0)),M=y.length>E?Math.max(1,E-1):E,F=Math.max(0,y.length-M),[T,C]=rl(()=>p>=M?p-M+1:0);ol(()=>{S($=>Math.min($,Math.max(0,y.length-1)))},[y.length]),ol(()=>{C($=>m?p<$?p:p>=$+M?p-M+1:$:Math.min($,F))},[p,M,F,m]);let R=$=>{if(!m){C(ne=>Math.min(Math.max(0,ne+$),F));return}y.length!==0&&S(ne=>(ne+$+y.length)%y.length)};z(($,ne)=>{if(ne.upArrow||$==="k"){R(-1);return}if(ne.downArrow||$==="j"){R(1);return}if(ne.return){let q=y[p];q!==void 0&&i?.(q,p);return}s!==void 0&&$.startsWith("/")&&(x(!0),$.length>1&&h($.slice(1)))},a&&!b),en(()=>{x(!1),h("")},{isActive:b||w!=="",layer:b?Hn.input:Hn.panel});let P=k?1:0,v=Bf(null),I=$=>{if($<=P)return null;let ne=T+$-P-1;return y[ne]===void 0?null:ne},_=$e({isActive:a,onWheel:R,onClick:({row:$,column:ne})=>{if(k&&$===0){x(!0),v.current?.moveToColumn(ne-qf);return}if(i===void 0)return;let q=I($);if(q===null)return;let se=y[q];se!==void 0&&(S(q),i(se,q))},onHover:m?({row:$})=>{let ne=I($);ne!==null&&S(ne)}:void 0}),N=us(t,y.map($=>o($).map(il)),n-Ao),H=y.slice(T,T+M);return No(as,{ref:_,flexDirection:"column",children:[k&&No(as,{children:[on(zt,{color:u.accent,children:"/ "}),on(xr,{ref:v,value:f,onChange:h,onSubmit:()=>x(!1),isActive:b,placeholder:"\u8F93\u5165\u5173\u952E\u8BCD\u8FC7\u6EE4",width:n-2-cs(` ${y.length}/${e.length}`)}),on(zt,{color:u.faintForeground,children:` ${y.length}/${e.length}`})]}),No(zt,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(Ao),jf(t.map($=>$.label),t,N)]}),y.length===0?No(as,{flexDirection:"column",children:[on(zt,{wrap:"truncate",color:u.mutedForeground,children:`${" ".repeat(Ao)}${w===""?c:"\u65E0\u5339\u914D\u7ED3\u679C"}`}),l!==void 0&&w===""&&E>1&&on(zt,{wrap:"truncate",color:u.faintForeground,children:`${" ".repeat(Ao)}${l}`})]}):H.map(($,ne)=>{let q=T+ne,se=m&&q===p&&a,nt=se?u.accent:a?u.foreground:u.mutedForeground,A=o($);return No(zt,{wrap:"truncate",children:[on(zt,{color:u.accent,children:se?`${X.cursor} `:" "}),t.map((B,K)=>{let de=A[K],Ne=il(de),yt=B.align==="right"?Nt(Ne,N[K]??0):Pe(Ne,N[K]??0),St=typeof de=="object"?de.tone:void 0,Ie=!se&&a&&St!==void 0?Be[St]:nt;return on(zt,{color:Ie,bold:se,children:K>0?`${" ".repeat(ls)}${yt}`:yt},B.label)})]},q)}),(T>0||T+M<y.length)&&on(zt,{color:u.faintForeground,children:`${" ".repeat(Ao)}${T+1}-${Math.min(T+M,y.length)} / ${y.length}`})]})}import{jsx as rn,jsxs as al}from"react/jsx-runtime";function cl(){let e=D(),{width:t}=j(),o=re(),[n,r]=Hf({name:"list"}),i=Y([e.revision],async()=>{let a=await cr();return cc().catch(()=>e.toast("warn","\u5DF2\u8BFB\u56DE\u6267\u53D1\u9001\u5931\u8D25")),a});z(a=>{n.name==="list"&&a==="r"&&e.reload()});let s=()=>{n.name==="list"?e.pop():r({name:"list"})};return rn(G,{hints:n.name==="list"?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","/ \u8FC7\u6EE4","r \u5237\u65B0"]:["\u2191\u2193 \u6EDA\u52A8","Esc \u8FD4\u56DE"],onEscape:s,children:rn(Q,{state:i,loading:"\u6B63\u5728\u8BFB\u53D6\u516C\u544A",width:t,children:a=>{if(n.name==="detail"){let c=fo(n.item.level),l=He(c);return al(sl,{flexDirection:"column",children:[al(Or,{wrap:"truncate",children:[rn(Or,{bold:!0,color:u.foreground,children:n.item.title}),rn(Or,{color:l===void 0?u.mutedForeground:Be[l],children:` ${c.label}`}),rn(Or,{color:u.faintForeground,children:` ${Oe([`\u53D1\u5E03\u4E8E ${jt(n.item.publishedAt)}`])}`})]}),rn(sl,{marginTop:1,children:rn(tn,{lines:Kn(n.item.content,t),height:Math.max(3,o-2)})})]})}return rn(Re,{retain:"list",items:a,width:t,height:o,columns:[{label:"\u6807\u9898",shrink:!0},{label:"\u7EA7\u522B"},{label:"\u53D1\u5E03\u4E8E",align:"right"}],row:c=>[c.title,Wt(fo(c.level)),jt(c.publishedAt)],searchOf:c=>c.title,onOpen:c=>r({name:"detail",item:c}),emptyLabel:"\u6682\u65E0\u516C\u544A",emptyDescription:"\u5E73\u53F0\u6709\u65B0\u901A\u77E5\u65F6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"})}})})}import{Box as ht,Text as Mo}from"ink";import{useState as Gl}from"react";import dg from"string-width";var ll=()=>O(Ea,"/auth/me"),ul=e=>O(ye,"/auth/me",{method:"PATCH",json:e}).then(()=>{}),ml=e=>O(ye,"/auth/me/password",{method:"POST",json:e}).then(()=>{}),dl=e=>O(ye,"/auth/me/email/code",{method:"POST",json:e}).then(()=>{}),pl=e=>O(ye,"/auth/me/email",{method:"POST",json:e}).then(()=>{}),fl=()=>O(Pa,"/auth/me/sessions"),gl=e=>O(ye,`/auth/me/sessions/${e}`,{method:"DELETE"}).then(()=>{}),hl=()=>O(Na,"/auth/me/security"),ms=e=>O(Aa,"/auth/me/totp/setup",{method:"POST",json:e}),bl=e=>O(Pi,"/auth/me/totp/confirm",{method:"POST",json:e}),yl=e=>O(ye,"/auth/me/totp/disable",{method:"POST",json:e}).then(()=>{}),Sl=e=>O(Pi,"/auth/me/totp/recovery-codes",{method:"POST",json:e}),xl=(e,t)=>O(ye,`/auth/me/passkeys/${e}`,{method:"PATCH",json:t}).then(()=>{}),Tl=e=>O(ye,`/auth/me/passkeys/${e}`,{method:"DELETE"}).then(()=>{});import{Box as Ot,measureElement as Pl,Text as _e,useInput as Ml}from"ink";import{useEffect as Kf,useRef as Al,useState as Qn}from"react";import gs from"string-width";import{Box as Wf,Text as sn,useInput as zf}from"ink";import{useRef as wl,useState as kl}from"react";import ps from"string-width";import{jsx as Gt,jsxs as Cl}from"react/jsx-runtime";var Gf=e=>e.replace(/\r\n?/g,`
8
8
  `).replace(new RegExp("(?!\\n)\\p{Cc}","gu"),"");function vl(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=ds(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 Rl(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 _l(e,t,o){let n=0;for(let r=t.start;r<t.end;r+=1){let i=ds(e[r]??"");if(n+i>o)return r;n+=i}return t.end}var Gf=(e,t,o)=>e.slice(t.start,o).reduce((n,r)=>n+ds(r),0);function ms(e,t){let o=t;for(;o>0&&e[o-1]!==`
9
+ `){o.push({start:n,end:i,nl:!0}),n=i+1,r=0;continue}let a=ps(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 Rl(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 _l(e,t,o){let n=0;for(let r=t.start;r<t.end;r+=1){let i=ps(e[r]??"");if(n+i>o)return r;n+=i}return t.end}var Vf=(e,t,o)=>e.slice(t.start,o).reduce((n,r)=>n+ps(r),0);function ds(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 Cl({value:e,onChange:t,isActive:o,width:n,rows:r,placeholder:i,maxLength:s,onEdge:a,onFocusRequest:c}){let l=[...e],[d,g]=kl(l.length),u=Math.min(d,l.length),[p,S]=kl(0),f=wl(e),h=wl(u);f.current=e,h.current=u,ur(o);let b=Math.max(4,n),x=R=>{h.current=R,g(R)},w=(R,P)=>{f.current=R,x(P),t(R)},y=R=>{let P=[...f.current],k=Math.min(h.current,P.length),I=vl(P,b),_=Rl(I,k),N=I[_],H=I[_+R];return N===void 0||H===void 0?!1:(x(_l(P,H,Gf(P,N,k))),!0)},v=(R,P,k)=>{let I=zf(k);if(s!==void 0){let _=s-R.length;if(_<=0)return;I=[...I].slice(0,_).join("")}I!==""&&w([...R.slice(0,P),I,...R.slice(P)].join(""),P+[...I].length)};Wf((R,P)=>{let k=[...f.current],I=Math.min(h.current,k.length);if(P.return){v(k,I,`
12
- `);return}if(!P.tab){if(P.upArrow||P.downArrow){let _=P.upArrow?-1:1;y(_)||a?.(P.upArrow?"up":"down");return}if(P.leftArrow){x(Math.max(0,I-1));return}if(P.rightArrow){x(Math.min(k.length,I+1));return}if(P.home){x(ms(k,I).start);return}if(P.end){x(ms(k,I).end);return}if(P.backspace){if(I===0)return;w([...k.slice(0,I-1),...k.slice(I)].join(""),I-1);return}if(P.delete){if(I>=k.length)return;w([...k.slice(0,I),...k.slice(I+1)].join(""),I);return}if(P.ctrl){let _=ms(k,I);if(R==="a")x(_.start);else if(R==="e")x(_.end);else if(R==="k")w([...k.slice(0,I),...k.slice(_.end)].join(""),I);else if(R==="u")w([...k.slice(0,_.start),...k.slice(I)].join(""),_.start);else if(R==="w"){let N=I;for(;N>_.start&&k[N-1]===" ";)N-=1;for(;N>_.start&&k[N-1]!==" ";)N-=1;w([...k.slice(0,N),...k.slice(I)].join(""),N)}return}P.meta||!R||v(k,I,R)}},{isActive:o});let E=vl(l,b),M=Rl(E,u),F=Math.min(p,Math.max(0,E.length-r));M<F&&(F=M),M>F+r-1&&(F=M-r+1),F!==p&&S(F);let T=[];for(let R=0;R<r;R+=1){let P=F+R,k=E[P];if(k===void 0){T.push(xn(Sn,{children:" "},P));continue}let I=l.slice(k.start,k.end).join("");if(!o||P!==M){T.push(xn(Sn,{wrap:"truncate",color:m.foreground,children:I===""?" ":I},P));continue}let _=l.slice(k.start,u).join(""),N=u<k.end?l[u]??" ":" ",H=u<k.end?l.slice(u+1,k.end).join(""):"";T.push(Vf(Sn,{wrap:"truncate",children:[xn(Sn,{color:m.foreground,children:_}),xn(Sn,{inverse:!0,children:N}),xn(Sn,{color:m.foreground,children:H})]},P))}e===""&&!o&&i!==void 0&&(T[0]=xn(Sn,{wrap:"truncate",color:m.faintForeground,children:i},"placeholder"));let C=$e({onWheel:R=>{y(R)},onClick:({row:R,column:P})=>{c?.();let k=E[F+R];x(k===void 0?l.length:_l(l,k,P))}});return xn(Hf,{ref:C,flexDirection:"column",children:T})}import{Fragment as Il,jsx as pe,jsxs as gt}from"react/jsx-runtime";var Jf=e=>Object.fromEntries(e.map(t=>[t.name,"initial"in t?t.initial??"":""])),Al="\u9009\u586B",Yf=(e,t)=>e.kind!=="text"&&e.kind!=="textarea"?!1:typeof e.optional=="function"?e.optional(t):e.optional===!0,Qf=(e,t)=>{let o=typeof e.hint=="function"?e.hint(t[e.name]??""):e.hint;return Yf(e,t)?o===void 0?Al:`${Al} \xB7 ${o}`:o},Xf=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},Zf=6e4,eg=4,ps=4,tg=2,Mr=(e,t)=>e?m.accent:t?m.foreground:m.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]=Jn(()=>Jf(t)),[g,u]=Jn(0),[p,S]=Jn({}),[f,h]=Jn(null),[,b]=Jn(0),x=s===!0,w=Xf(t),y=w[Math.min(g,w.length-1)],v=y!==void 0&&y.type!=="submit"?t[y.index]:void 0,E=y?.type==="field"&&(v?.kind==="text"||v?.kind==="code"),M=y?.type==="field"&&v?.kind==="textarea",F=Object.values(p).some(A=>A.phase==="cooldown"&&A.until>Date.now());Kf(()=>{if(!F)return;let A=setInterval(()=>b(B=>B+1),1e3);return()=>clearInterval(A)},[F]);let T=A=>u(B=>(B+A+w.length)%w.length),C=(A,B)=>{if(A.options.length===0)return;let K=A.options.findIndex(Ne=>Ne.value===l[A.name]),de=A.options[(K+B+A.options.length)%A.options.length];de!==void 0&&d(Ne=>({...Ne,[A.name]:de.value}))},R=A=>{y?.type!=="field"||v?.kind!=="select"||C(v,A)},P=A=>{let B=t[A];if(B===void 0||B.kind!=="code")return;let K=(l[B.emailField]??"").trim();if(K===""){S(Ne=>({...Ne,[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(Ne=>({...Ne,[B.name]:{phase:"sending"}})),B.send(K).then(()=>S(Ne=>({...Ne,[B.name]:{phase:"cooldown",email:K,until:Date.now()+Zf}}))).catch(Ne=>S(yt=>({...yt,[B.name]:{phase:"error",message:Ue(Ne)}})))))};Ll((A,B)=>{if(B.tab){T(B.shift?-1:1);return}if(!M){if(B.upArrow){T(-1);return}if(B.downArrow){T(1);return}if(!E){if(B.leftArrow){R(-1);return}if(B.rightArrow){R(1);return}B.return&&(y?.type==="submit"?n(l):y?.type==="send"?P(y.index):T(1))}}},{isActive:!x}),Xt(r,{isActive:!x,layer:qn.panel});let k=Math.max(0,...t.map(A=>fs(A.label))),I=i-ae,_=Math.max(8,I-k-8),N=(A,B)=>w.findIndex(K=>K.type===A&&(K.type==="submit"||K.index===B)),H=Pl(new Map).current,$=Pl(new Map).current,ne=2+k+ps,q=(A,B)=>{let K=w[A];if(K===void 0)return;if(u(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 Ne=de.options.find(St=>St.value===l[de.name]),yt=Te(Ne?.label??"\u2014",_);B>=ne-tg&&B<ne?C(de,-1):B>=ne+fs(yt)&&C(de,1);return}B>=ne&&$.get(K.index)?.moveToColumn(B-ne)}},se=(A,B)=>{if(A===null)return null;let K=El(A),de=null;for(let[Ne,yt]of H){if(yt===null)continue;let St=El(yt),Ie=St.y-K.y;B<Ie||B>=Ie+St.height||(de===null||St.height<de.box.height)&&(de={index:Ne,box:St})}return de===null?null:{...de,frameX:K.x}},nt=$e({isActive:!x,onClick:({row:A,column:B})=>{let K=se(nt.current,A);K!==null&&q(K.index,B-(K.box.x-K.frameX))},onHover:({row:A})=>h(se(nt.current,A)?.index??null),onHoverLeave:()=>h(null)});return gt(Mt,{ref:nt,flexDirection:"column",children:[pe(vo,{title:e,width:i}),gt(Mt,{flexDirection:"column",marginTop:De,paddingLeft:ae,children:[c!=null&&pe(Mt,{marginBottom:1,children:pe(bn,{message:c.message,hint:c.hint,width:I})}),t.map((A,B)=>{let K=g===N("field",B)&&!x,de=Qf(A,l),Ne=A.kind==="select"?A.options.find(Ie=>Ie.value===l[A.name]):void 0;if(A.kind==="textarea")return gt(Mt,{flexDirection:"column",ref:Ie=>{H.set(N("field",B),Ie)},children:[gt(_e,{children:[pe(_e,{color:m.accent,children:K?`${X.cursor} `:" "}),pe(_e,{color:Mr(K,f===N("field",B)),bold:K,children:A.label})]}),pe(Mt,{paddingLeft:2,children:pe(Cl,{value:l[A.name]??"",onChange:Ie=>d(ui=>({...ui,[A.name]:Ie})),isActive:K,width:I-2,rows:A.rows??eg,placeholder:A.placeholder,maxLength:A.maxLength,onEdge:Ie=>T(Ie==="up"?-1:1),onFocusRequest:()=>u(N("field",B))})}),K&&de!==void 0&&pe(_e,{color:m.faintForeground,children:` ${Te(de,I-2)}`})]},A.name);let yt=A.kind==="code"&&g===N("send",B)&&!x,St=p[A.name];return gt(Mt,{flexDirection:"column",ref:Ie=>{H.set(N("field",B),Ie)},children:[gt(_e,{children:[pe(_e,{color:m.accent,children:K?`${X.cursor} `:" "}),pe(_e,{color:Mr(K,f===N("field",B)),bold:K,children:Pe(A.label,k)}),A.kind==="select"?gt(Il,{children:[pe(_e,{color:K?m.accent:m.border,children:` ${X.prev} `}),pe(_e,{color:m.foreground,children:Te(Ne?.label??"\u2014",_)}),pe(_e,{color:K?m.accent:m.border,children:` ${X.next}`})]}):gt(Il,{children:[pe(_e,{children:" ".repeat(ps)}),pe(yr,{ref:Ie=>{$.set(B,Ie)},value:l[A.name]??"",onChange:Ie=>d(ui=>({...ui,[A.name]:Ie})),onSubmit:()=>T(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(_e,{color:m.faintForeground,children:`${" ".repeat(2+k+ps)}${Te(de,_)}`}),A.kind==="code"&&pe(ng,{active:yt,state:St,email:(l[A.emailField]??"").trim(),indent:ne,width:_,hovered:f===N("send",B),nodeRef:Ie=>{H.set(N("send",B),Ie)}})]},A.name)}),pe(Mt,{marginTop:1,ref:A=>{H.set(N("submit"),A)},children:x?pe(Qe,{label:a}):gt(_e,{children:[pe(_e,{color:m.accent,children:y?.type==="submit"?`${X.cursor} `:" "}),pe(_e,{color:Mr(y?.type==="submit",f===N("submit")),bold:y?.type==="submit",children:o})]})})]})]})}function ng({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(_e,{children:[pe(_e,{color:m.accent,children:e?`${X.cursor} `:" "}),pe(_e,{color:a>0?m.faintForeground:Mr(e,i),bold:e&&a===0,children:c})]}),t?.phase==="error"&&pe(_e,{color:m.danger,children:` ${Te(t.message,r)}`})]})}var og=2,Nl=2;function Ml({options:e,value:t,onChange:o}){let n=e.findIndex(d=>d.value===t),r=dr();Ll((d,g)=>{if(!g.leftArrow&&!g.rightArrow)return;let u=g.leftArrow?-1:1,p=e[(n+u+e.length)%e.length];p!==void 0&&o(p.value)},{isActive:!r});let i=[],s=0;e.forEach((d,g)=>{g>0&&(s+=Nl);let u=fs(d.label)+og;i.push({value:d.value,from:s,to:s+u}),s+=u});let[a,c]=Jn(null),l=$e({onClick:({column:d})=>{let g=i.find(u=>d>=u.from&&d<u.to);g!==void 0&&o(g.value)},onHover:({column:d})=>{let g=i.find(u=>d>=u.from&&d<u.to);c(g?.value??null)},onHoverLeave:()=>c(null)});return pe(Mt,{ref:l,children:pe(_e,{wrap:"truncate",children:e.map((d,g)=>{let u=d.value===t;return gt(_e,{children:[g>0&&" ".repeat(Nl),pe(_e,{backgroundColor:u?m.foreground:m.border,color:u?m.background:d.value===a?m.foreground:m.mutedForeground,bold:u,children:` ${d.label} `})]},d.value)})})})}import{Box as bs,Text as Ol}from"ink";import rg from"qrcode";import{jsx as No,jsxs as ug}from"react/jsx-runtime";var ig="#000000",sg="#ffffff",gs=2,$l=2,ys=1,Dl,hs;function Bl(e){if(e===Dl&&hs!==void 0)return hs;let t=rg.create(e,{errorCorrectionLevel:"L"}),o=t.modules.size,n=t.modules.data,r=o+gs*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+gs];c!==void 0&&(c[a+gs]=n[s*o+a]===1)}return Dl=e,hs=i,i}function ag(e){let t=Bl(e).length;return{columns:t*$l,rows:t}}function Or(e,t,o,n){let r=ag(e),i=t.rows-r.rows-ys;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+ys+o.rows+n.rows}}}function cg(e,t){let o=[],n=0;for(let r=1;r<=e.length;r+=1)r<e.length&&e[r]===e[n]||(o.push(No(Ol,{backgroundColor:e[n]??!1?ig:sg,children:" ".repeat((r-n)*$l)},n)),n=r);return No(Ol,{children:o},t)}function lg({value:e}){return No(bs,{flexDirection:"column",flexShrink:0,children:Bl(e).map((t,o)=>cg(t,o))})}function Dr({value:e,aside:t}){return ug(bs,{flexDirection:"column",flexShrink:0,children:[No(lg,{value:e}),No(bs,{marginTop:ys,flexDirection:"column",children:t})]})}import{Box as $r,Text as Ze}from"ink";import Fl from"string-width";import{jsx as et,jsxs as Io}from"react/jsx-runtime";var Br=2,Ss=4,Ul=e=>" ".repeat(e),xs=13,jl=4,ql=(e,t,o)=>Math.max(1,Math.min(e,o,Math.floor((t+Br)/(xs+Br)))),Tn=(e,t,o=jl)=>Math.ceil(e/ql(e,t,o))*2;function at({tiles:e,width:t,maxPerRow:o=jl}){let n=ql(e.length,t,o),r=Math.floor((t-Br*(n-1))/n),i=[];for(let s=0;s<e.length;s+=n)i.push(e.slice(s,s+n));return et($r,{flexDirection:"column",children:i.map((s,a)=>et($r,{flexDirection:"column",children:["label","value"].map(c=>et(Ze,{wrap:"truncate",children:s.map((l,d)=>Io(Ze,{children:[d>0&&Ul(Br),et(Ze,{color:c==="label"?m.mutedForeground:m.foreground,bold:c==="value",children:Pe(l[c],r)})]},l.label))},c))},a))})}function Hl({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?m.danger:n>=.8?m.warning:m.foreground;return Io(Ze,{children:[et(Ze,{color:i,children:X.barFilled.repeat(r)}),et(Ze,{color:m.border,children:X.barEmpty.repeat(o-r)})]})}function mg({items:e,width:t}){let o=Math.max(0,...e.map(([r])=>Fl(r))),n=Math.max(0,t-o-3);return et($r,{flexDirection:"column",children:e.map(([r,i])=>Io(Ze,{wrap:"truncate",children:[et(Ze,{color:m.mutedForeground,children:Pe(r,o)})," ",et(Ze,{color:m.foreground,children:Te(i,n)})]},r))})}var Wl=(e,t)=>Math.floor((t-Ss)/2)<xs*2?e:Math.ceil(e/2);function Ce({items:e,width:t}){let o=Math.floor((t-Ss)/2);if(o<xs*2)return et(mg,{items:e,width:t});let n=Math.max(0,...e.map(([a])=>Fl(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)}):Io(Ze,{children:[et(Ze,{color:m.mutedForeground,children:Pe(a[0],n)})," ",et(Ze,{color:m.foreground,children:Pe(a[1],r)})]});return et($r,{flexDirection:"column",children:i.map((a,c)=>Io(Ze,{wrap:"truncate",children:[s(a[0]),Ul(Ss),s(a[1])]},c))})}import{Fragment as yg,jsx as ie,jsxs as rn}from"react/jsx-runtime";var pg={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"},Gl="\u5BC6\u94A5 ",fg=10,gg={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"}},hg=2+J;function bg({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(rn(Lo,{wrap:"truncate",color:m.accent,children:[Pe(e[r]??"",Math.min(o,t)),e[r+1]??""]},r));return ie(ht,{flexDirection:"column",children:n})}function Vl(){let e=D(),{width:t,columns:o,rows:n}=j(),r=re(),[i,s]=zl({name:"menu"}),[a,c]=zl(!1),{busy:l,error:d,reset:g,fail:u,run:p}=ge(),S=Y([e.revision],async()=>{let[w,y,v]=await Promise.all([ll(),hl(),fl()]);return{user:w.user,security:y,sessions:v.sessions}});z(w=>{i.name==="menu"&&l===null&&w==="r"&&e.reload()}),fc(i.name==="codes");let f=()=>{if(i.name!=="codes"){if(i.name==="menu"){e.pop();return}g(),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=w=>{s({name:"menu"}),e.reload(),e.toast("ok",w)},b=(w,y)=>{c(!1),s({name:"codes",codes:w,message:y})},x=(w,y)=>{w==="rebind"?p("\u6B63\u5728\u751F\u6210\u65B0\u5BC6\u94A5",()=>us({code:y}),{onSuccess:v=>s({name:"enroll",setup:v})}):w==="regenerate"?p("\u6B63\u5728\u751F\u6210\u6062\u590D\u7801",()=>Sl({code:y}),{onSuccess:({recoveryCodes:v})=>b(v,"\u6062\u590D\u7801\u5DF2\u66F4\u65B0")}):p("\u6B63\u5728\u505C\u7528",()=>yl({code:y}),{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:f,children:ie(Q,{state:S,loading:"\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u4FE1\u606F",width:t,children:({user:w,security:y,sessions:v})=>{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:w.username,placeholder:"\u8BF7\u8F93\u5165\u65B0\u7528\u6237\u540D"}],onCancel:f,onSubmit:T=>{let C=(T.username??"").trim();if(C===""||C.length>un){u(`\u8BF7\u8F93\u5165 1 \u5230 ${un} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}p("\u6B63\u5728\u4FDD\u5B58",()=>ul({username:C}),{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:T=>dl({email:T})},{kind:"text",name:"password",label:"\u5F53\u524D\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801",hint:"\u4FEE\u6539\u540E\u7ACB\u5373\u4EE5\u65B0\u90AE\u7BB1\u767B\u5F55\u548C\u63A5\u6536\u901A\u77E5\uFF0C\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55"}],onCancel:f,onSubmit:T=>{let C=(T.email??"").trim(),R=(T.code??"").trim(),P=T.password??"";if(C===""||R===""||P===""){u("\u8BF7\u586B\u5199\u65B0\u90AE\u7BB1\u3001\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801");return}p("\u6B63\u5728\u4FDD\u5B58",()=>pl({email:C,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 ${ot} \u4F4D\uFF0C\u4FDD\u5B58\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55`}],onCancel:f,onSubmit:T=>{let C=T.old??"",R=T.next??"";if(C===""){u("\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801");return}if(R.length<ot){u(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${ot} \u4F4D`);return}p("\u6B63\u5728\u4FDD\u5B58",()=>ml({oldPassword:C,newPassword:R}),{onSuccess:()=>h("\u5BC6\u7801\u5DF2\u4FEE\u6539")})}});if(i.name==="confirm-logout")return ie(je,{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",()=>ir(),{onSuccess:()=>{e.toast("ok","\u5DF2\u9000\u51FA\u767B\u5F55"),e.home()}}),onCancel:f});if(i.name==="code"){let T=gg[i.intent];return ie(V,{title:T.title,width:t,submitLabel:T.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:T.hint}],onCancel:f,onSubmit:C=>{let R=(C.code??"").trim();if(R===""){u("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}x(i.intent,R)}})}if(i.name==="enroll"){let T=(R,P)=>rn(yg,{children:[P&&ie(Lo,{color:m.mutedForeground,children:"\u4F7F\u7528 Google Authenticator \u7B49\u9A8C\u8BC1\u5668 App \u626B\u7801\u6DFB\u52A0"}),rn(Lo,{children:[ie(Lo,{color:m.mutedForeground,children:Gl}),ie(Lo,{color:m.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:f,onSubmit:k=>{let I=(k.code??"").trim();if(I===""){u("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}p("\u6B63\u5728\u7ED1\u5B9A",()=>bl({code:I}),{onSuccess:({recoveryCodes:_})=>b(_,"\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u7ED1\u5B9A")})}})})]}),C=Or(i.setup.otpauthUri,{width:t,rows:r},{columns:dg(Gl)+i.setup.secret.length,rows:fg},{columns:o-t,rows:n-r});return C.fits?ie(Dr,{value:i.setup.otpauthUri,aside:T(C.asideWidth,!0)}):rn(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"}),T(t,!1)]})}if(i.name==="codes")return rn(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(bg,{codes:i.codes,width:t})}),ie(ht,{marginTop:1,children:ie(ce,{width:t,items:[{value:"ack",label:`${a?"[x]":"[ ]"} \u6211\u5DF2\u59A5\u5584\u4FDD\u5B58\u8FD9\u4E9B\u6062\u590D\u7801`},{value:"done",label:"\u5B8C\u6210",disabled:!a}],onSelect:T=>{if(T==="ack"){c(R=>!R);return}let C=i.message;s({name:"menu"}),e.reload(),e.toast("ok",C)}})})]});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:f,onSubmit:T=>{let C=(T.name??"").trim();if(C===""){u("\u8BF7\u8F93\u5165\u540D\u79F0");return}p("\u6B63\u5728\u4FDD\u5B58",()=>xl(i.item.id,{name:C}),{onSuccess:()=>h("\u5DF2\u4FDD\u5B58")})}});if(i.name==="passkey-delete")return ie(je,{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",()=>Tl(i.item.id),{onSuccess:()=>h("\u5DF2\u5220\u9664")}),onCancel:f});if(i.name==="passkey"){let T=i.item;return ie(ht,{flexDirection:"column",children:rn(oe,{title:`Passkey ${T.name}`,width:t,children:[ie(Ce,{width:t-ae,items:[["\u540D\u79F0",T.name],["\u6DFB\u52A0\u65F6\u95F4",te(T.createdAt)],["\u6700\u8FD1\u4F7F\u7528",T.lastUsedAt===null?"\u2014":te(T.lastUsedAt)]]}),ie(ht,{marginTop:1,children:ie(ce,{width:t-ae,items:[{value:"rename",label:"\u91CD\u547D\u540D"},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:C=>{g(),s(C==="rename"?{name:"passkey-rename",item:T}:{name:"passkey-delete",item:T})}})})]})})}if(i.name==="confirm-revoke")return ie(je,{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",()=>gl(i.item.id),{onSuccess:()=>h("\u5DF2\u9000\u51FA\u8BE5\u8BBE\u5907")}),onCancel:f});if(i.name==="session"){let T=i.item;return rn(ht,{flexDirection:"column",children:[ie(oe,{title:Go(T.device),note:T.current?"\u5F53\u524D\u8BBE\u5907":void 0,width:t,children:ie(Ce,{width:t-ae,items:[["\u8BBE\u5907\u7C7B\u578B",T.device?.type!=null?pg[T.device.type]??T.device.type:"\u684C\u9762\u8BBE\u5907"],["\u5BA2\u6237\u7AEF",T.device?.client!=null?`${T.device.client} ${T.device.clientVersion??""}`.trim():"\u2014"],["\u64CD\u4F5C\u7CFB\u7EDF",T.device?.os!=null?`${T.device.os} ${T.device.osVersion??""}`.trim():"\u2014"],["\u8BBE\u5907\u578B\u53F7",T.device?.model!=null?`${T.device.vendor??""} ${T.device.model}`.trim():"\u2014"],["IP \u5730\u5740",T.ip??"\u2014"],["\u767B\u5F55\u65F6\u95F4",te(T.loginAt)],["\u6700\u540E\u6D3B\u8DC3",te(T.lastActiveAt)],["\u767B\u5F55\u6709\u6548\u671F\u81F3",te(T.expiresAt)],["\u5BA2\u6237\u7AEF\u6807\u8BC6",T.userAgent??"\u2014"]]})}),!T.current&&l===null&&ie(ht,{marginTop:1,children:ie(ce,{width:t,items:[{value:"revoke",label:"\u9000\u51FA\u8BE5\u8BBE\u5907",labelTone:"danger"}],onSelect:()=>{g(),s({name:"confirm-revoke",item:T})}})})]})}let E=y.totp,M=E.enabled?E.recoveryCodesRemaining===0?"\u5DF2\u5168\u90E8\u7528\u5B8C\uFF0C\u8BF7\u91CD\u65B0\u751F\u6210":`\u5269\u4F59 ${E.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"},...E.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"},...y.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}]:[],...y.passkeys.map(T=>({value:{kind:"passkey",item:T},label:T.name,hint:`\u6700\u8FD1\u4F7F\u7528 ${T.lastUsedAt===null?"\u2014":te(T.lastUsedAt)}`})),{value:{kind:"add-passkey"},label:"\u6DFB\u52A0 Passkey",hint:"\u9700\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"},{heading:""},{heading:"\u767B\u5F55\u8BBE\u5907"},...v.map(T=>({value:{kind:"session",item:T},label:T.current?`${Go(T.device)}\uFF08\u5F53\u524D\u8BBE\u5907\uFF09`:Go(T.device),...T.current?{labelTone:"accent"}:{},hint:`${T.ip??"\u2014"} \xB7 \u6700\u540E\u6D3B\u8DC3 ${te(T.lastActiveAt)}`})),{heading:""},{value:{kind:"logout"},label:"\u9000\u51FA\u767B\u5F55",labelTone:"danger"}];return rn(ht,{flexDirection:"column",children:[ie(Ce,{width:t,items:[["\u7528\u6237\u540D",w.username],["\u90AE\u7BB1",w.email],["\u4E24\u6B65\u9A8C\u8BC1",E.enabled?`\u5DF2\u542F\u7528\uFF08\u542F\u7528\u4E8E ${E.enabledAt===null?"\u2014":te(E.enabledAt)}\uFF09`:"\u672A\u542F\u7528"],["\u6062\u590D\u7801",M]]}),ie(ht,{marginTop:J,children:ie(ce,{width:t,height:Math.max(3,r-hg),isActive:l===null,items:F,retain:"menu",onSelect:T=>{g(),T.kind==="rename"?s({name:"rename"}):T.kind==="email"?s({name:"email"}):T.kind==="password"?s({name:"password"}):T.kind==="logout"?s({name:"confirm-logout"}):T.kind==="enable"?p("\u6B63\u5728\u751F\u6210\u5BC6\u94A5",()=>us({}),{onSuccess:C=>s({name:"enroll",setup:C})}):T.kind==="code"?s({name:"code",intent:T.intent}):T.kind==="add-passkey"?s({name:"passkey-add"}):T.kind==="passkey"?s({name:"passkey",item:T.item}):T.kind==="session"&&s({name:"session",item:T.item})}})})]})}})})}import{Box as ws,Text as ks,useInput as kg}from"ink";import{useRef as eu,useState as Ur}from"react";import vg from"string-width";import{z as We}from"zod";var Sg=We.object({siteName:We.string(),siteDescription:We.string(),apiLines:ka,quotaPerUsd:We.number().int().positive(),ticketAutoCloseMinutes:We.number(),legal:We.object({termsConfigured:We.boolean(),privacyConfigured:We.boolean()}),invitation:We.object({firstInviterPercent:We.number(),firstInviteePercent:We.number()}),initialized:We.boolean()});function ve(e,t){return kt(Sg,`${e}/api/site-config`,{...t===void 0?{}:{timeoutMs:t}})}var xg=We.object({title:We.string(),content:We.string(),configured:We.boolean()});function Kl(e,t){return kt(xg,`${e}/api/agreements/${t}`)}var Jl=e=>O(ao(Jo),jn("/tickets",{...e})),Yl=e=>O(Jo,"/tickets",{method:"POST",json:e}),Ts=e=>O(Oa,`/tickets/${e}`),Ql=(e,t)=>O(Pi,`/tickets/${e}/messages`,{method:"POST",json:{content:t}}),Xl=e=>O(ye,`/tickets/${e}/close`,{method:"POST"}).then(()=>{}),Zl=e=>O(ye,`/tickets/${e}/reopen`,{method:"POST"}).then(()=>{});import{useEffect as Tg,useRef as wg}from"react";function Fr(e,t,o=!0){let n=wg(t);n.current=t,Tg(()=>{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 nu}from"react/jsx-runtime";var Rg=5e3,_g=7,Cg=3,tu=1;function Eg(e,t){let o=[],n=r=>{let i=r.spans.reduce((a,c)=>a+vg(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?m.accent:m.mutedForeground},{text:` ${te(r.createdAt)}`,color:m.faintForeground}]},c=It([{text:r.content,color:m.foreground}],Math.max(8,t-4));s?o.push(n(a),...c.map(n)):o.push(a,...c)}),o}function ou({params:e}){let t=D(),{width:o}=j(),n=re(),[r,i]=Ur("main"),[s,a]=Ur(!1),[c,l]=Ur(0),{busy:d,error:g,reset:u,fail:p,run:S}=ge(),f=Y([e.id,t.revision],async()=>{let[T,C]=await Promise.all([Ts(e.id),ve(t.ctx.site)]);return{detail:T,site:C}}),[h,b]=Ur(null),x=eu(0),w=eu(t.revision);w.current!==t.revision&&(w.current=t.revision,x.current+=1,h!==null&&b(null));let y=f.phase==="ready"?f.data:null,v=h??y?.detail??null;Fr(Rg,async()=>{if(v===null||d!==null)return;let T=x.current,C=await Ts(e.id);T===x.current&&(C.ticket.updatedAt!==v.ticket.updatedAt||C.messages.length!==v.messages.length)&&b(C)},r==="main"&&y!==null),z(T=>{r!=="main"||s||d!==null||(T==="r"?t.reload():T==="x"&&v!==null&&v.ticket.status!=="closed"&&(u(),i("confirm-close")))}),kg((T,C)=>{C.tab&&r==="main"&&!s&&v?.ticket.status!=="closed"&&a(!0)},{isActive:r==="main"&&!s&&d===null});let E=()=>{if(r!=="main"){u(),i("main");return}if(s){a(!1);return}t.pop()},M=T=>{S("\u6B63\u5728\u53D1\u9001",()=>Ql(e.id,T),{onSuccess:()=>{a(!1),l(C=>C+1),t.reload(),t.toast("ok","\u5DF2\u53D1\u9001")}})},F=r==="main"&&!s?v?.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",v?.ticket.title??"\u5DE5\u5355\u8BE6\u60C5"],hints:F,onEscape:E,children:Ot(Q,{state:f,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:o,children:({site:T})=>{if(v===null)return null;let C=v.ticket,R=C.status==="closed";if(r==="confirm-close")return Ot(je,{width:o,title:"\u5173\u95ED\u5DE5\u5355",detail:`\u786E\u5B9A\u5173\u95ED\u5DE5\u5355\u300C${C.title}\u300D\u5417\uFF1F\u5173\u95ED\u540E\u53EF\u91CD\u65B0\u6253\u5F00`,confirmLabel:"\u5173\u95ED\u5DE5\u5355",busy:d,error:g,onConfirm:()=>S("\u6B63\u5728\u5173\u95ED",()=>Xl(e.id),{onSuccess:()=>{i("main"),t.reload(),t.toast("ok","\u5DF2\u5173\u95ED")}}),onCancel:E});let P=T.ticketAutoCloseMinutes>0?tu:0,k=R?Cg:s?_g:tu,I=Math.max(3,n-P-k-J);return nu(ws,{flexDirection:"column",children:[P>0&&Ot(ks,{wrap:"truncate",color:m.faintForeground,children:`\u7BA1\u7406\u5458\u56DE\u590D\u540E\u8D85\u8FC7 ${T.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(en,{lines:Eg(v.messages,o),height:I,isActive:!s&&d===null,pinBottom:!0}),Ot(ws,{marginTop:1,flexDirection:"column",children:R?nu(ws,{flexDirection:"column",children:[Ot(ks,{color:m.mutedForeground,children:"\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u5982\u9700\u7EE7\u7EED\u6C9F\u901A\u53EF\u91CD\u65B0\u6253\u5F00"}),Ot(ce,{width:o,isActive:d===null,items:[{value:"reopen",label:"\u91CD\u65B0\u6253\u5F00"}],onSelect:()=>S("\u6B63\u5728\u91CD\u65B0\u6253\u5F00",()=>Zl(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:g,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}M(N)}},c):Ot(ks,{color:m.faintForeground,children:"\u6309 Tab \u64B0\u5199\u56DE\u590D"})})]})}})})}import{Box as Lg}from"ink";import{useState as Mg}from"react";import{Text as Pg}from"ink";import{useEffect as Ag,useState as Ng}from"react";import{jsx as Ig}from"react/jsx-runtime";var ru=100;function Yn(e,t,{retain:o}={}){let[n,r]=Ge(o,()=>1),[i,s]=Ng({pages:1,total:0}),a=Y([...e,n],()=>t(n,ru));Ag(()=>{a.phase==="ready"&&s({pages:Math.max(1,Math.ceil(a.data.total/ru)),total:a.data.total})},[a]);let c=d=>{r(g=>Math.min(Math.max(1,g+d),i.pages))},l=()=>r(1);return{state:a,page:n,pages:i.pages,total:i.total,go:c,reset:l}}function Qn({page:e,pages:t,total:o,width:n}){return Ig(Pg,{wrap:"truncate",color:m.faintForeground,children:Te(Oe([`\u7B2C ${e} / ${t} \u9875`,`\u5171 ${o} \u6761`,"\u2190\u2192 \u7FFB\u9875"]),n)})}import{jsx as wn,jsxs as $g}from"react/jsx-runtime";var Og=Je(xi,Li,"\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"},vs={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 iu(){let e=D(),{width:t}=j(),o=re(),[n,r]=Mg({name:"list"}),[i,s]=Ge("status",()=>""),{busy:a,error:c,reset:l,fail:d,run:g}=ge(),u=Yn([e.revision,i],(f,h)=>Jl({page:f,pageSize:h,...i===""?{}:{status:i}}),{retain:"page"}),p=n.name==="list";z((f,h)=>{p&&(f==="r"?e.reload():f==="f"?r({name:"filter"}):f==="n"?r({name:"create-category"}):h.leftArrow?u.go(-1):h.rightArrow&&u.go(1))});let S=()=>{n.name==="list"?e.pop():n.name==="create"?r({name:"create-category"}):(l(),r({name:"list"}))};return wn(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"?wn(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:f=>{s(f.status??""),u.reset(),r({name:"list"})}}):n.name==="create-category"?wn(ce,{width:t,height:o,items:[{heading:"\u5206\u7C7B"},...Ti.map(f=>({value:f,label:Zo(f),hint:vs[f].title}))],onSelect:f=>r({name:"create",category:f})}):n.name==="create"?wn(V,{title:`\u65B0\u5EFA\u5DE5\u5355 \u2014 ${Zo(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:wi.map(f=>({value:f,label:Mi(f).label})),initial:"normal"},{kind:"text",name:"title",label:"\u6807\u9898",placeholder:vs[n.category].title},{kind:"textarea",name:"content",label:"\u95EE\u9898\u63CF\u8FF0",rows:5,maxLength:5e3,placeholder:vs[n.category].content}],onCancel:S,onSubmit:f=>{let h=(f.title??"").trim(),b=(f.content??"").trim();if(h===""){d("\u8BF7\u586B\u5199\u6807\u9898");return}if(b===""){d("\u8BF7\u586B\u5199\u95EE\u9898\u63CF\u8FF0");return}g("\u6B63\u5728\u63D0\u4EA4\u5DE5\u5355",()=>Yl({title:h,category:n.category,priority:f.priority??"normal",content:b}),{onSuccess:()=>{r({name:"list"}),u.reset(),e.reload(),e.toast("ok","\u5DE5\u5355\u5DF2\u63D0\u4EA4")}})}}):wn(Q,{state:u.state,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:t,children:f=>$g(Lg,{flexDirection:"column",children:[wn(Re,{retain:"list",items:f.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,Ht(Mi(h.priority)),Zo(h.category),te(h.updatedAt),Ht(Li(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}),wn(Qn,{page:u.page,pages:u.pages,total:u.total,width:t})]})})})}import{Box as Bg}from"ink";import{jsx as Mo}from"react/jsx-runtime";function su({params:e}){let t=D(),{width:o}=j(),n=re(),r=Y([e.type,t.revision],()=>Kl(t.ctx.site,e.type));return Mo(G,{trail:["\u6CD5\u5F8B\u6761\u6B3E",e.type==="terms"?"\u7528\u6237\u534F\u8BAE":"\u9690\u79C1\u653F\u7B56"],hints:["\u2191\u2193 \u6EDA\u52A8"],children:Mo(Q,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6761\u6B3E",width:o,children:i=>i.configured?Mo(Bg,{flexDirection:"column",children:Mo(en,{lines:Gn(i.content,o),height:n})}):Mo(fe,{tone:"info",width:o,title:"\u8BE5\u6761\u6B3E\u5C1A\u672A\u914D\u7F6E"})})})}async function au(e,t){await kt(ye,`${e}/api/auth/send-code`,{json:t})}async function cu(e,t){let o=await dt(`${e}/api/auth/register`,{json:t});At(o);let n=$n.parse(o.data);return ho(e,go({refresh:null,device:null},o.headers),n)}async function lu(e,t){await kt(ye,`${e}/api/auth/forgot-password`,{json:t})}async function uu(e,t){await kt(ye,`${e}/api/auth/reset-password`,{json:t})}import{jsx as mu}from"react/jsx-runtime";function du(){let e=D(),{width:t}=j(),{busy:o,error:n,fail:r,run:i}=ge();return mu(G,{trail:["\u627E\u56DE\u5BC6\u7801"],isActive:o===null,children:mu(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=>lu(e.ctx.site,{email:s})},{kind:"text",name:"password",label:"\u65B0\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${ot} \u4F4D`,hint:"\u91CD\u7F6E\u540E\u6240\u6709\u8BBE\u5907\u90FD\u9700\u91CD\u65B0\u767B\u5F55"}],onCancel:()=>e.pop(),onSubmit:s=>{let a=(s.email??"").trim(),c=(s.code??"").trim(),l=s.password??"";if(a===""||c===""){r("\u8BF7\u586B\u5199\u90AE\u7BB1\u4E0E\u9A8C\u8BC1\u7801");return}if(l.length<ot){r(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${ot} \u4F4D`);return}i("\u6B63\u5728\u91CD\u7F6E",()=>uu(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 _s,Text as Ug}from"ink";import{useState as fu}from"react";import{Box as pu}from"ink";import{jsx as Rs,jsxs as Fg}from"react/jsx-runtime";var jr=e=>e.termsConfigured||e.privacyConfigured;function qr({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(pu,{flexDirection:"column",children:[Rs(fe,{tone:"info",width:t,title:`\u7EE7\u7EED\u524D\u8BF7\u9605\u8BFB\u5E76\u540C\u610F${r.join("\u4E0E")}`}),Rs(pu,{marginTop:1,children:Rs(ce,{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 sn,jsxs as gu}from"react/jsx-runtime";function hu(){let e=D(),{width:t}=j(),[o,n]=fu({name:"credentials"}),[r,i]=fu(!1),{busy:s,error:a,reset:c,fail:l,run:d}=ge(),g=Y([e.revision],()=>ve(e.ctx.site)),u=h=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u5DF2\u767B\u5F55\uFF1A${h}`),e.home()},p=(h,b)=>{d("\u6B63\u5728\u9A8C\u8BC1",()=>Qa(e.ctx.site,h,b),{onSuccess:x=>{if(x.status==="totp_required"){n({name:"factor",ticket:x.ticket,jar:x.jar});return}u(x.session.username)}})},S=(h,b)=>{d("\u6B63\u5728\u9A8C\u8BC1",()=>Xa(e.ctx.site,h.jar,h.ticket,b,h.kind),{onSuccess:x=>u(x.username)})},f=()=>{o.name==="credentials"?e.pop():(c(),n({name:"credentials"}))};return gu(G,{trail:o.name==="credentials"?["\u767B\u5F55\u8D26\u53F7"]:["\u767B\u5F55\u8D26\u53F7","\u4E24\u6B65\u9A8C\u8BC1"],onEscape:f,isActive:s===null,children:[o.name==="credentials"&&sn(Q,{state:g,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:h=>jr(h.legal)&&!r?sn(qr,{legal:h.legal,width:t,onAgree:()=>i(!0)}):gu(_s,{flexDirection:"column",children:[sn(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:f,onSubmit:b=>{let x=(b.account??"").trim(),w=b.password??"";if(x===""||w===""){l("\u8BF7\u586B\u5199\u8D26\u53F7\u4E0E\u5BC6\u7801");return}p(x,w)}}),sn(_s,{marginTop:1,children:sn(Ug,{color:m.faintForeground,children:"Passkey \u767B\u5F55\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"})})]})}),o.name==="factor"&&sn(ce,{width:t,items:[{value:"totp",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",hint:"\u8F93\u5165\u9A8C\u8BC1\u5668 App \u4E2D\u663E\u793A\u7684\u52A8\u6001\u9A8C\u8BC1\u7801"},{value:"recovery-code",label:"\u6062\u590D\u7801",hint:"\u8F93\u5165\u672A\u4F7F\u7528\u8FC7\u7684\u4E00\u6B21\u6027\u6062\u590D\u7801"}],onSelect:h=>n({name:"code",ticket:o.ticket,jar:o.jar,kind:h})}),o.name==="code"&&sn(_s,{flexDirection:"column",children:sn(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:f,onSubmit:h=>{let b=(h.code??"").trim();if(b===""){l("\u8BF7\u586B\u5199\u9A8C\u8BC1\u7801");return}S(o,b)}})})]})}import{useState as jg}from"react";import{jsx as Hr}from"react/jsx-runtime";function bu(){let e=D(),{width:t}=j(),[o,n]=jg(!1),{busy:r,error:i,fail:s,run:a}=ge(),c=Y([e.revision],()=>ve(e.ctx.site));return Hr(G,{trail:["\u6CE8\u518C\u8D26\u53F7"],isActive:r===null,children:Hr(Q,{state:c,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:l=>jr(l.legal)&&!o?Hr(qr,{legal:l.legal,width:t,onAgree:()=>n(!0)}):Hr(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=>au(e.ctx.site,{email:d,purpose:"register"})},{kind:"text",name:"password",label:"\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${ot} \u4F4D`},{kind:"text",name:"invite",label:"\u9080\u8BF7\u7801",placeholder:"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801",optional:!0}],onCancel:()=>e.pop(),onSubmit:d=>{let g=(d.username??"").trim(),u=(d.email??"").trim(),p=(d.code??"").trim(),S=d.password??"",f=(d.invite??"").trim();if(g===""||g.length>un){s(`\u8BF7\u8F93\u5165 1 \u5230 ${un} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}if(u===""||p===""){s("\u8BF7\u586B\u5199\u90AE\u7BB1\u4E0E\u9A8C\u8BC1\u7801");return}if(S.length<ot){s(`\u5BC6\u7801\u81F3\u5C11 ${ot} \u4F4D`);return}a("\u6B63\u5728\u6CE8\u518C",()=>cu(e.ctx.site,{username:g,email:u,password:S,code:p,...f===""?{}:{inviteCode:f}}),{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 vn}from"ink";import{useEffect as nh,useRef as oh,useState as Ns}from"react";import{z as L}from"zod";var qg=L.object({balance:L.number(),today:L.object({requests:L.number(),tokens:L.number(),cost:L.number()})}),yu=()=>O(qg,"/dashboard/summary"),Su=["all","30d","7d"],Hg=L.object({totals:L.object({requests:L.number(),tokens:L.number(),cost:L.number()}),hourly:L.array(L.number()),models:L.array(L.object({model:L.string(),displayName:L.string(),tokens:L.number(),inTokens:L.number(),outTokens:L.number()})),chart:L.object({start:L.string(),end:L.string(),points:L.array(L.object({day:L.string(),model:L.string(),tokens:L.number()}))}),heatmap:L.object({start:L.string(),end:L.string(),days:L.array(L.object({day:L.string(),cost:L.number()}))}),activeDays:L.number(),currentStreak:L.number(),longestStreak:L.number()}),Cs=e=>O(Hg,jn("/dashboard/stats",{range:e})),Wg=L.object({id:L.number().int(),requestId:L.string(),tokenName:L.string(),protocol:ca,model:L.string(),modelDisplayName:L.string(),groupName:L.string(),promptTokens:L.number(),completionTokens:L.number(),cachedTokens:L.number(),cacheWrite5mTokens:L.number(),cacheWrite1hTokens:L.number(),totalTokens:L.number(),quotaCost:L.number(),subscriptionPlanName:L.string().nullable(),multiplier:L.string(),status:ha,httpStatus:L.number().int(),stopReason:L.string().nullable(),latencyMs:L.number(),firstByteMs:L.number().nullable(),stream:L.boolean(),ip:L.string().nullable(),createdAt:L.string()}),xu=e=>O(ao(Wg),jn("/logs",{...e})),zg=L.object({id:L.number().int(),type:pa,amount:L.number(),balanceAfter:L.number(),refType:fa,refId:L.string().nullable(),createdAt:L.string()}),Tu=e=>O(ao(zg),jn("/quota-ledger",{...e}));import{Box as Gg,Text as _t}from"ink";import Oo from"string-width";import{Fragment as ku,jsx as Ct,jsxs as Es}from"react/jsx-runtime";var kn=1,Vg=4,Kg=1,Xn=8,Jg=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587"],wu=e=>`${Number(e.slice(5,7))}\u6708${Number(e.slice(8,10))}\u65E5`;function vu({data:e,order:t,width:o,rows:n}){let r=n-Kg,i=[];for(let C=e.start;C<=e.end;C=Kt(C,1))i.push(C);let s=Math.min(Vg,Math.floor((o+kn)/i.length)-kn);s<1&&(s=1,i=i.slice(-Math.floor((o+kn)/(1+kn))));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,br.length).map((C,R)=>[C,R])),d=br.length,g=C=>br[C]??m.faintForeground,u=new Map(i.map((C,R)=>[C,R])),p=i.map(()=>Array.from({length:d+1},()=>0));for(let C of e.points){let R=u.get(C.day);if(R===void 0)continue;let P=p[R];if(P===void 0)continue;let k=l.get(C.model)??d;P[k]=(P[k]??0)+C.tokens}let S=p.map(C=>C.reduce((R,P)=>R+P,0)),f=Math.max(0,...S),h=r*Xn,b=p.map((C,R)=>{let P=Array.from({length:r},()=>null),k=S[R]??0;if(k<=0||f<=0)return P;let I=Math.max(1,Math.round(k/f*h)),_=[],N=0,H=0;C.forEach(($,ne)=>{N+=$;let q=Math.round(N/k*I);for(let se=H;se<q;se+=1)_[se]=g(ne);H=q});for(let $=0;$<r;$+=1){let ne=Math.min(Xn,I-$*Xn);if(ne<=0)break;let q=new Map;for(let A=$*Xn;A<$*Xn+ne;A+=1){let B=_[A];B!==void 0&&q.set(B,(q.get(B)??0)+1)}let se=null,nt=0;for(let[A,B]of q)B>nt&&(se=A,nt=B);if(se===null)break;P[$]={color:se,glyph:ne===Xn?null:Jg[ne-1]??null}}return P}),x=C=>{let R=[],P=(k,I,_)=>{let N=R[R.length-1];N!==void 0&&N.color===k&&N.glyph===I?N.width+=_:R.push({color:k,glyph:I,width:_})};return b.forEach((k,I)=>{I>0&&P(null,null,kn);let _=k[C]??null;_===null?P(null,null,s):P(_.color,_.glyph,s)}),R},w=i.length*(s+kn)-kn,y=wu(a),v=wu(c),E=f>0?`\u5355\u65E5\u5CF0\u503C ${Qt(f)}`:"",M=w-Oo(y)-Oo(v),F=E!==""&&M>=Oo(E)+4,T=F?Math.floor((M-Oo(E))/2):M;return Es(Gg,{flexDirection:"column",children:[Array.from({length:r},(C,R)=>{let P=r-1-R;return Ct(_t,{wrap:"truncate",children:x(P).map((k,I)=>k.color===null?Ct(_t,{children:" ".repeat(k.width)},I):k.glyph===null?Ct(_t,{backgroundColor:k.color,children:" ".repeat(k.width)},I):Ct(_t,{color:k.color,children:k.glyph.repeat(k.width)},I))},P)}),Ct(_t,{wrap:"truncate",children:M<2?Ct(_t,{color:m.faintForeground,children:Te(y,w)}):Es(ku,{children:[Ct(_t,{color:m.faintForeground,children:y}),Ct(_t,{children:" ".repeat(T)}),F&&Es(ku,{children:[Ct(_t,{color:m.mutedForeground,children:E}),Ct(_t,{children:" ".repeat(M-Oo(E)-T)})]}),Ct(_t,{color:m.faintForeground,children:v})]})})]})}import{Box as Ru,Text as $t}from"ink";import Yg from"string-width";import{jsx as Dt,jsxs as Ps}from"react/jsx-runtime";var Wr=3,zt=2,As=10,Qg=8,_u=e=>Math.floor((e-Wr)/zt),Cu=e=>_u(e)>=Qg;function Xg(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=Kt(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 Zg(e,t){let o=t*zt,n="",r=0,i="";for(;r<o;){let s=r%zt===0?e[r/zt*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=Yg(c);if(r+l<=o){n+=c,r+=l;continue}}}n+=" ",r+=1}return n}var eh={1:"\u4E00",3:"\u4E09",5:"\u4E94"};function th({cells:e,day:t,weeks:o}){return Ps($t,{wrap:"truncate",children:[Dt($t,{color:m.faintForeground,children:Pe(eh[t]??"",Wr)}),Array.from({length:o},(n,r)=>{let i=e[r*7+t];return i===void 0?Dt($t,{children:" ".repeat(zt)},r):Dt($t,{backgroundColor:hr[i.level],children:" ".repeat(zt)},r)})]})}function Eu({data:e,funFact:t,width:o}){let n=Xg(e),r=Math.ceil(n.length/7),i=Math.min(r,_u(o)),s=n.slice((r-i)*7),a=3+hr.length*zt+3,c=Math.max(0,Wr+i*zt-a-2);return Ps(Ru,{flexDirection:"column",children:[Dt($t,{wrap:"truncate",color:m.faintForeground,children:" ".repeat(Wr)+Zg(s,i)}),Array.from({length:7},(l,d)=>Dt(th,{cells:s,day:d,weeks:i},d)),Dt(Ru,{marginTop:1,children:Ps($t,{wrap:"truncate",children:[Dt($t,{color:m.mutedForeground,children:Pe(t??"",c)})," ",Dt($t,{color:m.faintForeground,children:"\u5C11 "}),hr.map(l=>Dt($t,{backgroundColor:l,children:" ".repeat(zt)},l)),Dt($t,{color:m.faintForeground,children:" \u591A"})]})})]})}import{jsx as Fe,jsxs as Au}from"react/jsx-runtime";var rh={all:"\u5168\u90E8","30d":"30 \u5929","7d":"7 \u5929"},ih=1,zr=4,Pu=5,sh=9;function ah(e){let t=-1,o=0;return e.forEach((n,r)=>{n>o&&(o=n,t=r)}),t<0?"\u2014":`${t} \u70B9`}function Nu(){let e=D(),{width:t}=j(),o=re(),[n,r]=Ns("all"),[i,s]=Ns("heatmap"),[a,c]=Ns(null),l=oh(null),d=Y([n,e.revision],async()=>{let g=l.current;if(g!==null&&g.revision===e.revision){let f=await Cs(n);return{summary:g.summary,stats:f,site:g.site}}let[u,p,S]=await Promise.all([yu(),Cs(n),ve(e.ctx.site)]);return l.current={revision:e.revision,summary:u,site:S},{summary:u,stats:p,site:S}});return nh(()=>{d.phase==="ready"&&c(Ba({tokens:d.data.stats.totals.tokens,scope:"user",range:n}))},[d,n]),z(g=>{g==="r"&&e.reload(),g==="t"&&s(u=>u==="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(vn,{flexDirection:"column",children:Fe(Q,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u7528\u91CF",width:t,children:({summary:g,stats:u,site:p})=>{let S=[{label:"\u8D26\u6237\u4F59\u989D",value:me(g.balance,p.quotaPerUsd)},{label:"\u4ECA\u65E5\u8BF7\u6C42",value:Me(g.today.requests)},{label:"\u4ECA\u65E5 Token",value:Me(g.today.tokens)},{label:"\u4ECA\u65E5\u6D88\u8017",value:me(g.today.cost,p.quotaPerUsd)}],f=[{label:"\u8BF7\u6C42\u6570",value:Me(u.totals.requests)},{label:"Token \u603B\u91CF",value:Qt(u.totals.tokens)},{label:"\u6D88\u8017",value:me(u.totals.cost,p.quotaPerUsd)},{label:"\u6D3B\u8DC3\u5929\u6570",value:Me(u.activeDays)},{label:"\u5F53\u524D\u8FDE\u7EED",value:`${u.currentStreak} \u5929`},{label:"\u6700\u957F\u8FDE\u7EED",value:`${u.longestStreak} \u5929`},{label:"\u9AD8\u5CF0\u65F6\u6BB5",value:ah(u.hourly)},{label:"\u5E38\u7528\u6A21\u578B",value:u.models[0]?.displayName??"\u2014"}],h=t-ae,b=R=>rt+R+Tn(S.length,h)+J+rt+R+ih+R+Tn(f.length,h)+J+rt+R,x=o-b(De)>=zr?De:0,w=o-b(x),y=J+rt+x+Pu,v=i==="chart"&&u.chart.points.length>0&&w>=y+zr,E=i==="heatmap"&&Cu(h)&&w-(J+As)>=zr,M=E?J+As:0,F=v?Math.min(sh,Pu+Math.floor((w-y-zr)/2)):0,T=w-M-(v?J+rt+x+F:0),C=R=>`${(u.totals.tokens>0?R/u.totals.tokens*100:0).toFixed(1)}%`;return Au(vn,{flexDirection:"column",children:[Fe(oe,{title:"\u6982\u89C8",width:t,gap:x,children:Fe(at,{width:h,tiles:S})}),Fe(vn,{marginTop:1,flexDirection:"column",children:Au(oe,{title:"\u533A\u95F4\u7EDF\u8BA1",width:t,gap:x,children:[Fe(Ml,{options:Su.map(R=>({value:R,label:rh[R]})),value:n,onChange:r}),Fe(vn,{marginTop:x,children:Fe(at,{width:h,tiles:f})}),E&&Fe(vn,{marginTop:1,flexDirection:"column",children:Fe(Eu,{data:u.heatmap,funFact:a,width:h})})]})}),v&&Fe(vn,{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(vu,{data:u.chart,order:u.models.map(R=>R.model),width:h,rows:F})})}),Fe(vn,{marginTop:1,flexDirection:"column",children:Fe(oe,{title:"\u6A21\u578B\u7528\u91CF",width:t,gap:x,children:u.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(Re,{retain:"list",items:u.models,width:h,height:T,columns:[{label:"\u6A21\u578B",shrink:!0},{label:"\u603B Token",align:"right"},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u5360\u6BD4",align:"right"}],row:R=>[R.displayName,Qt(R.tokens),Qt(R.inTokens),Qt(R.outTokens),C(R.tokens)],searchOf:R=>R.displayName})})})]})}})})})}import{Box as Kr,Text as Ls}from"ink";import{useState as Ou}from"react";import{z as qe}from"zod";var ch=qe.object({id:qe.number().int(),name:qe.string(),description:qe.string(),multiplier:qe.coerce.number()}),Gr=()=>O(qe.array(ch),"/groups"),Is=qe.object({id:qe.number().int(),name:qe.string(),keyPrefix:qe.string(),keySuffix:qe.string(),groupId:qe.number().int().nullable(),groupName:qe.string().nullable(),usedQuota:qe.number(),quotaLimit:qe.number().nullable()}),Iu=()=>O(qe.array(Is),"/tokens"),Lu=e=>O(Is.extend({token:qe.string()}),"/tokens",{method:"POST",json:e}),Vr=(e,t)=>O(Is,`/tokens/${e}`,{method:"PATCH",json:t}),Mu=e=>O(ye,`/tokens/${e}`,{method:"DELETE"}).then(()=>{});import{jsx as Ve,jsxs as Ms}from"react/jsx-runtime";var Du={model:"",requestId:"",group:"",status:"",range:"",since:"",until:""},$u=/^\d{4}-\d{2}-\d{2}$/;function lh(e){let t=Ai();return e.range==="today"?{since:t,until:t}:e.range==="7d"?{since:Kt(t,-6),until:t}:e.range==="30d"?{since:Kt(t,-29),until:t}:e.range==="custom"?{...e.since===""?{}:{since:e.since},...e.until===""?{}:{until:e.until}}:{}}function uh(e){let t=lh(e);return{...e.model.trim()===""?{}:{model:e.model.trim()},...e.requestId.trim()===""?{}:{requestId:e.requestId.trim()},...e.group===""?{}:{group:e.group},...e.status===""?{}:{status:e.status},...t.since===void 0?{}:{since:Ni(t.since).toISOString()},...t.until===void 0?{}:{until:Ni(Kt(t.until,1)).toISOString()}}}var mh=Je(Si,Qo,"\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-ae,r=Qo(e.status),i=He(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",Me(e.cachedTokens)]),e.cacheWrite5mTokens>0&&a.push(["\u7F13\u5B58\u5199 5m",Me(e.cacheWrite5mTokens)]),e.cacheWrite1hTokens>0&&a.push(["\u7F13\u5B58\u5199 1h",Me(e.cacheWrite1hTokens)]),e.firstByteMs!==null&&a.push(["\u9996\u5B57\u8282",`${pn(e.firstByteMs)} s`]);let c=[["\u8BF7\u6C42 ID",e.requestId],["\u4EE4\u724C",e.tokenName],["\u5206\u7EC4",e.groupName],["\u534F\u8BAE",ja(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 Ms(oe,{title:e.modelDisplayName,note:te(e.createdAt),width:o,children:[Ms(Ls,{wrap:"truncate",children:[Ve(Ls,{color:i===void 0?m.mutedForeground:Be[i],children:r.label}),Ve(Ls,{color:m.faintForeground,children:` ${Oe([e.stream?"\u6D41\u5F0F":"",e.model])}`})]}),Ve(Kr,{marginTop:1,children:Ve(at,{width:n,tiles:[{label:"\u8F93\u5165 Token",value:Me(e.promptTokens)},{label:"\u8F93\u51FA Token",value:Me(e.completionTokens)},{label:"\u6D88\u8017",value:Un(e.quotaCost,t)},{label:"\u603B\u8017\u65F6",value:`${pn(e.latencyMs)} s`}]})}),s!==null&&Ve(Kr,{marginTop:1,children:Ve(fe,{tone:"warn",width:n,title:s})}),Ve(Kr,{marginTop:1,children:Ve(Ce,{width:n,items:[...a,...c]})})]})}function Bu(){let e=D(),{width:t}=j(),o=re(),[n,r]=Ou({name:"list"}),[i,s]=Ou(Du),{error:a,fail:c,reset:l}=ge(),d=Y([e.revision],async()=>{let[f,h]=await Promise.all([Gr(),ve(e.ctx.site)]);return{groups:f,site:h}}),g=Yn([e.revision,JSON.stringify(i)],(f,h)=>xu({page:f,pageSize:h,...uh(i)}),{retain:"page"}),u=n.name==="list";z((f,h)=>{u&&(f==="r"?e.reload():f==="f"?(l(),r({name:"filter"})):h.leftArrow?g.go(-1):h.rightArrow&&g.go(1))});let p=()=>{n.name==="list"?e.pop():(l(),r({name:"list"}))},S=JSON.stringify(i)!==JSON.stringify(Du);return Ve(G,{hints:u?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:p,children:Ve(Q,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u7B5B\u9009\u9009\u9879",width:t,children:({groups:f,site:h})=>n.name==="filter"?Ve(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:"group",label:"\u5206\u7EC4",options:[{value:"",label:"\u5168\u90E8\u5206\u7EC4"},...f.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:p,onSubmit:b=>{let x=b.range??"",w=(b.since??"").trim(),y=(b.until??"").trim();if(x==="custom"&&(w!==""&&!$u.test(w)||y!==""&&!$u.test(y))){c("\u65E5\u671F\u683C\u5F0F\u5E94\u4E3A YYYY-MM-DD");return}s({model:b.model??"",requestId:b.requestId??"",group:b.group??"",status:b.status??"",range:x,since:w,until:y}),g.reset(),r({name:"list"})}}):n.name==="detail"?Ve(ph,{log:n.log,quotaPerUsd:h.quotaPerUsd,width:t}):Ve(Q,{state:g.state,loading:"\u6B63\u5728\u8BFB\u53D6\u4F7F\u7528\u65E5\u5FD7",width:t,children:b=>Ms(Kr,{flexDirection:"column",children:[Ve(Re,{retain:"list",items:b.items,width:t,height:Math.max(3,o-1),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:x=>[te(x.createdAt),x.modelDisplayName,Me(x.promptTokens),Me(x.completionTokens),Un(x.quotaCost,h.quotaPerUsd),Ht(Qo(x.status))],onOpen:x=>r({name:"detail",log:x}),emptyLabel:S?"\u65E0\u5339\u914D\u7ED3\u679C":"\u6682\u65E0\u8C03\u7528\u8BB0\u5F55",emptyDescription:S?void 0:"\u901A\u8FC7\u4EE4\u724C\u8C03\u7528 API \u540E\uFF0C\u660E\u7EC6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),Ve(Qn,{page:g.page,pages:g.pages,total:g.total,width:t})]})})})})}import{Box as Do,Text as an}from"ink";import{useState as yh}from"react";import{z as ee}from"zod";var fh=ee.object({id:ee.number().int(),model:ee.string(),displayName:ee.string(),inputPricePerMillionTokens:ee.string(),outputPricePerMillionTokens:ee.string(),cachedInputPricePerMillionTokens:ee.string(),cacheWritePricePerMillionTokens:ee.string()}),gh=ee.object({quotaPerUsd:ee.number().int().positive(),cnyPerUsd:ee.number(),minTopupCny:ee.number(),models:ee.array(fh)});function Jr(e){return kt(gh,`${e}/api/pricing`)}var hh=ee.object({cnyPerUsd:ee.number(),groups:ee.array(ee.object({id:ee.number().int(),name:ee.string(),multiplier:ee.coerce.number()})),stats:ee.object({requests:ee.number(),errors:ee.number(),latencyP50Ms:ee.number().nullable(),firstByteP50Ms:ee.number().nullable()}),heartbeat:ee.object({bucketStartMs:ee.number(),groups:ee.array(ee.object({id:ee.number().int(),name:ee.string(),minutes:ee.array(ee.object({requests:ee.number(),errors:ee.number()}))}))})});function Fu(e,t){return kt(hh,`${e}/api/pricing/${t}`)}var bh=ee.object({data:ee.array(ee.object({id:ee.string()}))});async function Uu(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 Ae,jsxs as $o}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?m.border:e.errors===0?m.success:e.errors/e.requests>=.5?m.danger:m.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 Ae(an,{wrap:"truncate",children:n.map((r,i)=>Ae(an,{color:r.color,children:X.barFilled.repeat(r.count)},i))})}function Rh({price:e,width:t,contentRows:o}){let n=D(),r=Y([e.id,n.revision],()=>Fu(n.ctx.site,e.id)),i=(s,a)=>dn(String(Number(s)*a),"-");return Ae(Q,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u8BE6\u60C5",width:t,children:s=>{let a=t-ae,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:Me(c.requests)},{label:"\u5EF6\u8FDF P50",value:c.latencyP50Ms!==null?`${pn(c.latencyP50Ms)} s`:"\u2014"},{label:"\u9996\u5B57\u8282 P50",value:c.firstByteP50Ms!==null?`${pn(c.firstByteP50Ms)} s`:"\u2014"}],d=wh+Rt+Tn(l.length,a,2)+J+Rt+Th,g=s.heartbeat.groups.length,u=o-d-Sh-J-Rt,p=Math.max(0,Math.floor(u/2));p<g&&(p=Math.max(0,Math.floor((u-1)/2))),p=Math.min(g,p);let S=p>0?J+Rt+p*2+(p<g?1:0):0,f=Math.max(1,o-d-S);return $o(Do,{flexDirection:"column",children:[Ae(Do,{marginBottom:De,children:$o(an,{wrap:"truncate",children:[Ae(an,{bold:!0,color:m.foreground,children:e.displayName}),Ae(an,{color:m.faintForeground,children:` ${e.model}`})]})}),Ae(oe,{title:"\u8FD1 24 \u5C0F\u65F6",note:"\u5168\u90E8\u5206\u7EC4\u7684\u7EFC\u5408\u8C03\u7528\u7EDF\u8BA1",width:t,children:Ae(at,{width:a,tiles:l,maxPerRow:2})}),p>0&&Ae(Do,{marginTop:1,flexDirection:"column",children:$o(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=>$o(Do,{flexDirection:"column",children:[Ae(an,{wrap:"truncate",color:m.foreground,children:h.name}),Ae(vh,{minutes:h.minutes,width:a})]},h.id)),p<g&&Ae(an,{color:m.faintForeground,children:`\u5176\u4F59 ${g-p} \u4E2A\u5206\u7EC4\u672A\u663E\u793A`})]})}),Ae(Do,{marginTop:1,flexDirection:"column",children:$o(oe,{title:"\u5206\u7EC4\u4EF7\u683C",width:t,children:[Ae(an,{wrap:"truncate",color:m.mutedForeground,children:xh}),s.groups.length===0?Ae(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"}):Ae(Re,{items:s.groups,width:a,height:f,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 ju(){let e=D(),{width:t}=j(),o=re(),[n,r]=yh({name:"list"}),i=Y([e.revision],async()=>(await Jr(e.ctx.site)).models);z(a=>{a==="r"&&e.reload()});let s=()=>{n.name==="list"?e.pop():r({name:"list"})};return Ae(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:Ae(Q,{state:i,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u5B9A\u4EF7",width:t,children:a=>a.length===0?Ae(fe,{tone:"info",width:t,title:"\u6682\u65E0\u6A21\u578B"}):n.name==="detail"?Ae(Rh,{price:n.price,width:t,contentRows:o}):Ae(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,dn(c.inputPricePerMillionTokens,"-"),dn(c.outputPricePerMillionTokens,"-"),dn(c.cachedInputPricePerMillionTokens,"-"),dn(c.cacheWritePricePerMillionTokens,"-")],searchOf:c=>`${c.displayName} ${c.model}`,onOpen:c=>r({name:"detail",price:c}),emptyLabel:"\u65E0\u5339\u914D\u7ED3\u679C"})})})}import{Box as Rn,Text as Bh}from"ink";import{useState as Xr}from"react";function qu(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 Hu(e,t){let o=await ve(e.site);return Uu(qu(fn(),o).url,t)}async function Wu(e,t,o,n){let r=await ve(e.site),i=qu(fn(),r).url;t.apply({siteName:r.siteName,baseUrl:t.relayUrl(i),apiKey:o,model:t.requiresModel?n??null:null},t.resolveDir())}import{homedir as Yu}from"os";import{join as Qr,resolve as _h}from"path";function Yr(e,t){let o=e[t];return typeof o!="object"||o===null||Array.isArray(o)?null:o}function Bo(e,t){let o={...Ho(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&&Yr(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?{}:{...Yr(o,i)??{}};c[s]=r,o[i]=c}Wo(e,o,384)}function zu(e,t){let o=Ho(e);if(o===null)return null;let n=t.length===1?o[t[0]]:Yr(o,t[0])?.[t[1]];return typeof n=="string"?n:null}function Gu(e,t){let o=Ho(e);if(o===null)return!1;if(t.length===1)return t[0]in o;let n=Yr(o,t[0]);return n!==null&&t[1]in n}var Vu=["env","ANTHROPIC_BASE_URL"],Ch=["env","ANTHROPIC_AUTH_TOKEN"],Ku=["hasCompletedOnboarding"],Os=e=>Qr(e.dir,"settings.json"),Ju=e=>e.custom?Qr(e.dir,".claude.json"):Qr(Yu(),".claude.json"),Qu={id:"claude-code",label:"Claude Code",requiresModel:!1,resolveDir(){let e=process.env.CLAUDE_CONFIG_DIR;return e?{dir:_h(e),custom:!0}:{dir:Qr(Yu(),".claude"),custom:!1}},relayUrl:e=>e,configPaths:e=>[Os(e),Ju(e)],read(e){return{baseUrl:zu(Os(e),Vu),model:null}},apply(e,t){Bo(Os(t),[[Vu,e.baseUrl],[Ch,e.apiKey]]);let o=Ju(t);Gu(o,Ku)||Bo(o,[[Ku,!0]])}};import{homedir as Eh}from"os";import{join as Fs,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"],Xu="model_provider",Ds="model",$s=e=>Fs(e.dir,"config.toml"),Zu=e=>Fs(e.dir,"auth.json");function Bs(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=$s(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=Mn(o)??"";n!==""&&Bs(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[Xu]=r,i[Ds]=e.model;let a=Nh(n,i,{inlineTableStart:2}),c=Bs(a,o);if(c[Xu]!==r||c[Ds]!==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`);di(o,a,384)}var em={id:"codex",label:"Codex",requiresModel:!0,resolveDir(){let e=process.env.CODEX_HOME;return e?{dir:Ph(e),custom:!0}:{dir:Fs(Eh(),".codex"),custom:!1}},relayUrl:e=>`${e}/v1`,configPaths:e=>[$s(e),Zu(e)],read(e){let t=$s(e),o=Mn(t),n=o===null?null:Bs(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?.[Ds])}},apply(e,t){Mh(e,t),Bo(Zu(t),[[Lh,e.apiKey]])}};var tm=[Qu,em];var Oh=6e3,Dh=2,nm=e=>dt(`${e.url}/api/site-config`,{timeoutMs:Oh});async function $h(e){try{await nm(e);let t=Number.POSITIVE_INFINITY;for(let o=0;o<Dh;o+=1){let n=Date.now();await nm(e),t=Math.min(t,Date.now()-n)}return{line:e,latencyMs:t}}catch{return{line:e,latencyMs:null}}}async function om(e){let t=[];for(let o of e)t.push(await $h(o));return t}import{jsx as Se,jsxs as Zr}from"react/jsx-runtime";var Fh=10,Uh=3,rm=4,cm=e=>1+Math.max(1,Math.min(e,rm))+(e>rm?1:0);function im(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 sm=e=>e.map(t=>({value:String(t.id),label:`${t.name} \xD7${t.multiplier}`})),am=(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 Se(oe,{title:"API \u63A5\u5165\u5730\u5740",note:o===void 0?void 0:`\u5F53\u524D ${o.name}`,width:n,children:Se(Re,{retain:"lines",items:e,width:n-ae,height:cm(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 lm(){let e=D(),{width:t}=j(),o=re(),[n,r]=Xr({name:"list"}),[i,s]=Xr(!1),[a,c]=Xr(()=>fn().line),[l,d]=Xr(0),{busy:g,error:u,reset:p,fail:S,run:f}=ge(),h=Y([e.revision],async()=>{let[_,N,H]=await Promise.all([Iu(),Gr(),ve(e.ctx.site)]);return{tokens:_,groups:N,site:H}}),b=h.phase==="ready"?h.data.site.apiLines:[],x=Y([l,b.map(_=>_.url).join("|")],()=>om(b)),w=g!==null,y=n.name==="list"&&!w,v=_=>{r({name:"list"}),e.reload(),e.toast("ok",_)};z(_=>{if(_==="r"){d(N=>N+1),e.reload();return}i||(_==="n"?r({name:"create"}):_==="l"&&b.length>0&&s(!0))},y);let E=_=>{sr(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`)},M=(_,N,H)=>{f("\u6B63\u5728\u521B\u5EFA\u4EE4\u724C",()=>Lu({name:_,groupId:N,quotaLimit:H}),{onSuccess:$=>{e.reload(),r({name:"created",token:$,secret:$.token})}})},F=_=>{f("\u6B63\u5728\u5220\u9664\u4EE4\u724C",()=>Mu(_.id),{onSuccess:()=>v("\u4EE4\u724C\u5DF2\u5220\u9664")})},T=(_,N)=>{f("\u6B63\u5728\u8BFB\u53D6\u5BA2\u6237\u7AEF\u914D\u7F6E",async()=>tm.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})})},C=(_,N,H)=>{f("\u6B63\u5728\u5199\u5165",()=>Wu(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){C(H.client,_.secret);return}f("\u6B63\u5728\u8BFB\u53D6\u53EF\u8DEF\u7531\u7684\u6A21\u578B",async()=>{let $=await Hu(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})},k=()=>{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"})},I=()=>n.name!=="list"?["Esc \u8FD4\u56DE"]:i?["\u2191\u2193 \u79FB\u52A8","Enter \u9009\u7528","/ \u8FC7\u6EE4","r \u5237\u65B0","Esc \u8FD4\u56DE"]:["\u2191\u2193 \u79FB\u52A8","Enter \u64CD\u4F5C","n \u65B0\u5EFA","l \u63A5\u5165\u5730\u5740","/ \u8FC7\u6EE4","r \u5237\u65B0"];return n.name==="created"||n.name==="apply-pick"||n.name==="apply-model"?Se(G,{hints:I(),onEscape:k,children:Zr(Rn,{flexDirection:"column",children:[g!==null&&Se(Qe,{label:g}),n.name==="created"&&!w&&Zr(Rn,{flexDirection:"column",children:[Se(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"}),Se(Rn,{marginTop:1,children:Se(Bh,{color:m.accent,children:n.secret})}),Se(Rn,{marginTop:1,children:Se(ce,{width:t,items:[{value:"apply",label:"\u5199\u5165\u914D\u7F6E"},{value:"back",label:"\u6211\u5DF2\u4FDD\u5B58"}],onSelect:_=>{_==="back"?r({name:"list"}):T(n.token,n.secret)}})})]}),n.name==="apply-pick"&&!w&&Se(oe,{title:"\u5199\u5165\u914D\u7F6E",note:n.token.name,width:t,children:Se(ce,{width:t-ae,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"&&!w&&Se(V,{title:`${n.needs.client.label} \u9ED8\u8BA4\u6A21\u578B`,width:t,submitLabel:"\u5199\u5165",error:u,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:k,onSubmit:_=>{let N=_.model;if(N===void 0||N===""){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u6A21\u578B");return}C(n.needs.client,n.secret,N)}})]})}):Se(G,{hints:I(),onEscape:k,children:Se(Q,{state:h,loading:"\u6B63\u5728\u8BFB\u53D6\u4EE4\u724C",width:t,children:({tokens:_,groups:N,site:H})=>{let $=J+Rt+cm(H.apiLines.length),ne=Math.max(Uh,o-(n.name==="list"?$:Fh));return Zr(Rn,{flexDirection:"column",children:[Se(Rn,{flexDirection:"column",marginBottom:J,children:Se(Re,{retain:"list",items:_,width:t,height:ne,isActive:y&&!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=me(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":me(q.quotaLimit,H.quotaPerUsd),or(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"})}),g!==null&&(n.name==="list"||n.name==="actions"||n.name==="confirm-delete")&&Se(Qe,{label:g}),n.name==="list"&&Se(jh,{lines:H.apiLines,measured:x.phase==="ready"?x.data:null,effective:a??H.apiLines[0],width:t,isActive:y&&i,onPick:E}),n.name==="actions"&&!w&&Zr(oe,{title:n.token.name,width:t,children:[Se(Ce,{width:t-ae,items:[["\u5206\u7EC4",n.token.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664"],["\u5DF2\u6D88\u8D39",me(n.token.usedQuota,H.quotaPerUsd)],["\u8D39\u7528\u9650\u5236",n.token.quotaLimit===null?"\u4E0D\u9650":me(n.token.quotaLimit,H.quotaPerUsd)],["\u5BC6\u94A5",or(n.token.keyPrefix,n.token.keySuffix)]]}),Se(Rn,{marginTop:1,children:Se(ce,{width:t-ae,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":me(n.token.quotaLimit,H.quotaPerUsd)},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:q=>P(q,n.token)})})]}),n.name==="create"&&Se(V,{title:"\u521B\u5EFA\u4EE4\u724C",width:t,submitLabel:"\u521B\u5EFA",error:u,busy:w,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:sm(N),initial:String(N[0]?.id??""),hint:q=>am(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:k,onSubmit:q=>{let se=(q.name??"").trim();if(se===""){S("\u8BF7\u586B\u5199\u4EE4\u724C\u540D\u79F0");return}let nt=N.find(B=>String(B.id)===q.group);if(nt===void 0){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}let A=im(q.limit??"",H.quotaPerUsd);if(A==="invalid"){S("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}M(se,nt.id,A)}}),n.name==="rename"&&Se(V,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:u,busy:w,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:k,onSubmit:q=>{let se=(q.name??"").trim();if(se===""){S("\u8BF7\u586B\u5199\u4EE4\u724C\u540D\u79F0");return}f("\u6B63\u5728\u4FDD\u5B58",()=>Vr(n.token.id,{name:se}),{onSuccess:()=>v("\u5DF2\u4FDD\u5B58")})}}),n.name==="regroup"&&Se(V,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:u,busy:w,busyLabel:"\u6B63\u5728\u4FDD\u5B58",fields:[{kind:"select",name:"group",label:"\u5206\u7EC4",options:sm(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=>am(N,q)}],onCancel:k,onSubmit:q=>{let se=N.find(nt=>String(nt.id)===q.group);if(se===void 0){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}f("\u6B63\u5728\u4FDD\u5B58",()=>Vr(n.token.id,{groupId:se.id}),{onSuccess:()=>v("\u5DF2\u4FDD\u5B58")})}}),n.name==="relimit"&&Se(V,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:u,busy:w,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 ${me(n.token.usedQuota,H.quotaPerUsd)}\uFF0C\u8FBE\u5230\u8D39\u7528\u4E0A\u9650\u540E\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD`,optional:!0}],onCancel:k,onSubmit:q=>{let se=im(q.limit??"",H.quotaPerUsd);if(se==="invalid"){S("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}f("\u6B63\u5728\u4FDD\u5B58",()=>Vr(n.token.id,{quotaLimit:se}),{onSuccess:()=>v("\u5DF2\u4FDD\u5B58")})}}),n.name==="confirm-delete"&&!w&&Se(je,{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:u,onConfirm:()=>F(n.token),onCancel:k})]})}})})}import{Box as Us}from"ink";import{jsx as Et,jsxs as qh}from"react/jsx-runtime";var um=[["\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"]],mm=[["\u70B9\u51FB / \u6EDA\u8F6E","\u9009\u4E2D\u6253\u5F00\u3001\u6EDA\u52A8"],["Option / Alt \u62D6\u9009","\u590D\u5236\u6587\u672C"]],dm=[["\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 pm({width:e,height:t}){let o=e-ae,n=[["\u7248\u672C",`${lt} v${ut}`],["\u672C\u5730\u5B58\u50A8",Ft()]],r=[um,mm,dm,n],s=(a=>r.reduce((c,l)=>c+rt+a+Wl(l.length,o),J*(r.length-1)))(De)<=t?De:0;return qh(uc,{height:t,children:[Et(oe,{title:"\u901A\u7528",width:e,gap:s,children:Et(Ce,{items:um,width:o})}),Et(Us,{marginTop:J,flexDirection:"column",children:Et(oe,{title:"\u9F20\u6807",width:e,gap:s,children:Et(Ce,{items:mm,width:o})})}),Et(Us,{marginTop:J,flexDirection:"column",children:Et(oe,{title:"\u6587\u672C\u8F93\u5165",width:e,gap:s,children:Et(Ce,{items:dm,width:o})})}),Et(Us,{marginTop:J,flexDirection:"column",children:Et(oe,{title:"\u5173\u4E8E",width:e,gap:s,children:Et(Ce,{items:n,width:o})})})]})}import{jsx as js}from"react/jsx-runtime";function fm(){let e=D(),{width:t}=j(),o=re();return Xt(e.pop),js(yn,{header:js(Nr,{trail:["CodeFlow","\u952E\u4F4D\u5E2E\u52A9"],width:t,onBack:e.pop,isActive:!0}),hints:["Esc \u8FD4\u56DE"],children:js(pm,{width:t,height:o})})}import{Box as gm,Text as Hh}from"ink";import{jsx as Fo,jsxs as Wh}from"react/jsx-runtime";var hm=[{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 bm(){let e=D(),{width:t}=j(),o=Eo(0),n=J+1+J+hm.length,r=Cr(t)&&o-_r>=n;return Wh(yn,{header:r?Fo(Er,{width:t}):null,hints:["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","? \u5E2E\u52A9","q \u9000\u51FA"],children:[Fo(gm,{marginTop:1,children:Fo(Hh,{color:m.mutedForeground,wrap:"truncate",children:"\u767B\u5F55\u540E\u5373\u53EF\u521B\u5EFA\u4EE4\u724C\u3001\u5199\u5165\u914D\u7F6E\u5E76\u67E5\u770B\u7528\u91CF"})}),Fo(gm,{marginTop:1,children:Fo(ce,{items:hm,width:t,retain:"menu",onSelect:i=>e.push(i)})})]})}import{Box as ei,Text as _n}from"ink";import{useState as Sm}from"react";import{z as ze}from"zod";var zh=ze.object({inviteCode:ze.string(),invitedCount:ze.number(),totalReward:ze.number(),rewards:ze.object({firstInviterPercent:ze.number(),firstInviteePercent:ze.number(),subsequentInviterPercent:ze.number()}),items:ze.array(ze.object({id:ze.number().int(),rewardType:ga,rewardQuota:ze.number(),rewardQuotaReversed:ze.number(),inviterUsername:ze.string(),inviteeUsername:ze.string(),createdAt:ze.string()}))}),ym=()=>O(zh,"/invite");import{jsx as Ke,jsxs as ti}from"react/jsx-runtime";var Gh=Je(yi,Xo,"\u5168\u90E8\u7C7B\u578B"),xm=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 Tm(){let e=D(),{width:t}=j(),o=re(),[n,r]=Sm("main"),[i,s]=Sm(""),a=Y([e.revision],async()=>{let[l,d]=await Promise.all([ym(),ve(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(Q,{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:b=>{s(b.type??""),r("main")}});let g=t-ae,u=Vh(l.rewards),p=i===""?l.items:l.items.filter(b=>b.rewardType===i),S=b=>Tn(2,t)+J+rt+b+2+J+rt+b+u.length+J+rt+b,f=o-S(De)>=xm?De:0,h=Math.max(xm,o-S(f));return ti(ei,{flexDirection:"column",children:[Ke(at,{width:t,tiles:[{label:"\u5DF2\u9080\u8BF7\u4EBA\u6570",value:Me(l.invitedCount)},{label:"\u7D2F\u8BA1\u5956\u52B1\u989D\u5EA6",value:me(l.totalReward,d.quotaPerUsd)}]}),Ke(ei,{marginTop:1,flexDirection:"column",children:ti(oe,{title:"\u6211\u7684\u9080\u8BF7",width:t,gap:f,children:[ti(_n,{wrap:"truncate",children:[Ke(_n,{color:m.mutedForeground,children:"\u6211\u7684\u9080\u8BF7\u7801 "}),Ke(_n,{color:m.accent,children:l.inviteCode})]}),ti(_n,{wrap:"truncate",children:[Ke(_n,{color:m.mutedForeground,children:"\u9080\u8BF7\u94FE\u63A5 "}),Ke(_n,{color:m.accent,children:`${e.ctx.site}/register?invite=${l.inviteCode}`})]})]})}),Ke(ei,{marginTop:1,flexDirection:"column",children:Ke(oe,{title:"\u5956\u52B1\u89C4\u5219",width:t,gap:f,children:u.map((b,x)=>Ke(_n,{wrap:"truncate",color:m.mutedForeground,children:b},x))})}),Ke(ei,{marginTop:1,flexDirection:"column",children:Ke(oe,{title:"\u9080\u8BF7\u5956\u52B1\u8BB0\u5F55",note:i===""?void 0:Xo(i),width:t,gap:f,children:Ke(Re,{retain:"list",items:p,width:g,height:h,columns:[{label:"\u65F6\u95F4"},{label:"\u597D\u53CB",shrink:!0},{label:"\u5956\u52B1\u7C7B\u578B"},{label:"\u5956\u52B1\u989D\u5EA6",align:"right"}],row:b=>{let x=b.rewardQuota-b.rewardQuotaReversed,w=b.rewardQuotaReversed>0?`\u9000\u6B3E\u51B2\u51CF -${me(b.rewardQuotaReversed,d.quotaPerUsd)}`:"";return[te(b.createdAt),b.rewardType==="first_invitee"?b.inviterUsername:b.inviteeUsername,Xo(b.rewardType),Oe([me(x,d.quotaPerUsd),w])]},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 Im}from"react";import{z as be}from"zod";var Kh=be.object({id:be.number().int(),orderNo:be.string(),amountCny:be.number().int()}),wm=()=>O(be.array(Kh),"/invoices/eligible-orders"),qs=be.object({id:be.number().int(),type:hi,title:be.string(),taxId:be.string().nullable(),email:be.string(),remark:be.string().nullable(),amountCny:be.number().int(),status:ma,rejectReason:be.string().nullable(),rejectedAt:be.string().nullable(),issuedAt:be.string().nullable(),createdAt:be.string()}),Jh=qs.extend({orders:be.array(be.object({orderNo:be.string(),amountCny:be.number().int()}))}),km=()=>O(be.array(qs),"/invoices"),vm=e=>O(Jh,`/invoices/${e}`),Rm=e=>O(qs,"/invoices",{method:"POST",json:e}),Hs=be.object({id:be.number().int(),type:hi,title:be.string(),taxId:be.string().nullable(),email:be.string()}),ni=()=>O(be.array(Hs),"/invoices/profiles"),_m=e=>O(Hs,"/invoices/profiles",{method:"POST",json:e}),Cm=(e,t)=>O(Hs,`/invoices/profiles/${e}`,{method:"PATCH",json:t}),Em=e=>O(ye,`/invoices/profiles/${e}`,{method:"DELETE"}).then(()=>{});import{Box as Yh,Text as Cn,useInput as Qh}from"ink";import{useEffect as Xh,useState as Zh}from"react";import{jsx as Uo,jsxs as Ws}from"react/jsx-runtime";var eb="[x]",tb="[ ]",Pm=4,oi=2,Am=2;function Nm({items:e,columns:t,row:o,selected:n,onToggle:r,onToggleAll:i,onSubmit:s,width:a,height:c,emptyLabel:l}){let[d,g]=Zh(0),u=Math.max(1,c-1),p=e.length>u?Math.max(1,u-1):u;Xh(()=>{g(y=>Math.min(y,Math.max(0,e.length-1)))},[e.length]);let S=Xi(d,p),f=y=>{e.length!==0&&g(v=>(v+y+e.length)%e.length)};Qh((y,v)=>{if(v.upArrow){f(-1);return}if(v.downArrow){f(1);return}if(v.return){s();return}y===" "&&e.length>0&&r(d)}),z(y=>{if(y==="k"){f(-1);return}if(y==="j"){f(1);return}y==="a"&&i()});let h=y=>{let v=S+y-1;return v>=0&&v<e.length?v:null},b=$e({onWheel:f,onClick:({row:y})=>{let v=h(y);v!==null&&(g(v),r(v))},onHover:({row:y})=>{let v=h(y);v!==null&&g(v)}}),x=ls(t,e.map(y=>o(y)),a-oi-Pm),w=e.slice(S,S+p);return Ws(Yh,{ref:b,flexDirection:"column",children:[Ws(Cn,{wrap:"truncate",color:m.faintForeground,children:[" ".repeat(oi+Pm),t.map((y,v)=>y.align==="right"?Nt(y.label,x[v]??0):Pe(y.label,x[v]??0)).join(" ".repeat(Am))]}),e.length===0?Uo(Cn,{color:m.faintForeground,children:`${" ".repeat(oi)}${l}`}):w.map((y,v)=>{let E=S+v,M=E===d,F=n.has(E),T=M?m.accent:m.foreground,C=o(y);return Ws(Cn,{wrap:"truncate",children:[Uo(Cn,{color:m.accent,children:M?`${X.cursor} `:" "}),Uo(Cn,{color:F?m.accent:T,bold:M,children:`${F?eb:tb} `}),t.map((R,P)=>{let k=R.align==="right"?Nt(C[P]??"",x[P]??0):Pe(C[P]??"",x[P]??0);return Uo(Cn,{color:T,bold:M,children:P>0?`${" ".repeat(Am)}${k}`:k},R.label)})]},E)}),(S>0||S+p<e.length)&&Uo(Cn,{color:m.faintForeground,children:`${" ".repeat(oi)}${S+1}-${Math.min(S+p,e.length)} / ${e.length}`})]})}function ri(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 ii=e=>[{kind:"select",name:"type",label:"\u7C7B\u578B",options:[{value:"general",label:po("general")},{value:"special",label:po("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 Zn}from"react/jsx-runtime";function Lm(){let e=D(),{width:t}=j(),o=re(),[n,r]=Im({name:"pick"}),[i,s]=Im(new Set),{busy:a,error:c,reset:l,fail:d,run:g}=ge(),u=Y([e.revision],async()=>{let[f,h]=await Promise.all([wm(),ni()]);return{orders:f,profiles:h}});z(f=>{n.name==="pick"&&f==="r"&&e.reload()});let p=()=>{n.name==="pick"?e.pop():n.name==="preset"?r({name:"pick"}):(l(),r({name:"pick"}))},S=(f,h)=>{let b=ri(h,d);if(b===null)return;let x=(h.remark??"").trim(),w=f.filter(y=>i.has(y.id)).map(y=>y.id);g("\u6B63\u5728\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7",()=>Rm({orderIds:w,...b,remark:x===""?null:x}),{onSuccess:()=>{e.toast("ok","\u5DF2\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7"),e.pop()}})};return Zn(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:Zn(Q,{state:u,loading:"\u6B63\u5728\u8BFB\u53D6\u53EF\u5F00\u7968\u8BA2\u5355",width:t,children:({orders:f,profiles:h})=>{if(n.name==="pick")return f.length===0?Zn(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"}):Zn(Nm,{items:f,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(f.flatMap((x,w)=>i.has(x.id)?[w]:[])),onToggle:x=>{let w=f[x]?.id;w!==void 0&&s(y=>{let v=new Set(y);return v.has(w)?v.delete(w):v.add(w),v})},onToggleAll:()=>s(x=>f.every(w=>x.has(w.id))?new Set:new Set(f.map(w=>w.id))),onSubmit:()=>{if(!f.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(w=>({value:{kind:"profile",profile:w},label:`${mn(w.type)} \xB7 ${w.title}`,hint:w.email})),{heading:""},{value:{kind:"manual"},label:"\u624B\u52A8\u586B\u5199",hint:"\u4E0D\u5957\u7528\u5E38\u7528\u4FE1\u606F"}];return Zn(ce,{items:x,width:t,height:o,onSelect:w=>{w.kind==="manual"?r({name:"identity",preset:null}):r({name:"identity",preset:w.profile})}})}let b=n.preset;return Zn(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:[...ii(b),{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(f,x)})}})})}import{Box as zs}from"ink";import{useState as nb}from"react";import{jsx as Gt,jsxs as Mm}from"react/jsx-runtime";var ob=8,rb=3;function Om(){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=Y([e.revision],ni),g=i!==null,u=n.name==="list"&&!g;z(S=>{S==="r"?e.reload():S==="n"&&r({name:"create"})},u);let p=()=>{n.name==="list"?e.pop():(a(),r({name:"list"}))};return Gt(G,{trail:["\u53D1\u7968\u7BA1\u7406","\u5E38\u7528\u4FE1\u606F"],hints:u?["\u2191\u2193 \u79FB\u52A8","Enter \u64CD\u4F5C","n \u65B0\u5EFA","r \u5237\u65B0"]:[],onEscape:p,children:Gt(Q,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u5E38\u7528\u5F00\u7968\u4FE1\u606F",width:t,children:S=>{let f=n.name==="list"?o:Math.max(rb,o-ob);return Mm(zs,{flexDirection:"column",children:[Gt(zs,{marginBottom:n.name==="list"?0:1,children:Gt(Re,{retain:"list",items:S,width:t,height:f,isActive:u,columns:[{label:"\u7C7B\u578B"},{label:"\u62AC\u5934",shrink:!0},{label:"\u7A0E\u53F7"},{label:"\u90AE\u7BB1"}],row:h=>[mn(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"&&!g&&Mm(oe,{title:n.profile.title,width:t,children:[Gt(Ce,{width:t-ae,items:[["\u7C7B\u578B",po(n.profile.type)],["\u7A0E\u53F7",n.profile.taxId??"\u2014"],["\u90AE\u7BB1",n.profile.email]]}),Gt(zs,{marginTop:1,children:Gt(ce,{width:t-ae,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")&&Gt(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:g,busyLabel:i??"\u6B63\u5728\u4FDD\u5B58",error:s,fields:ii(n.name==="edit"?n.profile:null),onCancel:p,onSubmit:h=>{let b=ri(h,c);if(b===null)return;let x=n.name==="edit"?()=>Cm(n.profile.id,b):()=>_m(b);l("\u6B63\u5728\u4FDD\u5B58",x,{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u4FDD\u5B58")}})}}),n.name==="confirm-delete"&&Gt(je,{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",()=>Em(n.profile.id),{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u5220\u9664")}}),onCancel:p})]})}})})}import{Box as Gs,Text as si}from"ink";import{useState as ib}from"react";import{jsx as tt,jsxs as Dm}from"react/jsx-runtime";var sb=Je(gi,Yo,"\u5168\u90E8\u72B6\u6001");function ab({id:e,width:t}){let o=D(),n=Y([e,o.revision],()=>vm(e)),r=t-ae;return tt(Q,{state:n,loading:"\u6B63\u5728\u8BFB\u53D6\u53D1\u7968\u8BE6\u60C5",width:t,children:i=>{let s=Yo(i.status),a=He(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",te(i.createdAt)],...i.rejectReason===null?[]:[["\u9A73\u56DE\u539F\u56E0",i.rejectReason]],...i.rejectedAt===null?[]:[["\u9A73\u56DE\u65F6\u95F4",te(i.rejectedAt)]],...i.issuedAt===null?[]:[["\u5F00\u7968\u65F6\u95F4",te(i.issuedAt)]]];return Dm(oe,{title:i.title,note:Ut(i.createdAt),width:t,children:[Dm(si,{wrap:"truncate",children:[tt(si,{color:m.mutedForeground,children:mn(i.type)}),tt(si,{color:a===void 0?m.mutedForeground:Be[a],children:` ${s.label}`})]}),tt(Gs,{marginTop:1,children:tt(at,{width:r,maxPerRow:2,tiles:[{label:"\u91D1\u989D",value:he(i.amountCny)},{label:"\u5173\u8054\u8BA2\u5355",value:`${i.orders.length} \u7B14`}]})}),tt(Gs,{marginTop:1,children:tt(Ce,{width:r,items:c})}),tt(Gs,{marginTop:1,flexDirection:"column",children:i.orders.map(l=>tt(si,{wrap:"truncate",color:m.faintForeground,children:Oe([l.orderNo,he(l.amountCny)])},l.orderNo))})]})}})}function $m(){let e=D(),{width:t}=j(),o=re(),[n,r]=ib({name:"list"}),[i,s]=Ge("status",()=>""),a=Y([e.revision],km);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 tt(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:tt(Q,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u5F00\u7968\u8BB0\u5F55",width:t,children:l=>{if(n.name==="filter")return tt(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:g=>{s(g.status??""),r({name:"list"})}});if(n.name==="detail")return tt(ab,{id:n.id,width:t});let d=i===""?l:l.filter(g=>g.status===i);return tt(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:g=>[Ut(g.createdAt),g.title,mn(g.type),he(g.amountCny),Ht(Yo(g.status))],searchOf:g=>g.title,onOpen:g=>r({name:"detail",id:g.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 Bm}from"react";import{jsx as eo,jsxs as ub}from"react/jsx-runtime";var lb=Je(bi,Ii,"\u5168\u90E8\u7C7B\u578B");function Fm(){let e=D(),{width:t}=j(),o=re(),[n,r]=Bm("list"),[i,s]=Bm(""),a=Y([e.revision],()=>ve(e.ctx.site)),c=Yn([e.revision,i],(g,u)=>Tu({page:g,pageSize:u,...i===""?{}:{type:i}}),{retain:"page"}),l=n==="list";z((g,u)=>{l&&(g==="r"?e.reload():g==="f"?r("filter"):u.leftArrow?c.go(-1):u.rightArrow&&c.go(1))});let d=()=>{n==="list"?e.pop():r("list")};return eo(G,{hints:l?["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:d,children:eo(Q,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:g=>n==="filter"?eo(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:u=>{s(u.type??""),c.reset(),r("list")}}):eo(Q,{state:c.state,loading:"\u6B63\u5728\u8BFB\u53D6\u989D\u5EA6\u6D41\u6C34",width:t,children:u=>ub(cb,{flexDirection:"column",children:[eo(Re,{retain:"list",items:u.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=Un(p.amount,g.quotaPerUsd);return[te(p.createdAt),Ii(p.type),{text:p.amount>=0?`+${S}`:S,tone:p.amount>=0?"success":"danger"},me(p.balanceAfter,g.quotaPerUsd),Oe([Fa(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}),eo(Qn,{page:c.page,pages:c.pages,total:c.total,width:t})]})})})})}import{Box as Gm}from"ink";import{useState as mb}from"react";import{z as Vs}from"zod";var jo={recharge:"/recharge",subscription:"/subscriptions"};function Um(e){return e==="recharge"?uo:mo}var ai=(e,t)=>O(Um(e),`${jo[e]}/orders/${t}`),jm=(e,t)=>O(Vs.object({order:Um(e),qrCode:Vs.string()}),`${jo[e]}/orders/${t}/pay`,{method:"POST"}),qm=(e,t)=>O(Vs.array(La),`${jo[e]}/orders/${t}/refunds`),Hm=(e,t,o)=>O(ye,`${jo[e]}/orders/${t}/refund-request`,{method:"POST",json:{reason:o}}).then(()=>{}),Wm=(e,t)=>O(ye,`${jo[e]}/orders/${t}/refund-request/cancel`,{method:"POST"}).then(()=>{});import{Box as ci,Text as Bt}from"ink";import{jsx as bt,jsxs as qo}from"react/jsx-runtime";function zm({order:e,refunds:t,quotaPerUsd:o,width:n}){let r=n-ae,i=Yt(e.status),s=He(i),a=[["\u521B\u5EFA\u65F6\u95F4",te(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",me(e.refundedQuota,o)]),e.pendingRefundCny>0&&a.push(["\u5F85\u786E\u8BA4\u9000\u6B3E",he(e.pendingRefundCny)]),qo(oe,{title:e.kind==="recharge"?"\u5145\u503C":e.planName,note:e.orderNo,width:n,children:[qo(Bt,{wrap:"truncate",children:[bt(Bt,{color:s===void 0?m.mutedForeground:Be[s],children:i.label}),e.kind==="subscription"&&bt(Bt,{color:m.faintForeground,children:` ${e.renewal?"\u7EED\u8D39":"\u65B0\u8D2D"}`})]}),bt(ci,{marginTop:1,children:bt(at,{width:r,maxPerRow:2,tiles:e.kind==="recharge"?[{label:"\u91D1\u989D",value:he(e.amountCny)},{label:"\u5230\u8D26\u989D\u5EA6",value:me(e.quota,o)}]:[{label:"\u91D1\u989D",value:he(e.amountCny)},{label:"\u8BA2\u9605\u65F6\u957F",value:`${e.grantedDurationDays} \u5929`}]})}),bt(ci,{marginTop:1,children:bt(Ce,{width:r,items:a})}),t!==null&&qo(ci,{marginTop:1,flexDirection:"column",children:[bt(Bt,{color:m.mutedForeground,children:"\u9000\u6B3E\u8BB0\u5F55"}),t.length===0?bt(Bt,{color:m.faintForeground,children:"\u6682\u65E0\u9000\u6B3E\u8BB0\u5F55"}):t.map(c=>{let l=Ua(c.status),d=He(l);return qo(ci,{flexDirection:"column",children:[qo(Bt,{wrap:"truncate",children:[bt(Bt,{color:m.foreground,children:he(c.amountCny)}),bt(Bt,{color:d===void 0?m.mutedForeground:Be[d],children:` ${l.label}`}),bt(Bt,{color:m.faintForeground,children:` ${te(c.createdAt)}`})]}),(c.reason!==null||c.rejectReason!==null||c.refundTradeNo!==null)&&bt(Bt,{wrap:"truncate",color:m.faintForeground,children:` ${Oe([c.reason??"",c.rejectReason===null?"":`\u9A73\u56DE\uFF1A${c.rejectReason}`,c.refundTradeNo??""])}`})]},c.id)})]})]})}import{jsx as En,jsxs as pb}from"react/jsx-runtime";var db=new Set(["pending","expired","failed"]);function li(e){let t=Yt(e.status);return e.pendingRefundCny>0?{badge:`${t.label}\uFF08\u5F85\u786E\u8BA4 ${he(e.pendingRefundCny)}\uFF09`,badgeTone:"warning"}:{badge:t.label,badgeTone:He(t)}}function to(e,t,o){return e.kind==="recharge"?{kind:"recharge",orderNo:e.orderNo,qrCode:t,amountCny:e.amountCny,summary:[`\u5230\u8D26\u989D\u5EA6 ${me(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 Vm({params:e}){let t=D(),{width:o}=j(),[n,r]=mb("main"),{busy:i,error:s,reset:a,fail:c,run:l}=ge(),d=Y([e.kind,e.orderNo,t.revision],async()=>{let[f,h]=await Promise.all([ai(e.kind,e.orderNo),ve(t.ctx.site)]),b=db.has(f.status)?null:await qm(e.kind,e.orderNo);return{order:{kind:e.kind,...f},refunds:b,site:h}});z(f=>{n==="main"&&i===null&&f==="r"&&t.reload()});let g=()=>{n==="main"?t.pop():(a(),r("main"))},u=f=>{l("\u6B63\u5728\u62C9\u8D77\u652F\u4ED8",()=>jm(e.kind,e.orderNo),{onSuccess:({order:h,qrCode:b})=>{t.push("pay",to({kind:e.kind,...h},b,f.quotaPerUsd))}})},p=f=>{l("\u6B63\u5728\u63D0\u4EA4\u9000\u6B3E\u7533\u8BF7",()=>Hm(e.kind,e.orderNo,f),{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",()=>Wm(e.kind,e.orderNo),{onSuccess:()=>{r("main"),t.reload(),t.toast("ok","\u5DF2\u64A4\u9500\u9000\u6B3E\u7533\u8BF7")}})};return En(G,{trail:["\u8BA2\u5355\u8BE6\u60C5"],hints:n==="main"?["\u2191\u2193 \u79FB\u52A8","Enter \u6267\u884C","r \u5237\u65B0"]:[],onEscape:g,children:En(Q,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u5355",width:o,children:({order:f,refunds:h,site:b})=>{if(n==="refund")return En(V,{title:`\u7533\u8BF7\u9000\u6B3E \u2014 ${f.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:[...Bi[e.kind].map(w=>({value:w,label:w})),{value:"other",label:"\u5176\u4ED6"}],initial:Bi[e.kind][0],hint:Ga[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:g,onSubmit:w=>{let y=w.reason??"",v=y==="other"?(w.custom??"").trim():y;if(v===""){c("\u8BF7\u586B\u5199\u5177\u4F53\u8BF4\u660E");return}p(v)}});if(n==="confirm-cancel")return En(je,{width:o,title:"\u64A4\u9500\u9000\u6B3E\u7533\u8BF7",detail:`\u786E\u8BA4\u64A4\u9500\u8BA2\u5355 ${f.orderNo} \u7684\u9000\u6B3E\u7533\u8BF7\uFF1F${f.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:g});let x=[];return f.status==="pending"&&x.push({value:"pay",label:"\u7EE7\u7EED\u652F\u4ED8",hint:"\u91CD\u65B0\u62C9\u8D77\u652F\u4ED8\u5B9D\u4E8C\u7EF4\u7801"}),f.status==="refund_requested"&&x.push({value:"cancel-refund",label:"\u64A4\u9500\u7533\u8BF7",hint:"\u9000\u6B3E\u5C1A\u672A\u5BA1\u6838\uFF0C\u53EF\u64A4\u56DE"}),Ma(f)&&x.push({value:"refund",label:"\u7533\u8BF7\u9000\u6B3E",labelTone:"danger"}),pb(Gm,{flexDirection:"column",children:[En(zm,{order:f,refunds:h,quotaPerUsd:b.quotaPerUsd,width:o}),x.length>0&&i===null&&En(Gm,{marginTop:1,children:En(ce,{width:o,items:x,retain:"menu",onSelect:w=>{a(),w==="pay"?u(b):r(w==="refund"?"refund":"confirm-cancel")}})})]})}})})}import{useRef as yb,useState as ed}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 Km(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 Jm,Text as Pn}from"ink";import{Fragment as bb,jsx as ct,jsxs as Ym}from"react/jsx-runtime";var Qm={columns:20,rows:2};function Xm(e,t,o){return Or(e,t,Qm,o)}function Zm({phase:e,qrCode:t,amountCny:o,summary:n,paidNote:r,expiredNote:i,pollError:s,width:a,layout:c}){let l=s===null?ct(Qe,{label:"\u7B49\u5F85\u652F\u4ED8\u5230\u8D26\u2026"}):ct(Pn,{wrap:"truncate",color:Be.warning,children:`\u67E5\u8BE2\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u8BD5\uFF1A${s}`});if(e==="paid")return ct(fe,{tone:"ok",width:a,title:"\u652F\u4ED8\u6210\u529F\uFF01",detail:r});if(e==="expired")return ct(fe,{tone:"warn",width:a,title:"\u8BA2\u5355\u5DF2\u8D85\u65F6",detail:i});if(!c.fits)return Ym(Jm,{flexDirection:"column",children:[ct(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`}),ct(Pn,{color:m.accent,children:t}),ct(Jm,{marginTop:1,children:ct(Pn,{bold:!0,color:m.foreground,children:he(o)})}),l]});let d=c.asideRows-Qm.rows,g=d>=1,u=d>=2,p=d>=2+n.length;return ct(Dr,{value:t,aside:Ym(bb,{children:[u&&ct(Pn,{bold:!0,color:m.foreground,children:"\u626B\u7801\u652F\u4ED8"}),ct(Pn,{bold:!0,color:m.foreground,children:he(o)}),g&&ct(Pn,{color:m.mutedForeground,children:"\u8BF7\u4F7F\u7528\u652F\u4ED8\u5B9D\u626B\u4E00\u626B\u5B8C\u6210\u652F\u4ED8"}),p&&n.map((S,f)=>ct(Pn,{wrap:"truncate",color:m.mutedForeground,children:S},f)),l]})})}import{jsx as td}from"react/jsx-runtime";var Sb=5,xb=2e3;function nd({params:e}){let t=D(),{width:o,columns:n,rows:r}=j(),i=Eo(0),[s,a]=ed("waiting"),[c,l]=ed(null),d=yb(0);Fr(xb,async()=>{let p;try{p=await ai(e.kind,e.orderNo)}catch(S){l(Ue(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"||Km(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 g=Xm(e.qrCode,{width:o,rows:i},{columns:n-o,rows:r-i}),u=s==="waiting"&&g.fits;return td(G,{trail:["\u626B\u7801\u652F\u4ED8"],bleed:u,hints:s==="waiting"?["c \u590D\u5236\u94FE\u63A5"]:[],children:td(Zm,{phase:s,qrCode:e.qrCode,amountCny:e.amountCny,summary:e.summary,paidNote:e.paidNote,expiredNote:e.expiredNote,pollError:c,width:o,layout:g})})}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()}),od=()=>O(Pt.array(Tb),"/recharge-packages"),wb=Pt.object({order:uo,qrCode:Pt.string()}),rd=e=>O(wb,"/recharge/orders",{method:"POST",json:e}),id=()=>O(Pt.array(uo),"/recharge/orders");import{jsx as no}from"react/jsx-runtime";var vb=Je(so,Yt,"\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 ${me(e.quota,t)}`}function sd(){let e=D(),{width:t}=j(),o=re(),[n,r]=kb({name:"menu"}),[i,s]=Ge("status",()=>""),{busy:a,error:c,reset:l,fail:d,run:g}=ge(),u=Y([e.revision],async()=>{let[f,h,b]=await Promise.all([od(),Jr(e.ctx.site),id()]);return{packages:f,pricing:h,orders:b}});z(f=>{n.name==="menu"&&(f==="r"?e.reload():f==="f"&&r({name:"filter"}))});let p=()=>{n.name==="menu"?e.pop():(l(),r({name:"menu"}))},S=(f,h)=>{g("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>rd(f),{onSuccess:({order:b,qrCode:x})=>{r({name:"menu"}),e.push("pay",to({kind:"recharge",...b},x,h))}})};return no(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:no(Q,{state:u,loading:"\u6B63\u5728\u8BFB\u53D6\u5145\u503C\u5957\u9910",width:t,children:({packages:f,pricing:h,orders:b})=>{if(n.name==="confirm")return no(je,{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 no(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:y=>{let v=Number((y.yuan??"").trim()),E=Oi(v);if(!Number.isFinite(v)||E<Oi(h.minTopupCny)||E>vi){d(`\u8BF7\u8F93\u5165 ${h.minTopupCny} \u5230 ${qa(vi)} \u5143\u4E4B\u95F4\u7684\u91D1\u989D`);return}S({amountCny:E},h.quotaPerUsd)}});if(n.name==="filter")return no(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:y=>{s(y.status??""),r({name:"menu"})}});let x=i===""?b:b.filter(y=>y.status===i),w=[{heading:"\u5145\u503C\u5957\u9910"},...f.map(y=>({value:{kind:"pkg",pkg:y},label:y.name,hint:Rb(y,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(y=>({value:{kind:"order",orderNo:y.orderNo},label:he(y.amountCny),...li(y),hint:`${te(y.createdAt)} \xB7 \u5230\u8D26\u989D\u5EA6 ${me(y.quota,h.quotaPerUsd)}`}))];return no(ce,{items:w,width:t,height:o,retain:"menu",onSelect:y=>{l(),y.kind==="custom"?r({name:"custom"}):y.kind==="order"?e.push("order",{kind:"recharge",orderNo:y.orderNo}):y.kind==="pkg"&&r({name:"confirm",pkg:y.pkg})}})}})})}import{Box as Vt,Text as oo}from"ink";import{useState as Pb}from"react";import Ab from"string-width";import{z as Z}from"zod";var _b=Z.object({windowId:Z.number().int(),durationMinutes:Z.number().int(),quota:Z.number(),used:Z.number(),resetAt:Z.string()}),Cb=Z.object({fallbackToBalance:Z.boolean(),subscriptions:Z.array(Z.object({id:Z.number().int(),planName:Z.string(),groupNames:Z.array(Z.string()),modelCount:Z.number().int(),startsAt:Z.string(),expiresAt:Z.string(),revokedAt:Z.string().nullable(),renewable:Z.boolean(),windows:Z.array(_b)}))}),ad=()=>O(Cb,"/subscriptions"),Eb=Z.object({id:Z.number().int(),name:Z.string(),description:Z.string().nullable(),priceCny:Z.number().int(),durationDays:Z.number().int(),enabled:Z.boolean(),groupNames:Z.array(Z.string()),windows:Z.array(Z.object({durationMinutes:Z.number().int(),quota:Z.number()})),models:Z.array(Z.string())}),cd=()=>O(Z.array(Eb),"/subscription-plans"),ld=Z.object({order:mo,qrCode:Z.string()}),ud=e=>O(ld,"/subscriptions/orders",{method:"POST",json:e}),md=e=>O(ld,`/subscriptions/${e}/renew`,{method:"POST"}),dd=()=>O(Z.array(mo),"/subscriptions/orders"),pd=e=>O(Z.object({fallbackToBalance:Z.boolean()}),"/subscriptions/preference",{method:"PUT",json:e});import{jsx as we,jsxs as An}from"react/jsx-runtime";var Nb=Je(so,Yt,"\u5168\u90E8\u72B6\u6001"),Ib=3;function Lb({win:e,quotaPerUsd:t,width:o}){let n=Di(e),r=Wa(e.durationMinutes),i=`\u5DF2\u7528 ${n}% ${X.bullet} ${me(e.used,t)} / ${me(e.quota,t)}`;return An(Vt,{flexDirection:"column",children:[An(oo,{wrap:"truncate",children:[we(oo,{color:m.foreground,children:r}),we(oo,{color:n>=100?m.danger:m.mutedForeground,children:Nt(i,Math.max(0,o-Ab(r)))})]}),we(Hl,{used:e.used,total:e.quota,width:o}),we(oo,{wrap:"truncate",color:m.faintForeground,children:`\u5C06\u4E8E ${te(e.resetAt)} \u91CD\u7F6E`})]})}function Mb(e){if(e.revokedAt!==null)return`${te(e.revokedAt)} \u4F5C\u5E9F`;let t=`${te(e.expiresAt)} \u5230\u671F`;return e.windows.length===0?`\u4E0D\u9650\u91CF \xB7 ${t}`:`\u5DF2\u7528 ${Math.max(...e.windows.map(Di))}% \xB7 ${t}`}function Ob(e){let t=e.windows.length===0?1:1+e.windows.length*4-1;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((2+Math.max(1,e.windows.length))/2);return J+Rt+t+o+J+1}function fd(){let e=D(),{width:t}=j(),o=re(),[n,r]=Pb({name:"menu"}),[i,s]=Ge("status",()=>""),{busy:a,error:c,reset:l,run:d}=ge(),g=Y([e.revision],async()=>{let[h,b,x,w]=await Promise.all([ad(),cd(),dd(),ve(e.ctx.site)]);return{mine:h,plans:b,orders:x,site:w}});z(h=>{n.name!=="menu"||a!==null||(h==="r"?e.reload():h==="f"&&r({name:"filter"}))});let u=()=>{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",()=>pd({fallbackToBalance:!h}),{failToast:!0,onSuccess:()=>{e.reload(),e.toast("ok","\u504F\u597D\u5DF2\u4FDD\u5B58")}})},S=(h,b)=>{d("\u6B63\u5728\u521B\u5EFA\u7EED\u8D39\u8BA2\u5355",()=>md(h.id),{onSuccess:({order:x,qrCode:w})=>{r({name:"menu"}),e.push("pay",to({kind:"subscription",...x},w,b.quotaPerUsd))}})},f=(h,b)=>{d("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>ud({planId:h.id}),{onSuccess:({order:x,qrCode:w})=>{r({name:"menu"}),e.push("pay",to({kind:"subscription",...x},w,b.quotaPerUsd))}})};return we(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:u,children:we(Q,{state:g,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u9605",width:t,children:({mine:h,plans:b,orders:x,site:w})=>{if(n.name==="filter")return we(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:u,onSubmit:k=>{s(k.status??""),r({name:"menu"})}});let y=n.name==="sub"||n.name==="confirm-renew"?h.subscriptions.find(k=>k.id===n.id):void 0,v=n.name==="plan"||n.name==="confirm-buy"?b.find(k=>k.id===n.id):void 0,E=v?.description??"";if((n.name==="sub"||n.name==="confirm-renew")&&y===void 0)return we(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")&&v===void 0)return we(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"&&y!==void 0)return we(je,{width:t,title:`\u786E\u8BA4\u7EED\u8D39\u300C${y.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(y,w),onCancel:u});if(n.name==="confirm-buy"&&v!==void 0)return we(je,{width:t,title:`\u786E\u8BA4\u8BA2\u9605\u300C${v.name}\u300D\uFF08${he(v.priceCny)} / ${v.durationDays} \u5929\uFF09\uFF1F`,confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>f(v,w),onCancel:u});let M=i===""?x:x.filter(k=>k.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(k=>{let I=$i(k);return{value:{kind:"sub",id:k.id},label:k.planName,badge:I.label,badgeTone:He(I),hint:Mb(k)}}),{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"},...b.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}]:b.map(k=>({value:{kind:"plan",id:k.id},label:k.name,...k.enabled?{}:{badge:"\u5DF2\u505C\u552E",badgeTone:"warning"},hint:`${he(k.priceCny)} / ${k.durationDays} \u5929 \xB7 ${k.groupNames.join("\u3001")||"\u65E0\u5206\u7EC4"} \xB7 ${nr(k.models.length)}`})),{heading:""},{heading:"\u8BA2\u9605\u8BA2\u5355"},...M.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}]:M.map(k=>({value:{kind:"order",orderNo:k.orderNo},label:`${k.planName}${k.renewal?"\uFF08\u7EED\u8D39\uFF09":""}`,...li(k),hint:`${te(k.createdAt)} \xB7 ${he(k.amountCny)}`}))],T=n.name==="sub"&&y!==void 0?Ob(y):n.name==="plan"&&v!==void 0?Db(v):0,C=T===0?o:o-T>=Ib?o-T:0,R=t-ae,P=n.name==="menu"&&a===null;return An(Vt,{flexDirection:"column",children:[C>0&&we(ce,{items:F,width:t,height:C,isActive:P,retain:"menu",onSelect:k=>{l(),k.kind==="fallback"?p(h.fallbackToBalance):k.kind==="order"?e.push("order",{kind:"subscription",orderNo:k.orderNo}):k.kind==="sub"?r({name:"sub",id:k.id}):k.kind==="plan"&&r({name:"plan",id:k.id})}}),n.name==="sub"&&y!==void 0&&An(Vt,{marginTop:C>0?J:0,flexDirection:"column",children:[An(oe,{title:y.planName,note:y.revokedAt!==null?`${te(y.revokedAt)} \u4F5C\u5E9F`:`${te(y.expiresAt)} \u5230\u671F`,width:t,children:[we(Ce,{width:R,items:[["\u72B6\u6001",$i(y).label],["\u8986\u76D6\u5206\u7EC4",y.groupNames.join("\u3001")||"\u65E0"],["\u6A21\u578B\u8303\u56F4",nr(y.modelCount)],["\u751F\u6548\u65F6\u95F4",te(y.startsAt)]]}),y.windows.length===0?we(oo,{color:m.mutedForeground,children:"\u8BE5\u5957\u9910\u4E0D\u8BBE\u7528\u91CF\u7A97\u53E3\uFF0C\u8BA2\u9605\u671F\u5185\u4E0D\u9650\u91CF"}):we(Vt,{marginTop:1,flexDirection:"column",children:y.windows.map((k,I)=>we(Vt,{marginTop:I===0?0:1,flexDirection:"column",children:we(Lb,{win:k,quotaPerUsd:w.quotaPerUsd,width:R})},k.windowId))})]}),y.renewable&&a===null&&we(Vt,{marginTop:J,children:we(ce,{width:t,items:[{value:"renew",label:"\u7EED\u8D39"}],onSelect:()=>r({name:"confirm-renew",id:y.id})})})]}),n.name==="plan"&&v!==void 0&&An(Vt,{marginTop:C>0?J:0,flexDirection:"column",children:[An(oe,{title:v.name,note:`${he(v.priceCny)} / ${v.durationDays} \u5929`,width:t,children:[E!==""&&we(oo,{wrap:"truncate",color:m.mutedForeground,children:E}),we(Vt,{marginTop:E===""?0:De,children:we(Ce,{width:R,items:[["\u8986\u76D6\u5206\u7EC4",v.groupNames.join("\u3001")||"\u65E0"],["\u6A21\u578B\u8303\u56F4",nr(v.models.length)],...za(v,w.quotaPerUsd).map((k,I)=>[I===0?"\u7528\u91CF\u7A97\u53E3":"",k])]})})]}),a===null&&we(Vt,{marginTop:J,children:we(ce,{width:t,items:[{value:"subscribe",label:v.enabled?"\u8BA2\u9605":"\u5DF2\u505C\u552E",disabled:!v.enabled}],onSelect:()=>r({name:"confirm-buy",id:v.id})})})]})]})}})})}import{jsx as ke}from"react/jsx-runtime";var gd={home:{render:()=>ke(bm,{})},help:{render:()=>ke(fm,{})},login:{render:()=>ke(hu,{})},register:{render:()=>ke(bu,{})},forgot:{render:()=>ke(du,{})},agreement:{render:e=>ke(su,{params:e})},tokens:{render:()=>ke(lm,{})},logs:{render:()=>ke(Bu,{})},usage:{render:()=>ke(Nu,{})},ledger:{render:()=>ke(Fm,{})},subscription:{render:()=>ke(fd,{})},models:{render:()=>ke(ju,{})},recharge:{render:()=>ke(sd,{})},order:{render:e=>ke(Vm,{params:e})},pay:{render:e=>ke(nd,{params:e})},invoices:{render:()=>ke($m,{})},"invoice-apply":{render:()=>ke(Lm,{})},"invoice-profiles":{render:()=>ke(Om,{})},invite:{render:()=>ke(Tm,{})},tickets:{render:()=>ke(iu,{})},ticket:{render:e=>ke(ou,{params:e})},announcements:{render:()=>ke(cl,{})},"announce-gate":{render:e=>ke(nl,{params:e}),lockNav:!0},profile:{render:()=>ke(Vl,{})}};function hd(e){return gd[e].lockNav===!0}function bd(e){let t=gd[e.id].render;return t(e.params)}import{jsx as Nn,jsxs as Jb}from"react/jsx-runtime";function jb(){let e=D(),{rows:t}=j(),o=mr(),n=hd(e.current.id)||o,r=e.depth===1&&fr(e.current.id)&&Tt().session===null;return Ks(()=>{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())}),Nn($b,{flexDirection:"column",height:Math.max(1,t),paddingX:1,paddingTop:1,overflow:"hidden",children:bd(e.current)})}function qb(){let e=D(),t=Y([e.revision],async()=>{if(e.gate.announcementsChecked||Tt().session===null)return[];let o=await ar().catch(()=>null);return o===null?[]:(e.gate.announcementsChecked=!0,o)});return Ks(()=>{if(t.phase!=="ready"||e.gate.announcementsShown)return;let o=t.data.filter(n=>!n.read);o.length!==0&&(e.gate.announcementsShown=!0,e.push("announce-gate",{items:o}))}),null}function Hb(){let e=D(),t=Ub(!1);return Ks(()=>{t.current||(t.current=!0,ic().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${Ue(o)}`)))}),null}function Wb({ctx:e,mouse:t}){return Nn(wc,{subscribe:t.subscribe,children:Nn(pc,{children:Jb(Cc,{ctx:e,children:[Nn(Hb,{}),Nn(qb,{}),Nn(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 yd(e){let t=xc(process.stdin,process.stdout);try{await Bb(Nn(Wb,{ctx:e,mouse:t}),{exitOnCtrlC:!0,alternateScreen:!0,stdin:t.stdin,stdout:Kb(process.stdout)}).waitUntilExit()}finally{t.dispose()}}var Zb=`${lt} v${ut} \u2014 CodeFlow \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF
11
+ `;)n+=1;return{start:o,end:n}}function El({value:e,onChange:t,isActive:o,width:n,rows:r,placeholder:i,maxLength:s,onEdge:a,onFocusRequest:c}){let l=[...e],[d,g]=kl(l.length),m=Math.min(d,l.length),[p,S]=kl(0),f=wl(e),h=wl(m);f.current=e,h.current=m,mr(o);let b=Math.max(4,n),x=R=>{h.current=R,g(R)},w=(R,P)=>{f.current=R,x(P),t(R)},y=R=>{let P=[...f.current],v=Math.min(h.current,P.length),I=vl(P,b),_=Rl(I,v),N=I[_],H=I[_+R];return N===void 0||H===void 0?!1:(x(_l(P,H,Vf(P,N,v))),!0)},k=(R,P,v)=>{let I=Gf(v);if(s!==void 0){let _=s-R.length;if(_<=0)return;I=[...I].slice(0,_).join("")}I!==""&&w([...R.slice(0,P),I,...R.slice(P)].join(""),P+[...I].length)};zf((R,P)=>{let v=[...f.current],I=Math.min(h.current,v.length);if(P.return){k(v,I,`
12
+ `);return}if(!P.tab){if(P.upArrow||P.downArrow){let _=P.upArrow?-1:1;y(_)||a?.(P.upArrow?"up":"down");return}if(P.leftArrow){x(Math.max(0,I-1));return}if(P.rightArrow){x(Math.min(v.length,I+1));return}if(P.home){x(ds(v,I).start);return}if(P.end){x(ds(v,I).end);return}if(P.backspace){if(I===0)return;w([...v.slice(0,I-1),...v.slice(I)].join(""),I-1);return}if(P.delete){if(I>=v.length)return;w([...v.slice(0,I),...v.slice(I+1)].join(""),I);return}if(P.ctrl){let _=ds(v,I);if(R==="a")x(_.start);else if(R==="e")x(_.end);else if(R==="k")w([...v.slice(0,I),...v.slice(_.end)].join(""),I);else if(R==="u")w([...v.slice(0,_.start),...v.slice(I)].join(""),_.start);else if(R==="w"){let N=I;for(;N>_.start&&v[N-1]===" ";)N-=1;for(;N>_.start&&v[N-1]!==" ";)N-=1;w([...v.slice(0,N),...v.slice(I)].join(""),N)}return}P.meta||!R||k(v,I,R)}},{isActive:o});let E=vl(l,b),M=Rl(E,m),F=Math.min(p,Math.max(0,E.length-r));M<F&&(F=M),M>F+r-1&&(F=M-r+1),F!==p&&S(F);let T=[];for(let R=0;R<r;R+=1){let P=F+R,v=E[P];if(v===void 0){T.push(Gt(sn,{children:" "},P));continue}let I=l.slice(v.start,v.end).join("");if(!o||P!==M){T.push(Gt(sn,{wrap:"truncate",color:u.foreground,children:I===""?" ":I},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(""):"";T.push(Cl(sn,{wrap:"truncate",children:[Gt(sn,{color:u.foreground,children:_}),Gt(ko,{char:N}),Gt(sn,{color:u.foreground,children:H})]},P))}if(e===""&&i!==void 0){let R=[...i];T[0]=o?Cl(sn,{wrap:"truncate",children:[Gt(ko,{char:R[0]??" "}),Gt(sn,{color:u.faintForeground,children:R.slice(1).join("")})]},"placeholder"):Gt(sn,{wrap:"truncate",color:u.faintForeground,children:i},"placeholder")}let C=$e({onWheel:R=>{y(R)},onClick:({row:R,column:P})=>{c?.();let v=E[F+R];x(v===void 0?l.length:_l(l,v,P))}});return Gt(Wf,{ref:C,flexDirection:"column",children:T})}import{Fragment as Ll,jsx as pe,jsxs as gt}from"react/jsx-runtime";var Jf=e=>Object.fromEntries(e.map(t=>[t.name,"initial"in t?t.initial??"":""])),Nl="\u9009\u586B",Yf=(e,t)=>e.kind!=="text"&&e.kind!=="textarea"?!1:typeof e.optional=="function"?e.optional(t):e.optional===!0,Qf=(e,t)=>{let o=typeof e.hint=="function"?e.hint(t[e.name]??""):e.hint;return Yf(e,t)?o===void 0?Nl:`${Nl} \xB7 ${o}`:o},Xf=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},Zf=6e4,eg=4,fs=4,tg=2,Dr=(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]=Qn(()=>Jf(t)),[g,m]=Qn(0),[p,S]=Qn({}),[f,h]=Qn(null),[,b]=Qn(0),x=s===!0,w=Xf(t),y=w[Math.min(g,w.length-1)],k=y!==void 0&&y.type!=="submit"?t[y.index]:void 0,E=y?.type==="field"&&(k?.kind==="text"||k?.kind==="code"),M=y?.type==="field"&&k?.kind==="textarea",F=Object.values(p).some(A=>A.phase==="cooldown"&&A.until>Date.now());Kf(()=>{if(!F)return;let A=setInterval(()=>b(B=>B+1),1e3);return()=>clearInterval(A)},[F]);let T=A=>m(B=>(B+A+w.length)%w.length),C=(A,B)=>{if(A.options.length===0)return;let K=A.options.findIndex(Ne=>Ne.value===l[A.name]),de=A.options[(K+B+A.options.length)%A.options.length];de!==void 0&&d(Ne=>({...Ne,[A.name]:de.value}))},R=A=>{y?.type!=="field"||k?.kind!=="select"||C(k,A)},P=A=>{let B=t[A];if(B===void 0||B.kind!=="code")return;let K=(l[B.emailField]??"").trim();if(K===""){S(Ne=>({...Ne,[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(Ne=>({...Ne,[B.name]:{phase:"sending"}})),B.send(K).then(()=>S(Ne=>({...Ne,[B.name]:{phase:"cooldown",email:K,until:Date.now()+Zf}}))).catch(Ne=>S(yt=>({...yt,[B.name]:{phase:"error",message:Ue(Ne)}})))))};Ml((A,B)=>{if(B.tab){T(B.shift?-1:1);return}if(!M){if(B.upArrow){T(-1);return}if(B.downArrow){T(1);return}if(!E){if(B.leftArrow){R(-1);return}if(B.rightArrow){R(1);return}B.return&&(y?.type==="submit"?n(l):y?.type==="send"?P(y.index):T(1))}}},{isActive:!x}),en(r,{isActive:!x,layer:Hn.panel});let v=Math.max(0,...t.map(A=>gs(A.label))),I=i-ae,_=Math.max(8,I-v-8),N=(A,B)=>w.findIndex(K=>K.type===A&&(K.type==="submit"||K.index===B)),H=Al(new Map).current,$=Al(new Map).current,ne=2+v+fs,q=(A,B)=>{let K=w[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 Ne=de.options.find(St=>St.value===l[de.name]),yt=Te(Ne?.label??"\u2014",_);B>=ne-tg&&B<ne?C(de,-1):B>=ne+gs(yt)&&C(de,1);return}B>=ne&&$.get(K.index)?.moveToColumn(B-ne)}},se=(A,B)=>{if(A===null)return null;let K=Pl(A),de=null;for(let[Ne,yt]of H){if(yt===null)continue;let St=Pl(yt),Ie=St.y-K.y;B<Ie||B>=Ie+St.height||(de===null||St.height<de.box.height)&&(de={index:Ne,box:St})}return de===null?null:{...de,frameX:K.x}},nt=$e({isActive:!x,onClick:({row:A,column:B})=>{let K=se(nt.current,A);K!==null&&q(K.index,B-(K.box.x-K.frameX))},onHover:({row:A})=>h(se(nt.current,A)?.index??null),onHoverLeave:()=>h(null)});return gt(Ot,{ref:nt,flexDirection:"column",children:[pe(Ro,{title:e,width:i}),gt(Ot,{flexDirection:"column",marginTop:De,paddingLeft:ae,children:[c!=null&&pe(Ot,{marginBottom:1,children:pe(xn,{message:c.message,hint:c.hint,width:I})}),t.map((A,B)=>{let K=g===N("field",B)&&!x,de=Qf(A,l),Ne=A.kind==="select"?A.options.find(Ie=>Ie.value===l[A.name]):void 0;if(A.kind==="textarea")return gt(Ot,{flexDirection:"column",ref:Ie=>{H.set(N("field",B),Ie)},children:[gt(_e,{children:[pe(_e,{color:u.accent,children:K?`${X.cursor} `:" "}),pe(_e,{color:Dr(K,f===N("field",B)),bold:K,children:A.label})]}),pe(Ot,{paddingLeft:2,children:pe(El,{value:l[A.name]??"",onChange:Ie=>d(di=>({...di,[A.name]:Ie})),isActive:K,width:I-2,rows:A.rows??eg,placeholder:A.placeholder,maxLength:A.maxLength,onEdge:Ie=>T(Ie==="up"?-1:1),onFocusRequest:()=>m(N("field",B))})}),K&&de!==void 0&&pe(_e,{color:u.faintForeground,children:` ${Te(de,I-2)}`})]},A.name);let yt=A.kind==="code"&&g===N("send",B)&&!x,St=p[A.name];return gt(Ot,{flexDirection:"column",ref:Ie=>{H.set(N("field",B),Ie)},children:[gt(_e,{children:[pe(_e,{color:u.accent,children:K?`${X.cursor} `:" "}),pe(_e,{color:Dr(K,f===N("field",B)),bold:K,children:Pe(A.label,v)}),A.kind==="select"?gt(Ll,{children:[pe(_e,{color:K?u.accent:u.border,children:` ${X.prev} `}),pe(_e,{color:u.foreground,children:Te(Ne?.label??"\u2014",_)}),pe(_e,{color:K?u.accent:u.border,children:` ${X.next}`})]}):gt(Ll,{children:[pe(_e,{children:" ".repeat(fs)}),pe(xr,{ref:Ie=>{$.set(B,Ie)},value:l[A.name]??"",onChange:Ie=>d(di=>({...di,[A.name]:Ie})),onSubmit:()=>T(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(_e,{color:u.faintForeground,children:`${" ".repeat(2+v+fs)}${Te(de,_)}`}),A.kind==="code"&&pe(ng,{active:yt,state:St,email:(l[A.emailField]??"").trim(),indent:ne,width:_,hovered:f===N("send",B),nodeRef:Ie=>{H.set(N("send",B),Ie)}})]},A.name)}),pe(Ot,{marginTop:1,ref:A=>{H.set(N("submit"),A)},children:x?pe(Qe,{label:a}):gt(_e,{children:[pe(_e,{color:u.accent,children:y?.type==="submit"?`${X.cursor} `:" "}),pe(_e,{color:Dr(y?.type==="submit",f===N("submit")),bold:y?.type==="submit",children:o})]})})]})]})}function ng({active:e,state:t,email:o,indent:n,width:r,hovered:i,nodeRef:s}){if(t?.phase==="sending")return pe(Ot,{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(Ot,{ref:s,flexDirection:"column",paddingLeft:n-2,children:[gt(_e,{children:[pe(_e,{color:u.accent,children:e?`${X.cursor} `:" "}),pe(_e,{color:a>0?u.faintForeground:Dr(e,i),bold:e&&a===0,children:c})]}),t?.phase==="error"&&pe(_e,{color:u.danger,children:` ${Te(t.message,r)}`})]})}var og=2,Il=2;function Ol({options:e,value:t,onChange:o}){let n=e.findIndex(d=>d.value===t),r=pr();Ml((d,g)=>{if(!g.leftArrow&&!g.rightArrow)return;let m=g.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,g)=>{g>0&&(s+=Il);let m=gs(d.label)+og;i.push({value:d.value,from:s,to:s+m}),s+=m});let[a,c]=Qn(null),l=$e({onClick:({column:d})=>{let g=i.find(m=>d>=m.from&&d<m.to);g!==void 0&&o(g.value)},onHover:({column:d})=>{let g=i.find(m=>d>=m.from&&d<m.to);c(g?.value??null)},onHoverLeave:()=>c(null)});return pe(Ot,{ref:l,children:pe(_e,{wrap:"truncate",children:e.map((d,g)=>{let m=d.value===t;return gt(_e,{children:[g>0&&" ".repeat(Il),pe(_e,{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 ys,Text as Dl}from"ink";import rg from"qrcode";import{jsx as Io,jsxs as ug}from"react/jsx-runtime";var ig="#000000",sg="#ffffff",hs=2,Bl=2,Ss=1,$l,bs;function Fl(e){if(e===$l&&bs!==void 0)return bs;let t=rg.create(e,{errorCorrectionLevel:"L"}),o=t.modules.size,n=t.modules.data,r=o+hs*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+hs];c!==void 0&&(c[a+hs]=n[s*o+a]===1)}return $l=e,bs=i,i}function ag(e){let t=Fl(e).length;return{columns:t*Bl,rows:t}}function $r(e,t,o,n){let r=ag(e),i=t.rows-r.rows-Ss;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+Ss+o.rows+n.rows}}}function cg(e,t){let o=[],n=0;for(let r=1;r<=e.length;r+=1)r<e.length&&e[r]===e[n]||(o.push(Io(Dl,{backgroundColor:e[n]??!1?ig:sg,children:" ".repeat((r-n)*Bl)},n)),n=r);return Io(Dl,{children:o},t)}function lg({value:e}){return Io(ys,{flexDirection:"column",flexShrink:0,children:Fl(e).map((t,o)=>cg(t,o))})}function Br({value:e,aside:t}){return ug(ys,{flexDirection:"column",flexShrink:0,children:[Io(lg,{value:e}),Io(ys,{marginTop:Ss,flexDirection:"column",children:t})]})}import{Box as Fr,Text as Ze}from"ink";import Ul from"string-width";import{jsx as et,jsxs as Lo}from"react/jsx-runtime";var Ur=2,xs=4,jl=e=>" ".repeat(e),Ts=13,ql=4,Hl=(e,t,o)=>Math.max(1,Math.min(e,o,Math.floor((t+Ur)/(Ts+Ur)))),wn=(e,t,o=ql)=>Math.ceil(e/Hl(e,t,o))*2;function at({tiles:e,width:t,maxPerRow:o=ql}){let n=Hl(e.length,t,o),r=Math.floor((t-Ur*(n-1))/n),i=[];for(let s=0;s<e.length;s+=n)i.push(e.slice(s,s+n));return et(Fr,{flexDirection:"column",children:i.map((s,a)=>et(Fr,{flexDirection:"column",children:["label","value"].map(c=>et(Ze,{wrap:"truncate",children:s.map((l,d)=>Lo(Ze,{children:[d>0&&jl(Ur),et(Ze,{color:c==="label"?u.mutedForeground:u.foreground,bold:c==="value",children:Pe(l[c],r)})]},l.label))},c))},a))})}function Wl({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 Lo(Ze,{children:[et(Ze,{color:i,children:X.barFilled.repeat(r)}),et(Ze,{color:u.border,children:X.barEmpty.repeat(o-r)})]})}function mg({items:e,width:t}){let o=Math.max(0,...e.map(([r])=>Ul(r))),n=Math.max(0,t-o-3);return et(Fr,{flexDirection:"column",children:e.map(([r,i])=>Lo(Ze,{wrap:"truncate",children:[et(Ze,{color:u.mutedForeground,children:Pe(r,o)})," ",et(Ze,{color:u.foreground,children:Te(i,n)})]},r))})}var zl=(e,t)=>Math.floor((t-xs)/2)<Ts*2?e:Math.ceil(e/2);function Ce({items:e,width:t}){let o=Math.floor((t-xs)/2);if(o<Ts*2)return et(mg,{items:e,width:t});let n=Math.max(0,...e.map(([a])=>Ul(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)}):Lo(Ze,{children:[et(Ze,{color:u.mutedForeground,children:Pe(a[0],n)})," ",et(Ze,{color:u.foreground,children:Pe(a[1],r)})]});return et(Fr,{flexDirection:"column",children:i.map((a,c)=>Lo(Ze,{wrap:"truncate",children:[s(a[0]),jl(xs),s(a[1])]},c))})}import{Fragment as yg,jsx as ie,jsxs as an}from"react/jsx-runtime";var pg={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"},Vl="\u5BC6\u94A5 ",fg=10,gg={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"}},hg=2+J;function bg({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(an(Mo,{wrap:"truncate",color:u.accent,children:[Pe(e[r]??"",Math.min(o,t)),e[r+1]??""]},r));return ie(ht,{flexDirection:"column",children:n})}function Kl(){let e=D(),{width:t,columns:o,rows:n}=j(),r=re(),[i,s]=Gl({name:"menu"}),[a,c]=Gl(!1),{busy:l,error:d,reset:g,fail:m,run:p}=ge(),S=Y([e.revision],async()=>{let[w,y,k]=await Promise.all([ll(),hl(),fl()]);return{user:w.user,security:y,sessions:k.sessions}});z(w=>{i.name==="menu"&&l===null&&w==="r"&&e.reload()}),gc(i.name==="codes");let f=()=>{if(i.name!=="codes"){if(i.name==="menu"){e.pop();return}g(),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=w=>{s({name:"menu"}),e.reload(),e.toast("ok",w)},b=(w,y)=>{c(!1),s({name:"codes",codes:w,message:y})},x=(w,y)=>{w==="rebind"?p("\u6B63\u5728\u751F\u6210\u65B0\u5BC6\u94A5",()=>ms({code:y}),{onSuccess:k=>s({name:"enroll",setup:k})}):w==="regenerate"?p("\u6B63\u5728\u751F\u6210\u6062\u590D\u7801",()=>Sl({code:y}),{onSuccess:({recoveryCodes:k})=>b(k,"\u6062\u590D\u7801\u5DF2\u66F4\u65B0")}):p("\u6B63\u5728\u505C\u7528",()=>yl({code:y}),{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:f,children:ie(Q,{state:S,loading:"\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u4FE1\u606F",width:t,children:({user:w,security:y,sessions:k})=>{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:w.username,placeholder:"\u8BF7\u8F93\u5165\u65B0\u7528\u6237\u540D"}],onCancel:f,onSubmit:T=>{let C=(T.username??"").trim();if(C===""||C.length>pn){m(`\u8BF7\u8F93\u5165 1 \u5230 ${pn} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}p("\u6B63\u5728\u4FDD\u5B58",()=>ul({username:C}),{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:T=>dl({email:T})},{kind:"text",name:"password",label:"\u5F53\u524D\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801",hint:"\u4FEE\u6539\u540E\u7ACB\u5373\u4EE5\u65B0\u90AE\u7BB1\u767B\u5F55\u548C\u63A5\u6536\u901A\u77E5\uFF0C\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55"}],onCancel:f,onSubmit:T=>{let C=(T.email??"").trim(),R=(T.code??"").trim(),P=T.password??"";if(C===""||R===""||P===""){m("\u8BF7\u586B\u5199\u65B0\u90AE\u7BB1\u3001\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801");return}p("\u6B63\u5728\u4FDD\u5B58",()=>pl({email:C,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 ${ot} \u4F4D\uFF0C\u4FDD\u5B58\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55`}],onCancel:f,onSubmit:T=>{let C=T.old??"",R=T.next??"";if(C===""){m("\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801");return}if(R.length<ot){m(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${ot} \u4F4D`);return}p("\u6B63\u5728\u4FDD\u5B58",()=>ml({oldPassword:C,newPassword:R}),{onSuccess:()=>h("\u5BC6\u7801\u5DF2\u4FEE\u6539")})}});if(i.name==="confirm-logout")return ie(je,{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",()=>sr(),{onSuccess:()=>{e.toast("ok","\u5DF2\u9000\u51FA\u767B\u5F55"),e.home()}}),onCancel:f});if(i.name==="code"){let T=gg[i.intent];return ie(V,{title:T.title,width:t,submitLabel:T.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:T.hint}],onCancel:f,onSubmit:C=>{let R=(C.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 T=(R,P)=>an(yg,{children:[P&&ie(Mo,{color:u.mutedForeground,children:"\u4F7F\u7528 Google Authenticator \u7B49\u9A8C\u8BC1\u5668 App \u626B\u7801\u6DFB\u52A0"}),an(Mo,{children:[ie(Mo,{color:u.mutedForeground,children:Vl}),ie(Mo,{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:f,onSubmit:v=>{let I=(v.code??"").trim();if(I===""){m("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}p("\u6B63\u5728\u7ED1\u5B9A",()=>bl({code:I}),{onSuccess:({recoveryCodes:_})=>b(_,"\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u7ED1\u5B9A")})}})})]}),C=$r(i.setup.otpauthUri,{width:t,rows:r},{columns:dg(Vl)+i.setup.secret.length,rows:fg},{columns:o-t,rows:n-r});return C.fits?ie(Br,{value:i.setup.otpauthUri,aside:T(C.asideWidth,!0)}):an(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"}),T(t,!1)]})}if(i.name==="codes")return an(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(bg,{codes:i.codes,width:t})}),ie(ht,{marginTop:1,children:ie(ce,{width:t,items:[{value:"ack",label:`${a?"[x]":"[ ]"} \u6211\u5DF2\u59A5\u5584\u4FDD\u5B58\u8FD9\u4E9B\u6062\u590D\u7801`},{value:"done",label:"\u5B8C\u6210",disabled:!a}],onSelect:T=>{if(T==="ack"){c(R=>!R);return}let C=i.message;s({name:"menu"}),e.reload(),e.toast("ok",C)}})})]});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:f,onSubmit:T=>{let C=(T.name??"").trim();if(C===""){m("\u8BF7\u8F93\u5165\u540D\u79F0");return}p("\u6B63\u5728\u4FDD\u5B58",()=>xl(i.item.id,{name:C}),{onSuccess:()=>h("\u5DF2\u4FDD\u5B58")})}});if(i.name==="passkey-delete")return ie(je,{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",()=>Tl(i.item.id),{onSuccess:()=>h("\u5DF2\u5220\u9664")}),onCancel:f});if(i.name==="passkey"){let T=i.item;return ie(ht,{flexDirection:"column",children:an(oe,{title:`Passkey ${T.name}`,width:t,children:[ie(Ce,{width:t-ae,items:[["\u540D\u79F0",T.name],["\u6DFB\u52A0\u65F6\u95F4",ee(T.createdAt)],["\u6700\u8FD1\u4F7F\u7528",T.lastUsedAt===null?"\u2014":ee(T.lastUsedAt)]]}),ie(ht,{marginTop:1,children:ie(ce,{width:t-ae,items:[{value:"rename",label:"\u91CD\u547D\u540D"},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:C=>{g(),s(C==="rename"?{name:"passkey-rename",item:T}:{name:"passkey-delete",item:T})}})})]})})}if(i.name==="confirm-revoke")return ie(je,{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",()=>gl(i.item.id),{onSuccess:()=>h("\u5DF2\u9000\u51FA\u8BE5\u8BBE\u5907")}),onCancel:f});if(i.name==="session"){let T=i.item;return an(ht,{flexDirection:"column",children:[ie(oe,{title:Ko(T.device),note:T.current?"\u5F53\u524D\u8BBE\u5907":void 0,width:t,children:ie(Ce,{width:t-ae,items:[["\u8BBE\u5907\u7C7B\u578B",T.device?.type!=null?pg[T.device.type]??T.device.type:"\u684C\u9762\u8BBE\u5907"],["\u5BA2\u6237\u7AEF",T.device?.client!=null?`${T.device.client} ${T.device.clientVersion??""}`.trim():"\u2014"],["\u64CD\u4F5C\u7CFB\u7EDF",T.device?.os!=null?`${T.device.os} ${T.device.osVersion??""}`.trim():"\u2014"],["\u8BBE\u5907\u578B\u53F7",T.device?.model!=null?`${T.device.vendor??""} ${T.device.model}`.trim():"\u2014"],["IP \u5730\u5740",T.ip??"\u2014"],["\u767B\u5F55\u65F6\u95F4",ee(T.loginAt)],["\u6700\u540E\u6D3B\u8DC3",ee(T.lastActiveAt)],["\u767B\u5F55\u6709\u6548\u671F\u81F3",ee(T.expiresAt)],["\u5BA2\u6237\u7AEF\u6807\u8BC6",T.userAgent??"\u2014"]]})}),!T.current&&l===null&&ie(ht,{marginTop:1,children:ie(ce,{width:t,items:[{value:"revoke",label:"\u9000\u51FA\u8BE5\u8BBE\u5907",labelTone:"danger"}],onSelect:()=>{g(),s({name:"confirm-revoke",item:T})}})})]})}let E=y.totp,M=E.enabled?E.recoveryCodesRemaining===0?"\u5DF2\u5168\u90E8\u7528\u5B8C\uFF0C\u8BF7\u91CD\u65B0\u751F\u6210":`\u5269\u4F59 ${E.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"},...E.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"},...y.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}]:[],...y.passkeys.map(T=>({value:{kind:"passkey",item:T},label:T.name,hint:`\u6700\u8FD1\u4F7F\u7528 ${T.lastUsedAt===null?"\u2014":ee(T.lastUsedAt)}`})),{value:{kind:"add-passkey"},label:"\u6DFB\u52A0 Passkey",hint:"\u9700\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"},{heading:""},{heading:"\u767B\u5F55\u8BBE\u5907"},...k.map(T=>({value:{kind:"session",item:T},label:T.current?`${Ko(T.device)}\uFF08\u5F53\u524D\u8BBE\u5907\uFF09`:Ko(T.device),...T.current?{labelTone:"accent"}:{},hint:`${T.ip??"\u2014"} \xB7 \u6700\u540E\u6D3B\u8DC3 ${ee(T.lastActiveAt)}`})),{heading:""},{value:{kind:"logout"},label:"\u9000\u51FA\u767B\u5F55",labelTone:"danger"}];return an(ht,{flexDirection:"column",children:[ie(Ce,{width:t,items:[["\u7528\u6237\u540D",w.username],["\u90AE\u7BB1",w.email],["\u4E24\u6B65\u9A8C\u8BC1",E.enabled?`\u5DF2\u542F\u7528\uFF08\u542F\u7528\u4E8E ${E.enabledAt===null?"\u2014":ee(E.enabledAt)}\uFF09`:"\u672A\u542F\u7528"],["\u6062\u590D\u7801",M]]}),ie(ht,{marginTop:J,children:ie(ce,{width:t,height:Math.max(3,r-hg),isActive:l===null,items:F,retain:"menu",onSelect:T=>{g(),T.kind==="rename"?s({name:"rename"}):T.kind==="email"?s({name:"email"}):T.kind==="password"?s({name:"password"}):T.kind==="logout"?s({name:"confirm-logout"}):T.kind==="enable"?p("\u6B63\u5728\u751F\u6210\u5BC6\u94A5",()=>ms({}),{onSuccess:C=>s({name:"enroll",setup:C})}):T.kind==="code"?s({name:"code",intent:T.intent}):T.kind==="add-passkey"?s({name:"passkey-add"}):T.kind==="passkey"?s({name:"passkey",item:T.item}):T.kind==="session"&&s({name:"session",item:T.item})}})})]})}})})}import{Box as ks,Text as vs,useInput as kg}from"ink";import{useRef as tu,useState as qr}from"react";import vg from"string-width";import{z as We}from"zod";var Sg=We.object({siteName:We.string(),siteDescription:We.string(),apiLines:va,quotaPerUsd:We.number().int().positive(),ticketAutoCloseMinutes:We.number(),legal:We.object({termsConfigured:We.boolean(),privacyConfigured:We.boolean()}),invitation:We.object({firstInviterPercent:We.number(),firstInviteePercent:We.number()}),initialized:We.boolean()});function ke(e,t){return kt(Sg,`${e}/api/site-config`,{...t===void 0?{}:{timeoutMs:t}})}var xg=We.object({title:We.string(),content:We.string(),configured:We.boolean()});function Jl(e,t){return kt(xg,`${e}/api/agreements/${t}`)}var Yl=e=>O(ao(Qo),qn("/tickets",{...e})),Ql=e=>O(Qo,"/tickets",{method:"POST",json:e}),ws=e=>O(Da,`/tickets/${e}`),Xl=(e,t)=>O(Ni,`/tickets/${e}/messages`,{method:"POST",json:{content:t}}),Zl=e=>O(ye,`/tickets/${e}/close`,{method:"POST"}).then(()=>{}),eu=e=>O(ye,`/tickets/${e}/reopen`,{method:"POST"}).then(()=>{});import{useEffect as Tg,useRef as wg}from"react";function jr(e,t,o=!0){let n=wg(t);n.current=t,Tg(()=>{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 Dt,jsxs as ou}from"react/jsx-runtime";var Rg=5e3,_g=7,Cg=3,nu=1;function Eg(e,t){let o=[],n=r=>{let i=r.spans.reduce((a,c)=>a+vg(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=Lt([{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 ru({params:e}){let t=D(),{width:o}=j(),n=re(),[r,i]=qr("main"),[s,a]=qr(!1),[c,l]=qr(0),{busy:d,error:g,reset:m,fail:p,run:S}=ge(),f=Y([e.id,t.revision],async()=>{let[T,C]=await Promise.all([ws(e.id),ke(t.ctx.site)]);return{detail:T,site:C}}),[h,b]=qr(null),x=tu(0),w=tu(t.revision);w.current!==t.revision&&(w.current=t.revision,x.current+=1,h!==null&&b(null));let y=f.phase==="ready"?f.data:null,k=h??y?.detail??null;jr(Rg,async()=>{if(k===null||d!==null)return;let T=x.current,C=await ws(e.id);T===x.current&&(C.ticket.updatedAt!==k.ticket.updatedAt||C.messages.length!==k.messages.length)&&b(C)},r==="main"&&y!==null),z(T=>{r!=="main"||s||d!==null||(T==="r"?t.reload():T==="x"&&k!==null&&k.ticket.status!=="closed"&&(m(),i("confirm-close")))}),kg((T,C)=>{C.tab&&r==="main"&&!s&&k?.ticket.status!=="closed"&&a(!0)},{isActive:r==="main"&&!s&&d===null});let E=()=>{if(r!=="main"){m(),i("main");return}if(s){a(!1);return}t.pop()},M=T=>{S("\u6B63\u5728\u53D1\u9001",()=>Xl(e.id,T),{onSuccess:()=>{a(!1),l(C=>C+1),t.reload(),t.toast("ok","\u5DF2\u53D1\u9001")}})},F=r==="main"&&!s?k?.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 Dt(G,{trail:["\u5DE5\u5355\u652F\u6301",k?.ticket.title??"\u5DE5\u5355\u8BE6\u60C5"],hints:F,onEscape:E,children:Dt(Q,{state:f,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:o,children:({site:T})=>{if(k===null)return null;let C=k.ticket,R=C.status==="closed";if(r==="confirm-close")return Dt(je,{width:o,title:"\u5173\u95ED\u5DE5\u5355",detail:`\u786E\u5B9A\u5173\u95ED\u5DE5\u5355\u300C${C.title}\u300D\u5417\uFF1F\u5173\u95ED\u540E\u53EF\u91CD\u65B0\u6253\u5F00`,confirmLabel:"\u5173\u95ED\u5DE5\u5355",busy:d,error:g,onConfirm:()=>S("\u6B63\u5728\u5173\u95ED",()=>Zl(e.id),{onSuccess:()=>{i("main"),t.reload(),t.toast("ok","\u5DF2\u5173\u95ED")}}),onCancel:E});let P=T.ticketAutoCloseMinutes>0?nu:0,v=R?Cg:s?_g:nu,I=Math.max(3,n-P-v-J);return ou(ks,{flexDirection:"column",children:[P>0&&Dt(vs,{wrap:"truncate",color:u.faintForeground,children:`\u7BA1\u7406\u5458\u56DE\u590D\u540E\u8D85\u8FC7 ${T.ticketAutoCloseMinutes} \u5206\u949F\u672A\u56DE\u5E94\uFF0C\u5DE5\u5355\u5C06\u81EA\u52A8\u5173\u95ED\uFF1B\u5DF2\u5173\u95ED\u7684\u5DE5\u5355\u53EF\u968F\u65F6\u91CD\u65B0\u6253\u5F00`}),Dt(tn,{lines:Eg(k.messages,o),height:I,isActive:!s&&d===null,pinBottom:!0}),Dt(ks,{marginTop:1,flexDirection:"column",children:R?ou(ks,{flexDirection:"column",children:[Dt(vs,{color:u.mutedForeground,children:"\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u5982\u9700\u7EE7\u7EED\u6C9F\u901A\u53EF\u91CD\u65B0\u6253\u5F00"}),Dt(ce,{width:o,isActive:d===null,items:[{value:"reopen",label:"\u91CD\u65B0\u6253\u5F00"}],onSelect:()=>S("\u6B63\u5728\u91CD\u65B0\u6253\u5F00",()=>eu(e.id),{onSuccess:()=>{t.reload(),t.toast("ok","\u5DF2\u91CD\u65B0\u6253\u5F00")}})})]}):s?Dt(V,{title:"\u56DE\u590D\u5DE5\u5355",width:o,submitLabel:"\u53D1\u9001\u56DE\u590D",busy:d!==null,busyLabel:d??"\u6B63\u5728\u53D1\u9001",error:g,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}M(N)}},c):Dt(vs,{color:u.faintForeground,children:"\u6309 Tab \u64B0\u5199\u56DE\u590D"})})]})}})})}import{Box as Lg}from"ink";import{useState as Mg}from"react";import{Text as Pg}from"ink";import{useEffect as Ag,useState as Ng}from"react";import{jsx as Ig}from"react/jsx-runtime";var iu=100;function Xn(e,t,{retain:o}={}){let[n,r]=Ge(o,()=>1),[i,s]=Ng({pages:1,total:0}),a=Y([...e,n],()=>t(n,iu));Ag(()=>{a.phase==="ready"&&s({pages:Math.max(1,Math.ceil(a.data.total/iu)),total:a.data.total})},[a]);let c=d=>{r(g=>Math.min(Math.max(1,g+d),i.pages))},l=()=>r(1);return{state:a,page:n,pages:i.pages,total:i.total,go:c,reset:l}}function Zn({page:e,pages:t,total:o,width:n}){return Ig(Pg,{wrap:"truncate",color:u.faintForeground,children:Te(Oe([`\u7B2C ${e} / ${t} \u9875`,`\u5171 ${o} \u6761`,"\u2190\u2192 \u7FFB\u9875"]),n)})}import{jsx as kn,jsxs as $g}from"react/jsx-runtime";var Og=Je(wi,Oi,"\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"},Rs={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]=Ge("status",()=>""),{busy:a,error:c,reset:l,fail:d,run:g}=ge(),m=Xn([e.revision,i],(f,h)=>Yl({page:f,pageSize:h,...i===""?{}:{status:i}}),{retain:"page"}),p=n.name==="list";z((f,h)=>{p&&(f==="r"?e.reload():f==="f"?r({name:"filter"}):f==="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 kn(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"?kn(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:f=>{s(f.status??""),m.reset(),r({name:"list"})}}):n.name==="create-category"?kn(ce,{width:t,height:o,items:[{heading:"\u5206\u7C7B"},...ki.map(f=>({value:f,label:tr(f),hint:Rs[f].title}))],onSelect:f=>r({name:"create",category:f})}):n.name==="create"?kn(V,{title:`\u65B0\u5EFA\u5DE5\u5355 \u2014 ${tr(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:vi.map(f=>({value:f,label:Di(f).label})),initial:"normal"},{kind:"text",name:"title",label:"\u6807\u9898",placeholder:Rs[n.category].title},{kind:"textarea",name:"content",label:"\u95EE\u9898\u63CF\u8FF0",rows:5,maxLength:5e3,placeholder:Rs[n.category].content}],onCancel:S,onSubmit:f=>{let h=(f.title??"").trim(),b=(f.content??"").trim();if(h===""){d("\u8BF7\u586B\u5199\u6807\u9898");return}if(b===""){d("\u8BF7\u586B\u5199\u95EE\u9898\u63CF\u8FF0");return}g("\u6B63\u5728\u63D0\u4EA4\u5DE5\u5355",()=>Ql({title:h,category:n.category,priority:f.priority??"normal",content:b}),{onSuccess:()=>{r({name:"list"}),m.reset(),e.reload(),e.toast("ok","\u5DE5\u5355\u5DF2\u63D0\u4EA4")}})}}):kn(Q,{state:m.state,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:t,children:f=>$g(Lg,{flexDirection:"column",children:[kn(Re,{retain:"list",items:f.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(Di(h.priority)),tr(h.category),ee(h.updatedAt),Wt(Oi(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}),kn(Zn,{page:m.page,pages:m.pages,total:m.total,width:t})]})})})}import{Box as Bg}from"ink";import{jsx as Oo}from"react/jsx-runtime";function au({params:e}){let t=D(),{width:o}=j(),n=re(),r=Y([e.type,t.revision],()=>Jl(t.ctx.site,e.type));return Oo(G,{trail:["\u6CD5\u5F8B\u6761\u6B3E",e.type==="terms"?"\u7528\u6237\u534F\u8BAE":"\u9690\u79C1\u653F\u7B56"],hints:["\u2191\u2193 \u6EDA\u52A8"],children:Oo(Q,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6761\u6B3E",width:o,children:i=>i.configured?Oo(Bg,{flexDirection:"column",children:Oo(tn,{lines:Kn(i.content,o),height:n})}):Oo(fe,{tone:"info",width:o,title:"\u8BE5\u6761\u6B3E\u5C1A\u672A\u914D\u7F6E"})})})}async function cu(e,t){await kt(ye,`${e}/api/auth/send-code`,{json:t})}async function lu(e,t){let o=await dt(`${e}/api/auth/register`,{json:t});At(o);let n=Bn.parse(o.data);return ho(e,go({refresh:null,device:null},o.headers),n)}async function uu(e,t){await kt(ye,`${e}/api/auth/forgot-password`,{json:t})}async function mu(e,t){await kt(ye,`${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 ${ot} \u4F4D`,hint:"\u91CD\u7F6E\u540E\u6240\u6709\u8BBE\u5907\u90FD\u9700\u91CD\u65B0\u767B\u5F55"}],onCancel:()=>e.pop(),onSubmit:s=>{let a=(s.email??"").trim(),c=(s.code??"").trim(),l=s.password??"";if(a===""||c===""){r("\u8BF7\u586B\u5199\u90AE\u7BB1\u4E0E\u9A8C\u8BC1\u7801");return}if(l.length<ot){r(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${ot} \u4F4D`);return}i("\u6B63\u5728\u91CD\u7F6E",()=>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 Cs,Text as Ug}from"ink";import{useState as gu}from"react";import{Box as fu}from"ink";import{jsx as _s,jsxs as Fg}from"react/jsx-runtime";var Hr=e=>e.termsConfigured||e.privacyConfigured;function Wr({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:[_s(fe,{tone:"info",width:t,title:`\u7EE7\u7EED\u524D\u8BF7\u9605\u8BFB\u5E76\u540C\u610F${r.join("\u4E0E")}`}),_s(fu,{marginTop:1,children:_s(ce,{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 cn,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(),g=Y([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,b)=>{d("\u6B63\u5728\u9A8C\u8BC1",()=>Xa(e.ctx.site,h,b),{onSuccess:x=>{if(x.status==="totp_required"){n({name:"factor",ticket:x.ticket,jar:x.jar});return}m(x.session.username)}})},S=(h,b)=>{d("\u6B63\u5728\u9A8C\u8BC1",()=>Za(e.ctx.site,h.jar,h.ticket,b,h.kind),{onSuccess:x=>m(x.username)})},f=()=>{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:f,isActive:s===null,children:[o.name==="credentials"&&cn(Q,{state:g,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:h=>Hr(h.legal)&&!r?cn(Wr,{legal:h.legal,width:t,onAgree:()=>i(!0)}):hu(Cs,{flexDirection:"column",children:[cn(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:f,onSubmit:b=>{let x=(b.account??"").trim(),w=b.password??"";if(x===""||w===""){l("\u8BF7\u586B\u5199\u8D26\u53F7\u4E0E\u5BC6\u7801");return}p(x,w)}}),cn(Cs,{marginTop:1,children:cn(Ug,{color:u.faintForeground,children:"Passkey \u767B\u5F55\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"})})]})}),o.name==="factor"&&cn(ce,{width:t,items:[{value:"totp",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",hint:"\u8F93\u5165\u9A8C\u8BC1\u5668 App \u4E2D\u663E\u793A\u7684\u52A8\u6001\u9A8C\u8BC1\u7801"},{value:"recovery-code",label:"\u6062\u590D\u7801",hint:"\u8F93\u5165\u672A\u4F7F\u7528\u8FC7\u7684\u4E00\u6B21\u6027\u6062\u590D\u7801"}],onSelect:h=>n({name:"code",ticket:o.ticket,jar:o.jar,kind:h})}),o.name==="code"&&cn(Cs,{flexDirection:"column",children:cn(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:f,onSubmit:h=>{let b=(h.code??"").trim();if(b===""){l("\u8BF7\u586B\u5199\u9A8C\u8BC1\u7801");return}S(o,b)}})})]})}import{useState as jg}from"react";import{jsx as zr}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=Y([e.revision],()=>ke(e.ctx.site));return zr(G,{trail:["\u6CE8\u518C\u8D26\u53F7"],isActive:r===null,children:zr(Q,{state:c,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:l=>Hr(l.legal)&&!o?zr(Wr,{legal:l.legal,width:t,onAgree:()=>n(!0)}):zr(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 ${ot} \u4F4D`},{kind:"text",name:"invite",label:"\u9080\u8BF7\u7801",placeholder:"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801",optional:!0}],onCancel:()=>e.pop(),onSubmit:d=>{let g=(d.username??"").trim(),m=(d.email??"").trim(),p=(d.code??"").trim(),S=d.password??"",f=(d.invite??"").trim();if(g===""||g.length>pn){s(`\u8BF7\u8F93\u5165 1 \u5230 ${pn} \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<ot){s(`\u5BC6\u7801\u81F3\u5C11 ${ot} \u4F4D`);return}a("\u6B63\u5728\u6CE8\u518C",()=>lu(e.ctx.site,{username:g,email:m,password:S,code:p,...f===""?{}:{inviteCode:f}}),{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 Rn}from"ink";import{useEffect as nh,useRef as oh,useState as Is}from"react";import{z as L}from"zod";var qg=L.object({balance:L.number(),today:L.object({requests:L.number(),tokens:L.number(),cost:L.number()})}),Su=()=>O(qg,"/dashboard/summary"),xu=["all","30d","7d"],Hg=L.object({totals:L.object({requests:L.number(),tokens:L.number(),cost:L.number()}),hourly:L.array(L.number()),models:L.array(L.object({model:L.string(),displayName:L.string(),tokens:L.number(),inTokens:L.number(),outTokens:L.number()})),chart:L.object({start:L.string(),end:L.string(),points:L.array(L.object({day:L.string(),model:L.string(),tokens:L.number()}))}),heatmap:L.object({start:L.string(),end:L.string(),days:L.array(L.object({day:L.string(),cost:L.number()}))}),activeDays:L.number(),currentStreak:L.number(),longestStreak:L.number()}),Es=e=>O(Hg,qn("/dashboard/stats",{range:e})),Wg=L.object({id:L.number().int(),requestId:L.string(),tokenName:L.string(),protocol:la,model:L.string(),modelDisplayName:L.string(),groupName:L.string(),promptTokens:L.number(),completionTokens:L.number(),cachedTokens:L.number(),cacheWrite5mTokens:L.number(),cacheWrite1hTokens:L.number(),totalTokens:L.number(),quotaCost:L.number(),subscriptionPlanName:L.string().nullable(),multiplier:L.string(),status:ba,httpStatus:L.number().int(),stopReason:L.string().nullable(),latencyMs:L.number(),firstByteMs:L.number().nullable(),stream:L.boolean(),ip:L.string().nullable(),createdAt:L.string()}),Tu=e=>O(ao(Wg),qn("/logs",{...e})),zg=L.object({id:L.number().int(),type:fa,amount:L.number(),balanceAfter:L.number(),refType:ga,refId:L.string().nullable(),createdAt:L.string()}),wu=e=>O(ao(zg),qn("/quota-ledger",{...e}));import{Box as Gg,Text as _t}from"ink";import Do from"string-width";import{Fragment as vu,jsx as Ct,jsxs as Ps}from"react/jsx-runtime";var vn=1,Vg=4,Kg=1,eo=8,Jg=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587"],ku=e=>`${Number(e.slice(5,7))}\u6708${Number(e.slice(8,10))}\u65E5`;function Ru({data:e,order:t,width:o,rows:n}){let r=n-Kg,i=[];for(let C=e.start;C<=e.end;C=Yt(C,1))i.push(C);let s=Math.min(Vg,Math.floor((o+vn)/i.length)-vn);s<1&&(s=1,i=i.slice(-Math.floor((o+vn)/(1+vn))));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,yr.length).map((C,R)=>[C,R])),d=yr.length,g=C=>yr[C]??u.faintForeground,m=new Map(i.map((C,R)=>[C,R])),p=i.map(()=>Array.from({length:d+1},()=>0));for(let C of e.points){let R=m.get(C.day);if(R===void 0)continue;let P=p[R];if(P===void 0)continue;let v=l.get(C.model)??d;P[v]=(P[v]??0)+C.tokens}let S=p.map(C=>C.reduce((R,P)=>R+P,0)),f=Math.max(0,...S),h=r*eo,b=p.map((C,R)=>{let P=Array.from({length:r},()=>null),v=S[R]??0;if(v<=0||f<=0)return P;let I=Math.max(1,Math.round(v/f*h)),_=[],N=0,H=0;C.forEach(($,ne)=>{N+=$;let q=Math.round(N/v*I);for(let se=H;se<q;se+=1)_[se]=g(ne);H=q});for(let $=0;$<r;$+=1){let ne=Math.min(eo,I-$*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,nt=0;for(let[A,B]of q)B>nt&&(se=A,nt=B);if(se===null)break;P[$]={color:se,glyph:ne===eo?null:Jg[ne-1]??null}}return P}),x=C=>{let R=[],P=(v,I,_)=>{let N=R[R.length-1];N!==void 0&&N.color===v&&N.glyph===I?N.width+=_:R.push({color:v,glyph:I,width:_})};return b.forEach((v,I)=>{I>0&&P(null,null,vn);let _=v[C]??null;_===null?P(null,null,s):P(_.color,_.glyph,s)}),R},w=i.length*(s+vn)-vn,y=ku(a),k=ku(c),E=f>0?`\u5355\u65E5\u5CF0\u503C ${Zt(f)}`:"",M=w-Do(y)-Do(k),F=E!==""&&M>=Do(E)+4,T=F?Math.floor((M-Do(E))/2):M;return Ps(Gg,{flexDirection:"column",children:[Array.from({length:r},(C,R)=>{let P=r-1-R;return Ct(_t,{wrap:"truncate",children:x(P).map((v,I)=>v.color===null?Ct(_t,{children:" ".repeat(v.width)},I):v.glyph===null?Ct(_t,{backgroundColor:v.color,children:" ".repeat(v.width)},I):Ct(_t,{color:v.color,children:v.glyph.repeat(v.width)},I))},P)}),Ct(_t,{wrap:"truncate",children:M<2?Ct(_t,{color:u.faintForeground,children:Te(y,w)}):Ps(vu,{children:[Ct(_t,{color:u.faintForeground,children:y}),Ct(_t,{children:" ".repeat(T)}),F&&Ps(vu,{children:[Ct(_t,{color:u.mutedForeground,children:E}),Ct(_t,{children:" ".repeat(M-Do(E)-T)})]}),Ct(_t,{color:u.faintForeground,children:k})]})})]})}import{Box as _u,Text as Bt}from"ink";import Yg from"string-width";import{jsx as $t,jsxs as As}from"react/jsx-runtime";var Gr=3,Vt=2,Ns=10,Qg=8,Cu=e=>Math.floor((e-Gr)/Vt),Eu=e=>Cu(e)>=Qg;function Xg(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=Yt(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 Zg(e,t){let o=t*Vt,n="",r=0,i="";for(;r<o;){let s=r%Vt===0?e[r/Vt*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=Yg(c);if(r+l<=o){n+=c,r+=l;continue}}}n+=" ",r+=1}return n}var eh={1:"\u4E00",3:"\u4E09",5:"\u4E94"};function th({cells:e,day:t,weeks:o}){return As(Bt,{wrap:"truncate",children:[$t(Bt,{color:u.faintForeground,children:Pe(eh[t]??"",Gr)}),Array.from({length:o},(n,r)=>{let i=e[r*7+t];return i===void 0?$t(Bt,{children:" ".repeat(Vt)},r):$t(Bt,{backgroundColor:br[i.level],children:" ".repeat(Vt)},r)})]})}function Pu({data:e,funFact:t,width:o}){let n=Xg(e),r=Math.ceil(n.length/7),i=Math.min(r,Cu(o)),s=n.slice((r-i)*7),a=3+br.length*Vt+3,c=Math.max(0,Gr+i*Vt-a-2);return As(_u,{flexDirection:"column",children:[$t(Bt,{wrap:"truncate",color:u.faintForeground,children:" ".repeat(Gr)+Zg(s,i)}),Array.from({length:7},(l,d)=>$t(th,{cells:s,day:d,weeks:i},d)),$t(_u,{marginTop:1,children:As(Bt,{wrap:"truncate",children:[$t(Bt,{color:u.mutedForeground,children:Pe(t??"",c)})," ",$t(Bt,{color:u.faintForeground,children:"\u5C11 "}),br.map(l=>$t(Bt,{backgroundColor:l,children:" ".repeat(Vt)},l)),$t(Bt,{color:u.faintForeground,children:" \u591A"})]})})]})}import{jsx as Fe,jsxs as Nu}from"react/jsx-runtime";var rh={all:"\u5168\u90E8","30d":"30 \u5929","7d":"7 \u5929"},ih=1,Vr=4,Au=5,sh=9;function ah(e){let t=-1,o=0;return e.forEach((n,r)=>{n>o&&(o=n,t=r)}),t<0?"\u2014":`${t} \u70B9`}function Iu(){let e=D(),{width:t}=j(),o=re(),[n,r]=Is("all"),[i,s]=Is("heatmap"),[a,c]=Is(null),l=oh(null),d=Y([n,e.revision],async()=>{let g=l.current;if(g!==null&&g.revision===e.revision){let f=await Es(n);return{summary:g.summary,stats:f,site:g.site}}let[m,p,S]=await Promise.all([Su(),Es(n),ke(e.ctx.site)]);return l.current={revision:e.revision,summary:m,site:S},{summary:m,stats:p,site:S}});return nh(()=>{d.phase==="ready"&&c(Fa({tokens:d.data.stats.totals.tokens,scope:"user",range:n}))},[d,n]),z(g=>{g==="r"&&e.reload(),g==="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(Rn,{flexDirection:"column",children:Fe(Q,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u7528\u91CF",width:t,children:({summary:g,stats:m,site:p})=>{let S=[{label:"\u8D26\u6237\u4F59\u989D",value:me(g.balance,p.quotaPerUsd)},{label:"\u4ECA\u65E5\u8BF7\u6C42",value:Me(g.today.requests)},{label:"\u4ECA\u65E5 Token",value:Me(g.today.tokens)},{label:"\u4ECA\u65E5\u6D88\u8017",value:me(g.today.cost,p.quotaPerUsd)}],f=[{label:"\u8BF7\u6C42\u6570",value:Me(m.totals.requests)},{label:"Token \u603B\u91CF",value:Zt(m.totals.tokens)},{label:"\u6D88\u8017",value:me(m.totals.cost,p.quotaPerUsd)},{label:"\u6D3B\u8DC3\u5929\u6570",value:Me(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:ah(m.hourly)},{label:"\u5E38\u7528\u6A21\u578B",value:m.models[0]?.displayName??"\u2014"}],h=t-ae,b=R=>rt+R+wn(S.length,h)+J+rt+R+ih+R+wn(f.length,h)+J+rt+R,x=o-b(De)>=Vr?De:0,w=o-b(x),y=J+rt+x+Au,k=i==="chart"&&m.chart.points.length>0&&w>=y+Vr,E=i==="heatmap"&&Eu(h)&&w-(J+Ns)>=Vr,M=E?J+Ns:0,F=k?Math.min(sh,Au+Math.floor((w-y-Vr)/2)):0,T=w-M-(k?J+rt+x+F:0),C=R=>`${(m.totals.tokens>0?R/m.totals.tokens*100:0).toFixed(1)}%`;return Nu(Rn,{flexDirection:"column",children:[Fe(oe,{title:"\u6982\u89C8",width:t,gap:x,children:Fe(at,{width:h,tiles:S})}),Fe(Rn,{marginTop:1,flexDirection:"column",children:Nu(oe,{title:"\u533A\u95F4\u7EDF\u8BA1",width:t,gap:x,children:[Fe(Ol,{options:xu.map(R=>({value:R,label:rh[R]})),value:n,onChange:r}),Fe(Rn,{marginTop:x,children:Fe(at,{width:h,tiles:f})}),E&&Fe(Rn,{marginTop:1,flexDirection:"column",children:Fe(Pu,{data:m.heatmap,funFact:a,width:h})})]})}),k&&Fe(Rn,{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(Ru,{data:m.chart,order:m.models.map(R=>R.model),width:h,rows:F})})}),Fe(Rn,{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(Re,{retain:"list",items:m.models,width:h,height:T,columns:[{label:"\u6A21\u578B",shrink:!0},{label:"\u603B Token",align:"right"},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u5360\u6BD4",align:"right"}],row:R=>[R.displayName,Zt(R.tokens),Zt(R.inTokens),Zt(R.outTokens),C(R.tokens)],searchOf:R=>R.displayName})})})]})}})})})}import{Box as Yr,Text as Ms}from"ink";import{useState as Du}from"react";import{z as qe}from"zod";var ch=qe.object({id:qe.number().int(),name:qe.string(),description:qe.string(),multiplier:qe.coerce.number()}),Kr=()=>O(qe.array(ch),"/groups"),Ls=qe.object({id:qe.number().int(),name:qe.string(),keyPrefix:qe.string(),keySuffix:qe.string(),groupId:qe.number().int().nullable(),groupName:qe.string().nullable(),usedQuota:qe.number(),quotaLimit:qe.number().nullable()}),Lu=()=>O(qe.array(Ls),"/tokens"),Mu=e=>O(Ls.extend({token:qe.string()}),"/tokens",{method:"POST",json:e}),Jr=(e,t)=>O(Ls,`/tokens/${e}`,{method:"PATCH",json:t}),Ou=e=>O(ye,`/tokens/${e}`,{method:"DELETE"}).then(()=>{});import{jsx as Ve,jsxs as Os}from"react/jsx-runtime";var $u={model:"",requestId:"",group:"",status:"",range:"",since:"",until:""},Bu=/^\d{4}-\d{2}-\d{2}$/;function lh(e){let t=Ii();return e.range==="today"?{since:t,until:t}:e.range==="7d"?{since:Yt(t,-6),until:t}:e.range==="30d"?{since:Yt(t,-29),until:t}:e.range==="custom"?{...e.since===""?{}:{since:e.since},...e.until===""?{}:{until:e.until}}:{}}function uh(e){let t=lh(e);return{...e.model.trim()===""?{}:{model:e.model.trim()},...e.requestId.trim()===""?{}:{requestId:e.requestId.trim()},...e.group===""?{}:{group:e.group},...e.status===""?{}:{status:e.status},...t.since===void 0?{}:{since:Li(t.since).toISOString()},...t.until===void 0?{}:{until:Li(Yt(t.until,1)).toISOString()}}}var mh=Je(Ti,Zo,"\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-ae,r=Zo(e.status),i=He(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",Me(e.cachedTokens)]),e.cacheWrite5mTokens>0&&a.push(["\u7F13\u5B58\u5199 5m",Me(e.cacheWrite5mTokens)]),e.cacheWrite1hTokens>0&&a.push(["\u7F13\u5B58\u5199 1h",Me(e.cacheWrite1hTokens)]),e.firstByteMs!==null&&a.push(["\u9996\u5B57\u8282",`${hn(e.firstByteMs)} s`]);let c=[["\u8BF7\u6C42 ID",e.requestId],["\u4EE4\u724C",e.tokenName],["\u5206\u7EC4",e.groupName],["\u534F\u8BAE",qa(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 Os(oe,{title:e.modelDisplayName,note:ee(e.createdAt),width:o,children:[Os(Ms,{wrap:"truncate",children:[Ve(Ms,{color:i===void 0?u.mutedForeground:Be[i],children:r.label}),Ve(Ms,{color:u.faintForeground,children:` ${Oe([e.stream?"\u6D41\u5F0F":"",e.model])}`})]}),Ve(Yr,{marginTop:1,children:Ve(at,{width:n,tiles:[{label:"\u8F93\u5165 Token",value:Me(e.promptTokens)},{label:"\u8F93\u51FA Token",value:Me(e.completionTokens)},{label:"\u6D88\u8017",value:jn(e.quotaCost,t)},{label:"\u603B\u8017\u65F6",value:`${hn(e.latencyMs)} s`}]})}),s!==null&&Ve(Yr,{marginTop:1,children:Ve(fe,{tone:"warn",width:n,title:s})}),Ve(Yr,{marginTop:1,children:Ve(Ce,{width:n,items:[...a,...c]})})]})}function Fu(){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=Y([e.revision],async()=>{let[f,h]=await Promise.all([Kr(),ke(e.ctx.site)]);return{groups:f,site:h}}),g=Xn([e.revision,JSON.stringify(i)],(f,h)=>Tu({page:f,pageSize:h,...uh(i)}),{retain:"page"}),m=n.name==="list";z((f,h)=>{m&&(f==="r"?e.reload():f==="f"?(l(),r({name:"filter"})):h.leftArrow?g.go(-1):h.rightArrow&&g.go(1))});let p=()=>{n.name==="list"?e.pop():(l(),r({name:"list"}))},S=JSON.stringify(i)!==JSON.stringify($u);return Ve(G,{hints:m?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:p,children:Ve(Q,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u7B5B\u9009\u9009\u9879",width:t,children:({groups:f,site:h})=>n.name==="filter"?Ve(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:"group",label:"\u5206\u7EC4",options:[{value:"",label:"\u5168\u90E8\u5206\u7EC4"},...f.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:p,onSubmit:b=>{let x=b.range??"",w=(b.since??"").trim(),y=(b.until??"").trim();if(x==="custom"&&(w!==""&&!Bu.test(w)||y!==""&&!Bu.test(y))){c("\u65E5\u671F\u683C\u5F0F\u5E94\u4E3A YYYY-MM-DD");return}s({model:b.model??"",requestId:b.requestId??"",group:b.group??"",status:b.status??"",range:x,since:w,until:y}),g.reset(),r({name:"list"})}}):n.name==="detail"?Ve(ph,{log:n.log,quotaPerUsd:h.quotaPerUsd,width:t}):Ve(Q,{state:g.state,loading:"\u6B63\u5728\u8BFB\u53D6\u4F7F\u7528\u65E5\u5FD7",width:t,children:b=>Os(Yr,{flexDirection:"column",children:[Ve(Re,{retain:"list",items:b.items,width:t,height:Math.max(3,o-1),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:x=>[ee(x.createdAt),x.modelDisplayName,Me(x.promptTokens),Me(x.completionTokens),jn(x.quotaCost,h.quotaPerUsd),Wt(Zo(x.status))],onOpen:x=>r({name:"detail",log:x}),emptyLabel:S?"\u65E0\u5339\u914D\u7ED3\u679C":"\u6682\u65E0\u8C03\u7528\u8BB0\u5F55",emptyDescription:S?void 0:"\u901A\u8FC7\u4EE4\u724C\u8C03\u7528 API \u540E\uFF0C\u660E\u7EC6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),Ve(Zn,{page:g.page,pages:g.pages,total:g.total,width:t})]})})})})}import{Box as $o,Text as ln}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 Qr(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 Uu(e,t){return kt(hh,`${e}/api/pricing/${t}`)}var bh=Z.object({data:Z.array(Z.object({id:Z.string()}))});async function ju(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 Ae,jsxs as Bo}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 Ae(ln,{wrap:"truncate",children:n.map((r,i)=>Ae(ln,{color:r.color,children:X.barFilled.repeat(r.count)},i))})}function Rh({price:e,width:t,contentRows:o}){let n=D(),r=Y([e.id,n.revision],()=>Uu(n.ctx.site,e.id)),i=(s,a)=>gn(String(Number(s)*a),"-");return Ae(Q,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u8BE6\u60C5",width:t,children:s=>{let a=t-ae,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:Me(c.requests)},{label:"\u5EF6\u8FDF P50",value:c.latencyP50Ms!==null?`${hn(c.latencyP50Ms)} s`:"\u2014"},{label:"\u9996\u5B57\u8282 P50",value:c.firstByteP50Ms!==null?`${hn(c.firstByteP50Ms)} s`:"\u2014"}],d=wh+Rt+wn(l.length,a,2)+J+Rt+Th,g=s.heartbeat.groups.length,m=o-d-Sh-J-Rt,p=Math.max(0,Math.floor(m/2));p<g&&(p=Math.max(0,Math.floor((m-1)/2))),p=Math.min(g,p);let S=p>0?J+Rt+p*2+(p<g?1:0):0,f=Math.max(1,o-d-S);return Bo($o,{flexDirection:"column",children:[Ae($o,{marginBottom:De,children:Bo(ln,{wrap:"truncate",children:[Ae(ln,{bold:!0,color:u.foreground,children:e.displayName}),Ae(ln,{color:u.faintForeground,children:` ${e.model}`})]})}),Ae(oe,{title:"\u8FD1 24 \u5C0F\u65F6",note:"\u5168\u90E8\u5206\u7EC4\u7684\u7EFC\u5408\u8C03\u7528\u7EDF\u8BA1",width:t,children:Ae(at,{width:a,tiles:l,maxPerRow:2})}),p>0&&Ae($o,{marginTop:1,flexDirection:"column",children:Bo(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=>Bo($o,{flexDirection:"column",children:[Ae(ln,{wrap:"truncate",color:u.foreground,children:h.name}),Ae(vh,{minutes:h.minutes,width:a})]},h.id)),p<g&&Ae(ln,{color:u.faintForeground,children:`\u5176\u4F59 ${g-p} \u4E2A\u5206\u7EC4\u672A\u663E\u793A`})]})}),Ae($o,{marginTop:1,flexDirection:"column",children:Bo(oe,{title:"\u5206\u7EC4\u4EF7\u683C",width:t,children:[Ae(ln,{wrap:"truncate",color:u.mutedForeground,children:xh}),s.groups.length===0?Ae(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"}):Ae(Re,{items:s.groups,width:a,height:f,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 qu(){let e=D(),{width:t}=j(),o=re(),[n,r]=yh({name:"list"}),i=Y([e.revision],async()=>(await Qr(e.ctx.site)).models);z(a=>{a==="r"&&e.reload()});let s=()=>{n.name==="list"?e.pop():r({name:"list"})};return Ae(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:Ae(Q,{state:i,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u5B9A\u4EF7",width:t,children:a=>a.length===0?Ae(fe,{tone:"info",width:t,title:"\u6682\u65E0\u6A21\u578B"}):n.name==="detail"?Ae(Rh,{price:n.price,width:t,contentRows:o}):Ae(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,gn(c.inputPricePerMillionTokens,"-"),gn(c.outputPricePerMillionTokens,"-"),gn(c.cachedInputPricePerMillionTokens,"-"),gn(c.cacheWritePricePerMillionTokens,"-")],searchOf:c=>`${c.displayName} ${c.model}`,onOpen:c=>r({name:"detail",price:c}),emptyLabel:"\u65E0\u5339\u914D\u7ED3\u679C"})})})}import{Box as _n,Text as Bh}from"ink";import{useState as ei}from"react";function Hu(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 Wu(e,t){let o=await ke(e.site);return ju(Hu(bn(),o).url,t)}async function zu(e,t,o,n){let r=await ke(e.site),i=Hu(bn(),r).url;t.apply({siteName:r.siteName,baseUrl:t.relayUrl(i),apiKey:o,model:t.requiresModel?n??null:null},t.resolveDir())}import{homedir as Qu}from"os";import{join as Zr,resolve as _h}from"path";function Xr(e,t){let o=e[t];return typeof o!="object"||o===null||Array.isArray(o)?null:o}function Fo(e,t){let o={...zo(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&&Xr(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?{}:{...Xr(o,i)??{}};c[s]=r,o[i]=c}Go(e,o,384)}function Gu(e,t){let o=zo(e);if(o===null)return null;let n=t.length===1?o[t[0]]:Xr(o,t[0])?.[t[1]];return typeof n=="string"?n:null}function Vu(e,t){let o=zo(e);if(o===null)return!1;if(t.length===1)return t[0]in o;let n=Xr(o,t[0]);return n!==null&&t[1]in n}var Ku=["env","ANTHROPIC_BASE_URL"],Ch=["env","ANTHROPIC_AUTH_TOKEN"],Ju=["hasCompletedOnboarding"],Ds=e=>Zr(e.dir,"settings.json"),Yu=e=>e.custom?Zr(e.dir,".claude.json"):Zr(Qu(),".claude.json"),Xu={id:"claude-code",label:"Claude Code",requiresModel:!1,resolveDir(){let e=process.env.CLAUDE_CONFIG_DIR;return e?{dir:_h(e),custom:!0}:{dir:Zr(Qu(),".claude"),custom:!1}},relayUrl:e=>e,configPaths:e=>[Ds(e),Yu(e)],read(e){return{baseUrl:Gu(Ds(e),Ku),model:null}},apply(e,t){Fo(Ds(t),[[Ku,e.baseUrl],[Ch,e.apiKey]]);let o=Yu(t);Vu(o,Ju)||Fo(o,[[Ju,!0]])}};import{homedir as Eh}from"os";import{join as Us,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"],Zu="model_provider",$s="model",Bs=e=>Us(e.dir,"config.toml"),em=e=>Us(e.dir,"auth.json");function Fs(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=Bs(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=On(o)??"";n!==""&&Fs(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[Zu]=r,i[$s]=e.model;let a=Nh(n,i,{inlineTableStart:2}),c=Fs(a,o);if(c[Zu]!==r||c[$s]!==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`);fi(o,a,384)}var tm={id:"codex",label:"Codex",requiresModel:!0,resolveDir(){let e=process.env.CODEX_HOME;return e?{dir:Ph(e),custom:!0}:{dir:Us(Eh(),".codex"),custom:!1}},relayUrl:e=>`${e}/v1`,configPaths:e=>[Bs(e),em(e)],read(e){let t=Bs(e),o=On(t),n=o===null?null:Fs(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?.[$s])}},apply(e,t){Mh(e,t),Fo(em(t),[[Lh,e.apiKey]])}};var nm=[Xu,tm];var Oh=6e3,Dh=2,om=e=>dt(`${e.url}/api/site-config`,{timeoutMs:Oh});async function $h(e){try{await om(e);let t=Number.POSITIVE_INFINITY;for(let o=0;o<Dh;o+=1){let n=Date.now();await om(e),t=Math.min(t,Date.now()-n)}return{line:e,latencyMs:t}}catch{return{line:e,latencyMs:null}}}async function rm(e){let t=[];for(let o of e)t.push(await $h(o));return t}import{jsx as Se,jsxs as ti}from"react/jsx-runtime";var Fh=10,Uh=3,im=4,lm=e=>1+Math.max(1,Math.min(e,im))+(e>im?1:0);function sm(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 am=e=>e.map(t=>({value:String(t.id),label:`${t.name} \xD7${t.multiplier}`})),cm=(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 Se(oe,{title:"API \u63A5\u5165\u5730\u5740",note:o===void 0?void 0:`\u5F53\u524D ${o.name}`,width:n,children:Se(Re,{retain:"lines",items:e,width:n-ae,height:lm(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 um(){let e=D(),{width:t}=j(),o=re(),[n,r]=ei({name:"list"}),[i,s]=ei(!1),[a,c]=ei(()=>bn().line),[l,d]=ei(0),{busy:g,error:m,reset:p,fail:S,run:f}=ge(),h=Y([e.revision],async()=>{let[_,N,H]=await Promise.all([Lu(),Kr(),ke(e.ctx.site)]);return{tokens:_,groups:N,site:H}}),b=h.phase==="ready"?h.data.site.apiLines:[],x=Y([l,b.map(_=>_.url).join("|")],()=>rm(b)),w=g!==null,y=n.name==="list"&&!w,k=_=>{r({name:"list"}),e.reload(),e.toast("ok",_)};z(_=>{if(_==="r"){d(N=>N+1),e.reload();return}i||(_==="n"?r({name:"create"}):_==="l"&&b.length>0&&s(!0))},y);let E=_=>{ar(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`)},M=(_,N,H)=>{f("\u6B63\u5728\u521B\u5EFA\u4EE4\u724C",()=>Mu({name:_,groupId:N,quotaLimit:H}),{onSuccess:$=>{e.reload(),r({name:"created",token:$,secret:$.token})}})},F=_=>{f("\u6B63\u5728\u5220\u9664\u4EE4\u724C",()=>Ou(_.id),{onSuccess:()=>k("\u4EE4\u724C\u5DF2\u5220\u9664")})},T=(_,N)=>{f("\u6B63\u5728\u8BFB\u53D6\u5BA2\u6237\u7AEF\u914D\u7F6E",async()=>nm.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})})},C=(_,N,H)=>{f("\u6B63\u5728\u5199\u5165",()=>zu(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){C(H.client,_.secret);return}f("\u6B63\u5728\u8BFB\u53D6\u53EF\u8DEF\u7531\u7684\u6A21\u578B",async()=>{let $=await Wu(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"})},I=()=>n.name!=="list"?["Esc \u8FD4\u56DE"]:i?["\u2191\u2193 \u79FB\u52A8","Enter \u9009\u7528","/ \u8FC7\u6EE4","r \u5237\u65B0","Esc \u8FD4\u56DE"]:["\u2191\u2193 \u79FB\u52A8","Enter \u64CD\u4F5C","n \u65B0\u5EFA","l \u63A5\u5165\u5730\u5740","/ \u8FC7\u6EE4","r \u5237\u65B0"];return n.name==="created"||n.name==="apply-pick"||n.name==="apply-model"?Se(G,{hints:I(),onEscape:v,children:ti(_n,{flexDirection:"column",children:[g!==null&&Se(Qe,{label:g}),n.name==="created"&&!w&&ti(_n,{flexDirection:"column",children:[Se(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"}),Se(_n,{marginTop:1,children:Se(Bh,{color:u.accent,children:n.secret})}),Se(_n,{marginTop:1,children:Se(ce,{width:t,items:[{value:"apply",label:"\u5199\u5165\u914D\u7F6E"},{value:"back",label:"\u6211\u5DF2\u4FDD\u5B58"}],onSelect:_=>{_==="back"?r({name:"list"}):T(n.token,n.secret)}})})]}),n.name==="apply-pick"&&!w&&Se(oe,{title:"\u5199\u5165\u914D\u7F6E",note:n.token.name,width:t,children:Se(ce,{width:t-ae,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"&&!w&&Se(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}C(n.needs.client,n.secret,N)}})]})}):Se(G,{hints:I(),onEscape:v,children:Se(Q,{state:h,loading:"\u6B63\u5728\u8BFB\u53D6\u4EE4\u724C",width:t,children:({tokens:_,groups:N,site:H})=>{let $=J+Rt+lm(H.apiLines.length),ne=Math.max(Uh,o-(n.name==="list"?$:Fh));return ti(_n,{flexDirection:"column",children:[Se(_n,{flexDirection:"column",marginBottom:J,children:Se(Re,{retain:"list",items:_,width:t,height:ne,isActive:y&&!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=me(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":me(q.quotaLimit,H.quotaPerUsd),rr(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"})}),g!==null&&(n.name==="list"||n.name==="actions"||n.name==="confirm-delete")&&Se(Qe,{label:g}),n.name==="list"&&Se(jh,{lines:H.apiLines,measured:x.phase==="ready"?x.data:null,effective:a??H.apiLines[0],width:t,isActive:y&&i,onPick:E}),n.name==="actions"&&!w&&ti(oe,{title:n.token.name,width:t,children:[Se(Ce,{width:t-ae,items:[["\u5206\u7EC4",n.token.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664"],["\u5DF2\u6D88\u8D39",me(n.token.usedQuota,H.quotaPerUsd)],["\u8D39\u7528\u9650\u5236",n.token.quotaLimit===null?"\u4E0D\u9650":me(n.token.quotaLimit,H.quotaPerUsd)],["\u5BC6\u94A5",rr(n.token.keyPrefix,n.token.keySuffix)]]}),Se(_n,{marginTop:1,children:Se(ce,{width:t-ae,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":me(n.token.quotaLimit,H.quotaPerUsd)},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:q=>P(q,n.token)})})]}),n.name==="create"&&Se(V,{title:"\u521B\u5EFA\u4EE4\u724C",width:t,submitLabel:"\u521B\u5EFA",error:m,busy:w,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:am(N),initial:String(N[0]?.id??""),hint:q=>cm(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 nt=N.find(B=>String(B.id)===q.group);if(nt===void 0){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}let A=sm(q.limit??"",H.quotaPerUsd);if(A==="invalid"){S("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}M(se,nt.id,A)}}),n.name==="rename"&&Se(V,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:m,busy:w,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}f("\u6B63\u5728\u4FDD\u5B58",()=>Jr(n.token.id,{name:se}),{onSuccess:()=>k("\u5DF2\u4FDD\u5B58")})}}),n.name==="regroup"&&Se(V,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:m,busy:w,busyLabel:"\u6B63\u5728\u4FDD\u5B58",fields:[{kind:"select",name:"group",label:"\u5206\u7EC4",options:am(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=>cm(N,q)}],onCancel:v,onSubmit:q=>{let se=N.find(nt=>String(nt.id)===q.group);if(se===void 0){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}f("\u6B63\u5728\u4FDD\u5B58",()=>Jr(n.token.id,{groupId:se.id}),{onSuccess:()=>k("\u5DF2\u4FDD\u5B58")})}}),n.name==="relimit"&&Se(V,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:m,busy:w,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 ${me(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=sm(q.limit??"",H.quotaPerUsd);if(se==="invalid"){S("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}f("\u6B63\u5728\u4FDD\u5B58",()=>Jr(n.token.id,{quotaLimit:se}),{onSuccess:()=>k("\u5DF2\u4FDD\u5B58")})}}),n.name==="confirm-delete"&&!w&&Se(je,{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 js}from"ink";import{jsx as Et,jsxs as qh}from"react/jsx-runtime";var mm=[["\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"]],dm=[["\u70B9\u51FB / \u6EDA\u8F6E","\u9009\u4E2D\u6253\u5F00\u3001\u6EDA\u52A8"],["Option / Alt \u62D6\u9009","\u590D\u5236\u6587\u672C"]],pm=[["\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 fm({width:e,height:t}){let o=e-ae,n=[["\u7248\u672C",`${lt} v${ut}`],["\u672C\u5730\u5B58\u50A8",Ut()]],r=[mm,dm,pm,n],s=(a=>r.reduce((c,l)=>c+rt+a+zl(l.length,o),J*(r.length-1)))(De)<=t?De:0;return qh(mc,{height:t,children:[Et(oe,{title:"\u901A\u7528",width:e,gap:s,children:Et(Ce,{items:mm,width:o})}),Et(js,{marginTop:J,flexDirection:"column",children:Et(oe,{title:"\u9F20\u6807",width:e,gap:s,children:Et(Ce,{items:dm,width:o})})}),Et(js,{marginTop:J,flexDirection:"column",children:Et(oe,{title:"\u6587\u672C\u8F93\u5165",width:e,gap:s,children:Et(Ce,{items:pm,width:o})})}),Et(js,{marginTop:J,flexDirection:"column",children:Et(oe,{title:"\u5173\u4E8E",width:e,gap:s,children:Et(Ce,{items:n,width:o})})})]})}import{jsx as qs}from"react/jsx-runtime";function gm(){let e=D(),{width:t}=j(),o=re();return en(e.pop),qs(Tn,{header:qs(Lr,{trail:["CodeFlow","\u952E\u4F4D\u5E2E\u52A9"],width:t,onBack:e.pop,isActive:!0}),hints:["Esc \u8FD4\u56DE"],children:qs(fm,{width:t,height:o})})}import{Box as hm,Text as Hh}from"ink";import{jsx as Uo,jsxs as Wh}from"react/jsx-runtime";var bm=[{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 ym(){let e=D(),{width:t}=j(),o=Po(0),n=J+1+J+bm.length,r=Pr(t)&&o-Er>=n;return Wh(Tn,{header:r?Uo(Ar,{width:t}):null,hints:["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","? \u5E2E\u52A9","q \u9000\u51FA"],children:[Uo(hm,{marginTop:1,children:Uo(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"})}),Uo(hm,{marginTop:1,children:Uo(ce,{items:bm,width:t,retain:"menu",onSelect:i=>e.push(i)})})]})}import{Box as ni,Text as Cn}from"ink";import{useState as xm}from"react";import{z as ze}from"zod";var zh=ze.object({inviteCode:ze.string(),invitedCount:ze.number(),totalReward:ze.number(),rewards:ze.object({firstInviterPercent:ze.number(),firstInviteePercent:ze.number(),subsequentInviterPercent:ze.number()}),items:ze.array(ze.object({id:ze.number().int(),rewardType:ha,rewardQuota:ze.number(),rewardQuotaReversed:ze.number(),inviterUsername:ze.string(),inviteeUsername:ze.string(),createdAt:ze.string()}))}),Sm=()=>O(zh,"/invite");import{jsx as Ke,jsxs as oi}from"react/jsx-runtime";var Gh=Je(xi,er,"\u5168\u90E8\u7C7B\u578B"),Tm=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 wm(){let e=D(),{width:t}=j(),o=re(),[n,r]=xm("main"),[i,s]=xm(""),a=Y([e.revision],async()=>{let[l,d]=await Promise.all([Sm(),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(Q,{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:b=>{s(b.type??""),r("main")}});let g=t-ae,m=Vh(l.rewards),p=i===""?l.items:l.items.filter(b=>b.rewardType===i),S=b=>wn(2,t)+J+rt+b+2+J+rt+b+m.length+J+rt+b,f=o-S(De)>=Tm?De:0,h=Math.max(Tm,o-S(f));return oi(ni,{flexDirection:"column",children:[Ke(at,{width:t,tiles:[{label:"\u5DF2\u9080\u8BF7\u4EBA\u6570",value:Me(l.invitedCount)},{label:"\u7D2F\u8BA1\u5956\u52B1\u989D\u5EA6",value:me(l.totalReward,d.quotaPerUsd)}]}),Ke(ni,{marginTop:1,flexDirection:"column",children:oi(oe,{title:"\u6211\u7684\u9080\u8BF7",width:t,gap:f,children:[oi(Cn,{wrap:"truncate",children:[Ke(Cn,{color:u.mutedForeground,children:"\u6211\u7684\u9080\u8BF7\u7801 "}),Ke(Cn,{color:u.accent,children:l.inviteCode})]}),oi(Cn,{wrap:"truncate",children:[Ke(Cn,{color:u.mutedForeground,children:"\u9080\u8BF7\u94FE\u63A5 "}),Ke(Cn,{color:u.accent,children:`${e.ctx.site}/register?invite=${l.inviteCode}`})]})]})}),Ke(ni,{marginTop:1,flexDirection:"column",children:Ke(oe,{title:"\u5956\u52B1\u89C4\u5219",width:t,gap:f,children:m.map((b,x)=>Ke(Cn,{wrap:"truncate",color:u.mutedForeground,children:b},x))})}),Ke(ni,{marginTop:1,flexDirection:"column",children:Ke(oe,{title:"\u9080\u8BF7\u5956\u52B1\u8BB0\u5F55",note:i===""?void 0:er(i),width:t,gap:f,children:Ke(Re,{retain:"list",items:p,width:g,height:h,columns:[{label:"\u65F6\u95F4"},{label:"\u597D\u53CB",shrink:!0},{label:"\u5956\u52B1\u7C7B\u578B"},{label:"\u5956\u52B1\u989D\u5EA6",align:"right"}],row:b=>{let x=b.rewardQuota-b.rewardQuotaReversed,w=b.rewardQuotaReversed>0?`\u9000\u6B3E\u51B2\u51CF -${me(b.rewardQuotaReversed,d.quotaPerUsd)}`:"";return[ee(b.createdAt),b.rewardType==="first_invitee"?b.inviterUsername:b.inviteeUsername,er(b.rewardType),Oe([me(x,d.quotaPerUsd),w])]},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 Lm}from"react";import{z as be}from"zod";var Kh=be.object({id:be.number().int(),orderNo:be.string(),amountCny:be.number().int()}),km=()=>O(be.array(Kh),"/invoices/eligible-orders"),Hs=be.object({id:be.number().int(),type:yi,title:be.string(),taxId:be.string().nullable(),email:be.string(),remark:be.string().nullable(),amountCny:be.number().int(),status:da,rejectReason:be.string().nullable(),rejectedAt:be.string().nullable(),issuedAt:be.string().nullable(),createdAt:be.string()}),Jh=Hs.extend({orders:be.array(be.object({orderNo:be.string(),amountCny:be.number().int()}))}),vm=()=>O(be.array(Hs),"/invoices"),Rm=e=>O(Jh,`/invoices/${e}`),_m=e=>O(Hs,"/invoices",{method:"POST",json:e}),Ws=be.object({id:be.number().int(),type:yi,title:be.string(),taxId:be.string().nullable(),email:be.string()}),ri=()=>O(be.array(Ws),"/invoices/profiles"),Cm=e=>O(Ws,"/invoices/profiles",{method:"POST",json:e}),Em=(e,t)=>O(Ws,`/invoices/profiles/${e}`,{method:"PATCH",json:t}),Pm=e=>O(ye,`/invoices/profiles/${e}`,{method:"DELETE"}).then(()=>{});import{Box as Yh,Text as En,useInput as Qh}from"ink";import{useEffect as Xh,useState as Zh}from"react";import{jsx as jo,jsxs as zs}from"react/jsx-runtime";var eb="[x]",tb="[ ]",Am=4,ii=2,Nm=2;function Im({items:e,columns:t,row:o,selected:n,onToggle:r,onToggleAll:i,onSubmit:s,width:a,height:c,emptyLabel:l}){let[d,g]=Zh(0),m=Math.max(1,c-1),p=e.length>m?Math.max(1,m-1):m;Xh(()=>{g(y=>Math.min(y,Math.max(0,e.length-1)))},[e.length]);let S=Zi(d,p),f=y=>{e.length!==0&&g(k=>(k+y+e.length)%e.length)};Qh((y,k)=>{if(k.upArrow){f(-1);return}if(k.downArrow){f(1);return}if(k.return){s();return}y===" "&&e.length>0&&r(d)}),z(y=>{if(y==="k"){f(-1);return}if(y==="j"){f(1);return}y==="a"&&i()});let h=y=>{let k=S+y-1;return k>=0&&k<e.length?k:null},b=$e({onWheel:f,onClick:({row:y})=>{let k=h(y);k!==null&&(g(k),r(k))},onHover:({row:y})=>{let k=h(y);k!==null&&g(k)}}),x=us(t,e.map(y=>o(y)),a-ii-Am),w=e.slice(S,S+p);return zs(Yh,{ref:b,flexDirection:"column",children:[zs(En,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(ii+Am),t.map((y,k)=>y.align==="right"?Nt(y.label,x[k]??0):Pe(y.label,x[k]??0)).join(" ".repeat(Nm))]}),e.length===0?jo(En,{color:u.faintForeground,children:`${" ".repeat(ii)}${l}`}):w.map((y,k)=>{let E=S+k,M=E===d,F=n.has(E),T=M?u.accent:u.foreground,C=o(y);return zs(En,{wrap:"truncate",children:[jo(En,{color:u.accent,children:M?`${X.cursor} `:" "}),jo(En,{color:F?u.accent:T,bold:M,children:`${F?eb:tb} `}),t.map((R,P)=>{let v=R.align==="right"?Nt(C[P]??"",x[P]??0):Pe(C[P]??"",x[P]??0);return jo(En,{color:T,bold:M,children:P>0?`${" ".repeat(Nm)}${v}`:v},R.label)})]},E)}),(S>0||S+p<e.length)&&jo(En,{color:u.faintForeground,children:`${" ".repeat(ii)}${S+1}-${Math.min(S+p,e.length)} / ${e.length}`})]})}function si(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 ai=e=>[{kind:"select",name:"type",label:"\u7C7B\u578B",options:[{value:"general",label:po("general")},{value:"special",label:po("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 to}from"react/jsx-runtime";function Mm(){let e=D(),{width:t}=j(),o=re(),[n,r]=Lm({name:"pick"}),[i,s]=Lm(new Set),{busy:a,error:c,reset:l,fail:d,run:g}=ge(),m=Y([e.revision],async()=>{let[f,h]=await Promise.all([km(),ri()]);return{orders:f,profiles:h}});z(f=>{n.name==="pick"&&f==="r"&&e.reload()});let p=()=>{n.name==="pick"?e.pop():n.name==="preset"?r({name:"pick"}):(l(),r({name:"pick"}))},S=(f,h)=>{let b=si(h,d);if(b===null)return;let x=(h.remark??"").trim(),w=f.filter(y=>i.has(y.id)).map(y=>y.id);g("\u6B63\u5728\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7",()=>_m({orderIds:w,...b,remark:x===""?null:x}),{onSuccess:()=>{e.toast("ok","\u5DF2\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7"),e.pop()}})};return to(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:to(Q,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u53EF\u5F00\u7968\u8BA2\u5355",width:t,children:({orders:f,profiles:h})=>{if(n.name==="pick")return f.length===0?to(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"}):to(Im,{items:f,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(f.flatMap((x,w)=>i.has(x.id)?[w]:[])),onToggle:x=>{let w=f[x]?.id;w!==void 0&&s(y=>{let k=new Set(y);return k.has(w)?k.delete(w):k.add(w),k})},onToggleAll:()=>s(x=>f.every(w=>x.has(w.id))?new Set:new Set(f.map(w=>w.id))),onSubmit:()=>{if(!f.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(w=>({value:{kind:"profile",profile:w},label:`${fn(w.type)} \xB7 ${w.title}`,hint:w.email})),{heading:""},{value:{kind:"manual"},label:"\u624B\u52A8\u586B\u5199",hint:"\u4E0D\u5957\u7528\u5E38\u7528\u4FE1\u606F"}];return to(ce,{items:x,width:t,height:o,onSelect:w=>{w.kind==="manual"?r({name:"identity",preset:null}):r({name:"identity",preset:w.profile})}})}let b=n.preset;return to(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:[...ai(b),{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(f,x)})}})})}import{Box as Gs}from"ink";import{useState as nb}from"react";import{jsx as Kt,jsxs as Om}from"react/jsx-runtime";var ob=8,rb=3;function Dm(){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=Y([e.revision],ri),g=i!==null,m=n.name==="list"&&!g;z(S=>{S==="r"?e.reload():S==="n"&&r({name:"create"})},m);let p=()=>{n.name==="list"?e.pop():(a(),r({name:"list"}))};return Kt(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:Kt(Q,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u5E38\u7528\u5F00\u7968\u4FE1\u606F",width:t,children:S=>{let f=n.name==="list"?o:Math.max(rb,o-ob);return Om(Gs,{flexDirection:"column",children:[Kt(Gs,{marginBottom:n.name==="list"?0:1,children:Kt(Re,{retain:"list",items:S,width:t,height:f,isActive:m,columns:[{label:"\u7C7B\u578B"},{label:"\u62AC\u5934",shrink:!0},{label:"\u7A0E\u53F7"},{label:"\u90AE\u7BB1"}],row:h=>[fn(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"&&!g&&Om(oe,{title:n.profile.title,width:t,children:[Kt(Ce,{width:t-ae,items:[["\u7C7B\u578B",po(n.profile.type)],["\u7A0E\u53F7",n.profile.taxId??"\u2014"],["\u90AE\u7BB1",n.profile.email]]}),Kt(Gs,{marginTop:1,children:Kt(ce,{width:t-ae,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")&&Kt(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:g,busyLabel:i??"\u6B63\u5728\u4FDD\u5B58",error:s,fields:ai(n.name==="edit"?n.profile:null),onCancel:p,onSubmit:h=>{let b=si(h,c);if(b===null)return;let x=n.name==="edit"?()=>Em(n.profile.id,b):()=>Cm(b);l("\u6B63\u5728\u4FDD\u5B58",x,{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u4FDD\u5B58")}})}}),n.name==="confirm-delete"&&Kt(je,{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",()=>Pm(n.profile.id),{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u5220\u9664")}}),onCancel:p})]})}})})}import{Box as Vs,Text as ci}from"ink";import{useState as ib}from"react";import{jsx as tt,jsxs as $m}from"react/jsx-runtime";var sb=Je(bi,Xo,"\u5168\u90E8\u72B6\u6001");function ab({id:e,width:t}){let o=D(),n=Y([e,o.revision],()=>Rm(e)),r=t-ae;return tt(Q,{state:n,loading:"\u6B63\u5728\u8BFB\u53D6\u53D1\u7968\u8BE6\u60C5",width:t,children:i=>{let s=Xo(i.status),a=He(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 $m(oe,{title:i.title,note:jt(i.createdAt),width:t,children:[$m(ci,{wrap:"truncate",children:[tt(ci,{color:u.mutedForeground,children:fn(i.type)}),tt(ci,{color:a===void 0?u.mutedForeground:Be[a],children:` ${s.label}`})]}),tt(Vs,{marginTop:1,children:tt(at,{width:r,maxPerRow:2,tiles:[{label:"\u91D1\u989D",value:he(i.amountCny)},{label:"\u5173\u8054\u8BA2\u5355",value:`${i.orders.length} \u7B14`}]})}),tt(Vs,{marginTop:1,children:tt(Ce,{width:r,items:c})}),tt(Vs,{marginTop:1,flexDirection:"column",children:i.orders.map(l=>tt(ci,{wrap:"truncate",color:u.faintForeground,children:Oe([l.orderNo,he(l.amountCny)])},l.orderNo))})]})}})}function Bm(){let e=D(),{width:t}=j(),o=re(),[n,r]=ib({name:"list"}),[i,s]=Ge("status",()=>""),a=Y([e.revision],vm);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 tt(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:tt(Q,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u5F00\u7968\u8BB0\u5F55",width:t,children:l=>{if(n.name==="filter")return tt(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:g=>{s(g.status??""),r({name:"list"})}});if(n.name==="detail")return tt(ab,{id:n.id,width:t});let d=i===""?l:l.filter(g=>g.status===i);return tt(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:g=>[jt(g.createdAt),g.title,fn(g.type),he(g.amountCny),Wt(Xo(g.status))],searchOf:g=>g.title,onOpen:g=>r({name:"detail",id:g.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 Fm}from"react";import{jsx as no,jsxs as ub}from"react/jsx-runtime";var lb=Je(Si,Mi,"\u5168\u90E8\u7C7B\u578B");function Um(){let e=D(),{width:t}=j(),o=re(),[n,r]=Fm("list"),[i,s]=Fm(""),a=Y([e.revision],()=>ke(e.ctx.site)),c=Xn([e.revision,i],(g,m)=>wu({page:g,pageSize:m,...i===""?{}:{type:i}}),{retain:"page"}),l=n==="list";z((g,m)=>{l&&(g==="r"?e.reload():g==="f"?r("filter"):m.leftArrow?c.go(-1):m.rightArrow&&c.go(1))});let d=()=>{n==="list"?e.pop():r("list")};return no(G,{hints:l?["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:d,children:no(Q,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:g=>n==="filter"?no(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")}}):no(Q,{state:c.state,loading:"\u6B63\u5728\u8BFB\u53D6\u989D\u5EA6\u6D41\u6C34",width:t,children:m=>ub(cb,{flexDirection:"column",children:[no(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=jn(p.amount,g.quotaPerUsd);return[ee(p.createdAt),Mi(p.type),{text:p.amount>=0?`+${S}`:S,tone:p.amount>=0?"success":"danger"},me(p.balanceAfter,g.quotaPerUsd),Oe([Ua(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}),no(Zn,{page:c.page,pages:c.pages,total:c.total,width:t})]})})})})}import{Box as Vm}from"ink";import{useState as mb}from"react";import{z as Ks}from"zod";var qo={recharge:"/recharge",subscription:"/subscriptions"};function jm(e){return e==="recharge"?uo:mo}var li=(e,t)=>O(jm(e),`${qo[e]}/orders/${t}`),qm=(e,t)=>O(Ks.object({order:jm(e),qrCode:Ks.string()}),`${qo[e]}/orders/${t}/pay`,{method:"POST"}),Hm=(e,t)=>O(Ks.array(Ma),`${qo[e]}/orders/${t}/refunds`),Wm=(e,t,o)=>O(ye,`${qo[e]}/orders/${t}/refund-request`,{method:"POST",json:{reason:o}}).then(()=>{}),zm=(e,t)=>O(ye,`${qo[e]}/orders/${t}/refund-request/cancel`,{method:"POST"}).then(()=>{});import{Box as ui,Text as Ft}from"ink";import{jsx as bt,jsxs as Ho}from"react/jsx-runtime";function Gm({order:e,refunds:t,quotaPerUsd:o,width:n}){let r=n-ae,i=Xt(e.status),s=He(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",me(e.refundedQuota,o)]),e.pendingRefundCny>0&&a.push(["\u5F85\u786E\u8BA4\u9000\u6B3E",he(e.pendingRefundCny)]),Ho(oe,{title:e.kind==="recharge"?"\u5145\u503C":e.planName,note:e.orderNo,width:n,children:[Ho(Ft,{wrap:"truncate",children:[bt(Ft,{color:s===void 0?u.mutedForeground:Be[s],children:i.label}),e.kind==="subscription"&&bt(Ft,{color:u.faintForeground,children:` ${e.renewal?"\u7EED\u8D39":"\u65B0\u8D2D"}`})]}),bt(ui,{marginTop:1,children:bt(at,{width:r,maxPerRow:2,tiles:e.kind==="recharge"?[{label:"\u91D1\u989D",value:he(e.amountCny)},{label:"\u5230\u8D26\u989D\u5EA6",value:me(e.quota,o)}]:[{label:"\u91D1\u989D",value:he(e.amountCny)},{label:"\u8BA2\u9605\u65F6\u957F",value:`${e.grantedDurationDays} \u5929`}]})}),bt(ui,{marginTop:1,children:bt(Ce,{width:r,items:a})}),t!==null&&Ho(ui,{marginTop:1,flexDirection:"column",children:[bt(Ft,{color:u.mutedForeground,children:"\u9000\u6B3E\u8BB0\u5F55"}),t.length===0?bt(Ft,{color:u.faintForeground,children:"\u6682\u65E0\u9000\u6B3E\u8BB0\u5F55"}):t.map(c=>{let l=ja(c.status),d=He(l);return Ho(ui,{flexDirection:"column",children:[Ho(Ft,{wrap:"truncate",children:[bt(Ft,{color:u.foreground,children:he(c.amountCny)}),bt(Ft,{color:d===void 0?u.mutedForeground:Be[d],children:` ${l.label}`}),bt(Ft,{color:u.faintForeground,children:` ${ee(c.createdAt)}`})]}),(c.reason!==null||c.rejectReason!==null||c.refundTradeNo!==null)&&bt(Ft,{wrap:"truncate",color:u.faintForeground,children:` ${Oe([c.reason??"",c.rejectReason===null?"":`\u9A73\u56DE\uFF1A${c.rejectReason}`,c.refundTradeNo??""])}`})]},c.id)})]})]})}import{jsx as Pn,jsxs as pb}from"react/jsx-runtime";var db=new Set(["pending","expired","failed"]);function mi(e){let t=Xt(e.status);return e.pendingRefundCny>0?{badge:`${t.label}\uFF08\u5F85\u786E\u8BA4 ${he(e.pendingRefundCny)}\uFF09`,badgeTone:"warning"}:{badge:t.label,badgeTone:He(t)}}function oo(e,t,o){return e.kind==="recharge"?{kind:"recharge",orderNo:e.orderNo,qrCode:t,amountCny:e.amountCny,summary:[`\u5230\u8D26\u989D\u5EA6 ${me(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 Km({params:e}){let t=D(),{width:o}=j(),[n,r]=mb("main"),{busy:i,error:s,reset:a,fail:c,run:l}=ge(),d=Y([e.kind,e.orderNo,t.revision],async()=>{let[f,h]=await Promise.all([li(e.kind,e.orderNo),ke(t.ctx.site)]),b=db.has(f.status)?null:await Hm(e.kind,e.orderNo);return{order:{kind:e.kind,...f},refunds:b,site:h}});z(f=>{n==="main"&&i===null&&f==="r"&&t.reload()});let g=()=>{n==="main"?t.pop():(a(),r("main"))},m=f=>{l("\u6B63\u5728\u62C9\u8D77\u652F\u4ED8",()=>qm(e.kind,e.orderNo),{onSuccess:({order:h,qrCode:b})=>{t.push("pay",oo({kind:e.kind,...h},b,f.quotaPerUsd))}})},p=f=>{l("\u6B63\u5728\u63D0\u4EA4\u9000\u6B3E\u7533\u8BF7",()=>Wm(e.kind,e.orderNo,f),{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",()=>zm(e.kind,e.orderNo),{onSuccess:()=>{r("main"),t.reload(),t.toast("ok","\u5DF2\u64A4\u9500\u9000\u6B3E\u7533\u8BF7")}})};return Pn(G,{trail:["\u8BA2\u5355\u8BE6\u60C5"],hints:n==="main"?["\u2191\u2193 \u79FB\u52A8","Enter \u6267\u884C","r \u5237\u65B0"]:[],onEscape:g,children:Pn(Q,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u5355",width:o,children:({order:f,refunds:h,site:b})=>{if(n==="refund")return Pn(V,{title:`\u7533\u8BF7\u9000\u6B3E \u2014 ${f.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:[...Ui[e.kind].map(w=>({value:w,label:w})),{value:"other",label:"\u5176\u4ED6"}],initial:Ui[e.kind][0],hint:Va[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:g,onSubmit:w=>{let y=w.reason??"",k=y==="other"?(w.custom??"").trim():y;if(k===""){c("\u8BF7\u586B\u5199\u5177\u4F53\u8BF4\u660E");return}p(k)}});if(n==="confirm-cancel")return Pn(je,{width:o,title:"\u64A4\u9500\u9000\u6B3E\u7533\u8BF7",detail:`\u786E\u8BA4\u64A4\u9500\u8BA2\u5355 ${f.orderNo} \u7684\u9000\u6B3E\u7533\u8BF7\uFF1F${f.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:g});let x=[];return f.status==="pending"&&x.push({value:"pay",label:"\u7EE7\u7EED\u652F\u4ED8",hint:"\u91CD\u65B0\u62C9\u8D77\u652F\u4ED8\u5B9D\u4E8C\u7EF4\u7801"}),f.status==="refund_requested"&&x.push({value:"cancel-refund",label:"\u64A4\u9500\u7533\u8BF7",hint:"\u9000\u6B3E\u5C1A\u672A\u5BA1\u6838\uFF0C\u53EF\u64A4\u56DE"}),Oa(f)&&x.push({value:"refund",label:"\u7533\u8BF7\u9000\u6B3E",labelTone:"danger"}),pb(Vm,{flexDirection:"column",children:[Pn(Gm,{order:f,refunds:h,quotaPerUsd:b.quotaPerUsd,width:o}),x.length>0&&i===null&&Pn(Vm,{marginTop:1,children:Pn(ce,{width:o,items:x,retain:"menu",onSelect:w=>{a(),w==="pay"?m(b):r(w==="refund"?"refund":"confirm-cancel")}})})]})}})})}import{useRef as yb,useState as td}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 Jm(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 Ym,Text as An}from"ink";import{Fragment as bb,jsx as ct,jsxs as Qm}from"react/jsx-runtime";var Xm={columns:20,rows:2};function Zm(e,t,o){return $r(e,t,Xm,o)}function ed({phase:e,qrCode:t,amountCny:o,summary:n,paidNote:r,expiredNote:i,pollError:s,width:a,layout:c}){let l=s===null?ct(Qe,{label:"\u7B49\u5F85\u652F\u4ED8\u5230\u8D26\u2026"}):ct(An,{wrap:"truncate",color:Be.warning,children:`\u67E5\u8BE2\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u8BD5\uFF1A${s}`});if(e==="paid")return ct(fe,{tone:"ok",width:a,title:"\u652F\u4ED8\u6210\u529F\uFF01",detail:r});if(e==="expired")return ct(fe,{tone:"warn",width:a,title:"\u8BA2\u5355\u5DF2\u8D85\u65F6",detail:i});if(!c.fits)return Qm(Ym,{flexDirection:"column",children:[ct(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`}),ct(An,{color:u.accent,children:t}),ct(Ym,{marginTop:1,children:ct(An,{bold:!0,color:u.foreground,children:he(o)})}),l]});let d=c.asideRows-Xm.rows,g=d>=1,m=d>=2,p=d>=2+n.length;return ct(Br,{value:t,aside:Qm(bb,{children:[m&&ct(An,{bold:!0,color:u.foreground,children:"\u626B\u7801\u652F\u4ED8"}),ct(An,{bold:!0,color:u.foreground,children:he(o)}),g&&ct(An,{color:u.mutedForeground,children:"\u8BF7\u4F7F\u7528\u652F\u4ED8\u5B9D\u626B\u4E00\u626B\u5B8C\u6210\u652F\u4ED8"}),p&&n.map((S,f)=>ct(An,{wrap:"truncate",color:u.mutedForeground,children:S},f)),l]})})}import{jsx as nd}from"react/jsx-runtime";var Sb=5,xb=2e3;function od({params:e}){let t=D(),{width:o,columns:n,rows:r}=j(),i=Po(0),[s,a]=td("waiting"),[c,l]=td(null),d=yb(0);jr(xb,async()=>{let p;try{p=await li(e.kind,e.orderNo)}catch(S){l(Ue(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"||Jm(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 g=Zm(e.qrCode,{width:o,rows:i},{columns:n-o,rows:r-i}),m=s==="waiting"&&g.fits;return nd(G,{trail:["\u626B\u7801\u652F\u4ED8"],bleed:m,hints:s==="waiting"?["c \u590D\u5236\u94FE\u63A5"]:[],children:nd(ed,{phase:s,qrCode:e.qrCode,amountCny:e.amountCny,summary:e.summary,paidNote:e.paidNote,expiredNote:e.expiredNote,pollError:c,width:o,layout:g})})}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()}),rd=()=>O(Pt.array(Tb),"/recharge-packages"),wb=Pt.object({order:uo,qrCode:Pt.string()}),id=e=>O(wb,"/recharge/orders",{method:"POST",json:e}),sd=()=>O(Pt.array(uo),"/recharge/orders");import{jsx as ro}from"react/jsx-runtime";var vb=Je(so,Xt,"\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 ${me(e.quota,t)}`}function ad(){let e=D(),{width:t}=j(),o=re(),[n,r]=kb({name:"menu"}),[i,s]=Ge("status",()=>""),{busy:a,error:c,reset:l,fail:d,run:g}=ge(),m=Y([e.revision],async()=>{let[f,h,b]=await Promise.all([rd(),Qr(e.ctx.site),sd()]);return{packages:f,pricing:h,orders:b}});z(f=>{n.name==="menu"&&(f==="r"?e.reload():f==="f"&&r({name:"filter"}))});let p=()=>{n.name==="menu"?e.pop():(l(),r({name:"menu"}))},S=(f,h)=>{g("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>id(f),{onSuccess:({order:b,qrCode:x})=>{r({name:"menu"}),e.push("pay",oo({kind:"recharge",...b},x,h))}})};return ro(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:ro(Q,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u5145\u503C\u5957\u9910",width:t,children:({packages:f,pricing:h,orders:b})=>{if(n.name==="confirm")return ro(je,{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 ro(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:y=>{let k=Number((y.yuan??"").trim()),E=$i(k);if(!Number.isFinite(k)||E<$i(h.minTopupCny)||E>_i){d(`\u8BF7\u8F93\u5165 ${h.minTopupCny} \u5230 ${Ha(_i)} \u5143\u4E4B\u95F4\u7684\u91D1\u989D`);return}S({amountCny:E},h.quotaPerUsd)}});if(n.name==="filter")return ro(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:y=>{s(y.status??""),r({name:"menu"})}});let x=i===""?b:b.filter(y=>y.status===i),w=[{heading:"\u5145\u503C\u5957\u9910"},...f.map(y=>({value:{kind:"pkg",pkg:y},label:y.name,hint:Rb(y,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(y=>({value:{kind:"order",orderNo:y.orderNo},label:he(y.amountCny),...mi(y),hint:`${ee(y.createdAt)} \xB7 \u5230\u8D26\u989D\u5EA6 ${me(y.quota,h.quotaPerUsd)}`}))];return ro(ce,{items:w,width:t,height:o,retain:"menu",onSelect:y=>{l(),y.kind==="custom"?r({name:"custom"}):y.kind==="order"?e.push("order",{kind:"recharge",orderNo:y.orderNo}):y.kind==="pkg"&&r({name:"confirm",pkg:y.pkg})}})}})})}import{Box as Jt,Text as Wo}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)}))}),cd=()=>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()}))}),ld=()=>O(te.array(Eb),"/subscription-plans"),ud=te.object({order:mo,qrCode:te.string()}),md=e=>O(ud,"/subscriptions/orders",{method:"POST",json:e}),dd=e=>O(ud,`/subscriptions/${e}/renew`,{method:"POST"}),pd=()=>O(te.array(mo),"/subscriptions/orders"),fd=e=>O(te.object({fallbackToBalance:te.boolean()}),"/subscriptions/preference",{method:"PUT",json:e});import{jsx as ve,jsxs as Nn}from"react/jsx-runtime";var Nb=Je(so,Xt,"\u5168\u90E8\u72B6\u6001"),Ib=3;function Lb({win:e,quotaPerUsd:t,width:o}){let n=Bi(e),r=za(e.durationMinutes),i=`\u5DF2\u7528 ${n}% ${X.bullet} ${me(e.used,t)} / ${me(e.quota,t)}`;return Nn(Jt,{flexDirection:"column",children:[Nn(Wo,{wrap:"truncate",children:[ve(Wo,{color:u.foreground,children:r}),ve(Wo,{color:n>=100?u.danger:u.mutedForeground,children:Nt(i,Math.max(0,o-Ab(r)))})]}),ve(Wl,{used:e.used,total:e.quota,width:o}),ve(Wo,{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(Bi))}% \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 gd(){let e=D(),{width:t}=j(),o=re(),[n,r]=Pb({name:"menu"}),[i,s]=Ge("status",()=>""),{busy:a,error:c,reset:l,run:d}=ge(),g=Y([e.revision],async()=>{let[h,b,x,w]=await Promise.all([cd(),ld(),pd(),ke(e.ctx.site)]);return{mine:h,plans:b,orders:x,site:w}});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",()=>fd({fallbackToBalance:!h}),{failToast:!0,onSuccess:()=>{e.reload(),e.toast("ok","\u504F\u597D\u5DF2\u4FDD\u5B58")}})},S=(h,b)=>{d("\u6B63\u5728\u521B\u5EFA\u7EED\u8D39\u8BA2\u5355",()=>dd(h.id),{onSuccess:({order:x,qrCode:w})=>{r({name:"menu"}),e.push("pay",oo({kind:"subscription",...x},w,b.quotaPerUsd))}})},f=(h,b)=>{d("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>md({planId:h.id}),{onSuccess:({order:x,qrCode:w})=>{r({name:"menu"}),e.push("pay",oo({kind:"subscription",...x},w,b.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(Q,{state:g,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u9605",width:t,children:({mine:h,plans:b,orders:x,site:w})=>{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 y=n.name==="sub"||n.name==="confirm-renew"?h.subscriptions.find(v=>v.id===n.id):void 0,k=n.name==="plan"||n.name==="confirm-buy"?b.find(v=>v.id===n.id):void 0,E=k?.description??"";if((n.name==="sub"||n.name==="confirm-renew")&&y===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")&&k===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"&&y!==void 0)return ve(je,{width:t,title:`\u786E\u8BA4\u7EED\u8D39\u300C${y.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(y,w),onCancel:m});if(n.name==="confirm-buy"&&k!==void 0)return ve(je,{width:t,title:`\u786E\u8BA4\u8BA2\u9605\u300C${k.name}\u300D\uFF08${he(k.priceCny)} / ${k.durationDays} \u5929\uFF09\uFF1F`,confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>f(k,w),onCancel:m});let M=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 I=Fi(v);return{value:{kind:"sub",id:v.id},label:v.planName,badge:I.label,badgeTone:He(I),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"},...b.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}]:b.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"},...M.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}]:M.map(v=>({value:{kind:"order",orderNo:v.orderNo},label:`${v.planName}${v.renewal?"\uFF08\u7EED\u8D39\uFF09":""}`,...mi(v),hint:`${ee(v.createdAt)} \xB7 ${he(v.amountCny)}`}))],T=n.name==="sub"&&y!==void 0?Ob(y):n.name==="plan"&&k!==void 0?Db(k):0,C=T===0?o:o-T>=Ib?o-T:0,R=t-ae,P=n.name==="menu"&&a===null;return Nn(Jt,{flexDirection:"column",children:[C>0&&ve(ce,{items:F,width:t,height:C,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"&&y!==void 0&&Nn(Jt,{marginTop:C>0?J:0,flexDirection:"column",children:[Nn(oe,{title:y.planName,note:y.revokedAt!==null?`${ee(y.revokedAt)} \u4F5C\u5E9F`:`${ee(y.expiresAt)} \u5230\u671F`,width:t,children:[ve(Ce,{width:R,items:[["\u72B6\u6001",Fi(y).label],["\u8986\u76D6\u5206\u7EC4",y.groupNames.join("\u3001")],["\u751F\u6548\u65F6\u95F4",ee(y.startsAt)]]}),ve(Jt,{marginTop:1,flexDirection:"column",children:y.windows.map((v,I)=>ve(Jt,{marginTop:I===0?0:1,flexDirection:"column",children:ve(Lb,{win:v,quotaPerUsd:w.quotaPerUsd,width:R})},v.windowId))})]}),y.renewable&&a===null&&ve(Jt,{marginTop:J,children:ve(ce,{width:t,items:[{value:"renew",label:"\u7EED\u8D39"}],onSelect:()=>r({name:"confirm-renew",id:y.id})})})]}),n.name==="plan"&&k!==void 0&&Nn(Jt,{marginTop:C>0?J:0,flexDirection:"column",children:[Nn(oe,{title:k.name,note:`${he(k.priceCny)} / ${k.durationDays} \u5929`,width:t,children:[E!==""&&ve(Wo,{wrap:"truncate",color:u.mutedForeground,children:E}),ve(Jt,{marginTop:E===""?0:De,children:ve(Ce,{width:R,items:[["\u8986\u76D6\u5206\u7EC4",k.groupNames.join("\u3001")],...Ga(k,w.quotaPerUsd).map((v,I)=>[I===0?"\u7528\u91CF\u7A97\u53E3":"",v])]})})]}),a===null&&ve(Jt,{marginTop:J,children:ve(ce,{width:t,items:[{value:"subscribe",label:k.enabled?"\u8BA2\u9605":"\u5DF2\u505C\u552E",disabled:!k.enabled}],onSelect:()=>r({name:"confirm-buy",id:k.id})})})]})]})}})})}import{jsx as we}from"react/jsx-runtime";var hd={home:{render:()=>we(ym,{})},help:{render:()=>we(gm,{})},login:{render:()=>we(bu,{})},register:{render:()=>we(yu,{})},forgot:{render:()=>we(pu,{})},agreement:{render:e=>we(au,{params:e})},tokens:{render:()=>we(um,{})},logs:{render:()=>we(Fu,{})},usage:{render:()=>we(Iu,{})},ledger:{render:()=>we(Um,{})},subscription:{render:()=>we(gd,{})},models:{render:()=>we(qu,{})},recharge:{render:()=>we(ad,{})},order:{render:e=>we(Km,{params:e})},pay:{render:e=>we(od,{params:e})},invoices:{render:()=>we(Bm,{})},"invoice-apply":{render:()=>we(Mm,{})},"invoice-profiles":{render:()=>we(Dm,{})},invite:{render:()=>we(wm,{})},tickets:{render:()=>we(su,{})},ticket:{render:e=>we(ru,{params:e})},announcements:{render:()=>we(cl,{})},"announce-gate":{render:e=>we(nl,{params:e}),lockNav:!0},profile:{render:()=>we(Kl,{})}};function bd(e){return hd[e].lockNav===!0}function yd(e){let t=hd[e.id].render;return t(e.params)}import{jsx as In,jsxs as Jb}from"react/jsx-runtime";function jb(){let e=D(),{rows:t}=j(),o=dr(),n=bd(e.current.id)||o,r=e.depth===1&&gr(e.current.id)&&Tt().session===null;return Js(()=>{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())}),In($b,{flexDirection:"column",height:Math.max(1,t),paddingX:1,paddingTop:1,overflow:"hidden",children:yd(e.current)})}function qb(){let e=D(),t=Y([e.revision],async()=>{if(e.gate.announcementsChecked||Tt().session===null)return[];let o=await cr().catch(()=>null);return o===null?[]:(e.gate.announcementsChecked=!0,o)});return Js(()=>{if(t.phase!=="ready"||e.gate.announcementsShown)return;let o=t.data.filter(n=>!n.read);o.length!==0&&(e.gate.announcementsShown=!0,e.push("announce-gate",{items:o}))}),null}function Hb(){let e=D(),t=Ub(!1);return Js(()=>{t.current||(t.current=!0,sc().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${Ue(o)}`)))}),null}function Wb({ctx:e,mouse:t}){return In(kc,{subscribe:t.subscribe,children:In(fc,{children:Jb(Ec,{ctx:e,children:[In(Hb,{}),In(qb,{}),In(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 Sd(e){let t=Tc(process.stdin,process.stdout);try{await Bb(In(Wb,{ctx:e,mouse:t}),{exitOnCtrlC:!0,alternateScreen:!0,stdin:t.stdin,stdout:Kb(process.stdout)}).waitUntilExit()}finally{t.dispose()}}var Zb=`${lt} v${ut} \u2014 CodeFlow \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF
13
13
 
14
14
  \u7528\u6CD5
15
15
  ${lt} \u8FDB\u5165\u4EA4\u4E92\u754C\u9762
16
16
  ${lt} help \u67E5\u770B\u672C\u8BF4\u660E
17
17
  ${lt} update \u68C0\u67E5\u5E76\u5B89\u88C5\u65B0\u7248\u672C
18
18
  ${lt} uninstall \u9000\u51FA\u767B\u5F55\u3001\u5220\u9664\u672C\u5730\u6587\u4EF6\u5E76\u5378\u8F7D\u672C\u7A0B\u5E8F
19
- `;async function ey(){let e;try{({positionals:e}=Xb({args:process.argv.slice(2),allowPositionals:!0,options:{}}))}catch(o){throw new U(Ue(o),{hint:`\u8FD0\u884C ${lt} help \u67E5\u770B\u7528\u6CD5`,exitCode:mi})}let[t]=e;if(t==="help")return process.stdout.write(Zb),ro;if(t==="update")return ty();if(t==="uninstall")return ny();if(t!==void 0)throw new U(`\u672A\u77E5\u547D\u4EE4 ${t}\uFF0C\u8FD0\u884C ${lt} help \u67E5\u770B\u7528\u6CD5`,{exitCode:mi});return ry(),await yd(aa()),ro}async function ty(){let e=process.stdout;e.write(`\u6B63\u5728\u68C0\u67E5\u65B0\u7248\u672C
20
- `);let t=await rc(),o=io(e,m.accent,"\u2714");return e.write(t===null?`${o} \u5DF2\u662F\u6700\u65B0\u7248\u672C v${ut}
21
- `:`${o} \u5DF2\u66F4\u65B0\u5230 v${t}
22
- `),ro}async function ny(){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 oy("\u8F93\u5165 y \u786E\u8BA4\u5378\u8F7D\uFF1A"))return e.write(`\u5DF2\u53D6\u6D88
24
- `),Ln;let t=await ec({done:o=>e.write(`${io(e,m.accent,"\u2714")} ${o}
25
- `),failed:o=>e.write(`${io(e,m.danger,"\u2718")} ${o}
19
+ `;async function ey(){let e;try{({positionals:e}=Xb({args:process.argv.slice(2),allowPositionals:!0,options:{}}))}catch(o){throw new U(Ue(o),{hint:`\u8FD0\u884C ${lt} help \u67E5\u770B\u7528\u6CD5`,exitCode:pi})}let[t]=e;if(t==="help")return process.stdout.write(Zb),io;if(t==="update")return ty();if(t==="uninstall")return oy();if(t!==void 0)throw new U(`\u672A\u77E5\u547D\u4EE4 ${t}\uFF0C\u8FD0\u884C ${lt} help \u67E5\u770B\u7528\u6CD5`,{exitCode:pi});return iy(),await Sd(ca()),io}async function ty(){let e=process.stdout,t=ny(e,"\u6B63\u5728\u68C0\u67E5\u65B0\u7248\u672C"),o;try{o=await ic()}finally{t()}let n=mn(e,u.accent,"\u2714");return e.write(o===null?`${n} \u5DF2\u662F\u6700\u65B0\u7248\u672C v${ut}
20
+ `:`${n} \u5DF2\u66F4\u65B0\u5230 v${o}
21
+ `),io}function ny(e,t){if(!e.isTTY)return e.write(`${t}
22
+ `),()=>{};let o=mn(e,u.mutedForeground,t),n=0,r=()=>{let s=Wn[n%Wn.length]??"";n+=1,e.write(`\r\x1B[2K${mn(e,u.accent,s)} ${o}`)};r();let i=setInterval(r,Sr);return()=>{clearInterval(i),e.write("\r\x1B[2K")}}async function oy(){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 ry("\u8F93\u5165 y \u786E\u8BA4\u5378\u8F7D\uFF1A"))return e.write(`\u5DF2\u53D6\u6D88
24
+ `),Mn;let t=await tc({done:o=>e.write(`${mn(e,u.accent,"\u2714")} ${o}
25
+ `),failed:o=>e.write(`${mn(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
- `),ro;e.write(`\u4EE5\u4E0B\u9879\u76EE\u672A\u80FD\u6E05\u7406\uFF1A
27
+ `),io;e.write(`\u4EE5\u4E0B\u9879\u76EE\u672A\u80FD\u6E05\u7406\uFF1A
28
28
  `);for(let o of t)e.write(` ${o}
29
- `);return Ln}async function oy(e){let t=Qb({input:process.stdin,output:process.stdout});t.once("SIGINT",()=>t.close());let o=await Promise.race([t.question(e),Yb(t,"close").then(()=>"")]);return t.close(),o.trim().toLowerCase()==="y"}function ry(){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 Sd=(e,t)=>io(process.stderr,e,t);try{process.exitCode=await ey()}catch(e){process.stderr.write(`${Sd(m.danger,"\u2718")} ${Ue(e)}
30
- `),e instanceof U&&e.hint&&process.stderr.write(` ${Sd(m.faintForeground,e.hint)}
31
- `),process.exitCode=e instanceof U?e.exitCode:Ln}
29
+ `);return Mn}async function ry(e){let t=Qb({input:process.stdin,output:process.stdout});t.once("SIGINT",()=>t.close());let o=await Promise.race([t.question(e),Yb(t,"close").then(()=>"")]);return t.close(),o.trim().toLowerCase()==="y"}function iy(){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 xd=(e,t)=>mn(process.stderr,e,t);try{process.exitCode=await ey()}catch(e){process.stderr.write(`${xd(u.danger,"\u2718")} ${Ue(e)}
30
+ `),e instanceof U&&e.hint&&process.stderr.write(` ${xd(u.faintForeground,e.hint)}
31
+ `),process.exitCode=e instanceof U?e.exitCode:Mn}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codeflow-ai/cli",
3
- "version": "1.11.1",
3
+ "version": "1.12.1",
4
4
  "type": "module",
5
5
  "description": "CodeFlow 命令行客户端:一键配置 AI 客户端",
6
6
  "keywords": [