@codeflow-ai/cli 1.20.0 → 1.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.js +25 -25
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -1,32 +1,32 @@
1
1
  #!/usr/bin/env node
2
- import{once as Cy}from"events";import{createInterface as Ey}from"readline/promises";import{parseArgs as Ay}from"util";var ma={name:"@codeflow-ai/cli",version:"1.20.0",type:"module",description:"CodeFlow \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF\uFF1A\u4E00\u952E\u914D\u7F6E AI \u5BA2\u6237\u7AEF",keywords:["codeflow","claude-code","codex","cli"],license:"UNLICENSED",engines:{node:">=22"},bin:{codeflow:"./dist/cli.js"},files:["dist"],publishConfig:{access:"public"},scripts:{dev:"tsx src/cli.ts",build:"tsup",typecheck:"tsc --noEmit"},dependencies:{"@decimalturn/toml-patch":"3.0.2",ink:"7.1.1",marked:"18.0.5",qrcode:"1.5.4",react:"19.2.0","smol-toml":"1.7.0","string-width":"8.2.0",zod:"4.4.3"},devDependencies:{"@codeflow/shared":"workspace:*","@types/node":"25.9.1","@types/qrcode":"1.5.6","@types/react":"19.2.2",tsup:"8.5.1",tsx:"4.22.3",typescript:"5.9.3"}};var mt="codeflow",dt=ma.version,da="https://codeflow.asia",Un="@codeflow-ai/cli",uo=0,jn=1,Ci=2,gn=3,pa=4;import{randomBytes as Xd}from"crypto";import{mkdirSync as ba,readFileSync as Qd,rmSync as ya,statSync as Zd,writeFileSync as ep}from"fs";import{join as Sa}from"path";import{setTimeout as tp}from"timers/promises";import{z as vt}from"zod";var D=class extends Error{exitCode;hint;constructor(t,o={}){super(t,{cause:o.cause}),this.name="CliError",this.exitCode=o.exitCode??jn,this.hint=o.hint}};function Te(e){return e instanceof Error?e.message:String(e)}import{chmodSync as Wd,existsSync as zd,mkdirSync as Gd,readFileSync as Kd,writeFileSync as Vd}from"fs";import{dirname as Jd}from"path";function Hn(e){return zd(e)?Kd(e,"utf8"):null}function Ei(e,t,o){Gd(Jd(e),{recursive:!0,mode:448});try{Vd(e,t,{mode:o}),Wd(e,o)}catch(n){throw new D(`\u5199\u5165 ${e} \u5931\u8D25\uFF1A${Te(n)}`,{cause:n})}}function Zo(e){let t=Hn(e);if(t===null)return null;if(t.trim()==="")return{};let o;try{o=JSON.parse(t)}catch(n){throw new D(`${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 D(`${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 er(e,t,o){Ei(e,`${JSON.stringify(t,null,2)}
3
- `,o)}function tr(e,t,o,n){let r=null,i=()=>{if(r)return r;let s=t(),a=Hn(s);if(a===null)return r=e.parse({}),r;let c;try{c=JSON.parse(a)}catch(p){throw new D(`${o} ${s} \u5DF2\u635F\u574F\uFF0C\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u540E${n}`,{cause:p})}let l=e.safeParse(c);if(!l.success)throw new D(`${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),er(t(),a,384),r=a,a}}}import{homedir as Yd}from"os";import{join as qn}from"path";function Ht(){let e=process.env.XDG_CONFIG_HOME;if(e)return qn(e,"codeflow");if(process.platform==="win32"){let t=process.env.APPDATA;if(t)return qn(t,"codeflow")}return qn(Yd(),".config","codeflow")}var fa=()=>qn(Ht(),"config.json"),ga=()=>qn(Ht(),"credentials.json"),ha=()=>qn(Ht(),"refresh.lock");var np=vt.object({refreshCookie:vt.string(),accessToken:vt.string(),accessExpiresAt:vt.number(),username:vt.string(),email:vt.string(),site:vt.string()}),op=vt.object({site:vt.string(),cookie:vt.string()}),rp=vt.object({session:np.nullable().default(null),device:op.nullable().default(null)}),Ai=tr(rp,ga,"\u672C\u5730\u51ED\u636E","\u91CD\u65B0\u767B\u5F55"),_t=Ai.load,xa=Ai.reload,Pi=Ai.update;function Ta(){let{session:e}=_t();if(!e)throw new D("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:gn});return e}var ip=6e4,sp=75e3,ap=120;function cp(e,t){try{ba(e)}catch{try{Date.now()-Zd(e).mtimeMs>ip&&ya(e,{recursive:!0,force:!0})}catch{}return!1}return ep(Sa(e,"owner"),t),!0}function lp(e,t){let o;try{o=Qd(Sa(e,"owner"),"utf8")}catch{return}o===t&&ya(e,{recursive:!0,force:!0})}async function wa(e){let t=ha(),o=Xd(16).toString("hex");ba(Ht(),{recursive:!0,mode:448});let n=Date.now()+sp;for(;!cp(t,o);){if(Date.now()>n)throw new D(`\u7B49\u5F85\u5237\u65B0\u9501\u8D85\u65F6\uFF0C\u82E5\u786E\u8BA4\u6CA1\u6709\u5176\u4ED6 ${mt} \u5728\u8FD0\u884C\uFF0C\u8BF7\u5220\u9664 ${t}`);await tp(ap)}try{return await e()}finally{lp(t,o)}}function up(){let e=process.env.CODEFLOW_SITE;if(e)return e;let t=_t().session;return t?t.site:da}function ka(){return{site:up()}}function hn(e,t,o){if(!e.isTTY)return o;let n=Number.parseInt(t.slice(1),16);return`\x1B[38;2;${n>>16&255};${n>>8&255};${n&255}m${o}\x1B[39m`}import{existsSync as ef,rmSync as tf}from"fs";import{z as $e}from"zod";var mp=["active","disabled"],dS=$e.enum(mp),dp=["openai","anthropic"],pS=$e.enum(dp),pp=["openai-chat","openai-responses","anthropic-messages"],va=$e.enum(pp);var fp=["enabled","disabled"],fS=$e.enum(fp),mo=["pending","paid","refund_requested","partially_refunded","refunded","failed","expired"],_a=$e.enum(mo),gp=["recharge","subscription"],gS=$e.enum(gp),hp=["requested","pending","succeeded","failed","rejected","canceled"],Ra=$e.enum(hp),Ni=["pending","issued","rejected"],Ca=$e.enum(Ni),bp=["special","general"],Ii=$e.enum(bp),yp=["info","success","warning","error"],Ea=$e.enum(yp),Sp=["terms","privacy"],hS=$e.enum(Sp),Li=["recharge","reserve","consume","reserve_refund","refund","refund_release","reward","admin_adjust"],Aa=$e.enum(Li),xp=["usage_log","order","invitation","admin"],Pa=$e.enum(xp),Mi=["first_inviter","first_invitee","subsequent_inviter"],Na=$e.enum(Mi),Oi=["success","error","canceled","anomaly"],Ia=$e.enum(Oi),$i=["open","replied","closed"],La=$e.enum($i),Di=["billing","technical","account","other"],Ma=$e.enum(Di),Bi=["low","normal","high"],Oa=$e.enum(Bi),Tp=["user","admin"],$a=$e.enum(Tp);import{z as Wn}from"zod";var wp=["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","model_not_in_group","token_group_missing","token_quota_exceeded","upstream_error","pricing_catalog_unavailable","channel_name_taken","order_not_found","order_not_payable","payment_verify_failed","payment_precreate_failed","amount_mismatch","refund_not_allowed","refund_amount_invalid","refund_insufficient_balance","refund_failed","refund_pending","refund_in_progress","refund_blocked_by_pending_order","refund_order_superseded","refund_request_not_found","refund_nothing_refundable","subscription_limit_reached","subscription_revoked","plan_disabled","plan_in_use","group_in_use","order_already_invoiced","order_not_eligible","order_invoiced","invoice_profile_exists","invite_code_invalid","ticket_closed","ticket_limit_exceeded","attachment_storage_unconfigured","attachment_too_large","attachment_invalid","attachment_staging_limit_exceeded","backup_not_configured","backup_running"],kp=Wn.enum(wp),Da=Wn.object({error:Wn.object({code:kp,message:Wn.string(),details:Wn.unknown().optional(),requestId:Wn.string().optional()})});var Ba={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",model_not_in_group:"\u4EE4\u724C\u6240\u5C5E\u5206\u7EC4\u4E0D\u652F\u6301\u8BE5\u6A21\u578B\uFF0C\u8BF7\u66F4\u6362\u4EE4\u724C\u5206\u7EC4\u6216\u6539\u7528\u5206\u7EC4\u652F\u6301\u7684\u6A21\u578B",token_group_missing:"\u4EE4\u724C\u6240\u5C5E\u5206\u7EC4\u5DF2\u88AB\u5220\u9664\uFF0C\u8BF7\u7F16\u8F91\u4EE4\u724C\u91CD\u65B0\u9009\u62E9\u5206\u7EC4",token_quota_exceeded:"\u8BE5\u4EE4\u724C\u7684\u6D88\u8D39\u5DF2\u8FBE\u8D39\u7528\u9650\u5236\uFF0C\u8BF7\u8C03\u9AD8\u6216\u6E05\u9664\u9650\u5236\u540E\u518D\u4F7F\u7528",upstream_error:"\u4E0A\u6E38\u670D\u52A1\u8FD4\u56DE\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",pricing_catalog_unavailable:"\u5B98\u65B9\u4EF7\u683C\u8868\u83B7\u53D6\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",channel_name_taken:"\u8BE5\u6E20\u9053\u540D\u79F0\u5DF2\u88AB\u4F7F\u7528",order_not_found:"\u8BA2\u5355\u4E0D\u5B58\u5728",order_not_payable:"\u8BA2\u5355\u72B6\u6001\u5DF2\u53D8\u5316\uFF0C\u8BF7\u5237\u65B0\u540E\u518D\u8BD5",payment_verify_failed:"\u652F\u4ED8\u7ED3\u679C\u786E\u8BA4\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",payment_precreate_failed:"\u53D1\u8D77\u652F\u4ED8\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",amount_mismatch:"\u652F\u4ED8\u91D1\u989D\u4E0E\u8BA2\u5355\u4E0D\u7B26\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458",refund_not_allowed:"\u8BE5\u8BA2\u5355\u5F53\u524D\u4E0D\u53EF\u9000\u6B3E",refund_amount_invalid:"\u9000\u6B3E\u91D1\u989D\u4E0D\u6B63\u786E\u6216\u8D85\u8FC7\u53EF\u9000\u4F59\u989D",refund_insufficient_balance:"\u53EF\u7528\u989D\u5EA6\u4E0D\u8DB3\u4EE5\u6263\u56DE\u672C\u6B21\u9000\u6B3E\uFF08\u5DF2\u6D88\u8017\u90E8\u5206\u5BF9\u5E94\u7684\u73B0\u91D1\u4E0D\u53EF\u9000\uFF09",refund_failed:"\u652F\u4ED8\u5B9D\u9000\u6B3E\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u6216\u68C0\u67E5\u652F\u4ED8\u5B9D\u5546\u6237\u540E\u53F0",refund_pending:"\u9000\u6B3E\u7ED3\u679C\u5F85\u786E\u8BA4\uFF0C\u8BF7\u7A0D\u540E\u67E5\u770B\u9000\u6B3E\u8BB0\u5F55",refund_in_progress:"\u8BE5\u8BA2\u5355\u6216\u8BA2\u9605\u6709\u9000\u6B3E\u6B63\u5728\u5904\u7406\u4E2D\uFF0C\u8BF7\u5F85\u5176\u5B8C\u6210\u540E\u518D\u64CD\u4F5C",refund_blocked_by_pending_order:"\u8BE5\u8BA2\u9605\u6709\u5F85\u652F\u4ED8\u7684\u7EED\u8D39\u8BA2\u5355\uFF0C\u8BF7\u5F85\u5176\u652F\u4ED8\u6216\u8D85\u65F6\u540E\u518D\u9000\u6B3E",refund_order_superseded:"\u5B58\u5728\u66F4\u665A\u5165\u8D26\u7684\u8BA2\u5355\uFF0C\u8BF7\u6309\u4ECE\u65B0\u5230\u65E7\u7684\u987A\u5E8F\u9000\u6B3E",refund_request_not_found:"\u9000\u6B3E\u7533\u8BF7\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u5904\u7406\uFF0C\u8BF7\u5237\u65B0\u540E\u67E5\u770B",refund_nothing_refundable:"\u8BE5\u8BA2\u9605\u8BA2\u5355\u6309\u9650\u989D\u5468\u671F\u8BA1\u8D39\u540E\u5DF2\u65E0\u53EF\u9000\u91D1\u989D",subscription_limit_reached:"\u8BA2\u9605\u989D\u5EA6\u5DF2\u7528\u5C3D\uFF0C\u8BF7\u7B49\u5F85\u7A97\u53E3\u91CD\u7F6E",subscription_revoked:"\u8BE5\u8BA2\u9605\u5DF2\u88AB\u4F5C\u5E9F",plan_disabled:"\u8BE5\u5957\u9910\u5DF2\u505C\u552E",plan_in_use:"\u8BE5\u5957\u9910\u5DF2\u6709\u8BA2\u9605\u6216\u8BA2\u5355\u5F15\u7528\uFF0C\u65E0\u6CD5\u5220\u9664\uFF08\u53EF\u6539\u4E3A\u505C\u552E\u5E76\u9690\u85CF\uFF09",group_in_use:"\u8BE5\u5206\u7EC4\u6B63\u88AB\u8BA2\u9605\u5957\u9910\u8986\u76D6\uFF0C\u8BF7\u5148\u8C03\u6574\u5957\u9910\u7684\u8986\u76D6\u5206\u7EC4\u540E\u518D\u5220\u9664",order_already_invoiced:"\u8BE5\u8BA2\u5355\u5DF2\u7533\u8BF7\u8FC7\u53D1\u7968",order_not_eligible:"\u6240\u9009\u8BA2\u5355\u4E0D\u7B26\u5408\u5F00\u7968\u6761\u4EF6",order_invoiced:"\u8BE5\u8BA2\u5355\u5DF2\u5F00\u7968\u6216\u6709\u672A\u5904\u7406\u7684\u5F00\u7968\u7533\u8BF7\uFF0C\u65E0\u6CD5\u9000\u6B3E",invoice_profile_exists:"\u5DF2\u5B58\u5728\u76F8\u540C\u7684\u5E38\u7528\u5F00\u7968\u4FE1\u606F",invite_code_invalid:"\u9080\u8BF7\u7801\u65E0\u6548",ticket_closed:"\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u8BF7\u5148\u91CD\u65B0\u6253\u5F00\u540E\u518D\u56DE\u590D",ticket_limit_exceeded:"\u672A\u5173\u95ED\u7684\u5DE5\u5355\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650\uFF0C\u8BF7\u5148\u5173\u95ED\u5DF2\u89E3\u51B3\u7684\u5DE5\u5355",attachment_storage_unconfigured:"\u5C1A\u672A\u914D\u7F6E\u9644\u4EF6\u5B58\u50A8",attachment_too_large:"\u9644\u4EF6\u5927\u5C0F\u8D85\u8FC7\u9650\u5236",attachment_invalid:"\u9644\u4EF6\u65E0\u6548\u6216\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u4E0A\u4F20",attachment_staging_limit_exceeded:"\u5F85\u63D0\u4EA4\u7684\u9644\u4EF6\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650\uFF0C\u8BF7\u5148\u63D0\u4EA4\u73B0\u6709\u9644\u4EF6",backup_not_configured:"\u5C1A\u672A\u914D\u7F6E\u5907\u4EFD\u5B58\u50A8",backup_running:"\u5907\u4EFD\u6B63\u5728\u8FDB\u884C\u4E2D"};import{z as ue}from"zod";var vp=ue.string().trim().min(1),Fi=vp.pipe(ue.url()),_p=ue.object({name:ue.string().trim().min(1).max(64),description:ue.string().trim().min(1).max(200),url:Fi}),Fa=ue.array(_p),Rp=["string","number","boolean","secret","markdown","money","api-lines","origins"],Cp=ue.enum(Rp),Ep=ue.object({key:ue.string(),type:Cp,label:ue.string(),description:ue.string().optional(),value:ue.unknown().optional(),secret:ue.boolean().default(!1),required:ue.boolean().default(!1),min:ue.number().optional(),max:ue.number().optional(),step:ue.number().optional(),unit:ue.string().optional(),placeholder:ue.string().optional()}),wS=ue.object({key:ue.string(),label:ue.string(),description:ue.string().optional(),fields:ue.array(Ep)}),kS=ue.object({values:ue.record(ue.string(),ue.unknown()).refine(e=>Object.keys(e).length>0,{message:"at least one value required"})}),vS=ue.object({fields:ue.record(ue.string(),ue.string())});function Ua(e){return`codeflow-cli/${e.cliVersion} (${e.platform} ${e.release}; ${e.arch}) node/${e.nodeVersion}`}function nr(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 pt}from"zod";var Ui=1e8;var ES=pt.object({id:pt.coerce.number().int().positive()}),AS=pt.object({page:pt.coerce.number().int().min(1).default(1),pageSize:pt.coerce.number().int().min(1).max(100).default(20)});function bn(e){return pt.object({items:pt.array(e),total:pt.number().int().nonnegative(),page:pt.number().int().positive(),pageSize:pt.number().int().positive()})}var ye=pt.object({ok:pt.literal(!0)});import{z as W}from"zod";var yn=W.email().max(254).toLowerCase(),st=8,po=W.string().min(st).max(128),fo=W.string().min(1).max(128),Sn=32,ji=W.string().trim().min(1).max(Sn),Hi=W.string().trim().min(1).max(254),Ap=["register","reset_password"],IS=W.object({email:yn,purpose:W.enum(Ap)}),LS=W.object({username:ji,email:yn,password:po,code:W.string().min(4).max(8),inviteCode:W.string().trim().min(1).max(32).optional()}),MS=W.object({account:Hi,password:fo}),OS=W.object({email:yn,code:W.string().min(4).max(8),password:po}),$S=W.object({oldPassword:fo,newPassword:po}),DS=W.object({email:yn}),BS=W.object({email:yn,code:W.string().min(4).max(8),password:fo}),ja=W.object({username:W.string(),email:W.string()}),zn=W.object({accessToken:W.string(),user:ja}),Ha=W.discriminatedUnion("status",[zn.extend({status:W.literal("ok")}),W.object({status:W.literal("totp_required"),ticket:W.string()})]),qa=W.object({user:ja}),Pp=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()}),Np=W.object({id:W.number().int(),ip:W.string().nullable(),userAgent:W.string().nullable(),device:Pp.nullable(),loginAt:W.string(),lastActiveAt:W.string(),expiresAt:W.string(),current:W.boolean()}),Wa=W.object({sessions:W.array(Np)});import{z as me}from"zod";var Gn=me.string().trim().length(6),Ip=me.string().trim().min(10).max(20),or=me.string().trim().min(1).max(64),rr=me.record(me.string(),me.unknown()),jS=me.object({ticket:me.string().min(1),code:Gn}),HS=me.object({ticket:me.string().min(1),code:Ip}),qS=me.object({code:Gn.optional()}),WS=me.object({code:Gn}),za=me.object({secret:me.string(),otpauthUri:me.string()}),qi=me.object({recoveryCodes:me.array(me.string())}),Lp=me.object({id:me.number().int(),name:me.string(),createdAt:me.string(),lastUsedAt:me.string().nullable()}),Ga=me.object({totp:me.object({enabled:me.boolean(),enabledAt:me.string().nullable(),recoveryCodesRemaining:me.number().int()}),passkeys:me.array(Lp)}),zS=me.object({name:or,response:rr}),GS=me.object({name:or}),KS=me.object({response:rr});import{z as xe}from"zod";var QS=xe.object({account:Hi,password:fo}),Mp=xe.object({totp:xe.boolean(),passkeys:xe.boolean()}),ZS=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})]),ex=xe.object({ticket:xe.string().min(1)}),tx=xe.object({ticket:xe.string().min(1),code:Gn}),nx=xe.object({ticket:xe.string().min(1),name:or,response:rr}),ox=xe.object({ticket:xe.string().min(1),code:Gn.optional()}),Ka=xe.object({username:xe.string(),email:xe.string()}),rx=xe.object({accessToken:xe.string(),admin:Ka}),ix=xe.object({admin:Ka});import{z as Wi}from"zod";var ux=Wi.object({siteName:Wi.string().trim().min(1).max(64),siteDescription:Wi.string().trim().max(200).optional(),siteOrigin:Fi,username:ji,email:yn,password:po});import{z as Pe}from"zod";var Va={orderNo:Pe.string(),amountCny:Pe.number().int(),status:_a,credited:Pe.boolean(),refundedAmountCny:Pe.number().int(),succeededRefundCny:Pe.number().int(),pendingRefundCny:Pe.number().int(),createdAt:Pe.string()},go=Pe.object({...Va,quota:Pe.number(),refundedQuota:Pe.number()}),ho=Pe.object({...Va,planName:Pe.string(),renewal:Pe.boolean(),grantedDurationDays:Pe.number().int()}),Ja=Pe.object({id:Pe.number().int(),amountCny:Pe.number().int(),status:Ra,refundTradeNo:Pe.string().nullable(),reason:Pe.string().nullable(),rejectReason:Pe.string().nullable(),createdAt:Pe.string()});function Ya(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 Fe}from"zod";var ir=Fe.object({id:Fe.number().int(),title:Fe.string(),category:Ma,priority:Oa,status:La,createdAt:Fe.string(),updatedAt:Fe.string()}),bo=25*1024*1024,sr=5,zi=Fe.object({id:Fe.number().int(),fileName:Fe.string(),fileSize:Fe.number().int(),contentType:Fe.string(),createdAt:Fe.string()}),Gi=Fe.object({id:Fe.number().int(),authorKind:$a,content:Fe.string(),attachments:Fe.array(zi),createdAt:Fe.string()}),Xa=Fe.object({ticket:ir,messages:Fe.array(Gi)});import{z as yo}from"zod";var Ki=yo.object({id:yo.number().int(),title:yo.string(),content:yo.string(),level:Ea,publishedAt:yo.string()});import{z as Ne}from"zod";var wx=Ne.union([Ne.object({ok:Ne.literal(!0),status:Ne.number().int(),latencyMs:Ne.number().int().nonnegative(),body:Ne.string()}),Ne.object({ok:Ne.literal(!1),reason:Ne.enum(["http","error_payload"]),status:Ne.number().int(),latencyMs:Ne.number().int().nonnegative(),body:Ne.string()}),Ne.object({ok:Ne.literal(!1),reason:Ne.literal("timeout"),latencyMs:Ne.number().int().nonnegative()}),Ne.object({ok:Ne.literal(!1),reason:Ne.literal("network"),detail:Ne.string(),latencyMs:Ne.number().int().nonnegative()})]);var Qa="Asia/Shanghai",Op="+08:00";function $p(e){return new Date(new Date(e).getTime()+288e5)}function Dp(e=Date.now()){let t=$p(e);return{day:t.toISOString().slice(0,10),hour:t.getUTCHours()}}function Vi(e=Date.now()){return Dp(e).day}function Ji(e=Vi()){return new Date(`${e}T00:00:00${Op}`)}function en(e,t){let o=new Date(`${e}T00:00:00Z`);return new Date(o.getTime()+t*864e5).toISOString().slice(0,10)}var Bp=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium",timeZone:Qa}),Fp=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeZone:Qa});function ee(e){return Bp.format(new Date(e))}function qt(e){return Fp.format(new Date(e))}var Up=[{name:"\u4E00\u6574\u4E2A left-pad npm \u5305",tokens:110},{name:"\u5409\u5C3C\u65AF\u7EAA\u5F55\u6700\u5065\u8C08\u9E66\u9E49\u6BD5\u751F\u5B66\u4F1A\u7684\u8BCD\u6C47",tokens:2200},{name:"\u300A\u8BBA\u8BED\u300B",tokens:25e3},{name:"\u300A\u5C0F\u738B\u5B50\u300B",tokens:3e4},{name:"\u300A\u96F7\u950B\u65E5\u8BB0\u300B",tokens:54e3},{name:"\u300A\u8BD7\u7ECF\u300B",tokens:6e4},{name:"\u5468\u6770\u4F26\u5341\u4E94\u5F20\u4E13\u8F91\u7684\u5168\u90E8\u6B4C\u8BCD",tokens:82e3},{name:"\u300A\u6D3B\u7740\u300B",tokens:11e4},{name:"\u300A\u970D\u6BD4\u7279\u4EBA\u300B",tokens:12e4},{name:"\u300A\u4E2D\u534E\u4EBA\u6C11\u5171\u548C\u56FD\u6C11\u6CD5\u5178\u300B",tokens:126e3},{name:"\u300A\u94F6\u6CB3\u7CFB\u642D\u8F66\u5BA2\u6307\u5357\u300B\u4E94\u90E8\u66F2",tokens:26e4},{name:"\u79E6\u59CB\u7687\u4E00\u5929\u6279\u9605\u7684\u7AF9\u7B80\u594F\u7AE0",tokens:34e4},{name:"\u300A\u7EB3\u5C3C\u4E9A\u4F20\u5947\u300B\u5168\u4E03\u518C",tokens:45e4},{name:"\u300A\u5802\u5409\u8BC3\u5FB7\u300B",tokens:56e4},{name:"\u300A\u9B54\u6212\u300B\u4E09\u90E8\u66F2",tokens:59e4},{name:"\u300A\u804A\u658B\u5FD7\u5F02\u300B",tokens:6e5},{name:"\u300A\u6218\u4E89\u4E0E\u548C\u5E73\u300B",tokens:76e4},{name:"\u300A\u65B0\u534E\u5B57\u5178\u300B",tokens:8e5},{name:"\u300A\u7EA2\u697C\u68A6\u300B",tokens:9e5},{name:"\u300A\u897F\u6E38\u8BB0\u300B",tokens:1e6},{name:"\u300A\u4E09\u4F53\u300B\u4E09\u90E8\u66F2",tokens:11e5},{name:"\u838E\u58EB\u6BD4\u4E9A\u5168\u96C6",tokens:115e4},{name:"\u300A\u7504\u5B1B\u4F20\u300B\u5168\u5267\u5267\u672C",tokens:12e5},{name:"\u963F\u6CE2\u7F57 11 \u53F7\u767B\u6708\u5236\u5BFC\u7A0B\u5E8F\u6E90\u7801",tokens:13e5},{name:"\u300A\u54C8\u5229\xB7\u6CE2\u7279\u300B\u5168\u4E03\u90E8",tokens:14e5},{name:"\u8FC4\u4ECA\u51FA\u571F\u7684\u5168\u90E8\u7532\u9AA8\u6587",tokens:15e5},{name:"\u5409\u5C3C\u65AF\u7EAA\u5F55\u6700\u957F\u5C0F\u8BF4\u300A\u8FFD\u5FC6\u4F3C\u6C34\u5E74\u534E\u300B",tokens:165e4},{name:"\u300A\u51B0\u4E0E\u706B\u4E4B\u6B4C\u300B\u5DF2\u51FA\u4E94\u5377",tokens:226e4},{name:"\u300A\u65F6\u5149\u4E4B\u8F6E\u300B\u5168\u5341\u56DB\u5377",tokens:57e5},{name:"\u300A\u5168\u5510\u8BD7\u300B",tokens:64e5},{name:"\u300A\u9C81\u8FC5\u5168\u96C6\u300B",tokens:85e5},{name:"\u91D1\u5EB8\u5341\u4E94\u90E8\u5C0F\u8BF4",tokens:105e5},{name:"\u300A\u8F9E\u6D77\u300B",tokens:282e5},{name:"\u300A\u5927\u82F1\u767E\u79D1\u5168\u4E66\u300B",tokens:52e6},{name:"\u4E00\u6574\u5E74\u300A\u4EBA\u6C11\u65E5\u62A5\u300B",tokens:53e6},{name:"\u300A\u4E8C\u5341\u56DB\u53F2\u300B",tokens:6e7},{name:"\u300A\u725B\u6D25\u82F1\u8BED\u8BCD\u5178\u300B\u7B2C\u4E8C\u7248",tokens:767e5},{name:"\u5355\u7530\u82B3\u6BD5\u751F\u8BC4\u4E66\u4F5C\u54C1",tokens:86e6},{name:"\u300A\u4E2D\u56FD\u5927\u767E\u79D1\u5168\u4E66\u300B\u7B2C\u4E00\u7248",tokens:1508e5},{name:"\u6574\u5957 Linux \u5185\u6838\u6E90\u7801",tokens:4e8},{name:"\u4E00\u4E2A\u666E\u901A\u4EBA\u4E00\u751F\u8BF4\u51FA\u7684\u5168\u90E8\u8BDD\u8BED",tokens:5e8},{name:"\u4E2D\u6587\u7EF4\u57FA\u767E\u79D1",tokens:1e9},{name:"\u300A\u56DB\u5E93\u5168\u4E66\u300B",tokens:12e8},{name:"\u82F1\u6587\u7EF4\u57FA\u767E\u79D1",tokens:676e7},{name:"\u8C37\u6B4C\u5168\u90E8\u4EE3\u7801\u5E93",tokens:2e10}];function jp(e){return e>=10?Math.round(e).toLocaleString("en-US"):e>=1?e.toFixed(1):e.toFixed(-Math.floor(Math.log10(e)))}function at(e){return e>=10?Math.round(e).toLocaleString("en-US"):e.toFixed(1)}function Za(e){return e<365?`${at(e)} \u5929`:`${at(e/365)} \u5E74`}function Hp(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`:`${at(o/365)} \u5E74`}function qp(e){let t=e/1.2/80/60/8;return t<250?`${at(t)} \u4E2A\u5DE5\u4F5C\u65E5`:`${at(t/250)} \u4E2A\u5DE5\u4F5C\u5E74`}function Wp(e){let t=e/1.2/30*4;return t<1e3?`${Math.round(t).toLocaleString("en-US")} \u514B`:t<1e6?`${at(t/1e3)} \u516C\u65A4`:`${at(t/1e6)} \u5428`}var zp=[...Up.map(e=>({min:e.tokens/10,max:e.tokens*1e4,suffix:t=>`\u7EA6\u4E3A${e.name}\u7684 ${jp(t/e.tokens)} \u500D`})),{min:3e5,max:1/0,suffix:e=>`\u6253\u5370\u6210 A4 \u7EB8\u7EA6\u6709 ${Math.round(e/1.2/1500).toLocaleString("en-US")} \u9875`},{min:3e5,max:1/0,suffix:e=>`\u6309\u6BCF\u5206\u949F 250 \u5B57\u7684\u8BED\u901F\u6717\u8BFB\u7EA6\u9700 ${Hp(e)}`},{min:1680,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${Math.round(e/1.2/140).toLocaleString("en-US")} \u6761\u5199\u6EE1 140 \u5B57\u7684\u5FAE\u535A`},{min:9600,max:1/0,suffix:e=>`\u7EA6\u5408 ${Math.round(e/1.2/800).toLocaleString("en-US")} \u7BC7 800 \u5B57\u7684\u9AD8\u8003\u4F5C\u6587`},{min:131400,max:1/0,suffix:e=>`\u6309\u6BCF\u5929\u4E00\u7BC7 300 \u5B57\u7684\u65E5\u8BB0\u8BA1\uFF0C\u591F\u8FDE\u7EED\u5199 ${at(e/1.2/300/365)} \u5E74`},{min:12e5,max:1/0,suffix:e=>`\u7EA6\u5408 ${Math.round(e/1.2/1e5).toLocaleString("en-US")} \u672C\u5341\u4E07\u5B57\u7684\u535A\u58EB\u8BBA\u6587`},{min:33e3,max:1/0,suffix:e=>`\u6309\u300A\u8D44\u6CBB\u901A\u9274\u300B\u7684\u7B14\u58A8\u5BC6\u5EA6\uFF0C\u7EA6\u591F\u53F8\u9A6C\u5149\u8BB0\u8F7D ${Math.round(e/45e5*1362).toLocaleString("en-US")} \u5E74\u5386\u53F2`},{min:49e3,max:1/0,suffix:e=>`\u7EA6\u5408\u300A\u4E00\u5343\u96F6\u4E00\u591C\u300B\u91CC\u5C71\u9C81\u4F50\u5FB7\u8BB2\u6545\u4E8B\u7684 ${Math.round(e/492e4*1001).toLocaleString("en-US")} \u4E2A\u591C\u665A`},{min:640,max:1/0,suffix:e=>`\u6309\u91D1\u9675\u523B\u7ECF\u5904\u523B\u5DE5\u534A\u6708\u523B\u6210\u4E00\u5757 800 \u5B57\u7ECF\u7248\u7684\u8FDB\u5EA6\uFF0C\u5168\u90E8\u523B\u4E0A\u96D5\u7248\u9700\u8981 ${Za(e/1.2/53)}`},{min:460800,max:1/0,suffix:e=>`\u6309\u6BCF\u5206\u949F 80 \u5B57\u3001\u6BCF\u5929 8 \u5C0F\u65F6\u8BA1\uFF0C\u591F\u4E00\u4F4D\u4E13\u804C\u6253\u5B57\u5458\u6253 ${qp(e)}`},{min:4500,max:1/0,suffix:e=>`\u82E5\u523B\u6210\u6BCF\u679A 30 \u5B57\u7684\u79E6\u6C49\u7AF9\u7B80\uFF0C\u603B\u91CD\u7EA6 ${Wp(e)}`},{min:18e3,max:1/0,suffix:e=>`\u6309\u300A\u6C38\u4E50\u5927\u5178\u300B\u91CD\u5F55\u4E66\u624B\u6BCF\u5929\u4E09\u53F6\u3001\u7EA6 1500 \u5B57\u7684\u5B9A\u989D\uFF0C\u591F\u4E00\u4F4D\u4E66\u624B\u6284\u5199 ${Za(e/1.2/1500)}`},{min:108e3,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${Math.round(e/1.2/9e3).toLocaleString("en-US")} \u671F\u300A\u65B0\u95FB\u8054\u64AD\u300B\u7684\u64AD\u62A5\u7A3F`},{min:4e4,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${at(e/1.2/33e3)} \u5C4A\u592E\u89C6\u6625\u665A\u7684\u5168\u90E8\u53F0\u8BCD\u548C\u6B4C\u8BCD`},{min:96e3,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u80FD\u7ED5\u6807\u51C6 400 \u7C73\u8DD1\u9053 ${at(e/1.2*.005/400)} \u5708`},{min:96e5,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u5408\u5730\u9762\u5230\u56FD\u9645\u7A7A\u95F4\u7AD9\u8DDD\u79BB\u7684 ${at(e/1.2*.005/4e5)} \u500D`},{min:26e7,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u80FD\u7ED5\u6708\u7403\u8D64\u9053 ${at(e/1.2*.005/10917e3)} \u5708`},{min:96e7,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u80FD\u7ED5\u5730\u7403\u8D64\u9053 ${at(e/1.2*.005/40075e3)} \u5708`}];function ec(e){let{tokens:t,scope:o,range:n}=e;if(t<=0)return null;let r=zp.filter(c=>t>=c.min&&t<=c.max),i=r[Math.floor(Math.random()*r.length)];return i?`${o==="user"?"\u4F60":"\u5168\u7AD9"}${n==="all"?"\u7D2F\u8BA1":n==="30d"?"\u8FD1 30 \u5929":"\u8FD1 7 \u5929"}\u4F7F\u7528\u7684 Token \u91CF${i.suffix(t)}`:null}function Wt(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown status value: ${t}`);return o}}function tn(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown label value: ${t}`);return o}}var nn=Wt({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"}}),Rx=tn({recharge:"\u5145\u503C",subscription:"\u8BA2\u9605"}),ar=Wt({pending:{label:"\u5F85\u5904\u7406",tone:"warning"},issued:{label:"\u5DF2\u5F00\u5177",tone:"success"},rejected:{label:"\u5DF2\u9A73\u56DE",tone:"danger"}}),Cx=Wt({enabled:{label:"\u5DF2\u542F\u7528",tone:"success"},disabled:{label:"\u5DF2\u7981\u7528",tone:"neutral"}});var Ex=Wt({active:{label:"\u6B63\u5E38",tone:"success"},disabled:{label:"\u7981\u7528",tone:"danger"}}),Yi=tn({recharge:"\u5145\u503C",reserve:"\u9884\u6263",consume:"\u6D88\u8D39",reserve_refund:"\u9884\u6263\u9000\u56DE",refund:"\u9000\u6B3E",refund_release:"\u9000\u6B3E\u8FD4\u8FD8",reward:"\u5956\u52B1",admin_adjust:"\u7BA1\u7406\u5458\u8C03\u6574"}),tc=tn({usage_log:"\u7528\u91CF",order:"\u8BA2\u5355",invitation:"\u9080\u8BF7",admin:"\u7BA1\u7406\u5458"}),nc=Wt({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"}}),cr=Wt({success:{label:"\u6210\u529F",tone:"success"},error:{label:"\u5931\u8D25",tone:"danger"},canceled:{label:"\u53D6\u6D88",tone:"neutral"},anomaly:{label:"\u5F02\u5E38",tone:"warning"}}),oc=tn({"openai-chat":"OpenAI Chat","openai-responses":"OpenAI Responses","anthropic-messages":"Anthropic Messages"}),So=tn({special:"\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968",general:"\u589E\u503C\u7A0E\u666E\u901A\u53D1\u7968"}),xn=tn({special:"\u4E13\u7968",general:"\u666E\u7968"}),lr=tn({first_inviter:"\u9996\u5145\u8FD4\u5229\uFF08\u9080\u8BF7\u4EBA\uFF09",first_invitee:"\u9996\u5145\u8FD4\u5229\uFF08\u88AB\u9080\u8BF7\u4EBA\uFF09",subsequent_inviter:"\u7EED\u5145\u8FD4\u5229\uFF08\u9080\u8BF7\u4EBA\uFF09"}),xo=Wt({info:{label:"\u4FE1\u606F",tone:"neutral"},success:{label:"\u6210\u529F",tone:"success"},warning:{label:"\u8B66\u544A",tone:"warning"},error:{label:"\u91CD\u8981",tone:"danger"}}),Xi=Wt({open:{label:"\u5F85\u5904\u7406",tone:"warning"},replied:{label:"\u5DF2\u56DE\u590D",tone:"success"},closed:{label:"\u5DF2\u5173\u95ED",tone:"neutral"}}),ur=tn({billing:"\u8BA1\u8D39",technical:"\u6280\u672F",account:"\u8D26\u53F7",other:"\u5176\u4ED6"}),Qi=Wt({low:{label:"\u8F83\u4F4E",tone:"neutral"},normal:{label:"\u666E\u901A",tone:"neutral"},high:{label:"\u7D27\u6025",tone:"danger"}});function Xe(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 Zi(e){return Math.round(e*100)}function rc(e){return e/100}function ic(e,t,o){let n=e/t;return`${n<0?"-":""}$${Math.abs(n).toLocaleString("en-US",{minimumFractionDigits:o,maximumFractionDigits:o})}`}function ce(e,t){return ic(e,t,2)}function Kn(e,t){return ic(e,t,6)}var mr=10080,dr=1440;function sc(e){if(e%mr===0){let t=e/mr;return t===1?"\u6BCF\u5468\u9650\u989D":`${t} \u5468\u9650\u989D`}if(e%dr===0){let t=e/dr;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 Gp(e){if(e%mr===0){let t=e/mr;return t===1?"\u6BCF\u5468":`\u6BCF ${t} \u5468`}if(e%dr===0){let t=e/dr;return t===1?"\u6BCF\u5929":`\u6BCF ${t} \u5929`}return e%60===0?`\u6BCF ${e/60} \u5C0F\u65F6`:`\u6BCF ${e} \u5206\u949F`}function ac(e,t){return e.windows.map(o=>`${Gp(o.durationMinutes)} ${ce(o.quota,t)}`)}function es(e){return e.quota<=0?100:Math.min(100,Math.floor(e.used/e.quota*100))}function ts(e){return e.revokedAt!==null?{label:"\u5DF2\u4F5C\u5E9F",tone:"danger"}:new Date(e.expiresAt).getTime()<=Date.now()?{label:"\u5DF2\u8FC7\u671F",tone:"neutral"}:{label:"\u751F\u6548\u4E2D",tone:"success"}}function Re(e){return e.toLocaleString("en-US")}function on(e){let t=Math.abs(e);return t>=1e9?`${(e/1e9).toFixed(1)}B`:t>=1e6?`${(e/1e6).toFixed(1)}M`:t>=1e3?`${(e/1e3).toFixed(1)}k`:Re(e)}function Tn(e,t){let o=Number(e);return Number.isFinite(o)?o===0&&t!==void 0?t:o.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:12}):e}function wn(e){return(e/1e3).toFixed(2)}function Vn(e){return e>=1024**3?`${(e/1024**3).toFixed(1)} GB`:e>=1024**2?`${(e/1024**2).toFixed(1)} MB`:e>=1024?`${(e/1024).toFixed(1)} KB`:`${e} B`}function pr(e,t){return`${e}******${t}`}var ns={recharge:["\u5145\u9519\u91D1\u989D\u6216\u91CD\u590D\u5145\u503C","\u9700\u8981\u7684\u6A21\u578B\u4E0D\u53EF\u7528","\u8C03\u7528\u7ECF\u5E38\u62A5\u9519\u6216\u8D85\u65F6","\u5B9E\u9645\u8BA1\u8D39\u9AD8\u4E8E\u9884\u671F","\u4F59\u989D\u7528\u4E0D\u5B8C\uFF0C\u4E0D\u518D\u9700\u8981"],subscription:["\u8BEF\u8D2D\u6216\u9009\u9519\u5957\u9910","\u5957\u9910\u4E0D\u542B\u9700\u8981\u7684\u6A21\u578B","\u9650\u989D\u592A\u4F4E\uFF0C\u4E0D\u591F\u7528","\u8C03\u7528\u7ECF\u5E38\u62A5\u9519\u6216\u8D85\u65F6","\u4F7F\u7528\u9891\u7387\u4F4E\uFF0C\u4E0D\u5212\u7B97"]},cc={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,Jp=Ua({cliVersion:dt,platform:process.platform,release:Kp(),arch:process.arch,nodeVersion:process.versions.node});async function lc(e,t){if(t.json!==void 0&&t.body!==void 0)throw new Error("httpRequest cannot accept both json and body");let o=new Headers(t.headers);o.set("user-agent",Jp);let n=t.body;t.json!==void 0&&(o.set("content-type","application/json"),n=JSON.stringify(t.json));try{return await fetch(e,{method:t.method??(n===void 0?"GET":"POST"),headers:o,body:n,signal:AbortSignal.timeout(t.timeoutMs??Vp),redirect:"follow"})}catch(r){let i=URL.canParse(e)?new URL(e).origin:e;throw new D(`\u65E0\u6CD5\u8FDE\u63A5 ${i}\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u7AD9\u70B9\u5730\u5740`,{exitCode:pa,cause:r})}}async function uc(e){let t=await e.text();if(t==="")return null;try{return JSON.parse(t)}catch{return null}}async function ft(e,t={}){let o=await lc(e,t);if(!o.ok)return{status:o.status,ok:!1,headers:o.headers,data:await uc(o)};let n=await o.text(),r=null;if(n!=="")try{r=JSON.parse(n)}catch(i){throw new D(`${e} \u8FD4\u56DE\u4E86\u975E JSON \u5185\u5BB9\uFF0C\u53EF\u80FD\u88AB\u7F51\u5173\u6216\u4E2D\u95F4\u8BBE\u5907\u62E6\u622A`,{cause:i})}return{status:o.status,ok:!0,headers:o.headers,data:r}}async function mc(e,t={}){let o=await lc(e,t);if(!o.ok)return{status:o.status,ok:!1,headers:o.headers,data:await uc(o),bytes:null};let n=new Uint8Array(await o.arrayBuffer());return{status:o.status,ok:!0,headers:o.headers,data:null,bytes:n}}function Yp(e,t){let o=Da.safeParse(t);if(!o.success)return new D(`\u8BF7\u6C42\u5931\u8D25\uFF08HTTP ${e}\uFF09`);let{code:n,message:r}=o.data.error,i=n==="unauthorized"||n==="token_expired"?gn:void 0;return new D(Ba[n]??r,i?{exitCode:i}:{})}function Rt(e){if(!e.ok)throw Yp(e.status,e.data)}var fc="cf_refresh",gc="cf_device",dc=6e4;function pc(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 To(e,t){return{refresh:pc(t,fc)??e.refresh,device:pc(t,gc)??e.device}}function fr(e){let t=[];return e.refresh&&t.push(`${fc}=${e.refresh}`),e.device&&t.push(`${gc}=${e.device}`),t.length>0?{cookie:t.join("; ")}:{}}function Xp(e){let t=e.split(".")[1];if(t===void 0)throw new D("\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 D("\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 D("\u670D\u52A1\u7AEF\u8FD4\u56DE\u7684\u8BBF\u95EE\u4EE4\u724C\u7F3A\u5C11\u6709\u6548\u671F");return n*1e3}function wo(e,t,o){if(!t.refresh)throw new D("\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:Xp(o.accessToken),username:o.user.username,email:o.user.email,site:e};return Pi(r=>{r.session=n,t.device&&(r.device={site:e,cookie:t.device})}),n}function os(e){let{device:t}=_t();return t!==null&&t.site===e?t.cookie:null}async function hc(e,t,o){let n={refresh:null,device:os(e)},r=await ft(`${e}/api/auth/login`,{json:{account:t,password:o},headers:fr(n)});Rt(r);let i=Ha.parse(r.data),s=To(n,r.headers);return i.status==="totp_required"?{status:"totp_required",ticket:i.ticket,jar:s}:{status:"ok",session:wo(e,s,i)}}async function bc(e,t,o,n,r){let s=await ft(`${e}/api/auth/${r==="totp"?"login/totp":"login/recovery-code"}`,{json:{ticket:o,code:n},headers:fr(t)});Rt(s);let a=zn.parse(s.data);return wo(e,To(t,s.headers),a)}function yc(){Pi(e=>{e.session=null})}async function Qp(e){let t={refresh:e.refreshCookie,device:os(e.site)},o=await ft(`${e.site}/api/auth/refresh`,{method:"POST",headers:fr(t)});if(o.status===401||o.status===403)throw yc(),new D("\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",{exitCode:gn});Rt(o);let n=zn.parse(o.data);return wo(e.site,To(t,o.headers),n)}async function ko(e=!1){let t=Ta();return!e&&Date.now()<t.accessExpiresAt-dc?t:wa(async()=>{let o=xa().session;if(!o)throw new D("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:gn});return(o.refreshCookie!==t.refreshCookie||o.accessToken!==t.accessToken)&&Date.now()<o.accessExpiresAt-dc?o:Qp(o)})}async function gr(){let e=_t().session;if(!e)return;let t=await ft(`${e.site}/api/auth/logout`,{method:"POST",headers:fr({refresh:e.refreshCookie,device:os(e.site)})});yc(),Rt(t)}import{spawn as Zp}from"child_process";function vo(e,t={}){return new Promise((o,n)=>{let r=Zp("npm",e,{stdio:["ignore","pipe","pipe"],shell:process.platform==="win32"}),i=[],s=[],a=c=>{for(let l of c.toString("utf8").split(`
4
- `)){let p=l.trimEnd();p!==""&&(s.push(p),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 D(`\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 D(`npm ${e.join(" ")} \u9000\u51FA\u7801 ${c??"null"}`,{...l===""?{}:{hint:l}}))}),t.background===!0&&(r.stdout.unref(),r.stderr.unref(),r.unref())})}async function Sc(e){let t=[],o=async(n,r)=>{try{await r(),e.done(n)}catch(i){t.push(`${n}\uFF1A${Te(i)}`),e.failed(n)}};return await o("\u9000\u51FA\u767B\u5F55",()=>gr()),await o("\u5220\u9664\u672C\u5730\u6587\u4EF6",()=>{let n=Ht();ef(n)&&tf(n,{recursive:!0,force:!0})}),await o("\u5378\u8F7D\u672C\u7A0B\u5E8F",async()=>{await vo(["uninstall","-g",Un])}),t}import{z as _o}from"zod";var nf=_o.object({line:_o.object({name:_o.string(),url:_o.string()}).nullable().default(null),lastUpdateCheckAt:_o.number().nullable().default(null)}),xc=tr(nf,fa,"\u672C\u5730\u914D\u7F6E","\u91CD\u65B0\u8FD0\u884C"),kn=xc.load,hr=xc.update;var of=1440*60*1e3;async function Tc(){let e=(await vo(["view",Un,"version"])).trim();if(e==="")throw new D(`npm \u6CA1\u6709\u62A5\u51FA ${Un} \u7684\u7248\u672C`);return e}async function wc(e,t){return await vo(["install","-g",`${Un}@${e}`],{background:t}),e}async function kc(){let e=await Tc();return e===dt?null:await wc(e,!1)}function rf(){let e=Date.now(),t=kn().lastUpdateCheckAt;return t!==null&&e-t<of?!1:(hr(o=>{o.lastUpdateCheckAt=e}),!0)}async function vc(){if(!rf())return null;let e;try{e=await Tc()}catch{return null}return e===dt?null:await wc(e,!0)}import{Box as fy,render as gy,useInput as hy}from"ink";import{useEffect as ua,useRef as by}from"react";async function Ct(e,t,o={}){let n=await ft(t,o);return Rt(n),e.parse(n.data)}async function $(e,t,o={}){let n=await ko(),r=s=>ft(`${n.site}/api${t}`,{...o,headers:{...o.headers,authorization:`Bearer ${s}`}}),i=await r(n.accessToken);if(i.status===401){let s=await ko(!0);i=await r(s.accessToken)}return Rt(i),e.parse(i.data)}async function _c(e,t={}){let o=await ko(),n=i=>mc(`${o.site}/api${e}`,{...t,headers:{...t.headers,authorization:`Bearer ${i}`}}),r=await n(o.accessToken);if(r.status===401){let i=await ko(!0);r=await n(i.accessToken)}if(Rt(r),r.bytes===null)throw new D("\u9644\u4EF6\u4E0B\u8F7D\u54CD\u5E94\u4E3A\u7A7A");return r.bytes}function Mt(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 Rc=e=>$(bn(Ki),Mt("/announcements",{...e})),Cc=()=>$(Ki.nullable(),"/announcements/unread"),br=e=>$(ye,`/announcements/${e}/read`,{method:"POST"}).then(()=>{});import{Box as Ec,useWindowSize as sf}from"ink";import{Children as af}from"react";import{jsx as Ac}from"react/jsx-runtime";var cf=1,rs=1,Y=1;function H(){let{columns:e,rows:t}=sf();return{width:Math.max(1,e-cf*2),columns:e,rows:t}}function Pc({height:e,children:t}){return Ac(Ec,{flexDirection:"column",height:e,justifyContent:"space-between",children:af.toArray(t).map((o,n)=>Ac(Ec,{flexDirection:"column",flexShrink:0,children:o},n))})}import{useInput as Ic}from"ink";import{createContext as as,useCallback as yr,useContext as lf,useEffect as cs,useMemo as is,useRef as Ro,useState as Nc}from"react";import{jsx as ss}from"react/jsx-runtime";var Sr=as(null),ls=as(null),Jn={screen:0,panel:10,input:20},us=as(null);function Lc({children:e}){let[t,o]=Nc(!1),[n,r]=Nc(!1),i=Ro(0),s=Ro(0),a=Ro([]),c=Ro(0),l=yr(()=>(i.current+=1,o(!0),()=>{i.current-=1,i.current===0&&o(!1)}),[]),p=yr(()=>(s.current+=1,r(!0),()=>{s.current-=1,s.current===0&&r(!1)}),[]),f=yr(g=>{let y={...g,seq:c.current+=1};return a.current.push(y),()=>{a.current=a.current.filter(x=>x!==y)}},[]),m=yr(()=>{a.current.reduce((y,x)=>y===null||x.layer>y.layer||x.layer===y.layer&&x.seq>y.seq?x:y,null)?.handler()},[]);Ic((g,y)=>{y.escape&&m()});let d=is(()=>({active:t,acquire:l}),[t,l]),S=is(()=>({locked:n,acquire:p}),[n,p]),h=is(()=>({push:f,fire:m}),[f,m]);return ss(Sr.Provider,{value:d,children:ss(ls.Provider,{value:S,children:ss(us.Provider,{value:h,children:e})})})}function vn(e){let t=lf(e);if(!t)throw new Error("\u952E\u76D8\u94A9\u5B50\u5FC5\u987B\u5728 KeyboardProvider \u5185\u4F7F\u7528");return t}function xr(e){let{acquire:t}=vn(Sr);cs(()=>{if(e)return t()},[e,t])}function Mc(e){let{acquire:t}=vn(ls);cs(()=>{if(e)return t()},[e,t])}function Tr(){return vn(ls).locked}function wr(){return vn(Sr).active}function z(e,t=!0){let o=vn(Sr).active;Ic(e,{isActive:t&&!o})}function Oc(){return vn(us).fire}function rn(e,{isActive:t=!0,layer:o=Jn.screen}={}){let{push:n}=vn(us),r=Ro(e);r.current=e,cs(()=>{if(t)return n({handler:()=>r.current(),layer:o})},[t,o,n])}import{measureElement as uf}from"ink";import{PassThrough as mf}from"stream";import{createContext as df,useCallback as pf,useContext as ff,useEffect as Fc,useRef as kr}from"react";import{jsx as vf}from"react/jsx-runtime";var gf="\x1B[?1000h\x1B[?1003h\x1B[?1006h",hf="\x1B[?1006l\x1B[?1003l\x1B[?1000l",bf=27,yf=91,Sf=60,$c=77,Dc=109,Bc=20,xf=64,Tf=32,wf=20;function kf(e){let t=[],o=[],n=0;for(;n<e.length;){let r=e[n];if(r===void 0)break;if(r!==bf){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!==yf){o.push(r),n+=1;continue}if(s===$c){if(n+6>e.length)break;n+=6;continue}if(s!==Sf){o.push(r),n+=1;continue}let a=n+3,c;for(;a<e.length&&a-n<Bc;){let d=e[a];if(d===$c||d===Dc){c=d;break}a+=1}if(c===void 0){if(a-n<Bc)break;o.push(r),n+=1;continue}let l=e.subarray(n+3,a).toString("latin1").split(";");if(n=a+1,c===Dc||l.length!==3)continue;let p=Number(l[0]),f=Number(l[1]),m=Number(l[2]);!Number.isFinite(p)||!Number.isFinite(f)||!Number.isFinite(m)||t.push((p&xf)!==0?{row:m,column:f,kind:"wheel",delta:(p&1)===0?-1:1}:{row:m,column:f,kind:(p&Tf)!==0?"move":"press"})}return{events:t,clean:Buffer.from(o),pending:e.subarray(n)}}function Uc(e,t){let o=new Set,n=new mf,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 d=kf(Buffer.concat([r,m]));r=d.pending,d.clean.length>0&&n.write(d.clean);for(let S of d.events)for(let h of o)h(S);r.length>0&&(i=setTimeout(s,wf))},c=()=>{t.write(hf)},l={SIGHUP:1,SIGINT:2,SIGTERM:15},p=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,p);t.write(gf);let f=n;return Object.assign(f,{isTTY:!0,setRawMode(m){return e.setRawMode(m),f},ref(){return e.ref(),f},unref(){return e.unref(),f}}),{stdin:f,subscribe(m){return o.add(m),()=>{o.delete(m)}},dispose(){c(),i!==null&&clearTimeout(i),process.off("exit",c);for(let m of Object.keys(l))process.off(m,p);e.off("data",a),o.clear()}}}var jc=df(null);function Hc({subscribe:e,children:t}){let o=kr(new Set).current,n=kr(null),r=pf(i=>(o.add(i),()=>{o.delete(i)}),[o]);return Fc(()=>e(i=>{let s=i.row-1,a=i.column-1,c=null;for(let p of o){let f=p.node.current;if(f===null||p.handlers.current.isActive===!1)continue;let m=uf(f);if(s<m.y||s>=m.y+m.height||a<m.x||a>=m.x+m.width)continue;let d=m.width*m.height;(c===null||d<c.area)&&(c={region:p,top:m.y,left:m.x,area:d})}if(i.kind==="move"){let p=c===null?null:c.region;if(n.current!==p){let f=n.current;f!==null&&o.has(f)&&f.handlers.current.onHoverLeave?.(),n.current=p}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]),vf(jc.Provider,{value:r,children:t})}function Ue(e){let t=ff(jc);if(t===null)throw new Error("useMouseRegion \u5FC5\u987B\u5728 MouseProvider \u5185\u4F7F\u7528");let o=kr(null),n=kr(e);return n.current=e,Fc(()=>t({node:o,handlers:n}),[t]),o}import{useApp as _f}from"ink";import{createContext as Rf,useCallback as _n,useContext as Cf,useEffect as ms,useRef as _r,useState as Eo}from"react";var Qe=[{id:"usage",label:"\u6570\u636E\u770B\u677F"},{id:"tokens",label:"\u4EE4\u724C\u7BA1\u7406"},{id:"logs",label:"\u4F7F\u7528\u65E5\u5FD7"},{id:"models",label:"\u6A21\u578B\u5E7F\u573A"},{id:"recharge",label:"\u8D26\u6237\u5145\u503C"},{id:"subscription",label:"\u8BA2\u9605\u5957\u9910"},{id:"ledger",label:"\u989D\u5EA6\u6D41\u6C34"},{id:"invoices",label:"\u53D1\u7968\u7BA1\u7406"},{id:"invite",label:"\u9080\u8BF7\u597D\u53CB"},{id:"tickets",label:"\u5DE5\u5355\u652F\u6301"},{id:"announcements",label:"\u7CFB\u7EDF\u516C\u544A"},{id:"profile",label:"\u4E2A\u4EBA\u4E2D\u5FC3"}],qc="usage",Co=e=>Qe.findIndex(t=>t.id===e),vr=e=>Co(e)>=0;import{jsx as Af}from"react/jsx-runtime";var Ef=5e3,zc=Rf(null),Gc=e=>({id:e,params:void 0}),Wc=()=>_t().session===null?[{id:"home",params:void 0}]:[Gc(qc)];function B(){let e=Cf(zc);if(!e)throw new Error("useNav \u5FC5\u987B\u5728 NavProvider \u5185\u4F7F\u7528");return e}function Kc({ctx:e,children:t}){let o=_f(),[n,r]=Eo(Wc),[i,s]=Eo(0),[a,c]=Eo([]),l=_r({announcementsChecked:!1,announcementsShown:!1}).current,p=_r(new WeakMap).current,f=_n((E,...A)=>{r(U=>[...U,{id:E,params:A[0]}])},[]),m=_n(()=>{r(E=>E.length>1?E.slice(0,-1):E),s(E=>E+1)},[]),d=_n(E=>{r([Gc(E)]),s(A=>A+1)},[]),S=_n(()=>{r(Wc()),s(E=>E+1)},[]),h=_n(()=>s(E=>E+1),[]),g=_n((E,A)=>{c(U=>[...U,{tone:E,message:A}])},[]),y=_n(()=>c(E=>E.slice(1)),[]),x=a[0]??null;ms(()=>{if(x===null)return;let E=setTimeout(y,Ef);return()=>clearTimeout(E)},[x,y]);let T=n[n.length-1];if(T===void 0)throw new Error("\u5BFC\u822A\u6808\u4E3A\u7A7A");let b=p.get(T);b===void 0&&(b=new Map,p.set(T,b));let k={ctx:e,current:T,depth:n.length,push:f,pop:m,select:d,home:S,reload:h,toast:g,message:x,dismissToast:y,exit:o.exit,revision:i,gate:l,retained:b};return Af(zc.Provider,{value:k,children:t})}function Je(e,t){let{retained:o}=B(),[n,r]=Eo(()=>e!==void 0&&o.has(e)?o.get(e):t());return ms(()=>{e!==void 0&&o.set(e,n)},[o,e,n]),[n,r]}function Q(e,t){let[o,n]=Eo({phase:"loading"}),r=_r(t);r.current=t;let i=_r(0);return ms(()=>{let s=i.current+=1;n({phase:"loading"}),r.current().then(a=>{i.current===s&&n({phase:"ready",data:a})}).catch(a=>{i.current===s&&n({phase:"error",message:Te(a),hint:a instanceof D?a.hint:void 0})})},e),o}import{Box as qr,Text as En,useInput as sg}from"ink";import{Box as Lo,Text as Zn}from"ink";import Ao 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"},Rr=["#242424","#5a4233","#746533","#70924f","#37be95"],Cr=["#37be95","#2d9273","#246e58","#1e5443","#193f33"],je={accent:u.accent,success:u.success,warning:u.warning,danger:u.danger},Yn=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Er=80,Z={cursor:"\u276F",bullet:"\xB7",crumb:"\u203A",ok:"\u2714",warn:"!",fail:"\u2718",ellipsis:"\u2026",barFilled:"\u2588",barEmpty:"\u2591",section:"\u258D",prev:"\u2039",next:"\u203A"};var Pf=Ao(Z.ellipsis),Nf=(e,t)=>e+" ".repeat(Math.max(0,t-Ao(e))),If=(e,t)=>" ".repeat(Math.max(0,t-Ao(e)))+e;function we(e,t){if(t<=0)return"";if(Ao(e)<=t)return e;let o=t-Pf,n="";for(let r of e){if(Ao(n+r)>o)break;n+=r}return n+Z.ellipsis}var Ie=(e,t)=>Nf(we(e,t),t),sn=(e,t)=>If(we(e,t),t),De=e=>e.filter(t=>typeof t=="string"&&t!=="").join(` ${Z.bullet} `);import{Text as Et,useInput as Lf}from"ink";import{useImperativeHandle as Mf,useRef as Vc,useEffect as Of,useState as Yc}from"react";import ds from"string-width";import{jsx as Ot,jsxs as ps}from"react/jsx-runtime";var $f=e=>e.replace(new RegExp("\\p{Cc}","gu"),"");function Jc(e,t,o){let n=t,r=0;for(;n>0;){let s=ds(e[n-1]??"");if(r+s>o)break;r+=s,n-=1}let i=t;for(r+=1;i<e.length;){let s=ds(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 Po({char:e}){return Ot(Et,{backgroundColor:u.cursorBackground,color:u.foreground,children:e})}function Ar({value:e,onChange:t,onSubmit:o,placeholder:n,mask:r=!1,isActive:i=!0,width:s=40,ref:a}){let c=[...e],[l,p]=Yc(c.length),f=Math.min(l,c.length),m=Math.max(8,s),d=Vc(e),S=Vc(f);d.current=e,S.current=f,xr(i);let h=k=>{S.current=k,p(k)},g=(k,E)=>{d.current=k,h(E),t(k)};if(Mf(a,()=>({moveToColumn:k=>{let E=[...d.current],A=r?Array.from({length:E.length},()=>"\u2022"):E,v=Jc(A,Math.min(S.current,E.length),m).start,P=0;for(;v<E.length;){let _=ds(A[v]??"");if(P+_>k)break;P+=_,v+=1}h(v)}})),Lf((k,E)=>{let A=[...d.current],U=Math.min(S.current,A.length);if(E.return){o(d.current);return}if(E.tab||E.upArrow||E.downArrow)return;if(E.leftArrow){h(Math.max(0,U-1));return}if(E.rightArrow){h(Math.min(A.length,U+1));return}if(E.home){h(0);return}if(E.end){h(A.length);return}if(E.backspace){if(U===0)return;g([...A.slice(0,U-1),...A.slice(U)].join(""),U-1);return}if(E.delete){if(U>=A.length)return;g([...A.slice(0,U),...A.slice(U+1)].join(""),U);return}if(E.ctrl){if(k==="a")h(0);else if(k==="e")h(A.length);else if(k==="k")g(A.slice(0,U).join(""),U);else if(k==="u")g(A.slice(U).join(""),0);else if(k==="w"){let R=U;for(;R>0&&A[R-1]===" ";)R-=1;for(;R>0&&A[R-1]!==" ";)R-=1;g([...A.slice(0,R),...A.slice(U)].join(""),R)}return}if(E.meta||!k)return;let v=k.search(/[\r\n]/),P=$f(v===-1?k:k.slice(0,v)),_=[...A.slice(0,U),P,...A.slice(U)].join("");g(_,U+[...P].length),v!==-1&&o(_)},{isActive:i}),e===""){let k=[...n??""];return i?ps(Et,{children:[Ot(Po,{char:k[0]??" "}),Ot(Et,{color:u.faintForeground,children:k.slice(1).join("")})]}):Ot(Et,{color:u.faintForeground,children:k.join("")})}let y=r?Array.from({length:c.length},()=>"\u2022"):c;if(!i)return Ot(Et,{color:u.foreground,children:y.join("")});let{before:x,at:T,after:b}=Jc(y,f,m);return ps(Et,{children:[Ot(Et,{color:u.foreground,children:x}),Ot(Po,{char:T}),Ot(Et,{color:u.foreground,children:b})]})}function Ze({label:e}){let[t,o]=Yc(0);return Of(()=>{let n=setInterval(()=>o(r=>(r+1)%Yn.length),Er);return()=>clearInterval(n)},[]),ps(Et,{children:[Ot(Et,{color:u.accent,children:Yn[t]}),Ot(Et,{color:u.mutedForeground,children:` ${e}`})]})}import{Box as Zc,Text as Xn}from"ink";import{useEffect as tl,useState as Bf}from"react";import el from"string-width";import{Box as Xc,Text as Pr}from"ink";import Df from"string-width";import{jsx as No,jsxs as Qc}from"react/jsx-runtime";var le=2,ct=1,Be=1,At=ct+Be;function Io({title:e,note:t,width:o}){let n=t===void 0?0:Df(t)+2,r=Math.max(0,o-le-n);return Qc(Pr,{wrap:"truncate",children:[No(Pr,{color:u.accent,children:`${Z.section} `}),No(Pr,{bold:!0,color:u.foreground,children:we(e,r)}),t!==void 0&&No(Pr,{color:u.faintForeground,children:` ${t}`})]})}function oe({title:e,note:t,width:o,gap:n=Be,children:r}){return Qc(Xc,{flexDirection:"column",children:[No(Io,{title:e,note:t,width:o}),No(Xc,{flexDirection:"column",marginTop:n,paddingLeft:le,children:r})]})}import{jsx as zt,jsxs as ol}from"react/jsx-runtime";var Qn=e=>!("heading"in e),Ff=e=>e.flatMap(t=>!Qn(t)&&t.heading!==""?[t,{heading:""}]:[t]),nl=2,Nr=2,Uf=(e,t)=>t===void 0?e:e>t?Math.max(1,t-1):t;function jf(e,t,o,n){let[r,i]=Je(n,()=>e.findIndex(p=>Qn(p)&&p.disabled!==!0));tl(()=>{i(p=>p>=e.length?Math.max(0,e.length-1):p)},[e.length]);let s=p=>{i(f=>{let m=e.length;if(m===0)return f;let d=f;for(let S=0;S<m;S+=1){d=(d+p+m)%m;let h=e[d];if(h!==void 0&&Qn(h)&&h.disabled!==!0)return d}return f})},a=p=>{let f=e[p];return f!==void 0&&Qn(f)&&f.disabled!==!0?f:null},c=p=>{a(p)!==null&&i(p)},l=p=>{let f=a(p);f!==null&&(i(p),o(f.value))};return z((p,f)=>{if(f.upArrow||p==="k"){s(-1);return}if(f.downArrow||p==="j"){s(1);return}f.return&&l(r)},t),{index:Math.max(0,r),step:s,pick:l,moveTo:c}}function fs(e,t){let[o,n]=Bf(()=>e>=t?e-t+1:0);return tl(()=>{n(r=>e<r?e:e>=r+t?e-t+1:r)},[e,t]),o}function Hf(e,t){let o=e.filter(Qn),n=Math.max(0,...o.map(s=>el(s.label))),r=Math.max(0,...o.map(s=>s.badge===void 0?0:el(s.badge))),i=nl+n+(r>0?r+Nr:0)+Nr;return{label:n,badge:r,hint:Math.max(0,t-i)}}function qf({item:e,active:t,metrics:o}){let n=e.disabled===!0,r=n?u.faintForeground:e.labelTone!==void 0?je[e.labelTone]:t?u.accent:u.foreground;return ol(Xn,{wrap:"truncate",children:[zt(Xn,{color:u.accent,children:t?`${Z.cursor} `:" "}),zt(Xn,{color:r,bold:t,children:Ie(e.label,o.label)}),o.badge>0&&zt(Xn,{color:e.badgeTone===void 0?u.faintForeground:je[e.badgeTone],children:`${" ".repeat(Nr)}${Ie(e.badge??"",o.badge)}`}),e.hint!==void 0&&o.hint>0&&zt(Xn,{color:n||!t?u.faintForeground:u.mutedForeground,children:`${" ".repeat(Nr)}${we(e.hint,o.hint)}`})]})}function Wf({items:e,cursor:t,metrics:o,window:n,width:r,isActive:i,onPick:s,onHover:a,onScroll:c}){let l=fs(t,n),p=e.slice(l,l+n),f=d=>d<p.length?l+d:null,m=Ue({isActive:i,onWheel:c,onClick:({row:d})=>{let S=f(d);S!==null&&s(S)},onHover:({row:d})=>{let S=f(d);S!==null&&a(S)}});return ol(Zc,{ref:m,flexDirection:"column",children:[p.map((d,S)=>{let h=l+S;return Qn(d)?zt(qf,{item:d,active:h===t&&i,metrics:o},h):d.heading===""?zt(Zc,{height:1},h):zt(Io,{title:d.heading,width:r},h)}),e.length>n&&zt(Xn,{color:u.faintForeground,children:`${" ".repeat(nl)}${l+1}-${Math.min(l+n,e.length)} / ${e.length}`})]})}function ae({items:e,onSelect:t,width:o,height:n,isActive:r=!0,retain:i}){let s=Ff(e),a=jf(s,r,t,i);return zt(Wf,{items:s,cursor:a.index,metrics:Hf(s,o),window:Uf(s.length,n),width:o,isActive:r,onPick:a.pick,onHover:a.moveTo,onScroll:a.step})}import{jsx as gt,jsxs as Ir}from"react/jsx-runtime";var rl={ok:{glyph:Z.ok,color:u.success},warn:{glyph:Z.warn,color:u.warning},fail:{glyph:Z.fail,color:u.danger},info:{glyph:Z.bullet,color:u.mutedForeground}};function fe({tone:e,title:t,detail:o,width:n}){let r=rl[e];return Ir(Lo,{flexDirection:"column",children:[Ir(Zn,{children:[gt(Zn,{color:r.color,children:`${r.glyph} `}),gt(Zn,{color:u.foreground,children:we(t,n-2)})]}),o!==void 0&&gt(Zn,{color:u.faintForeground,children:` ${we(o,n-2)}`})]})}function Rn({message:e,hint:t,width:o}){return gt(fe,{tone:"fail",title:e,detail:t,width:o})}var zf=2,Gf=2;function il({tone:e,message:t,width:o,onDismiss:n}){let r=rl[e],i=Ue({onClick:n});return Ir(Lo,{ref:i,children:[gt(Zn,{backgroundColor:u.border,color:r.color,wrap:"truncate",children:` ${r.glyph} `}),gt(Zn,{backgroundColor:u.border,color:u.foreground,wrap:"truncate",children:`${we(t,o-zf-Gf)} `})]})}function We({title:e,detail:t,confirmLabel:o,onConfirm:n,onCancel:r,width:i,busy:s,error:a}){return Ir(Lo,{flexDirection:"column",children:[gt(fe,{tone:"warn",title:e,detail:t,width:i}),a!=null&&gt(Lo,{marginTop:1,children:gt(Rn,{message:a.message,hint:a.hint,width:i})}),gt(Lo,{marginTop:1,children:typeof s=="string"?gt(Ze,{label:s}):gt(ae,{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 Lr,useInput as Vf}from"ink";import{useRef as Jf,useState as Yf}from"react";import{jsx as Mr,jsxs as Xf}from"react/jsx-runtime";function an({lines:e,height:t,isActive:o=!0,pinBottom:n=!1}){let r=e.length>t,i=r?Math.max(1,t-1):t,s=Math.max(0,e.length-i),[a,c]=Yf(n?s:0),l=Jf(s);if(s!==l.current){let d=a>=l.current;l.current=s;let S=n&&d?s:Math.min(a,s);S!==a&&c(S)}let p=d=>c(S=>Math.min(Math.max(0,S+d),s));Vf((d,S)=>{S.upArrow?p(-1):S.downArrow?p(1):S.pageUp?p(-i):S.pageDown&&p(i)},{isActive:o&&r}),z(d=>{d==="k"?p(-1):d==="j"&&p(1)},o&&r);let f=Ue({isActive:o&&r,onWheel:p}),m=e.slice(a,a+i);return Xf(Kf,{ref:f,flexDirection:"column",children:[m.map((d,S)=>Mr(Lr,{wrap:"truncate",children:d.spans.length===0?" ":d.spans.map((h,g)=>Mr(Lr,{color:h.color??u.foreground,bold:h.bold===!0,children:h.text},g))},a+S)),Array.from({length:Math.max(0,i-m.length)},(d,S)=>Mr(Lr,{children:" "},S)),r&&Mr(Lr,{color:u.faintForeground,wrap:"truncate",children:`${a+1}-${Math.min(a+i,e.length)} / ${e.length}`})]})}function Ge(e){return e.tone==="neutral"?void 0:e.tone}function Gt(e){let t=Ge(e);return t===void 0?e.label:{text:e.label,tone:t}}import{useCallback as gs,useRef as Qf,useState as sl}from"react";function ge(){let e=B(),[t,o]=sl(null),[n,r]=sl(null),i=Qf(0),s=gs(()=>{i.current+=1,o(null),r(null)},[]),a=gs((l,p)=>{r({message:l,hint:p})},[]),c=gs((l,p,f={})=>{let m=i.current+=1;o(l),r(null),p().then(d=>{i.current===m&&(o(null),f.onSuccess?.(d))}).catch(d=>{if(i.current!==m)return;o(null);let S={message:Te(d),hint:d instanceof D?d.hint:void 0};f.failToast===!0?e.toast("fail",S.message):r(S)})},[e]);return{busy:t,error:n,reset:s,fail:a,run:c}}import{Lexer as Zf}from"marked";import Or from"string-width";var eg={spans:[]},hs=e=>e===void 0||e.spans.every(t=>t.text.trim()==="");function al(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 $t(e,t,o=0){let n=()=>Array.from({length:o},()=>({ch:" "})),r=[],i=[],s=0,a=!0,c=()=>{r.push(al(i)),a=!1,i=n(),s=o};for(let l of e)for(let p of l.text){if(p===`
5
- `){c();continue}let f=Or(p);if(s+f>t&&i.length>(a?0:o)){let m=a?0:o,d=-1;for(let S=i.length-1;S>m;S-=1)if(i[S]?.ch===" "){d=S;break}if(d>m){let S=i.slice(d+1);i=i.slice(0,d),c(),i=[...i,...S],s=i.reduce((h,g)=>h+Or(g.ch),0)}else c()}i.push({ch:p,color:l.color,bold:l.bold}),s+=f}return(i.length>0||r.length===0)&&r.push(al(i)),r}function Dt(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?Dt(n.tokens,t):[{text:n.text,...t}]);break;case"strong":o.push(...Dt(n.tokens,{...t,bold:!0}));break;case"em":o.push(...Dt(n.tokens,t));break;case"del":o.push(...Dt(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=Dt(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 cl=2,ll=e=>e.reduce((t,o)=>t+Or(o.text),0);function tg(e,t,o,n){let r=e.map(m=>({spans:Dt(m.tokens,{bold:!0,color:u.foreground}),align:m.align})),i=t.map(m=>m.map(d=>({spans:Dt(d.tokens,{color:u.foreground}),align:d.align}))),s=n-(e.length+1)-e.length*2;if(s<e.length*cl)return $t([{text:o,color:u.foreground}],n);let a=e.map(()=>cl);for(let m of[r,...i])m.forEach((d,S)=>{for(let h of $t(d.spans,Number.MAX_SAFE_INTEGER)){let g=a[S],y=ll(h.spans);g!==void 0&&y>g&&(a[S]=y)}});let c=a.reduce((m,d)=>m+d,0);for(;c>s;){let m=0,d=0;a.forEach((S,h)=>{S>d&&(m=h,d=S)}),a[m]=d-1,c-=1}let l=m=>({text:m,color:u.faintForeground}),p=(m,d,S)=>({spans:[l(`${m}${a.map(h=>"\u2500".repeat(h+2)).join(d)}${S}`)]}),f=m=>{let d=a.map((g,y)=>{let x=m[y];return{width:g,align:x?.align??null,lines:$t(x?.spans??[],g)}}),S=d.reduce((g,y)=>Math.max(g,y.lines.length),1),h=[];for(let g=0;g<S;g+=1){let y=[];for(let x of d){let T=x.lines[g]?.spans??[],b=x.width-ll(T),k=x.align==="right"?b:x.align==="center"?Math.floor(b/2):0;y.push(l("\u2502"),{text:` ${" ".repeat(k)}`}),y.push(...T),y.push({text:`${" ".repeat(b-k)} `})}y.push(l("\u2502")),h.push({spans:y})}return h};return[p("\u250C","\u252C","\u2510"),...f(r),p("\u251C","\u253C","\u2524"),...i.flatMap(f),p("\u2514","\u2534","\u2518")]}function bs(e,t){let o=[],n=()=>{o.length>0&&!hs(o[o.length-1])&&o.push(eg)};for(let r of e)switch(r.type){case"space":n();break;case"heading":{let i=Dt(r.tokens,{bold:!0,color:u.foreground}),s=r.depth<=2?[{text:`${Z.section} `,color:u.accent},...i]:i;o.push(...$t(s,t,r.depth<=2?2:0)),n();break}case"paragraph":o.push(...$t(Dt(r.tokens,{color:u.foreground}),t)),n();break;case"text":o.push(...$t("tokens"in r&&r.tokens!==void 0?Dt(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(...$t([{text:` ${i}`,color:u.mutedForeground}],t,2));n();break;case"blockquote":{let i=bs(r.tokens??[],Math.max(4,t-2));for(let s of i)o.push({spans:[{text:`${Z.section} `,color:u.accent},...s.spans.map(a=>({...a,color:a.color??u.mutedForeground}))]});n();break}case"list":{let i=r.ordered===!0,s=typeof r.start=="number"?r.start:1;r.items.forEach((a,c)=>{let l=i?`${s+c}. `:`${Z.bullet} `,p=Or(l),f=bs(a.tokens,Math.max(4,t-p));f.forEach((m,d)=>{hs(m)&&d===f.length-1||o.push({spans:d===0?[{text:l,color:u.mutedForeground},...m.spans]:[{text:" ".repeat(p)},...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(...tg(r.header,r.rows,r.raw,t)),n();break;default:o.push(...$t([{text:r.raw,color:u.foreground}],t))}return o}function eo(e,t){let o=Zf.lex(e,{gfm:!0,breaks:!0}),n=bs(o,Math.max(8,t));for(;n.length>0&&hs(n[n.length-1]);)n.pop();return n}import{Box as Oo}from"ink";import{Box as ng,Text as ul}from"ink";import dl from"string-width";import{jsx as ml,jsxs as og}from"react/jsx-runtime";var $r=["\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"],pl=Math.max(...$r.map(e=>dl(e))),Dr=$r.length,Br=e=>pl<=e;function Fr({width:e}){let t=`v${dt}`,o=pl+2+dl(t)<=e;return ml(ng,{flexDirection:"column",children:$r.map((n,r)=>og(ul,{color:u.accent,children:[n,r===$r.length-1&&o&&ml(ul,{color:u.faintForeground,children:` ${t}`})]},n))})}import{Box as xs,Text as lt}from"ink";import{useState as fl}from"react";import no from"string-width";import{jsx as ht,jsxs as Ur}from"react/jsx-runtime";var jr=2,ys=` ${Z.crumb} `;function Hr({trail:e,width:t,onBack:o,isActive:n}){let r=e[e.length-1]??"",i=e.slice(0,-1),s=i.reduce((m,d)=>m+no(d)+no(ys),0),a=s+no(r)<=t,c=a?s:0,[l,p]=fl(!1),f=Ue({isActive:n,onClick:({column:m})=>{m<c&&o()},onHover:({column:m})=>p(m<c),onHoverLeave:()=>p(!1)});return ht(xs,{ref:f,marginBottom:1,children:a?Ur(lt,{children:[i.map((m,d)=>Ur(lt,{children:[ht(lt,{color:d===0?u.accent:l&&n?u.foreground:u.mutedForeground,children:m}),ht(lt,{color:u.faintForeground,children:ys})]},d)),ht(lt,{bold:!0,color:u.foreground,children:r})]}):ht(lt,{color:u.mutedForeground,children:we(e.join(ys),t)})})}var Ss=2,Mo=2,to=2;function gl({current:e,width:t,onPick:o,isActive:n}){let r=Math.max(0,Co(e)),[i,s]=fl(null),a=Math.max(...Qe.map(y=>no(y.label))),l=(y=>y*a+(y-1)*Mo+Ss)(Qe.length)>t,p=l?t-to*2:t,f=l?Math.max(1,Math.floor((p+Mo-Ss)/(a+Mo))):Qe.length,m=Math.min(Math.max(0,r-Math.floor((f-1)/2)),Qe.length-f),d=Qe.slice(m,m+f),S=[],h=l?to:0;d.forEach((y,x)=>{x>0&&(h+=Mo);let T=no(y.label)+(y.id===e?Ss:0);S.push({id:y.id,from:h,to:h+T}),h+=T});let g=Ue({isActive:n,onHover:({column:y})=>{let x=S.find(T=>y>=T.from&&y<T.to);s(x?.id??null)},onHoverLeave:()=>s(null),onClick:({column:y})=>{let x=S.find(b=>y>=b.from&&y<b.to);if(x!==void 0){o(x.id);return}if(!l||y>=to&&y<h)return;let T=y<to?Qe[m-1]:Qe[m+f];T!==void 0&&o(T.id)}});return ht(xs,{ref:g,marginBottom:1,children:Ur(lt,{wrap:"truncate",children:[l&&ht(lt,{color:u.border,children:m>0?`${Z.prev} `:" ".repeat(to)}),d.map((y,x)=>Ur(lt,{children:[x>0&&" ".repeat(Mo),y.id===e?ht(lt,{backgroundColor:u.foreground,color:u.background,bold:!0,children:` ${y.label} `}):ht(lt,{color:n&&y.id===i?u.foreground:u.mutedForeground,children:y.label})]},y.id)),l&&ht(lt,{color:u.border,children:m+f<Qe.length?` ${Z.next}`:" ".repeat(to)})]})})}function hl({hints:e,width:t}){let o=[];for(let n of e){if(no(De([...o,n]))>t)break;o.push(n)}return ht(xs,{children:ht(lt,{color:u.faintForeground,children:De(o)})})}import{Fragment as ig,jsx as et,jsxs as Sl}from"react/jsx-runtime";var bl=3,rg=8;function $o(e){let{rows:t}=H();return Math.max(1,t-rs-bl-e)}function yl(){let e=B(),{width:t,rows:o}=H(),n=e.current.id,r=e.depth===1&&vr(n)?n:null,i=Math.max(1,o-rs-bl),s=Dr+Y,a=r!==null&&Br(t)&&i-jr-s>=rg;return{tab:r,mark:a,rows:a?jr+s:jr}}var re=()=>$o(yl().rows);function Cn({header:e,hints:t,children:o}){let{width:n}=H(),{message:r,dismissToast:i}=B();return Sl(Oo,{flexDirection:"column",flexGrow:1,children:[e,et(Oo,{flexDirection:"column",flexGrow:1,overflow:"hidden",children:et(Oo,{flexDirection:"column",flexShrink:0,children:o})}),et(Oo,{height:1,marginTop:1,justifyContent:"flex-end",children:r!==null&&et(il,{tone:r.tone,message:r.message,width:n,onDismiss:i})}),et(hl,{hints:t,width:n})]})}function K({trail:e,hints:t=[],children:o,onEscape:n,isActive:r=!0,locked:i=!1,bleed:s=!1}){let a=B(),{width:c}=H(),{tab:l,mark:p}=yl(),f=Tr(),m=wr(),d=m?[]:["[] \u5207\u529F\u80FD","q \u9000\u51FA","? \u5E2E\u52A9"],S=m?[]:["? \u5E2E\u52A9"];rn(n??a.pop,{isActive:r});let h=Oc(),g=r&&!i&&!f;return z(y=>{if(l===null||y!=="["&&y!=="]")return;let x=Qe[(Co(l)+(y==="["?-1:1)+Qe.length)%Qe.length];x!==void 0&&a.select(x.id)},r&&!i&&!f&&!s),s?et(Cn,{header:null,hints:i?t:[...t,"Esc \u8FD4\u56DE",...S],children:o}):l!==null?et(Cn,{header:Sl(ig,{children:[p&&et(Oo,{marginBottom:Y,children:et(Fr,{width:c})}),et(gl,{current:l,width:c,onPick:y=>{y===l?h():a.select(y)},isActive:g})]}),hints:i?t:[...t,...d],children:o}):et(Cn,{header:et(Hr,{trail:["CodeFlow",...e??[]],width:c,onBack:h,isActive:g}),hints:i?t:[...t,"Esc \u8FD4\u56DE",...S],children:o})}function X({state:e,loading:t,width:o,children:n}){return e.phase==="loading"?et(Ze,{label:t}):e.phase==="error"?et(Rn,{message:e.message,hint:e.hint,width:o}):n(e.data)}import{jsx as bt,jsxs as Ts}from"react/jsx-runtime";function xl({params:e}){let t=B(),{width:o}=H(),n=re(),{item:r}=e,{busy:i,error:s,run:a}=ge();sg((f,m)=>{m.return&&a("\u6B63\u5728\u786E\u8BA4",()=>br(r.id),{onSuccess:()=>t.pop()})},{isActive:i===null});let c=xo(r.level),l=Ge(c),p=Math.max(3,n-4-(s===null?0:2));return bt(K,{trail:["\u7CFB\u7EDF\u516C\u544A","\u672A\u8BFB\u786E\u8BA4"],hints:["\u2191\u2193 \u6EDA\u52A8","Enter \u6211\u77E5\u9053\u4E86"],locked:!0,onEscape:()=>{},children:Ts(qr,{flexDirection:"column",children:[Ts(En,{wrap:"truncate",children:[bt(En,{bold:!0,color:u.foreground,children:r.title}),bt(En,{color:l===void 0?u.mutedForeground:je[l],children:` ${c.label}`}),bt(En,{color:u.faintForeground,children:` \u53D1\u5E03\u4E8E ${qt(r.publishedAt)}`})]}),bt(qr,{marginTop:1,children:bt(an,{lines:eo(r.content,o),height:p})}),s!==null&&bt(qr,{marginTop:1,children:bt(Rn,{message:s.message,hint:s.hint,width:o})}),bt(qr,{marginTop:1,children:i!==null?bt(Ze,{label:i}):Ts(En,{wrap:"truncate",children:[bt(En,{color:u.accent,children:`${Z.cursor} `}),bt(En,{bold:!0,color:u.accent,children:"\u6211\u77E5\u9053\u4E86"})]})})]})})}import{Box as Rs,Text as Wr}from"ink";import{useState as hg}from"react";import{Box as ws,Text as Kt}from"ink";import{useEffect as Tl,useRef as ag,useState as wl}from"react";import ks from"string-width";import{jsx as cn,jsxs as Bo}from"react/jsx-runtime";var kl=e=>e===void 0?"":typeof e=="string"?e:e.text,vs=2,cg=6;function lg(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 _s(e,t,o){let n=e.map((c,l)=>Math.max(ks(c.label),...t.map(p=>ks(p[l]??"")))),r=n.reduce((c,l)=>c+l,0),i=r+vs*Math.max(0,e.length-1)-o;if(i<0)return lg(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)>cg).sort((l,p)=>(n[p]??0)-(n[l]??0))[0];if(c===void 0)break;n[c]=(n[c]??0)-1,i-=1}return n}var ug=(e,t,o)=>t.map((n,r)=>n.align==="right"?sn(e[r]??"",o[r]??0):Ie(e[r]??"",o[r]??0)).join(" ".repeat(vs)),Do=2,mg=2;function Ce({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:p}){let f=O=>p===void 0?void 0:`${p}:${O}`,m=i!==void 0,[d,S]=Je(m?f("cursor"):void 0,()=>0),[h,g]=Je(f("query"),()=>""),[y,x]=wl(!1),T=h.trim().toLowerCase(),b=T===""||s===void 0?e:e.filter(O=>s(O).toLowerCase().includes(T)),k=y||T!=="",E=Math.max(1,r-1-(k?1:0)),A=b.length>E?Math.max(1,E-1):E,U=Math.max(0,b.length-A),[v,P]=wl(()=>d>=A?d-A+1:0);Tl(()=>{S(O=>Math.min(O,Math.max(0,b.length-1)))},[b.length]),Tl(()=>{P(O=>m?d<O?d:d>=O+A?d-A+1:O:Math.min(O,U))},[d,A,U,m]);let _=O=>{if(!m){P(G=>Math.min(Math.max(0,G+O),U));return}b.length!==0&&S(G=>(G+O+b.length)%b.length)};z((O,G)=>{if(G.upArrow||O==="k"){_(-1);return}if(G.downArrow||O==="j"){_(1);return}if(G.return){let j=b[d];j!==void 0&&i?.(j,d);return}s!==void 0&&O.startsWith("/")&&(x(!0),O.length>1&&g(O.slice(1)))},a&&!y),rn(()=>{x(!1),g("")},{isActive:y||T!=="",layer:y?Jn.input:Jn.panel});let R=k?1:0,w=ag(null),N=O=>{if(O<=R)return null;let G=v+O-R-1;return b[G]===void 0?null:G},C=Ue({isActive:a,onWheel:_,onClick:({row:O,column:G})=>{if(k&&O===0){x(!0),w.current?.moveToColumn(G-mg);return}if(i===void 0)return;let j=N(O);if(j===null)return;let ie=b[j];ie!==void 0&&(S(j),i(ie,j))},onHover:m?({row:O})=>{let G=N(O);G!==null&&S(G)}:void 0}),M=_s(t,b.map(O=>o(O).map(kl)),n-Do),q=b.slice(v,v+A);return Bo(ws,{ref:C,flexDirection:"column",children:[k&&Bo(ws,{children:[cn(Kt,{color:u.accent,children:"/ "}),cn(Ar,{ref:w,value:h,onChange:g,onSubmit:()=>x(!1),isActive:y,placeholder:"\u8F93\u5165\u5173\u952E\u8BCD\u8FC7\u6EE4",width:n-2-ks(` ${b.length}/${e.length}`)}),cn(Kt,{color:u.faintForeground,children:` ${b.length}/${e.length}`})]}),Bo(Kt,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(Do),ug(t.map(O=>O.label),t,M)]}),b.length===0?Bo(ws,{flexDirection:"column",children:[cn(Kt,{wrap:"truncate",color:u.mutedForeground,children:`${" ".repeat(Do)}${T===""?c:"\u65E0\u5339\u914D\u7ED3\u679C"}`}),l!==void 0&&T===""&&E>1&&cn(Kt,{wrap:"truncate",color:u.faintForeground,children:`${" ".repeat(Do)}${l}`})]}):q.map((O,G)=>{let j=v+G,ie=m&&j===d&&a,it=ie?u.accent:a?u.foreground:u.mutedForeground,I=o(O);return Bo(Kt,{wrap:"truncate",children:[cn(Kt,{color:u.accent,children:ie?`${Z.cursor} `:" "}),t.map((F,J)=>{let de=I[J],Me=kl(de),wt=F.align==="right"?sn(Me,M[J]??0):Ie(Me,M[J]??0),kt=typeof de=="object"?de.tone:void 0,Oe=!ie&&a&&kt!==void 0?je[kt]:it;return cn(Kt,{color:Oe,bold:ie,children:J>0?`${" ".repeat(vs)}${wt}`:wt},F.label)})]},j)}),(v>0||v+A<b.length)&&cn(Kt,{color:u.faintForeground,children:`${" ".repeat(Do)}${v+1}-${Math.min(v+A,b.length)} / ${b.length}`})]})}import{Text as dg}from"ink";import{useEffect as pg,useState as fg}from"react";import{jsx as gg}from"react/jsx-runtime";var vl=100;function ln(e,t,{retain:o}={}){let[n,r]=Je(o,()=>1),[i,s]=fg({pages:1,total:0}),a=Q([...e,n],()=>t(n,vl));pg(()=>{a.phase==="ready"&&s({pages:Math.max(1,Math.ceil(a.data.total/vl)),total:a.data.total})},[a]);let c=p=>{r(f=>Math.min(Math.max(1,f+p),i.pages))},l=()=>r(1);return{state:a,page:n,pages:i.pages,total:i.total,go:c,reset:l}}function un({page:e,pages:t,total:o,width:n}){return gg(dg,{wrap:"truncate",color:u.faintForeground,children:we(De([`\u7B2C ${e} / ${t} \u9875`,`\u5171 ${o} \u6761`,"\u2190\u2192 \u7FFB\u9875"]),n)})}import{jsx as Vt,jsxs as Cs}from"react/jsx-runtime";function _l(){let e=B(),{width:t}=H(),o=re(),[n,r]=hg({name:"list"}),i=ln([e.revision],(a,c)=>Rc({page:a,pageSize:c}),{retain:"page"});z((a,c)=>{n.name==="list"&&(a==="r"?e.reload():c.leftArrow?i.go(-1):c.rightArrow&&i.go(1))});let s=()=>{n.name==="list"?e.pop():r({name:"list"})};return Vt(K,{hints:n.name==="list"?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","r \u5237\u65B0"]:["\u2191\u2193 \u6EDA\u52A8","Esc \u8FD4\u56DE"],onEscape:s,children:Vt(X,{state:i.state,loading:"\u6B63\u5728\u8BFB\u53D6\u516C\u544A",width:t,children:a=>{if(n.name==="detail"){let c=xo(n.item.level),l=Ge(c);return Cs(Rs,{flexDirection:"column",children:[Cs(Wr,{wrap:"truncate",children:[Vt(Wr,{bold:!0,color:u.foreground,children:n.item.title}),Vt(Wr,{color:l===void 0?u.mutedForeground:je[l],children:` ${c.label}`}),Vt(Wr,{color:u.faintForeground,children:` ${De([`\u53D1\u5E03\u4E8E ${qt(n.item.publishedAt)}`])}`})]}),Vt(Rs,{marginTop:1,children:Vt(an,{lines:eo(n.item.content,t),height:Math.max(3,o-2)})})]})}return Cs(Rs,{flexDirection:"column",children:[Vt(Ce,{retain:"list",items:a.items,width:t,height:Math.max(3,o-1),columns:[{label:"\u6807\u9898",shrink:!0},{label:"\u7EA7\u522B"},{label:"\u53D1\u5E03\u4E8E",align:"right"}],row:c=>[c.title,Gt(xo(c.level)),qt(c.publishedAt)],onOpen:c=>{r({name:"detail",item:c}),br(c.id).catch(()=>e.toast("warn","\u5DF2\u8BFB\u786E\u8BA4\u53D1\u9001\u5931\u8D25"))},emptyLabel:"\u6682\u65E0\u516C\u544A",emptyDescription:"\u5E73\u53F0\u6709\u65B0\u901A\u77E5\u65F6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),Vt(un,{page:i.page,pages:i.pages,total:i.total,width:t})]})}})})}import{Box as St,Text as jo}from"ink";import{useState as lu}from"react";import Fg from"string-width";var Rl=()=>$(qa,"/auth/me"),Cl=e=>$(ye,"/auth/me",{method:"PATCH",json:e}).then(()=>{}),El=e=>$(ye,"/auth/me/password",{method:"POST",json:e}).then(()=>{}),Al=e=>$(ye,"/auth/me/email/code",{method:"POST",json:e}).then(()=>{}),Pl=e=>$(ye,"/auth/me/email",{method:"POST",json:e}).then(()=>{}),Nl=()=>$(Wa,"/auth/me/sessions"),Il=e=>$(ye,`/auth/me/sessions/${e}`,{method:"DELETE"}).then(()=>{}),Ll=()=>$(Ga,"/auth/me/security"),Es=e=>$(za,"/auth/me/totp/setup",{method:"POST",json:e}),Ml=e=>$(qi,"/auth/me/totp/confirm",{method:"POST",json:e}),Ol=e=>$(ye,"/auth/me/totp/disable",{method:"POST",json:e}).then(()=>{}),$l=e=>$(qi,"/auth/me/totp/recovery-codes",{method:"POST",json:e}),Dl=(e,t)=>$(ye,`/auth/me/passkeys/${e}`,{method:"PATCH",json:t}).then(()=>{}),Bl=e=>$(ye,`/auth/me/passkeys/${e}`,{method:"DELETE"}).then(()=>{});import{Box as Bt,measureElement as Gl,Text as Ee,useInput as Xl}from"ink";import{useEffect as Tg,useRef as Kl,useState as oo}from"react";import Is from"string-width";import{Box as bg,Text as mn,useInput as yg}from"ink";import{useRef as Fl,useState as Ul}from"react";import Ps from"string-width";import{jsx as Jt,jsxs as Wl}from"react/jsx-runtime";var Sg=e=>e.replace(/\r\n?/g,`
8
- `).replace(new RegExp("(?!\\n)\\p{Cc}","gu"),"");function jl(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=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 Hl(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 ql(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 xg=(e,t,o)=>e.slice(t.start,o).reduce((n,r)=>n+Ps(r),0);function As(e,t){let o=t;for(;o>0&&e[o-1]!==`
2
+ import{once as Iy}from"events";import{createInterface as Ly}from"readline/promises";import{parseArgs as My}from"util";var fa={name:"@codeflow-ai/cli",version:"1.21.0",type:"module",description:"CodeFlow \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF\uFF1A\u4E00\u952E\u914D\u7F6E AI \u5BA2\u6237\u7AEF",keywords:["codeflow","claude-code","codex","cli"],license:"UNLICENSED",engines:{node:">=22"},bin:{codeflow:"./dist/cli.js"},files:["dist"],publishConfig:{access:"public"},scripts:{dev:"tsx src/cli.ts",build:"tsup",typecheck:"tsc --noEmit"},dependencies:{"@decimalturn/toml-patch":"3.0.2",ink:"7.1.1",marked:"18.0.5",qrcode:"1.5.4",react:"19.2.0","smol-toml":"1.7.0","string-width":"8.2.0",zod:"4.4.3"},devDependencies:{"@codeflow/shared":"workspace:*","@types/node":"25.9.1","@types/qrcode":"1.5.6","@types/react":"19.2.2",tsup:"8.5.1",tsx:"4.22.3",typescript:"5.9.3"}};var dt="codeflow",pt=fa.version,ga="https://codeflow.asia",jn="@codeflow-ai/cli",po=0,qn=1,Ai=2,bn=3,ha=4;import{randomBytes as np}from"crypto";import{mkdirSync as xa,readFileSync as op,rmSync as Ta,statSync as rp,writeFileSync as ip}from"fs";import{join as wa}from"path";import{setTimeout as sp}from"timers/promises";import{z as _t}from"zod";var $=class extends Error{exitCode;hint;constructor(t,o={}){super(t,{cause:o.cause}),this.name="CliError",this.exitCode=o.exitCode??qn,this.hint=o.hint}};function Te(e){return e instanceof Error?e.message:String(e)}import{chmodSync as Jd,existsSync as Yd,mkdirSync as Xd,readFileSync as Qd,writeFileSync as Zd}from"fs";import{dirname as ep}from"path";function Hn(e){return Yd(e)?Qd(e,"utf8"):null}function Pi(e,t,o){Xd(ep(e),{recursive:!0,mode:448});try{Zd(e,t,{mode:o}),Jd(e,o)}catch(n){throw new $(`\u5199\u5165 ${e} \u5931\u8D25\uFF1A${Te(n)}`,{cause:n})}}function tr(e){let t=Hn(e);if(t===null)return null;if(t.trim()==="")return{};let o;try{o=JSON.parse(t)}catch(n){throw new $(`${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 $(`${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 nr(e,t,o){Pi(e,`${JSON.stringify(t,null,2)}
3
+ `,o)}function or(e,t,o,n){let r=null,i=()=>{if(r)return r;let s=t(),a=Hn(s);if(a===null)return r=e.parse({}),r;let c;try{c=JSON.parse(a)}catch(m){throw new $(`${o} ${s} \u5DF2\u635F\u574F\uFF0C\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u540E${n}`,{cause:m})}let l=e.safeParse(c);if(!l.success)throw new $(`${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),nr(t(),a,384),r=a,a}}}import{homedir as tp}from"os";import{join as Wn}from"path";function Ht(){let e=process.env.XDG_CONFIG_HOME;if(e)return Wn(e,"codeflow");if(process.platform==="win32"){let t=process.env.APPDATA;if(t)return Wn(t,"codeflow")}return Wn(tp(),".config","codeflow")}var ba=()=>Wn(Ht(),"config.json"),ya=()=>Wn(Ht(),"credentials.json"),Sa=()=>Wn(Ht(),"refresh.lock");var ap=_t.object({refreshCookie:_t.string(),accessToken:_t.string(),accessExpiresAt:_t.number(),username:_t.string(),email:_t.string(),site:_t.string()}),cp=_t.object({site:_t.string(),cookie:_t.string()}),lp=_t.object({session:ap.nullable().default(null),device:cp.nullable().default(null)}),Ni=or(lp,ya,"\u672C\u5730\u51ED\u636E","\u91CD\u65B0\u767B\u5F55"),Rt=Ni.load,ka=Ni.reload,Ii=Ni.update;function va(){let{session:e}=Rt();if(!e)throw new $("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:bn});return e}var up=6e4,mp=75e3,dp=120;function pp(e,t){try{xa(e)}catch{try{Date.now()-rp(e).mtimeMs>up&&Ta(e,{recursive:!0,force:!0})}catch{}return!1}return ip(wa(e,"owner"),t),!0}function fp(e,t){let o;try{o=op(wa(e,"owner"),"utf8")}catch{return}o===t&&Ta(e,{recursive:!0,force:!0})}async function _a(e){let t=Sa(),o=np(16).toString("hex");xa(Ht(),{recursive:!0,mode:448});let n=Date.now()+mp;for(;!pp(t,o);){if(Date.now()>n)throw new $(`\u7B49\u5F85\u5237\u65B0\u9501\u8D85\u65F6\uFF0C\u82E5\u786E\u8BA4\u6CA1\u6709\u5176\u4ED6 ${dt} \u5728\u8FD0\u884C\uFF0C\u8BF7\u5220\u9664 ${t}`);await sp(dp)}try{return await e()}finally{fp(t,o)}}function gp(){let e=process.env.CODEFLOW_SITE;if(e)return e;let t=Rt().session;return t?t.site:ga}function Ra(){return{site:gp()}}function yn(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 sf,rmSync as af}from"fs";import{z as $e}from"zod";var hp=["active","disabled"],bS=$e.enum(hp),bp=["openai","anthropic"],yS=$e.enum(bp),yp=["openai-chat","openai-responses","anthropic-messages"],Ca=$e.enum(yp);var Sp=["enabled","disabled"],SS=$e.enum(Sp),fo=["pending","paid","refund_requested","partially_refunded","refunded","failed","expired"],Ea=$e.enum(fo),xp=["recharge","subscription"],xS=$e.enum(xp),Tp=["requested","pending","succeeded","failed","rejected","canceled"],Aa=$e.enum(Tp),Li=["pending","issued","rejected"],Pa=$e.enum(Li),wp=["special","general"],Mi=$e.enum(wp),kp=["info","success","warning","error"],Na=$e.enum(kp),vp=["terms","privacy"],TS=$e.enum(vp),Oi=["recharge","reserve","consume","reserve_refund","refund","refund_release","reward","admin_adjust"],Ia=$e.enum(Oi),_p=["usage_log","order","invitation","admin"],La=$e.enum(_p),$i=["first_inviter","first_invitee","subsequent_inviter"],Ma=$e.enum($i),Di=["success","error","canceled","anomaly"],Oa=$e.enum(Di),Bi=["open","replied","closed"],$a=$e.enum(Bi),Fi=["billing","technical","account","other"],Da=$e.enum(Fi),Ui=["low","normal","high"],Ba=$e.enum(Ui),Rp=["user","admin"],Fa=$e.enum(Rp);import{z as tn}from"zod";var Cp=["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","model_not_in_group","token_group_missing","token_quota_exceeded","upstream_error","pricing_catalog_unavailable","channel_name_taken","order_not_found","order_not_payable","payment_verify_failed","payment_precreate_failed","amount_mismatch","refund_not_allowed","refund_amount_invalid","refund_insufficient_balance","refund_failed","refund_pending","refund_in_progress","refund_blocked_by_pending_order","refund_order_superseded","refund_request_not_found","refund_nothing_refundable","subscription_limit_reached","subscription_revoked","plan_disabled","plan_in_use","group_in_use","order_already_invoiced","order_not_eligible","order_invoiced","invoice_profile_exists","invoice_provider_not_configured","invoice_email_not_configured","invoice_issue_failed","invoice_tax_sms_required","invoice_tax_face_required","invoice_tax_auth_failed","invoice_delivery_failed","invite_code_invalid","ticket_closed","ticket_limit_exceeded","attachment_storage_unconfigured","attachment_too_large","attachment_invalid","attachment_staging_limit_exceeded","backup_not_configured","backup_running"],Ep=tn.enum(Cp),Ua=tn.object({error:tn.object({code:Ep,message:tn.string(),details:tn.unknown().optional(),requestId:tn.string().optional()})}),vS=tn.object({reason:tn.string()});var ja={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",model_not_in_group:"\u4EE4\u724C\u6240\u5C5E\u5206\u7EC4\u4E0D\u652F\u6301\u8BE5\u6A21\u578B\uFF0C\u8BF7\u66F4\u6362\u4EE4\u724C\u5206\u7EC4\u6216\u6539\u7528\u5206\u7EC4\u652F\u6301\u7684\u6A21\u578B",token_group_missing:"\u4EE4\u724C\u6240\u5C5E\u5206\u7EC4\u5DF2\u88AB\u5220\u9664\uFF0C\u8BF7\u7F16\u8F91\u4EE4\u724C\u91CD\u65B0\u9009\u62E9\u5206\u7EC4",token_quota_exceeded:"\u8BE5\u4EE4\u724C\u7684\u6D88\u8D39\u5DF2\u8FBE\u8D39\u7528\u9650\u5236\uFF0C\u8BF7\u8C03\u9AD8\u6216\u6E05\u9664\u9650\u5236\u540E\u518D\u4F7F\u7528",upstream_error:"\u4E0A\u6E38\u670D\u52A1\u8FD4\u56DE\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",pricing_catalog_unavailable:"\u5B98\u65B9\u4EF7\u683C\u8868\u83B7\u53D6\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",channel_name_taken:"\u8BE5\u6E20\u9053\u540D\u79F0\u5DF2\u88AB\u4F7F\u7528",order_not_found:"\u8BA2\u5355\u4E0D\u5B58\u5728",order_not_payable:"\u8BA2\u5355\u72B6\u6001\u5DF2\u53D8\u5316\uFF0C\u8BF7\u5237\u65B0\u540E\u518D\u8BD5",payment_verify_failed:"\u652F\u4ED8\u7ED3\u679C\u786E\u8BA4\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",payment_precreate_failed:"\u53D1\u8D77\u652F\u4ED8\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",amount_mismatch:"\u652F\u4ED8\u91D1\u989D\u4E0E\u8BA2\u5355\u4E0D\u7B26\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458",refund_not_allowed:"\u8BE5\u8BA2\u5355\u5F53\u524D\u4E0D\u53EF\u9000\u6B3E",refund_amount_invalid:"\u9000\u6B3E\u91D1\u989D\u4E0D\u6B63\u786E\u6216\u8D85\u8FC7\u53EF\u9000\u4F59\u989D",refund_insufficient_balance:"\u53EF\u7528\u989D\u5EA6\u4E0D\u8DB3\u4EE5\u6263\u56DE\u672C\u6B21\u9000\u6B3E\uFF08\u5DF2\u6D88\u8017\u90E8\u5206\u5BF9\u5E94\u7684\u73B0\u91D1\u4E0D\u53EF\u9000\uFF09",refund_failed:"\u652F\u4ED8\u5B9D\u9000\u6B3E\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u6216\u68C0\u67E5\u652F\u4ED8\u5B9D\u5546\u6237\u540E\u53F0",refund_pending:"\u9000\u6B3E\u7ED3\u679C\u5F85\u786E\u8BA4\uFF0C\u8BF7\u7A0D\u540E\u67E5\u770B\u9000\u6B3E\u8BB0\u5F55",refund_in_progress:"\u8BE5\u8BA2\u5355\u6216\u8BA2\u9605\u6709\u9000\u6B3E\u6B63\u5728\u5904\u7406\u4E2D\uFF0C\u8BF7\u5F85\u5176\u5B8C\u6210\u540E\u518D\u64CD\u4F5C",refund_blocked_by_pending_order:"\u8BE5\u8BA2\u9605\u6709\u5F85\u652F\u4ED8\u7684\u7EED\u8D39\u8BA2\u5355\uFF0C\u8BF7\u5F85\u5176\u652F\u4ED8\u6216\u8D85\u65F6\u540E\u518D\u9000\u6B3E",refund_order_superseded:"\u5B58\u5728\u66F4\u665A\u5165\u8D26\u7684\u8BA2\u5355\uFF0C\u8BF7\u6309\u4ECE\u65B0\u5230\u65E7\u7684\u987A\u5E8F\u9000\u6B3E",refund_request_not_found:"\u9000\u6B3E\u7533\u8BF7\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u5904\u7406\uFF0C\u8BF7\u5237\u65B0\u540E\u67E5\u770B",refund_nothing_refundable:"\u8BE5\u8BA2\u9605\u8BA2\u5355\u6309\u9650\u989D\u5468\u671F\u8BA1\u8D39\u540E\u5DF2\u65E0\u53EF\u9000\u91D1\u989D",subscription_limit_reached:"\u8BA2\u9605\u989D\u5EA6\u5DF2\u7528\u5C3D\uFF0C\u8BF7\u7B49\u5F85\u7A97\u53E3\u91CD\u7F6E",subscription_revoked:"\u8BE5\u8BA2\u9605\u5DF2\u88AB\u4F5C\u5E9F",plan_disabled:"\u8BE5\u5957\u9910\u5DF2\u505C\u552E",plan_in_use:"\u8BE5\u5957\u9910\u5DF2\u6709\u8BA2\u9605\u6216\u8BA2\u5355\u5F15\u7528\uFF0C\u65E0\u6CD5\u5220\u9664\uFF08\u53EF\u6539\u4E3A\u505C\u552E\u5E76\u9690\u85CF\uFF09",group_in_use:"\u8BE5\u5206\u7EC4\u6B63\u88AB\u8BA2\u9605\u5957\u9910\u8986\u76D6\uFF0C\u8BF7\u5148\u8C03\u6574\u5957\u9910\u7684\u8986\u76D6\u5206\u7EC4\u540E\u518D\u5220\u9664",order_already_invoiced:"\u8BE5\u8BA2\u5355\u5DF2\u7533\u8BF7\u8FC7\u53D1\u7968",order_not_eligible:"\u6240\u9009\u8BA2\u5355\u4E0D\u7B26\u5408\u5F00\u7968\u6761\u4EF6",order_invoiced:"\u8BE5\u8BA2\u5355\u5DF2\u5F00\u7968\u6216\u6709\u672A\u5904\u7406\u7684\u5F00\u7968\u7533\u8BF7\uFF0C\u65E0\u6CD5\u9000\u6B3E",invoice_profile_exists:"\u5DF2\u5B58\u5728\u76F8\u540C\u7684\u5E38\u7528\u5F00\u7968\u4FE1\u606F",invoice_provider_not_configured:"\u5C1A\u672A\u914D\u7F6E\u5F00\u7968\u670D\u52A1\uFF0C\u8BF7\u5148\u5728\u7CFB\u7EDF\u8BBE\u7F6E\u4E2D\u5B8C\u6210\u53D1\u7968\u914D\u7F6E",invoice_email_not_configured:"\u5C1A\u672A\u914D\u7F6E\u90AE\u4EF6\u670D\u52A1\uFF0C\u65E0\u6CD5\u5411\u7528\u6237\u6295\u9012\u53D1\u7968\u9644\u4EF6",invoice_issue_failed:"\u5F00\u7968\u5931\u8D25",invoice_tax_sms_required:"\u7535\u5B50\u7A0E\u52A1\u5C40\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u9700\u8981\u77ED\u4FE1\u9A8C\u8BC1\u540E\u7EE7\u7EED\u5F00\u7968",invoice_tax_face_required:"\u7535\u5B50\u7A0E\u52A1\u5C40\u8981\u6C42\u4EBA\u8138\u8BA4\u8BC1\uFF0C\u8BF7\u626B\u7801\u8BA4\u8BC1\u540E\u7EE7\u7EED\u5F00\u7968",invoice_tax_auth_failed:"\u7A0E\u52A1\u8EAB\u4EFD\u9A8C\u8BC1\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5",invoice_delivery_failed:"\u53D1\u7968\u5DF2\u5F00\u5177\uFF0C\u4F46\u53D1\u7968\u6587\u4EF6\u53D6\u56DE\u6216\u90AE\u4EF6\u53D1\u9001\u5931\u8D25",invite_code_invalid:"\u9080\u8BF7\u7801\u65E0\u6548",ticket_closed:"\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u8BF7\u5148\u91CD\u65B0\u6253\u5F00\u540E\u518D\u56DE\u590D",ticket_limit_exceeded:"\u672A\u5173\u95ED\u7684\u5DE5\u5355\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650\uFF0C\u8BF7\u5148\u5173\u95ED\u5DF2\u89E3\u51B3\u7684\u5DE5\u5355",attachment_storage_unconfigured:"\u5C1A\u672A\u914D\u7F6E\u9644\u4EF6\u5B58\u50A8",attachment_too_large:"\u9644\u4EF6\u5927\u5C0F\u8D85\u8FC7\u9650\u5236",attachment_invalid:"\u9644\u4EF6\u65E0\u6548\u6216\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u4E0A\u4F20",attachment_staging_limit_exceeded:"\u5F85\u63D0\u4EA4\u7684\u9644\u4EF6\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650\uFF0C\u8BF7\u5148\u63D0\u4EA4\u73B0\u6709\u9644\u4EF6",backup_not_configured:"\u5C1A\u672A\u914D\u7F6E\u5907\u4EFD\u5B58\u50A8",backup_running:"\u5907\u4EFD\u6B63\u5728\u8FDB\u884C\u4E2D"};import{z as ue}from"zod";var Ap=ue.string().trim().min(1),ji=Ap.pipe(ue.url()),Pp=ue.object({name:ue.string().trim().min(1).max(64),description:ue.string().trim().min(1).max(200),url:ji}),qa=ue.array(Pp),Np=["string","number","boolean","secret","markdown","money","api-lines","origins"],Ip=ue.enum(Np),Lp=ue.object({key:ue.string(),type:Ip,label:ue.string(),description:ue.string().optional(),value:ue.unknown().optional(),secret:ue.boolean().default(!1),required:ue.boolean().default(!1),min:ue.number().optional(),max:ue.number().optional(),step:ue.number().optional(),unit:ue.string().optional(),placeholder:ue.string().optional()}),ES=ue.object({key:ue.string(),label:ue.string(),description:ue.string().optional(),fields:ue.array(Lp)}),AS=ue.object({values:ue.record(ue.string(),ue.unknown()).refine(e=>Object.keys(e).length>0,{message:"at least one value required"})}),PS=ue.object({fields:ue.record(ue.string(),ue.string())});function Ha(e){return`codeflow-cli/${e.cliVersion} (${e.platform} ${e.release}; ${e.arch}) node/${e.nodeVersion}`}function rr(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 ft}from"zod";var qi=1e8;var MS=ft.object({id:ft.coerce.number().int().positive()}),OS=ft.object({page:ft.coerce.number().int().min(1).default(1),pageSize:ft.coerce.number().int().min(1).max(100).default(20)});function Sn(e){return ft.object({items:ft.array(e),total:ft.number().int().nonnegative(),page:ft.number().int().positive(),pageSize:ft.number().int().positive()})}var ye=ft.object({ok:ft.literal(!0)});import{z}from"zod";var xn=z.email().max(254).toLowerCase(),st=8,go=z.string().min(st).max(128),ho=z.string().min(1).max(128),Tn=32,Hi=z.string().trim().min(1).max(Tn),Wi=z.string().trim().min(1).max(254),Mp=["register","reset_password"],BS=z.object({email:xn,purpose:z.enum(Mp)}),FS=z.object({username:Hi,email:xn,password:go,code:z.string().min(4).max(8),inviteCode:z.string().trim().min(1).max(32).optional()}),US=z.object({account:Wi,password:ho}),jS=z.object({email:xn,code:z.string().min(4).max(8),password:go}),qS=z.object({oldPassword:ho,newPassword:go}),HS=z.object({email:xn}),WS=z.object({email:xn,code:z.string().min(4).max(8),password:ho}),Wa=z.object({username:z.string(),email:z.string()}),zn=z.object({accessToken:z.string(),user:Wa}),za=z.discriminatedUnion("status",[zn.extend({status:z.literal("ok")}),z.object({status:z.literal("totp_required"),ticket:z.string()})]),Ga=z.object({user:Wa}),Op=z.object({client:z.string().nullable(),clientVersion:z.string().nullable(),os:z.string().nullable(),osVersion:z.string().nullable(),type:z.string().nullable(),vendor:z.string().nullable(),model:z.string().nullable()}),$p=z.object({id:z.number().int(),ip:z.string().nullable(),userAgent:z.string().nullable(),device:Op.nullable(),loginAt:z.string(),lastActiveAt:z.string(),expiresAt:z.string(),current:z.boolean()}),Ka=z.object({sessions:z.array($p)});import{z as me}from"zod";var Gn=me.string().trim().length(6),Dp=me.string().trim().min(10).max(20),ir=me.string().trim().min(1).max(64),sr=me.record(me.string(),me.unknown()),KS=me.object({ticket:me.string().min(1),code:Gn}),VS=me.object({ticket:me.string().min(1),code:Dp}),JS=me.object({code:Gn.optional()}),YS=me.object({code:Gn}),Va=me.object({secret:me.string(),otpauthUri:me.string()}),zi=me.object({recoveryCodes:me.array(me.string())}),Bp=me.object({id:me.number().int(),name:me.string(),createdAt:me.string(),lastUsedAt:me.string().nullable()}),Ja=me.object({totp:me.object({enabled:me.boolean(),enabledAt:me.string().nullable(),recoveryCodesRemaining:me.number().int()}),passkeys:me.array(Bp)}),XS=me.object({name:ir,response:sr}),QS=me.object({name:ir}),ZS=me.object({response:sr});import{z as xe}from"zod";var rx=xe.object({account:Wi,password:ho}),Fp=xe.object({totp:xe.boolean(),passkeys:xe.boolean()}),ix=xe.discriminatedUnion("status",[xe.object({status:xe.literal("totp_required"),ticket:xe.string()}),xe.object({status:xe.literal("setup_required"),ticket:xe.string(),missing:Fp})]),sx=xe.object({ticket:xe.string().min(1)}),ax=xe.object({ticket:xe.string().min(1),code:Gn}),cx=xe.object({ticket:xe.string().min(1),name:ir,response:sr}),lx=xe.object({ticket:xe.string().min(1),code:Gn.optional()}),Ya=xe.object({username:xe.string(),email:xe.string()}),ux=xe.object({accessToken:xe.string(),admin:Ya}),mx=xe.object({admin:Ya});import{z as Gi}from"zod";var hx=Gi.object({siteName:Gi.string().trim().min(1).max(64),siteDescription:Gi.string().trim().max(200).optional(),siteOrigin:ji,username:Hi,email:xn,password:go});import{z as Pe}from"zod";var Xa={orderNo:Pe.string(),amountCny:Pe.number().int(),status:Ea,credited:Pe.boolean(),refundedAmountCny:Pe.number().int(),succeededRefundCny:Pe.number().int(),pendingRefundCny:Pe.number().int(),createdAt:Pe.string()},bo=Pe.object({...Xa,quota:Pe.number(),refundedQuota:Pe.number()}),yo=Pe.object({...Xa,planName:Pe.string(),renewal:Pe.boolean(),grantedDurationDays:Pe.number().int()}),Qa=Pe.object({id:Pe.number().int(),amountCny:Pe.number().int(),status:Aa,refundTradeNo:Pe.string().nullable(),reason:Pe.string().nullable(),rejectReason:Pe.string().nullable(),createdAt:Pe.string()});function Za(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 Ue}from"zod";var ar=Ue.object({id:Ue.number().int(),title:Ue.string(),category:Da,priority:Ba,status:$a,createdAt:Ue.string(),updatedAt:Ue.string()}),So=25*1024*1024,cr=5,Ki=Ue.object({id:Ue.number().int(),fileName:Ue.string(),fileSize:Ue.number().int(),contentType:Ue.string(),createdAt:Ue.string()}),Vi=Ue.object({id:Ue.number().int(),authorKind:Fa,content:Ue.string(),attachments:Ue.array(Ki),createdAt:Ue.string()}),ec=Ue.object({ticket:ar,messages:Ue.array(Vi)});import{z as xo}from"zod";var Ji=xo.object({id:xo.number().int(),title:xo.string(),content:xo.string(),level:Na,publishedAt:xo.string()});import{z as Ne}from"zod";var Ex=Ne.union([Ne.object({ok:Ne.literal(!0),status:Ne.number().int(),latencyMs:Ne.number().int().nonnegative(),body:Ne.string()}),Ne.object({ok:Ne.literal(!1),reason:Ne.enum(["http","error_payload"]),status:Ne.number().int(),latencyMs:Ne.number().int().nonnegative(),body:Ne.string()}),Ne.object({ok:Ne.literal(!1),reason:Ne.literal("timeout"),latencyMs:Ne.number().int().nonnegative()}),Ne.object({ok:Ne.literal(!1),reason:Ne.literal("network"),detail:Ne.string(),latencyMs:Ne.number().int().nonnegative()})]);var tc="Asia/Shanghai",Up="+08:00";function jp(e){return new Date(new Date(e).getTime()+288e5)}function qp(e=Date.now()){let t=jp(e);return{day:t.toISOString().slice(0,10),hour:t.getUTCHours()}}function Yi(e=Date.now()){return qp(e).day}function Xi(e=Yi()){return new Date(`${e}T00:00:00${Up}`)}function nn(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:tc}),Wp=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeZone:tc});function ee(e){return Hp.format(new Date(e))}function Wt(e){return Wp.format(new Date(e))}var zp=[{name:"\u4E00\u6574\u4E2A left-pad npm \u5305",tokens:110},{name:"\u5409\u5C3C\u65AF\u7EAA\u5F55\u6700\u5065\u8C08\u9E66\u9E49\u6BD5\u751F\u5B66\u4F1A\u7684\u8BCD\u6C47",tokens:2200},{name:"\u300A\u8BBA\u8BED\u300B",tokens:25e3},{name:"\u300A\u5C0F\u738B\u5B50\u300B",tokens:3e4},{name:"\u300A\u96F7\u950B\u65E5\u8BB0\u300B",tokens:54e3},{name:"\u300A\u8BD7\u7ECF\u300B",tokens:6e4},{name:"\u5468\u6770\u4F26\u5341\u4E94\u5F20\u4E13\u8F91\u7684\u5168\u90E8\u6B4C\u8BCD",tokens:82e3},{name:"\u300A\u6D3B\u7740\u300B",tokens:11e4},{name:"\u300A\u970D\u6BD4\u7279\u4EBA\u300B",tokens:12e4},{name:"\u300A\u4E2D\u534E\u4EBA\u6C11\u5171\u548C\u56FD\u6C11\u6CD5\u5178\u300B",tokens:126e3},{name:"\u300A\u94F6\u6CB3\u7CFB\u642D\u8F66\u5BA2\u6307\u5357\u300B\u4E94\u90E8\u66F2",tokens:26e4},{name:"\u79E6\u59CB\u7687\u4E00\u5929\u6279\u9605\u7684\u7AF9\u7B80\u594F\u7AE0",tokens:34e4},{name:"\u300A\u7EB3\u5C3C\u4E9A\u4F20\u5947\u300B\u5168\u4E03\u518C",tokens:45e4},{name:"\u300A\u5802\u5409\u8BC3\u5FB7\u300B",tokens:56e4},{name:"\u300A\u9B54\u6212\u300B\u4E09\u90E8\u66F2",tokens:59e4},{name:"\u300A\u804A\u658B\u5FD7\u5F02\u300B",tokens:6e5},{name:"\u300A\u6218\u4E89\u4E0E\u548C\u5E73\u300B",tokens:76e4},{name:"\u300A\u65B0\u534E\u5B57\u5178\u300B",tokens:8e5},{name:"\u300A\u7EA2\u697C\u68A6\u300B",tokens:9e5},{name:"\u300A\u897F\u6E38\u8BB0\u300B",tokens:1e6},{name:"\u300A\u4E09\u4F53\u300B\u4E09\u90E8\u66F2",tokens:11e5},{name:"\u838E\u58EB\u6BD4\u4E9A\u5168\u96C6",tokens:115e4},{name:"\u300A\u7504\u5B1B\u4F20\u300B\u5168\u5267\u5267\u672C",tokens:12e5},{name:"\u963F\u6CE2\u7F57 11 \u53F7\u767B\u6708\u5236\u5BFC\u7A0B\u5E8F\u6E90\u7801",tokens:13e5},{name:"\u300A\u54C8\u5229\xB7\u6CE2\u7279\u300B\u5168\u4E03\u90E8",tokens:14e5},{name:"\u8FC4\u4ECA\u51FA\u571F\u7684\u5168\u90E8\u7532\u9AA8\u6587",tokens:15e5},{name:"\u5409\u5C3C\u65AF\u7EAA\u5F55\u6700\u957F\u5C0F\u8BF4\u300A\u8FFD\u5FC6\u4F3C\u6C34\u5E74\u534E\u300B",tokens:165e4},{name:"\u300A\u51B0\u4E0E\u706B\u4E4B\u6B4C\u300B\u5DF2\u51FA\u4E94\u5377",tokens:226e4},{name:"\u300A\u65F6\u5149\u4E4B\u8F6E\u300B\u5168\u5341\u56DB\u5377",tokens:57e5},{name:"\u300A\u5168\u5510\u8BD7\u300B",tokens:64e5},{name:"\u300A\u9C81\u8FC5\u5168\u96C6\u300B",tokens:85e5},{name:"\u91D1\u5EB8\u5341\u4E94\u90E8\u5C0F\u8BF4",tokens:105e5},{name:"\u300A\u8F9E\u6D77\u300B",tokens:282e5},{name:"\u300A\u5927\u82F1\u767E\u79D1\u5168\u4E66\u300B",tokens:52e6},{name:"\u4E00\u6574\u5E74\u300A\u4EBA\u6C11\u65E5\u62A5\u300B",tokens:53e6},{name:"\u300A\u4E8C\u5341\u56DB\u53F2\u300B",tokens:6e7},{name:"\u300A\u725B\u6D25\u82F1\u8BED\u8BCD\u5178\u300B\u7B2C\u4E8C\u7248",tokens:767e5},{name:"\u5355\u7530\u82B3\u6BD5\u751F\u8BC4\u4E66\u4F5C\u54C1",tokens:86e6},{name:"\u300A\u4E2D\u56FD\u5927\u767E\u79D1\u5168\u4E66\u300B\u7B2C\u4E00\u7248",tokens:1508e5},{name:"\u6574\u5957 Linux \u5185\u6838\u6E90\u7801",tokens:4e8},{name:"\u4E00\u4E2A\u666E\u901A\u4EBA\u4E00\u751F\u8BF4\u51FA\u7684\u5168\u90E8\u8BDD\u8BED",tokens:5e8},{name:"\u4E2D\u6587\u7EF4\u57FA\u767E\u79D1",tokens:1e9},{name:"\u300A\u56DB\u5E93\u5168\u4E66\u300B",tokens:12e8},{name:"\u82F1\u6587\u7EF4\u57FA\u767E\u79D1",tokens:676e7},{name:"\u8C37\u6B4C\u5168\u90E8\u4EE3\u7801\u5E93",tokens:2e10}];function Gp(e){return e>=10?Math.round(e).toLocaleString("en-US"):e>=1?e.toFixed(1):e.toFixed(-Math.floor(Math.log10(e)))}function at(e){return e>=10?Math.round(e).toLocaleString("en-US"):e.toFixed(1)}function nc(e){return e<365?`${at(e)} \u5929`:`${at(e/365)} \u5E74`}function Kp(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`:`${at(o/365)} \u5E74`}function Vp(e){let t=e/1.2/80/60/8;return t<250?`${at(t)} \u4E2A\u5DE5\u4F5C\u65E5`:`${at(t/250)} \u4E2A\u5DE5\u4F5C\u5E74`}function Jp(e){let t=e/1.2/30*4;return t<1e3?`${Math.round(t).toLocaleString("en-US")} \u514B`:t<1e6?`${at(t/1e3)} \u516C\u65A4`:`${at(t/1e6)} \u5428`}var Yp=[...zp.map(e=>({min:e.tokens/10,max:e.tokens*1e4,suffix:t=>`\u7EA6\u4E3A${e.name}\u7684 ${Gp(t/e.tokens)} \u500D`})),{min:3e5,max:1/0,suffix:e=>`\u6253\u5370\u6210 A4 \u7EB8\u7EA6\u6709 ${Math.round(e/1.2/1500).toLocaleString("en-US")} \u9875`},{min:3e5,max:1/0,suffix:e=>`\u6309\u6BCF\u5206\u949F 250 \u5B57\u7684\u8BED\u901F\u6717\u8BFB\u7EA6\u9700 ${Kp(e)}`},{min:1680,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${Math.round(e/1.2/140).toLocaleString("en-US")} \u6761\u5199\u6EE1 140 \u5B57\u7684\u5FAE\u535A`},{min:9600,max:1/0,suffix:e=>`\u7EA6\u5408 ${Math.round(e/1.2/800).toLocaleString("en-US")} \u7BC7 800 \u5B57\u7684\u9AD8\u8003\u4F5C\u6587`},{min:131400,max:1/0,suffix:e=>`\u6309\u6BCF\u5929\u4E00\u7BC7 300 \u5B57\u7684\u65E5\u8BB0\u8BA1\uFF0C\u591F\u8FDE\u7EED\u5199 ${at(e/1.2/300/365)} \u5E74`},{min:12e5,max:1/0,suffix:e=>`\u7EA6\u5408 ${Math.round(e/1.2/1e5).toLocaleString("en-US")} \u672C\u5341\u4E07\u5B57\u7684\u535A\u58EB\u8BBA\u6587`},{min:33e3,max:1/0,suffix:e=>`\u6309\u300A\u8D44\u6CBB\u901A\u9274\u300B\u7684\u7B14\u58A8\u5BC6\u5EA6\uFF0C\u7EA6\u591F\u53F8\u9A6C\u5149\u8BB0\u8F7D ${Math.round(e/45e5*1362).toLocaleString("en-US")} \u5E74\u5386\u53F2`},{min:49e3,max:1/0,suffix:e=>`\u7EA6\u5408\u300A\u4E00\u5343\u96F6\u4E00\u591C\u300B\u91CC\u5C71\u9C81\u4F50\u5FB7\u8BB2\u6545\u4E8B\u7684 ${Math.round(e/492e4*1001).toLocaleString("en-US")} \u4E2A\u591C\u665A`},{min:640,max:1/0,suffix:e=>`\u6309\u91D1\u9675\u523B\u7ECF\u5904\u523B\u5DE5\u534A\u6708\u523B\u6210\u4E00\u5757 800 \u5B57\u7ECF\u7248\u7684\u8FDB\u5EA6\uFF0C\u5168\u90E8\u523B\u4E0A\u96D5\u7248\u9700\u8981 ${nc(e/1.2/53)}`},{min:460800,max:1/0,suffix:e=>`\u6309\u6BCF\u5206\u949F 80 \u5B57\u3001\u6BCF\u5929 8 \u5C0F\u65F6\u8BA1\uFF0C\u591F\u4E00\u4F4D\u4E13\u804C\u6253\u5B57\u5458\u6253 ${Vp(e)}`},{min:4500,max:1/0,suffix:e=>`\u82E5\u523B\u6210\u6BCF\u679A 30 \u5B57\u7684\u79E6\u6C49\u7AF9\u7B80\uFF0C\u603B\u91CD\u7EA6 ${Jp(e)}`},{min:18e3,max:1/0,suffix:e=>`\u6309\u300A\u6C38\u4E50\u5927\u5178\u300B\u91CD\u5F55\u4E66\u624B\u6BCF\u5929\u4E09\u53F6\u3001\u7EA6 1500 \u5B57\u7684\u5B9A\u989D\uFF0C\u591F\u4E00\u4F4D\u4E66\u624B\u6284\u5199 ${nc(e/1.2/1500)}`},{min:108e3,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${Math.round(e/1.2/9e3).toLocaleString("en-US")} \u671F\u300A\u65B0\u95FB\u8054\u64AD\u300B\u7684\u64AD\u62A5\u7A3F`},{min:4e4,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${at(e/1.2/33e3)} \u5C4A\u592E\u89C6\u6625\u665A\u7684\u5168\u90E8\u53F0\u8BCD\u548C\u6B4C\u8BCD`},{min:96e3,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u80FD\u7ED5\u6807\u51C6 400 \u7C73\u8DD1\u9053 ${at(e/1.2*.005/400)} \u5708`},{min:96e5,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u5408\u5730\u9762\u5230\u56FD\u9645\u7A7A\u95F4\u7AD9\u8DDD\u79BB\u7684 ${at(e/1.2*.005/4e5)} \u500D`},{min:26e7,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u80FD\u7ED5\u6708\u7403\u8D64\u9053 ${at(e/1.2*.005/10917e3)} \u5708`},{min:96e7,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u80FD\u7ED5\u5730\u7403\u8D64\u9053 ${at(e/1.2*.005/40075e3)} \u5708`}];function oc(e){let{tokens:t,scope:o,range:n}=e;if(t<=0)return null;let r=Yp.filter(c=>t>=c.min&&t<=c.max),i=r[Math.floor(Math.random()*r.length)];return i?`${o==="user"?"\u4F60":"\u5168\u7AD9"}${n==="all"?"\u7D2F\u8BA1":n==="30d"?"\u8FD1 30 \u5929":"\u8FD1 7 \u5929"}\u4F7F\u7528\u7684 Token \u91CF${i.suffix(t)}`:null}function zt(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown status value: ${t}`);return o}}function on(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown label value: ${t}`);return o}}var rn=zt({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"}}),Ix=on({recharge:"\u5145\u503C",subscription:"\u8BA2\u9605"}),lr=zt({pending:{label:"\u5F85\u5904\u7406",tone:"warning"},issued:{label:"\u5DF2\u5F00\u5177",tone:"success"},rejected:{label:"\u5DF2\u9A73\u56DE",tone:"danger"}}),Lx=zt({enabled:{label:"\u5DF2\u542F\u7528",tone:"success"},disabled:{label:"\u5DF2\u7981\u7528",tone:"neutral"}});var Mx=zt({active:{label:"\u6B63\u5E38",tone:"success"},disabled:{label:"\u7981\u7528",tone:"danger"}}),Qi=on({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"}),rc=on({usage_log:"\u7528\u91CF",order:"\u8BA2\u5355",invitation:"\u9080\u8BF7",admin:"\u7BA1\u7406\u5458"}),ic=zt({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"}}),ur=zt({success:{label:"\u6210\u529F",tone:"success"},error:{label:"\u5931\u8D25",tone:"danger"},canceled:{label:"\u53D6\u6D88",tone:"neutral"},anomaly:{label:"\u5F02\u5E38",tone:"warning"}}),sc=on({"openai-chat":"OpenAI Chat","openai-responses":"OpenAI Responses","anthropic-messages":"Anthropic Messages"}),To=on({special:"\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968",general:"\u589E\u503C\u7A0E\u666E\u901A\u53D1\u7968"}),wn=on({special:"\u4E13\u7968",general:"\u666E\u7968"}),mr=on({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"}),wo=zt({info:{label:"\u4FE1\u606F",tone:"neutral"},success:{label:"\u6210\u529F",tone:"success"},warning:{label:"\u8B66\u544A",tone:"warning"},error:{label:"\u91CD\u8981",tone:"danger"}}),Zi=zt({open:{label:"\u5F85\u5904\u7406",tone:"warning"},replied:{label:"\u5DF2\u56DE\u590D",tone:"success"},closed:{label:"\u5DF2\u5173\u95ED",tone:"neutral"}}),dr=on({billing:"\u8BA1\u8D39",technical:"\u6280\u672F",account:"\u8D26\u53F7",other:"\u5176\u4ED6"}),es=zt({low:{label:"\u8F83\u4F4E",tone:"neutral"},normal:{label:"\u666E\u901A",tone:"neutral"},high:{label:"\u7D27\u6025",tone:"danger"}});function Ze(e,t,o){let n=r=>{let i=t(r);return typeof i=="string"?i:i.label};return[{value:"",label:o},...e.map(r=>({value:r,label:n(r)}))]}function he(e){let t=e/100;return`${t<0?"-":""}\xA5${Math.abs(t).toFixed(2)}`}function ts(e){return Math.round(e*100)}function ac(e){return e/100}function cc(e,t,o){let n=e/t;return`${n<0?"-":""}$${Math.abs(n).toLocaleString("en-US",{minimumFractionDigits:o,maximumFractionDigits:o})}`}function ce(e,t){return cc(e,t,2)}function Kn(e,t){return cc(e,t,6)}var pr=10080,fr=1440;function lc(e){if(e%pr===0){let t=e/pr;return t===1?"\u6BCF\u5468\u9650\u989D":`${t} \u5468\u9650\u989D`}if(e%fr===0){let t=e/fr;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 Xp(e){if(e%pr===0){let t=e/pr;return t===1?"\u6BCF\u5468":`\u6BCF ${t} \u5468`}if(e%fr===0){let t=e/fr;return t===1?"\u6BCF\u5929":`\u6BCF ${t} \u5929`}return e%60===0?`\u6BCF ${e/60} \u5C0F\u65F6`:`\u6BCF ${e} \u5206\u949F`}function uc(e,t){return e.windows.map(o=>`${Xp(o.durationMinutes)} ${ce(o.quota,t)}`)}function ns(e){return e.quota<=0?100:Math.min(100,Math.floor(e.used/e.quota*100))}function os(e){return e.revokedAt!==null?{label:"\u5DF2\u4F5C\u5E9F",tone:"danger"}:new Date(e.expiresAt).getTime()<=Date.now()?{label:"\u5DF2\u8FC7\u671F",tone:"neutral"}:{label:"\u751F\u6548\u4E2D",tone:"success"}}function Re(e){return e.toLocaleString("en-US")}function sn(e){let t=Math.abs(e);return t>=1e9?`${(e/1e9).toFixed(1)}B`:t>=1e6?`${(e/1e6).toFixed(1)}M`:t>=1e3?`${(e/1e3).toFixed(1)}k`:Re(e)}function kn(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 vn(e){return(e/1e3).toFixed(2)}function Vn(e){return e>=1024**3?`${(e/1024**3).toFixed(1)} GB`:e>=1024**2?`${(e/1024**2).toFixed(1)} MB`:e>=1024?`${(e/1024).toFixed(1)} KB`:`${e} B`}function gr(e,t){return`${e}******${t}`}var rs={recharge:["\u5145\u9519\u91D1\u989D\u6216\u91CD\u590D\u5145\u503C","\u9700\u8981\u7684\u6A21\u578B\u4E0D\u53EF\u7528","\u8C03\u7528\u7ECF\u5E38\u62A5\u9519\u6216\u8D85\u65F6","\u5B9E\u9645\u8BA1\u8D39\u9AD8\u4E8E\u9884\u671F","\u4F59\u989D\u7528\u4E0D\u5B8C\uFF0C\u4E0D\u518D\u9700\u8981"],subscription:["\u8BEF\u8D2D\u6216\u9009\u9519\u5957\u9910","\u5957\u9910\u4E0D\u542B\u9700\u8981\u7684\u6A21\u578B","\u9650\u989D\u592A\u4F4E\uFF0C\u4E0D\u591F\u7528","\u8C03\u7528\u7ECF\u5E38\u62A5\u9519\u6216\u8D85\u65F6","\u4F7F\u7528\u9891\u7387\u4F4E\uFF0C\u4E0D\u5212\u7B97"]},mc={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 Qp}from"os";var Zp=3e4,ef=Ha({cliVersion:pt,platform:process.platform,release:Qp(),arch:process.arch,nodeVersion:process.versions.node});async function dc(e,t){if(t.json!==void 0&&t.body!==void 0)throw new Error("httpRequest cannot accept both json and body");let o=new Headers(t.headers);o.set("user-agent",ef);let n=t.body;t.json!==void 0&&(o.set("content-type","application/json"),n=JSON.stringify(t.json));try{return await fetch(e,{method:t.method??(n===void 0?"GET":"POST"),headers:o,body:n,signal:AbortSignal.timeout(t.timeoutMs??Zp),redirect:"follow"})}catch(r){let i=URL.canParse(e)?new URL(e).origin:e;throw new $(`\u65E0\u6CD5\u8FDE\u63A5 ${i}\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u7AD9\u70B9\u5730\u5740`,{exitCode:ha,cause:r})}}async function pc(e){let t=await e.text();if(t==="")return null;try{return JSON.parse(t)}catch{return null}}async function gt(e,t={}){let o=await dc(e,t);if(!o.ok)return{status:o.status,ok:!1,headers:o.headers,data:await pc(o)};let n=await o.text(),r=null;if(n!=="")try{r=JSON.parse(n)}catch(i){throw new $(`${e} \u8FD4\u56DE\u4E86\u975E JSON \u5185\u5BB9\uFF0C\u53EF\u80FD\u88AB\u7F51\u5173\u6216\u4E2D\u95F4\u8BBE\u5907\u62E6\u622A`,{cause:i})}return{status:o.status,ok:!0,headers:o.headers,data:r}}async function fc(e,t={}){let o=await dc(e,t);if(!o.ok)return{status:o.status,ok:!1,headers:o.headers,data:await pc(o),bytes:null};let n=new Uint8Array(await o.arrayBuffer());return{status:o.status,ok:!0,headers:o.headers,data:null,bytes:n}}function tf(e,t){let o=Ua.safeParse(t);if(!o.success)return new $(`\u8BF7\u6C42\u5931\u8D25\uFF08HTTP ${e}\uFF09`);let{code:n,message:r}=o.data.error,i=n==="unauthorized"||n==="token_expired"?bn:void 0;return new $(ja[n]??r,i?{exitCode:i}:{})}function Ct(e){if(!e.ok)throw tf(e.status,e.data)}var bc="cf_refresh",yc="cf_device",gc=6e4;function hc(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 ko(e,t){return{refresh:hc(t,bc)??e.refresh,device:hc(t,yc)??e.device}}function hr(e){let t=[];return e.refresh&&t.push(`${bc}=${e.refresh}`),e.device&&t.push(`${yc}=${e.device}`),t.length>0?{cookie:t.join("; ")}:{}}function nf(e){let t=e.split(".")[1];if(t===void 0)throw new $("\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 $("\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 $("\u670D\u52A1\u7AEF\u8FD4\u56DE\u7684\u8BBF\u95EE\u4EE4\u724C\u7F3A\u5C11\u6709\u6548\u671F");return n*1e3}function vo(e,t,o){if(!t.refresh)throw new $("\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:nf(o.accessToken),username:o.user.username,email:o.user.email,site:e};return Ii(r=>{r.session=n,t.device&&(r.device={site:e,cookie:t.device})}),n}function is(e){let{device:t}=Rt();return t!==null&&t.site===e?t.cookie:null}async function Sc(e,t,o){let n={refresh:null,device:is(e)},r=await gt(`${e}/api/auth/login`,{json:{account:t,password:o},headers:hr(n)});Ct(r);let i=za.parse(r.data),s=ko(n,r.headers);return i.status==="totp_required"?{status:"totp_required",ticket:i.ticket,jar:s}:{status:"ok",session:vo(e,s,i)}}async function xc(e,t,o,n,r){let s=await gt(`${e}/api/auth/${r==="totp"?"login/totp":"login/recovery-code"}`,{json:{ticket:o,code:n},headers:hr(t)});Ct(s);let a=zn.parse(s.data);return vo(e,ko(t,s.headers),a)}function Tc(){Ii(e=>{e.session=null})}async function of(e){let t={refresh:e.refreshCookie,device:is(e.site)},o=await gt(`${e.site}/api/auth/refresh`,{method:"POST",headers:hr(t)});if(o.status===401||o.status===403)throw Tc(),new $("\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",{exitCode:bn});Ct(o);let n=zn.parse(o.data);return vo(e.site,ko(t,o.headers),n)}async function _o(e=!1){let t=va();return!e&&Date.now()<t.accessExpiresAt-gc?t:_a(async()=>{let o=ka().session;if(!o)throw new $("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:bn});return(o.refreshCookie!==t.refreshCookie||o.accessToken!==t.accessToken)&&Date.now()<o.accessExpiresAt-gc?o:of(o)})}async function br(){let e=Rt().session;if(!e)return;let t=await gt(`${e.site}/api/auth/logout`,{method:"POST",headers:hr({refresh:e.refreshCookie,device:is(e.site)})});Tc(),Ct(t)}import{spawn as rf}from"child_process";function Ro(e,t={}){return new Promise((o,n)=>{let r=rf("npm",e,{stdio:["ignore","pipe","pipe"],shell:process.platform==="win32"}),i=[],s=[],a=c=>{for(let l of c.toString("utf8").split(`
4
+ `)){let m=l.trimEnd();m!==""&&(s.push(m),s.length>20&&s.shift())}};r.stdout.on("data",c=>{i.push(c.toString("utf8")),a(c)}),r.stderr.on("data",a),r.on("error",c=>n(new $(`\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 $(`npm ${e.join(" ")} \u9000\u51FA\u7801 ${c??"null"}`,{...l===""?{}:{hint:l}}))}),t.background===!0&&(r.stdout.unref(),r.stderr.unref(),r.unref())})}async function wc(e){let t=[],o=async(n,r)=>{try{await r(),e.done(n)}catch(i){t.push(`${n}\uFF1A${Te(i)}`),e.failed(n)}};return await o("\u9000\u51FA\u767B\u5F55",()=>br()),await o("\u5220\u9664\u672C\u5730\u6587\u4EF6",()=>{let n=Ht();sf(n)&&af(n,{recursive:!0,force:!0})}),await o("\u5378\u8F7D\u672C\u7A0B\u5E8F",async()=>{await Ro(["uninstall","-g",jn])}),t}import{z as Co}from"zod";var cf=Co.object({line:Co.object({name:Co.string(),url:Co.string()}).nullable().default(null),lastUpdateCheckAt:Co.number().nullable().default(null)}),kc=or(cf,ba,"\u672C\u5730\u914D\u7F6E","\u91CD\u65B0\u8FD0\u884C"),_n=kc.load,yr=kc.update;var lf=1440*60*1e3;async function vc(){let e=(await Ro(["view",jn,"version"])).trim();if(e==="")throw new $(`npm \u6CA1\u6709\u62A5\u51FA ${jn} \u7684\u7248\u672C`);return e}async function _c(e,t){return await Ro(["install","-g",`${jn}@${e}`],{background:t}),e}async function Rc(){let e=await vc();return e===pt?null:await _c(e,!1)}function uf(){let e=Date.now(),t=_n().lastUpdateCheckAt;return t!==null&&e-t<lf?!1:(yr(o=>{o.lastUpdateCheckAt=e}),!0)}async function Cc(){if(!uf())return null;let e;try{e=await vc()}catch{return null}return e===pt?null:await _c(e,!0)}import{Box as Sy,render as xy,useInput as Ty}from"ink";import{useEffect as pa,useRef as wy}from"react";async function Et(e,t,o={}){let n=await gt(t,o);return Ct(n),e.parse(n.data)}async function O(e,t,o={}){let n=await _o(),r=s=>gt(`${n.site}/api${t}`,{...o,headers:{...o.headers,authorization:`Bearer ${s}`}}),i=await r(n.accessToken);if(i.status===401){let s=await _o(!0);i=await r(s.accessToken)}return Ct(i),e.parse(i.data)}async function Sr(e,t={}){let o=await _o(),n=i=>fc(`${o.site}/api${e}`,{...t,headers:{...t.headers,authorization:`Bearer ${i}`}}),r=await n(o.accessToken);if(r.status===401){let i=await _o(!0);r=await n(i.accessToken)}if(Ct(r),r.bytes===null)throw new $("\u9644\u4EF6\u4E0B\u8F7D\u54CD\u5E94\u4E3A\u7A7A");return r.bytes}function Ot(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 Ec=e=>O(Sn(Ji),Ot("/announcements",{...e})),Ac=()=>O(Ji.nullable(),"/announcements/unread"),xr=e=>O(ye,`/announcements/${e}/read`,{method:"POST"}).then(()=>{});import{Box as Pc,useWindowSize as mf}from"ink";import{Children as df}from"react";import{jsx as Nc}from"react/jsx-runtime";var pf=1,ss=1,J=1;function q(){let{columns:e,rows:t}=mf();return{width:Math.max(1,e-pf*2),columns:e,rows:t}}function Ic({height:e,children:t}){return Nc(Pc,{flexDirection:"column",height:e,justifyContent:"space-between",children:df.toArray(t).map((o,n)=>Nc(Pc,{flexDirection:"column",flexShrink:0,children:o},n))})}import{useInput as Mc}from"ink";import{createContext as ls,useCallback as Tr,useContext as ff,useEffect as us,useMemo as as,useRef as Eo,useState as Lc}from"react";import{jsx as cs}from"react/jsx-runtime";var wr=ls(null),ms=ls(null),Jn={screen:0,panel:10,input:20},ds=ls(null);function Oc({children:e}){let[t,o]=Lc(!1),[n,r]=Lc(!1),i=Eo(0),s=Eo(0),a=Eo([]),c=Eo(0),l=Tr(()=>(i.current+=1,o(!0),()=>{i.current-=1,i.current===0&&o(!1)}),[]),m=Tr(()=>(s.current+=1,r(!0),()=>{s.current-=1,s.current===0&&r(!1)}),[]),f=Tr(g=>{let b={...g,seq:c.current+=1};return a.current.push(b),()=>{a.current=a.current.filter(T=>T!==b)}},[]),d=Tr(()=>{a.current.reduce((b,T)=>b===null||T.layer>b.layer||T.layer===b.layer&&T.seq>b.seq?T:b,null)?.handler()},[]);Mc((g,b)=>{b.escape&&d()});let p=as(()=>({active:t,acquire:l}),[t,l]),y=as(()=>({locked:n,acquire:m}),[n,m]),h=as(()=>({push:f,fire:d}),[f,d]);return cs(wr.Provider,{value:p,children:cs(ms.Provider,{value:y,children:cs(ds.Provider,{value:h,children:e})})})}function Rn(e){let t=ff(e);if(!t)throw new Error("\u952E\u76D8\u94A9\u5B50\u5FC5\u987B\u5728 KeyboardProvider \u5185\u4F7F\u7528");return t}function kr(e){let{acquire:t}=Rn(wr);us(()=>{if(e)return t()},[e,t])}function $c(e){let{acquire:t}=Rn(ms);us(()=>{if(e)return t()},[e,t])}function vr(){return Rn(ms).locked}function _r(){return Rn(wr).active}function W(e,t=!0){let o=Rn(wr).active;Mc(e,{isActive:t&&!o})}function Dc(){return Rn(ds).fire}function an(e,{isActive:t=!0,layer:o=Jn.screen}={}){let{push:n}=Rn(ds),r=Eo(e);r.current=e,us(()=>{if(t)return n({handler:()=>r.current(),layer:o})},[t,o,n])}import{measureElement as gf}from"ink";import{PassThrough as hf}from"stream";import{createContext as bf,useCallback as yf,useContext as Sf,useEffect as jc,useRef as Rr}from"react";import{jsx as Af}from"react/jsx-runtime";var xf="\x1B[?1000h\x1B[?1003h\x1B[?1006h",Tf="\x1B[?1006l\x1B[?1003l\x1B[?1000l",wf=27,kf=91,vf=60,Bc=77,Fc=109,Uc=20,_f=64,Rf=32,Cf=20;function Ef(e){let t=[],o=[],n=0;for(;n<e.length;){let r=e[n];if(r===void 0)break;if(r!==wf){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!==kf){o.push(r),n+=1;continue}if(s===Bc){if(n+6>e.length)break;n+=6;continue}if(s!==vf){o.push(r),n+=1;continue}let a=n+3,c;for(;a<e.length&&a-n<Uc;){let p=e[a];if(p===Bc||p===Fc){c=p;break}a+=1}if(c===void 0){if(a-n<Uc)break;o.push(r),n+=1;continue}let l=e.subarray(n+3,a).toString("latin1").split(";");if(n=a+1,c===Fc||l.length!==3)continue;let m=Number(l[0]),f=Number(l[1]),d=Number(l[2]);!Number.isFinite(m)||!Number.isFinite(f)||!Number.isFinite(d)||t.push((m&_f)!==0?{row:d,column:f,kind:"wheel",delta:(m&1)===0?-1:1}:{row:d,column:f,kind:(m&Rf)!==0?"move":"press"})}return{events:t,clean:Buffer.from(o),pending:e.subarray(n)}}function qc(e,t){let o=new Set,n=new hf,r=Buffer.alloc(0),i=null,s=()=>{i=null,r.length!==0&&(n.write(r),r=Buffer.alloc(0))},a=d=>{i!==null&&clearTimeout(i),i=null;let p=Ef(Buffer.concat([r,d]));r=p.pending,p.clean.length>0&&n.write(p.clean);for(let y of p.events)for(let h of o)h(y);r.length>0&&(i=setTimeout(s,Cf))},c=()=>{t.write(Tf)},l={SIGHUP:1,SIGINT:2,SIGTERM:15},m=d=>{process.exit(128+(l[d]??0))};e.on("data",a),process.once("exit",c);for(let d of Object.keys(l))process.on(d,m);t.write(xf);let f=n;return Object.assign(f,{isTTY:!0,setRawMode(d){return e.setRawMode(d),f},ref(){return e.ref(),f},unref(){return e.unref(),f}}),{stdin:f,subscribe(d){return o.add(d),()=>{o.delete(d)}},dispose(){c(),i!==null&&clearTimeout(i),process.off("exit",c);for(let d of Object.keys(l))process.off(d,m);e.off("data",a),o.clear()}}}var Hc=bf(null);function Wc({subscribe:e,children:t}){let o=Rr(new Set).current,n=Rr(null),r=yf(i=>(o.add(i),()=>{o.delete(i)}),[o]);return jc(()=>e(i=>{let s=i.row-1,a=i.column-1,c=null;for(let m of o){let f=m.node.current;if(f===null||m.handlers.current.isActive===!1)continue;let d=gf(f);if(s<d.y||s>=d.y+d.height||a<d.x||a>=d.x+d.width)continue;let p=d.width*d.height;(c===null||p<c.area)&&(c={region:m,top:d.y,left:d.x,area:p})}if(i.kind==="move"){let m=c===null?null:c.region;if(n.current!==m){let f=n.current;f!==null&&o.has(f)&&f.handlers.current.onHoverLeave?.(),n.current=m}c!==null&&c.region.handlers.current.onHover?.({row:s-c.top,column:a-c.left});return}if(c===null)return;let l=c.region.handlers.current;i.kind==="wheel"?l.onWheel?.(i.delta):l.onClick?.({row:s-c.top,column:a-c.left})}),[e,o]),Af(Hc.Provider,{value:r,children:t})}function je(e){let t=Sf(Hc);if(t===null)throw new Error("useMouseRegion \u5FC5\u987B\u5728 MouseProvider \u5185\u4F7F\u7528");let o=Rr(null),n=Rr(e);return n.current=e,jc(()=>t({node:o,handlers:n}),[t]),o}import{useApp as Pf}from"ink";import{createContext as Nf,useCallback as Cn,useContext as If,useEffect as ps,useRef as Er,useState as Po}from"react";var et=[{id:"usage",label:"\u6570\u636E\u770B\u677F"},{id:"tokens",label:"\u4EE4\u724C\u7BA1\u7406"},{id:"logs",label:"\u4F7F\u7528\u65E5\u5FD7"},{id:"models",label:"\u6A21\u578B\u5E7F\u573A"},{id:"recharge",label:"\u8D26\u6237\u5145\u503C"},{id:"subscription",label:"\u8BA2\u9605\u5957\u9910"},{id:"ledger",label:"\u989D\u5EA6\u6D41\u6C34"},{id:"invoices",label:"\u53D1\u7968\u7BA1\u7406"},{id:"invite",label:"\u9080\u8BF7\u597D\u53CB"},{id:"tickets",label:"\u5DE5\u5355\u652F\u6301"},{id:"announcements",label:"\u7CFB\u7EDF\u516C\u544A"},{id:"profile",label:"\u4E2A\u4EBA\u4E2D\u5FC3"}],zc="usage",Ao=e=>et.findIndex(t=>t.id===e),Cr=e=>Ao(e)>=0;import{jsx as Mf}from"react/jsx-runtime";var Lf=5e3,Kc=Nf(null),Vc=e=>({id:e,params:void 0}),Gc=()=>Rt().session===null?[{id:"home",params:void 0}]:[Vc(zc)];function D(){let e=If(Kc);if(!e)throw new Error("useNav \u5FC5\u987B\u5728 NavProvider \u5185\u4F7F\u7528");return e}function Jc({ctx:e,children:t}){let o=Pf(),[n,r]=Po(Gc),[i,s]=Po(0),[a,c]=Po([]),l=Er({announcementsChecked:!1,announcementsShown:!1}).current,m=Er(new WeakMap).current,f=Cn((C,...M)=>{r(j=>[...j,{id:C,params:M[0]}])},[]),d=Cn(()=>{r(C=>C.length>1?C.slice(0,-1):C),s(C=>C+1)},[]),p=Cn(C=>{r([Vc(C)]),s(M=>M+1)},[]),y=Cn(()=>{r(Gc()),s(C=>C+1)},[]),h=Cn(()=>s(C=>C+1),[]),g=Cn((C,M)=>{c(j=>[...j,{tone:C,message:M}])},[]),b=Cn(()=>c(C=>C.slice(1)),[]),T=a[0]??null;ps(()=>{if(T===null)return;let C=setTimeout(b,Lf);return()=>clearTimeout(C)},[T,b]);let w=n[n.length-1];if(w===void 0)throw new Error("\u5BFC\u822A\u6808\u4E3A\u7A7A");let S=m.get(w);S===void 0&&(S=new Map,m.set(w,S));let k={ctx:e,current:w,depth:n.length,push:f,pop:d,select:p,home:y,reload:h,toast:g,message:T,dismissToast:b,exit:o.exit,revision:i,gate:l,retained:S};return Mf(Kc.Provider,{value:k,children:t})}function Xe(e,t){let{retained:o}=D(),[n,r]=Po(()=>e!==void 0&&o.has(e)?o.get(e):t());return ps(()=>{e!==void 0&&o.set(e,n)},[o,e,n]),[n,r]}function X(e,t){let[o,n]=Po({phase:"loading"}),r=Er(t);r.current=t;let i=Er(0);return ps(()=>{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:Te(a),hint:a instanceof $?a.hint:void 0})})},e),o}import{Box as Gr,Text as Pn,useInput as mg}from"ink";import{Box as Oo,Text as Zn}from"ink";import No 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"},Ar=["#242424","#5a4233","#746533","#70924f","#37be95"],Pr=["#37be95","#2d9273","#246e58","#1e5443","#193f33"],qe={accent:u.accent,success:u.success,warning:u.warning,danger:u.danger},Yn=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Nr=80,Q={cursor:"\u276F",bullet:"\xB7",crumb:"\u203A",ok:"\u2714",warn:"!",fail:"\u2718",ellipsis:"\u2026",barFilled:"\u2588",barEmpty:"\u2591",section:"\u258D",prev:"\u2039",next:"\u203A"};var Of=No(Q.ellipsis),$f=(e,t)=>e+" ".repeat(Math.max(0,t-No(e))),Df=(e,t)=>" ".repeat(Math.max(0,t-No(e)))+e;function we(e,t){if(t<=0)return"";if(No(e)<=t)return e;let o=t-Of,n="";for(let r of e){if(No(n+r)>o)break;n+=r}return n+Q.ellipsis}var Ie=(e,t)=>$f(we(e,t),t),cn=(e,t)=>Df(we(e,t),t),De=e=>e.filter(t=>typeof t=="string"&&t!=="").join(` ${Q.bullet} `);import{Text as At,useInput as Bf}from"ink";import{useImperativeHandle as Ff,useRef as Yc,useEffect as Uf,useState as Qc}from"react";import fs from"string-width";import{jsx as $t,jsxs as gs}from"react/jsx-runtime";var jf=e=>e.replace(new RegExp("\\p{Cc}","gu"),"");function Xc(e,t,o){let n=t,r=0;for(;n>0;){let s=fs(e[n-1]??"");if(r+s>o)break;r+=s,n-=1}let i=t;for(r+=1;i<e.length;){let s=fs(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 Io({char:e}){return $t(At,{backgroundColor:u.cursorBackground,color:u.foreground,children:e})}function Ir({value:e,onChange:t,onSubmit:o,placeholder:n,mask:r=!1,isActive:i=!0,width:s=40,ref:a}){let c=[...e],[l,m]=Qc(c.length),f=Math.min(l,c.length),d=Math.max(8,s),p=Yc(e),y=Yc(f);p.current=e,y.current=f,kr(i);let h=k=>{y.current=k,m(k)},g=(k,C)=>{p.current=k,h(C),t(k)};if(Ff(a,()=>({moveToColumn:k=>{let C=[...p.current],M=r?Array.from({length:C.length},()=>"\u2022"):C,x=Xc(M,Math.min(y.current,C.length),d).start,P=0;for(;x<C.length;){let _=fs(M[x]??"");if(P+_>k)break;P+=_,x+=1}h(x)}})),Bf((k,C)=>{let M=[...p.current],j=Math.min(y.current,M.length);if(C.return){o(p.current);return}if(C.tab||C.upArrow||C.downArrow)return;if(C.leftArrow){h(Math.max(0,j-1));return}if(C.rightArrow){h(Math.min(M.length,j+1));return}if(C.home){h(0);return}if(C.end){h(M.length);return}if(C.backspace){if(j===0)return;g([...M.slice(0,j-1),...M.slice(j)].join(""),j-1);return}if(C.delete){if(j>=M.length)return;g([...M.slice(0,j),...M.slice(j+1)].join(""),j);return}if(C.ctrl){if(k==="a")h(0);else if(k==="e")h(M.length);else if(k==="k")g(M.slice(0,j).join(""),j);else if(k==="u")g(M.slice(j).join(""),0);else if(k==="w"){let E=j;for(;E>0&&M[E-1]===" ";)E-=1;for(;E>0&&M[E-1]!==" ";)E-=1;g([...M.slice(0,E),...M.slice(j)].join(""),E)}return}if(C.meta||!k)return;let x=k.search(/[\r\n]/),P=jf(x===-1?k:k.slice(0,x)),_=[...M.slice(0,j),P,...M.slice(j)].join("");g(_,j+[...P].length),x!==-1&&o(_)},{isActive:i}),e===""){let k=[...n??""];return i?gs(At,{children:[$t(Io,{char:k[0]??" "}),$t(At,{color:u.faintForeground,children:k.slice(1).join("")})]}):$t(At,{color:u.faintForeground,children:k.join("")})}let b=r?Array.from({length:c.length},()=>"\u2022"):c;if(!i)return $t(At,{color:u.foreground,children:b.join("")});let{before:T,at:w,after:S}=Xc(b,f,d);return gs(At,{children:[$t(At,{color:u.foreground,children:T}),$t(Io,{char:w}),$t(At,{color:u.foreground,children:S})]})}function tt({label:e}){let[t,o]=Qc(0);return Uf(()=>{let n=setInterval(()=>o(r=>(r+1)%Yn.length),Nr);return()=>clearInterval(n)},[]),gs(At,{children:[$t(At,{color:u.accent,children:Yn[t]}),$t(At,{color:u.mutedForeground,children:` ${e}`})]})}import{Box as tl,Text as Xn}from"ink";import{useEffect as ol,useState as Hf}from"react";import nl from"string-width";import{Box as Zc,Text as Lr}from"ink";import qf from"string-width";import{jsx as Lo,jsxs as el}from"react/jsx-runtime";var le=2,ct=1,Be=1,Pt=ct+Be;function Mo({title:e,note:t,width:o}){let n=t===void 0?0:qf(t)+2,r=Math.max(0,o-le-n);return el(Lr,{wrap:"truncate",children:[Lo(Lr,{color:u.accent,children:`${Q.section} `}),Lo(Lr,{bold:!0,color:u.foreground,children:we(e,r)}),t!==void 0&&Lo(Lr,{color:u.faintForeground,children:` ${t}`})]})}function re({title:e,note:t,width:o,gap:n=Be,children:r}){return el(Zc,{flexDirection:"column",children:[Lo(Mo,{title:e,note:t,width:o}),Lo(Zc,{flexDirection:"column",marginTop:n,paddingLeft:le,children:r})]})}import{jsx as Gt,jsxs as il}from"react/jsx-runtime";var Qn=e=>!("heading"in e),Wf=e=>e.flatMap(t=>!Qn(t)&&t.heading!==""?[t,{heading:""}]:[t]),rl=2,Mr=2,zf=(e,t)=>t===void 0?e:e>t?Math.max(1,t-1):t;function Gf(e,t,o,n){let[r,i]=Xe(n,()=>e.findIndex(m=>Qn(m)&&m.disabled!==!0));ol(()=>{i(m=>m>=e.length?Math.max(0,e.length-1):m)},[e.length]);let s=m=>{i(f=>{let d=e.length;if(d===0)return f;let p=f;for(let y=0;y<d;y+=1){p=(p+m+d)%d;let h=e[p];if(h!==void 0&&Qn(h)&&h.disabled!==!0)return p}return f})},a=m=>{let f=e[m];return f!==void 0&&Qn(f)&&f.disabled!==!0?f:null},c=m=>{a(m)!==null&&i(m)},l=m=>{let f=a(m);f!==null&&(i(m),o(f.value))};return W((m,f)=>{if(f.upArrow||m==="k"){s(-1);return}if(f.downArrow||m==="j"){s(1);return}f.return&&l(r)},t),{index:Math.max(0,r),step:s,pick:l,moveTo:c}}function hs(e,t){let[o,n]=Hf(()=>e>=t?e-t+1:0);return ol(()=>{n(r=>e<r?e:e>=r+t?e-t+1:r)},[e,t]),o}function Kf(e,t){let o=e.filter(Qn),n=Math.max(0,...o.map(s=>nl(s.label))),r=Math.max(0,...o.map(s=>s.badge===void 0?0:nl(s.badge))),i=rl+n+(r>0?r+Mr:0)+Mr;return{label:n,badge:r,hint:Math.max(0,t-i)}}function Vf({item:e,active:t,metrics:o}){let n=e.disabled===!0,r=n?u.faintForeground:e.labelTone!==void 0?qe[e.labelTone]:t?u.accent:u.foreground;return il(Xn,{wrap:"truncate",children:[Gt(Xn,{color:u.accent,children:t?`${Q.cursor} `:" "}),Gt(Xn,{color:r,bold:t,children:Ie(e.label,o.label)}),o.badge>0&&Gt(Xn,{color:e.badgeTone===void 0?u.faintForeground:qe[e.badgeTone],children:`${" ".repeat(Mr)}${Ie(e.badge??"",o.badge)}`}),e.hint!==void 0&&o.hint>0&&Gt(Xn,{color:n||!t?u.faintForeground:u.mutedForeground,children:`${" ".repeat(Mr)}${we(e.hint,o.hint)}`})]})}function Jf({items:e,cursor:t,metrics:o,window:n,width:r,isActive:i,onPick:s,onHover:a,onScroll:c}){let l=hs(t,n),m=e.slice(l,l+n),f=p=>p<m.length?l+p:null,d=je({isActive:i,onWheel:c,onClick:({row:p})=>{let y=f(p);y!==null&&s(y)},onHover:({row:p})=>{let y=f(p);y!==null&&a(y)}});return il(tl,{ref:d,flexDirection:"column",children:[m.map((p,y)=>{let h=l+y;return Qn(p)?Gt(Vf,{item:p,active:h===t&&i,metrics:o},h):p.heading===""?Gt(tl,{height:1},h):Gt(Mo,{title:p.heading,width:r},h)}),e.length>n&&Gt(Xn,{color:u.faintForeground,children:`${" ".repeat(rl)}${l+1}-${Math.min(l+n,e.length)} / ${e.length}`})]})}function ae({items:e,onSelect:t,width:o,height:n,isActive:r=!0,retain:i}){let s=Wf(e),a=Gf(s,r,t,i);return Gt(Jf,{items:s,cursor:a.index,metrics:Kf(s,o),window:zf(s.length,n),width:o,isActive:r,onPick:a.pick,onHover:a.moveTo,onScroll:a.step})}import{jsx as ht,jsxs as Or}from"react/jsx-runtime";var sl={ok:{glyph:Q.ok,color:u.success},warn:{glyph:Q.warn,color:u.warning},fail:{glyph:Q.fail,color:u.danger},info:{glyph:Q.bullet,color:u.mutedForeground}};function ge({tone:e,title:t,detail:o,width:n}){let r=sl[e];return Or(Oo,{flexDirection:"column",children:[Or(Zn,{children:[ht(Zn,{color:r.color,children:`${r.glyph} `}),ht(Zn,{color:u.foreground,children:we(t,n-2)})]}),o!==void 0&&ht(Zn,{color:u.faintForeground,children:` ${we(o,n-2)}`})]})}function En({message:e,hint:t,width:o}){return ht(ge,{tone:"fail",title:e,detail:t,width:o})}var Yf=2,Xf=2;function al({tone:e,message:t,width:o,onDismiss:n}){let r=sl[e],i=je({onClick:n});return Or(Oo,{ref:i,children:[ht(Zn,{backgroundColor:u.border,color:r.color,wrap:"truncate",children:` ${r.glyph} `}),ht(Zn,{backgroundColor:u.border,color:u.foreground,wrap:"truncate",children:`${we(t,o-Yf-Xf)} `})]})}function Ge({title:e,detail:t,confirmLabel:o,onConfirm:n,onCancel:r,width:i,busy:s,error:a}){return Or(Oo,{flexDirection:"column",children:[ht(ge,{tone:"warn",title:e,detail:t,width:i}),a!=null&&ht(Oo,{marginTop:1,children:ht(En,{message:a.message,hint:a.hint,width:i})}),ht(Oo,{marginTop:1,children:typeof s=="string"?ht(tt,{label:s}):ht(ae,{items:[{value:"cancel",label:"\u53D6\u6D88"},{value:"confirm",label:o,labelTone:"danger"}],width:i,onSelect:c=>c==="confirm"?n():r()})})]})}import{Box as Qf,Text as $r,useInput as Zf}from"ink";import{useRef as eg,useState as tg}from"react";import{jsx as Dr,jsxs as ng}from"react/jsx-runtime";function ln({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]=tg(n?s:0),l=eg(s);if(s!==l.current){let p=a>=l.current;l.current=s;let y=n&&p?s:Math.min(a,s);y!==a&&c(y)}let m=p=>c(y=>Math.min(Math.max(0,y+p),s));Zf((p,y)=>{y.upArrow?m(-1):y.downArrow?m(1):y.pageUp?m(-i):y.pageDown&&m(i)},{isActive:o&&r}),W(p=>{p==="k"?m(-1):p==="j"&&m(1)},o&&r);let f=je({isActive:o&&r,onWheel:m}),d=e.slice(a,a+i);return ng(Qf,{ref:f,flexDirection:"column",children:[d.map((p,y)=>Dr($r,{wrap:"truncate",children:p.spans.length===0?" ":p.spans.map((h,g)=>Dr($r,{color:h.color??u.foreground,bold:h.bold===!0,children:h.text},g))},a+y)),Array.from({length:Math.max(0,i-d.length)},(p,y)=>Dr($r,{children:" "},y)),r&&Dr($r,{color:u.faintForeground,wrap:"truncate",children:`${a+1}-${Math.min(a+i,e.length)} / ${e.length}`})]})}function Ve(e){return e.tone==="neutral"?void 0:e.tone}function Kt(e){let t=Ve(e);return t===void 0?e.label:{text:e.label,tone:t}}import{useCallback as bs,useRef as og,useState as cl}from"react";function de(){let e=D(),[t,o]=cl(null),[n,r]=cl(null),i=og(0),s=bs(()=>{i.current+=1,o(null),r(null)},[]),a=bs((l,m)=>{r({message:l,hint:m})},[]),c=bs((l,m,f={})=>{let d=i.current+=1;o(l),r(null),m().then(p=>{i.current===d&&(o(null),f.onSuccess?.(p))}).catch(p=>{if(i.current!==d)return;o(null);let y={message:Te(p),hint:p instanceof $?p.hint:void 0};f.failToast===!0?e.toast("fail",y.message):r(y)})},[e]);return{busy:t,error:n,reset:s,fail:a,run:c}}import{Lexer as rg}from"marked";import Br from"string-width";var ig={spans:[]},ys=e=>e===void 0||e.spans.every(t=>t.text.trim()==="");function ll(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 Dt(e,t,o=0){let n=()=>Array.from({length:o},()=>({ch:" "})),r=[],i=[],s=0,a=!0,c=()=>{r.push(ll(i)),a=!1,i=n(),s=o};for(let l of e)for(let m of l.text){if(m===`
5
+ `){c();continue}let f=Br(m);if(s+f>t&&i.length>(a?0:o)){let d=a?0:o,p=-1;for(let y=i.length-1;y>d;y-=1)if(i[y]?.ch===" "){p=y;break}if(p>d){let y=i.slice(p+1);i=i.slice(0,p),c(),i=[...i,...y],s=i.reduce((h,g)=>h+Br(g.ch),0)}else c()}i.push({ch:m,color:l.color,bold:l.bold}),s+=f}return(i.length>0||r.length===0)&&r.push(ll(i)),r}function Bt(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?Bt(n.tokens,t):[{text:n.text,...t}]);break;case"strong":o.push(...Bt(n.tokens,{...t,bold:!0}));break;case"em":o.push(...Bt(n.tokens,t));break;case"del":o.push(...Bt(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=Bt(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 ul=2,ml=e=>e.reduce((t,o)=>t+Br(o.text),0);function sg(e,t,o,n){let r=e.map(d=>({spans:Bt(d.tokens,{bold:!0,color:u.foreground}),align:d.align})),i=t.map(d=>d.map(p=>({spans:Bt(p.tokens,{color:u.foreground}),align:p.align}))),s=n-(e.length+1)-e.length*2;if(s<e.length*ul)return Dt([{text:o,color:u.foreground}],n);let a=e.map(()=>ul);for(let d of[r,...i])d.forEach((p,y)=>{for(let h of Dt(p.spans,Number.MAX_SAFE_INTEGER)){let g=a[y],b=ml(h.spans);g!==void 0&&b>g&&(a[y]=b)}});let c=a.reduce((d,p)=>d+p,0);for(;c>s;){let d=0,p=0;a.forEach((y,h)=>{y>p&&(d=h,p=y)}),a[d]=p-1,c-=1}let l=d=>({text:d,color:u.faintForeground}),m=(d,p,y)=>({spans:[l(`${d}${a.map(h=>"\u2500".repeat(h+2)).join(p)}${y}`)]}),f=d=>{let p=a.map((g,b)=>{let T=d[b];return{width:g,align:T?.align??null,lines:Dt(T?.spans??[],g)}}),y=p.reduce((g,b)=>Math.max(g,b.lines.length),1),h=[];for(let g=0;g<y;g+=1){let b=[];for(let T of p){let w=T.lines[g]?.spans??[],S=T.width-ml(w),k=T.align==="right"?S:T.align==="center"?Math.floor(S/2):0;b.push(l("\u2502"),{text:` ${" ".repeat(k)}`}),b.push(...w),b.push({text:`${" ".repeat(S-k)} `})}b.push(l("\u2502")),h.push({spans:b})}return h};return[m("\u250C","\u252C","\u2510"),...f(r),m("\u251C","\u253C","\u2524"),...i.flatMap(f),m("\u2514","\u2534","\u2518")]}function Ss(e,t){let o=[],n=()=>{o.length>0&&!ys(o[o.length-1])&&o.push(ig)};for(let r of e)switch(r.type){case"space":n();break;case"heading":{let i=Bt(r.tokens,{bold:!0,color:u.foreground}),s=r.depth<=2?[{text:`${Q.section} `,color:u.accent},...i]:i;o.push(...Dt(s,t,r.depth<=2?2:0)),n();break}case"paragraph":o.push(...Dt(Bt(r.tokens,{color:u.foreground}),t)),n();break;case"text":o.push(...Dt("tokens"in r&&r.tokens!==void 0?Bt(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(...Dt([{text:` ${i}`,color:u.mutedForeground}],t,2));n();break;case"blockquote":{let i=Ss(r.tokens??[],Math.max(4,t-2));for(let s of i)o.push({spans:[{text:`${Q.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}. `:`${Q.bullet} `,m=Br(l),f=Ss(a.tokens,Math.max(4,t-m));f.forEach((d,p)=>{ys(d)&&p===f.length-1||o.push({spans:p===0?[{text:l,color:u.mutedForeground},...d.spans]:[{text:" ".repeat(m)},...d.spans]})})}),n();break}case"hr":o.push({spans:[{text:"\u2500".repeat(Math.max(1,t)),color:u.faintForeground}]}),n();break;case"table":o.push(...sg(r.header,r.rows,r.raw,t)),n();break;default:o.push(...Dt([{text:r.raw,color:u.foreground}],t))}return o}function eo(e,t){let o=rg.lex(e,{gfm:!0,breaks:!0}),n=Ss(o,Math.max(8,t));for(;n.length>0&&ys(n[n.length-1]);)n.pop();return n}import{Box as Do}from"ink";import{Box as ag,Text as dl}from"ink";import fl from"string-width";import{jsx as pl,jsxs as cg}from"react/jsx-runtime";var Fr=["\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"],gl=Math.max(...Fr.map(e=>fl(e))),Ur=Fr.length,jr=e=>gl<=e;function qr({width:e}){let t=`v${pt}`,o=gl+2+fl(t)<=e;return pl(ag,{flexDirection:"column",children:Fr.map((n,r)=>cg(dl,{color:u.accent,children:[n,r===Fr.length-1&&o&&pl(dl,{color:u.faintForeground,children:` ${t}`})]},n))})}import{Box as ws,Text as lt}from"ink";import{useState as hl}from"react";import no from"string-width";import{jsx as bt,jsxs as Hr}from"react/jsx-runtime";var Wr=2,xs=` ${Q.crumb} `;function zr({trail:e,width:t,onBack:o,isActive:n}){let r=e[e.length-1]??"",i=e.slice(0,-1),s=i.reduce((d,p)=>d+no(p)+no(xs),0),a=s+no(r)<=t,c=a?s:0,[l,m]=hl(!1),f=je({isActive:n,onClick:({column:d})=>{d<c&&o()},onHover:({column:d})=>m(d<c),onHoverLeave:()=>m(!1)});return bt(ws,{ref:f,marginBottom:1,children:a?Hr(lt,{children:[i.map((d,p)=>Hr(lt,{children:[bt(lt,{color:p===0?u.accent:l&&n?u.foreground:u.mutedForeground,children:d}),bt(lt,{color:u.faintForeground,children:xs})]},p)),bt(lt,{bold:!0,color:u.foreground,children:r})]}):bt(lt,{color:u.mutedForeground,children:we(e.join(xs),t)})})}var Ts=2,$o=2,to=2;function bl({current:e,width:t,onPick:o,isActive:n}){let r=Math.max(0,Ao(e)),[i,s]=hl(null),a=Math.max(...et.map(b=>no(b.label))),l=(b=>b*a+(b-1)*$o+Ts)(et.length)>t,m=l?t-to*2:t,f=l?Math.max(1,Math.floor((m+$o-Ts)/(a+$o))):et.length,d=Math.min(Math.max(0,r-Math.floor((f-1)/2)),et.length-f),p=et.slice(d,d+f),y=[],h=l?to:0;p.forEach((b,T)=>{T>0&&(h+=$o);let w=no(b.label)+(b.id===e?Ts:0);y.push({id:b.id,from:h,to:h+w}),h+=w});let g=je({isActive:n,onHover:({column:b})=>{let T=y.find(w=>b>=w.from&&b<w.to);s(T?.id??null)},onHoverLeave:()=>s(null),onClick:({column:b})=>{let T=y.find(S=>b>=S.from&&b<S.to);if(T!==void 0){o(T.id);return}if(!l||b>=to&&b<h)return;let w=b<to?et[d-1]:et[d+f];w!==void 0&&o(w.id)}});return bt(ws,{ref:g,marginBottom:1,children:Hr(lt,{wrap:"truncate",children:[l&&bt(lt,{color:u.border,children:d>0?`${Q.prev} `:" ".repeat(to)}),p.map((b,T)=>Hr(lt,{children:[T>0&&" ".repeat($o),b.id===e?bt(lt,{backgroundColor:u.foreground,color:u.background,bold:!0,children:` ${b.label} `}):bt(lt,{color:n&&b.id===i?u.foreground:u.mutedForeground,children:b.label})]},b.id)),l&&bt(lt,{color:u.border,children:d+f<et.length?` ${Q.next}`:" ".repeat(to)})]})})}function yl({hints:e,width:t}){let o=[];for(let n of e){if(no(De([...o,n]))>t)break;o.push(n)}return bt(ws,{children:bt(lt,{color:u.faintForeground,children:De(o)})})}import{Fragment as ug,jsx as nt,jsxs as Tl}from"react/jsx-runtime";var Sl=3,lg=8;function Bo(e){let{rows:t}=q();return Math.max(1,t-ss-Sl-e)}function xl(){let e=D(),{width:t,rows:o}=q(),n=e.current.id,r=e.depth===1&&Cr(n)?n:null,i=Math.max(1,o-ss-Sl),s=Ur+J,a=r!==null&&jr(t)&&i-Wr-s>=lg;return{tab:r,mark:a,rows:a?Wr+s:Wr}}var ie=()=>Bo(xl().rows);function An({header:e,hints:t,children:o}){let{width:n}=q(),{message:r,dismissToast:i}=D();return Tl(Do,{flexDirection:"column",flexGrow:1,children:[e,nt(Do,{flexDirection:"column",flexGrow:1,overflow:"hidden",children:nt(Do,{flexDirection:"column",flexShrink:0,children:o})}),nt(Do,{height:1,marginTop:1,justifyContent:"flex-end",children:r!==null&&nt(al,{tone:r.tone,message:r.message,width:n,onDismiss:i})}),nt(yl,{hints:t,width:n})]})}function K({trail:e,hints:t=[],children:o,onEscape:n,isActive:r=!0,locked:i=!1,bleed:s=!1}){let a=D(),{width:c}=q(),{tab:l,mark:m}=xl(),f=vr(),d=_r(),p=d?[]:["[] \u5207\u529F\u80FD","q \u9000\u51FA","? \u5E2E\u52A9"],y=d?[]:["? \u5E2E\u52A9"];an(n??a.pop,{isActive:r});let h=Dc(),g=r&&!i&&!f;return W(b=>{if(l===null||b!=="["&&b!=="]")return;let T=et[(Ao(l)+(b==="["?-1:1)+et.length)%et.length];T!==void 0&&a.select(T.id)},r&&!i&&!f&&!s),s?nt(An,{header:null,hints:i?t:[...t,"Esc \u8FD4\u56DE",...y],children:o}):l!==null?nt(An,{header:Tl(ug,{children:[m&&nt(Do,{marginBottom:J,children:nt(qr,{width:c})}),nt(bl,{current:l,width:c,onPick:b=>{b===l?h():a.select(b)},isActive:g})]}),hints:i?t:[...t,...p],children:o}):nt(An,{header:nt(zr,{trail:["CodeFlow",...e??[]],width:c,onBack:h,isActive:g}),hints:i?t:[...t,"Esc \u8FD4\u56DE",...y],children:o})}function Y({state:e,loading:t,width:o,children:n}){return e.phase==="loading"?nt(tt,{label:t}):e.phase==="error"?nt(En,{message:e.message,hint:e.hint,width:o}):n(e.data)}import{jsx as yt,jsxs as ks}from"react/jsx-runtime";function wl({params:e}){let t=D(),{width:o}=q(),n=ie(),{item:r}=e,{busy:i,error:s,run:a}=de();mg((f,d)=>{d.return&&a("\u6B63\u5728\u786E\u8BA4",()=>xr(r.id),{onSuccess:()=>t.pop()})},{isActive:i===null});let c=wo(r.level),l=Ve(c),m=Math.max(3,n-4-(s===null?0:2));return yt(K,{trail:["\u7CFB\u7EDF\u516C\u544A","\u672A\u8BFB\u786E\u8BA4"],hints:["\u2191\u2193 \u6EDA\u52A8","Enter \u6211\u77E5\u9053\u4E86"],locked:!0,onEscape:()=>{},children:ks(Gr,{flexDirection:"column",children:[ks(Pn,{wrap:"truncate",children:[yt(Pn,{bold:!0,color:u.foreground,children:r.title}),yt(Pn,{color:l===void 0?u.mutedForeground:qe[l],children:` ${c.label}`}),yt(Pn,{color:u.faintForeground,children:` \u53D1\u5E03\u4E8E ${Wt(r.publishedAt)}`})]}),yt(Gr,{marginTop:1,children:yt(ln,{lines:eo(r.content,o),height:m})}),s!==null&&yt(Gr,{marginTop:1,children:yt(En,{message:s.message,hint:s.hint,width:o})}),yt(Gr,{marginTop:1,children:i!==null?yt(tt,{label:i}):ks(Pn,{wrap:"truncate",children:[yt(Pn,{color:u.accent,children:`${Q.cursor} `}),yt(Pn,{bold:!0,color:u.accent,children:"\u6211\u77E5\u9053\u4E86"})]})})]})})}import{Box as Es,Text as Kr}from"ink";import{useState as Tg}from"react";import{Box as vs,Text as Vt}from"ink";import{useEffect as kl,useRef as dg,useState as vl}from"react";import _s from"string-width";import{jsx as un,jsxs as Uo}from"react/jsx-runtime";var _l=e=>e===void 0?"":typeof e=="string"?e:e.text,Rs=2,pg=6;function fg(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 Cs(e,t,o){let n=e.map((c,l)=>Math.max(_s(c.label),...t.map(m=>_s(m[l]??"")))),r=n.reduce((c,l)=>c+l,0),i=r+Rs*Math.max(0,e.length-1)-o;if(i<0)return fg(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)>pg).sort((l,m)=>(n[m]??0)-(n[l]??0))[0];if(c===void 0)break;n[c]=(n[c]??0)-1,i-=1}return n}var gg=(e,t,o)=>t.map((n,r)=>n.align==="right"?cn(e[r]??"",o[r]??0):Ie(e[r]??"",o[r]??0)).join(" ".repeat(Rs)),Fo=2,hg=2;function Ce({items:e,columns:t,row:o,width:n,height:r,onOpen:i,searchOf:s,isActive:a=!0,emptyLabel:c="\u6682\u65E0\u6570\u636E",emptyDescription:l,retain:m}){let f=B=>m===void 0?void 0:`${m}:${B}`,d=i!==void 0,[p,y]=Xe(d?f("cursor"):void 0,()=>0),[h,g]=Xe(f("query"),()=>""),[b,T]=vl(!1),w=h.trim().toLowerCase(),S=w===""||s===void 0?e:e.filter(B=>s(B).toLowerCase().includes(w)),k=b||w!=="",C=Math.max(1,r-1-(k?1:0)),M=S.length>C?Math.max(1,C-1):C,j=Math.max(0,S.length-M),[x,P]=vl(()=>p>=M?p-M+1:0);kl(()=>{y(B=>Math.min(B,Math.max(0,S.length-1)))},[S.length]),kl(()=>{P(B=>d?p<B?p:p>=B+M?p-M+1:B:Math.min(B,j))},[p,M,j,d]);let _=B=>{if(!d){P(ne=>Math.min(Math.max(0,ne+B),j));return}S.length!==0&&y(ne=>(ne+B+S.length)%S.length)};W((B,ne)=>{if(ne.upArrow||B==="k"){_(-1);return}if(ne.downArrow||B==="j"){_(1);return}if(ne.return){let F=S[p];F!==void 0&&i?.(F,p);return}s!==void 0&&B.startsWith("/")&&(T(!0),B.length>1&&g(B.slice(1)))},a&&!b),an(()=>{T(!1),g("")},{isActive:b||w!=="",layer:b?Jn.input:Jn.panel});let E=k?1:0,v=dg(null),A=B=>{if(B<=E)return null;let ne=x+B-E-1;return S[ne]===void 0?null:ne},R=je({isActive:a,onWheel:_,onClick:({row:B,column:ne})=>{if(k&&B===0){T(!0),v.current?.moveToColumn(ne-hg);return}if(i===void 0)return;let F=A(B);if(F===null)return;let Z=S[F];Z!==void 0&&(y(F),i(Z,F))},onHover:d?({row:B})=>{let ne=A(B);ne!==null&&y(ne)}:void 0}),N=Cs(t,S.map(B=>o(B).map(_l)),n-Fo),H=S.slice(x,x+M);return Uo(vs,{ref:R,flexDirection:"column",children:[k&&Uo(vs,{children:[un(Vt,{color:u.accent,children:"/ "}),un(Ir,{ref:v,value:h,onChange:g,onSubmit:()=>T(!1),isActive:b,placeholder:"\u8F93\u5165\u5173\u952E\u8BCD\u8FC7\u6EE4",width:n-2-_s(` ${S.length}/${e.length}`)}),un(Vt,{color:u.faintForeground,children:` ${S.length}/${e.length}`})]}),Uo(Vt,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(Fo),gg(t.map(B=>B.label),t,N)]}),S.length===0?Uo(vs,{flexDirection:"column",children:[un(Vt,{wrap:"truncate",color:u.mutedForeground,children:`${" ".repeat(Fo)}${w===""?c:"\u65E0\u5339\u914D\u7ED3\u679C"}`}),l!==void 0&&w===""&&C>1&&un(Vt,{wrap:"truncate",color:u.faintForeground,children:`${" ".repeat(Fo)}${l}`})]}):H.map((B,ne)=>{let F=x+ne,Z=d&&F===p&&a,ze=Z?u.accent:a?u.foreground:u.mutedForeground,I=o(B);return Uo(Vt,{wrap:"truncate",children:[un(Vt,{color:u.accent,children:Z?`${Q.cursor} `:" "}),t.map((U,V)=>{let pe=I[V],Me=_l(pe),kt=U.align==="right"?cn(Me,N[V]??0):Ie(Me,N[V]??0),vt=typeof pe=="object"?pe.tone:void 0,Oe=!Z&&a&&vt!==void 0?qe[vt]:ze;return un(Vt,{color:Oe,bold:Z,children:V>0?`${" ".repeat(Rs)}${kt}`:kt},U.label)})]},F)}),(x>0||x+M<S.length)&&un(Vt,{color:u.faintForeground,children:`${" ".repeat(Fo)}${x+1}-${Math.min(x+M,S.length)} / ${S.length}`})]})}import{Text as bg}from"ink";import{useEffect as yg,useState as Sg}from"react";import{jsx as xg}from"react/jsx-runtime";var Rl=100;function mn(e,t,{retain:o}={}){let[n,r]=Xe(o,()=>1),[i,s]=Sg({pages:1,total:0}),a=X([...e,n],()=>t(n,Rl));yg(()=>{a.phase==="ready"&&s({pages:Math.max(1,Math.ceil(a.data.total/Rl)),total:a.data.total})},[a]);let c=m=>{r(f=>Math.min(Math.max(1,f+m),i.pages))},l=()=>r(1);return{state:a,page:n,pages:i.pages,total:i.total,go:c,reset:l}}function dn({page:e,pages:t,total:o,width:n}){return xg(bg,{wrap:"truncate",color:u.faintForeground,children:we(De([`\u7B2C ${e} / ${t} \u9875`,`\u5171 ${o} \u6761`,"\u2190\u2192 \u7FFB\u9875"]),n)})}import{jsx as Jt,jsxs as As}from"react/jsx-runtime";function Cl(){let e=D(),{width:t}=q(),o=ie(),[n,r]=Tg({name:"list"}),i=mn([e.revision],(a,c)=>Ec({page:a,pageSize:c}),{retain:"page"});W((a,c)=>{n.name==="list"&&(a==="r"?e.reload():c.leftArrow?i.go(-1):c.rightArrow&&i.go(1))});let s=()=>{n.name==="list"?e.pop():r({name:"list"})};return Jt(K,{hints:n.name==="list"?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","r \u5237\u65B0"]:["\u2191\u2193 \u6EDA\u52A8","Esc \u8FD4\u56DE"],onEscape:s,children:Jt(Y,{state:i.state,loading:"\u6B63\u5728\u8BFB\u53D6\u516C\u544A",width:t,children:a=>{if(n.name==="detail"){let c=wo(n.item.level),l=Ve(c);return As(Es,{flexDirection:"column",children:[As(Kr,{wrap:"truncate",children:[Jt(Kr,{bold:!0,color:u.foreground,children:n.item.title}),Jt(Kr,{color:l===void 0?u.mutedForeground:qe[l],children:` ${c.label}`}),Jt(Kr,{color:u.faintForeground,children:` ${De([`\u53D1\u5E03\u4E8E ${Wt(n.item.publishedAt)}`])}`})]}),Jt(Es,{marginTop:1,children:Jt(ln,{lines:eo(n.item.content,t),height:Math.max(3,o-2)})})]})}return As(Es,{flexDirection:"column",children:[Jt(Ce,{retain:"list",items:a.items,width:t,height:Math.max(3,o-1),columns:[{label:"\u6807\u9898",shrink:!0},{label:"\u7EA7\u522B"},{label:"\u53D1\u5E03\u4E8E",align:"right"}],row:c=>[c.title,Kt(wo(c.level)),Wt(c.publishedAt)],onOpen:c=>{r({name:"detail",item:c}),xr(c.id).catch(()=>e.toast("warn","\u5DF2\u8BFB\u786E\u8BA4\u53D1\u9001\u5931\u8D25"))},emptyLabel:"\u6682\u65E0\u516C\u544A",emptyDescription:"\u5E73\u53F0\u6709\u65B0\u901A\u77E5\u65F6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),Jt(dn,{page:i.page,pages:i.pages,total:i.total,width:t})]})}})})}import{Box as xt,Text as Ho}from"ink";import{useState as mu}from"react";import Wg from"string-width";var El=()=>O(Ga,"/auth/me"),Al=e=>O(ye,"/auth/me",{method:"PATCH",json:e}).then(()=>{}),Pl=e=>O(ye,"/auth/me/password",{method:"POST",json:e}).then(()=>{}),Nl=e=>O(ye,"/auth/me/email/code",{method:"POST",json:e}).then(()=>{}),Il=e=>O(ye,"/auth/me/email",{method:"POST",json:e}).then(()=>{}),Ll=()=>O(Ka,"/auth/me/sessions"),Ml=e=>O(ye,`/auth/me/sessions/${e}`,{method:"DELETE"}).then(()=>{}),Ol=()=>O(Ja,"/auth/me/security"),Ps=e=>O(Va,"/auth/me/totp/setup",{method:"POST",json:e}),$l=e=>O(zi,"/auth/me/totp/confirm",{method:"POST",json:e}),Dl=e=>O(ye,"/auth/me/totp/disable",{method:"POST",json:e}).then(()=>{}),Bl=e=>O(zi,"/auth/me/totp/recovery-codes",{method:"POST",json:e}),Fl=(e,t)=>O(ye,`/auth/me/passkeys/${e}`,{method:"PATCH",json:t}).then(()=>{}),Ul=e=>O(ye,`/auth/me/passkeys/${e}`,{method:"DELETE"}).then(()=>{});import{Box as Ft,measureElement as Vl,Text as Ee,useInput as Zl}from"ink";import{useEffect as Rg,useRef as Jl,useState as oo}from"react";import Ms from"string-width";import{Box as wg,Text as pn,useInput as kg}from"ink";import{useRef as jl,useState as ql}from"react";import Is from"string-width";import{jsx as Yt,jsxs as Gl}from"react/jsx-runtime";var vg=e=>e.replace(/\r\n?/g,`
8
+ `).replace(new RegExp("(?!\\n)\\p{Cc}","gu"),"");function Hl(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=Is(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 Wl(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 zl(e,t,o){let n=0;for(let r=t.start;r<t.end;r+=1){let i=Is(e[r]??"");if(n+i>o)return r;n+=i}return t.end}var _g=(e,t,o)=>e.slice(t.start,o).reduce((n,r)=>n+Is(r),0);function Ns(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 zl({value:e,onChange:t,isActive:o,width:n,rows:r,placeholder:i,maxLength:s,onEdge:a,onFocusRequest:c}){let l=[...e],[p,f]=Ul(l.length),m=Math.min(p,l.length),[d,S]=Ul(0),h=Fl(e),g=Fl(m);h.current=e,g.current=m,xr(o);let y=Math.max(4,n),x=_=>{g.current=_,f(_)},T=(_,R)=>{h.current=_,x(R),t(_)},b=_=>{let R=[...h.current],w=Math.min(g.current,R.length),N=jl(R,y),C=Hl(N,w),M=N[C],q=N[C+_];return M===void 0||q===void 0?!1:(x(ql(R,q,xg(R,M,w))),!0)},k=(_,R,w)=>{let N=Sg(w);if(s!==void 0){let C=s-_.length;if(C<=0)return;N=[...N].slice(0,C).join("")}N!==""&&T([..._.slice(0,R),N,..._.slice(R)].join(""),R+[...N].length)};yg((_,R)=>{let w=[...h.current],N=Math.min(g.current,w.length);if(R.return){k(w,N,`
12
- `);return}if(!R.tab){if(R.upArrow||R.downArrow){let C=R.upArrow?-1:1;b(C)||a?.(R.upArrow?"up":"down");return}if(R.leftArrow){x(Math.max(0,N-1));return}if(R.rightArrow){x(Math.min(w.length,N+1));return}if(R.home){x(As(w,N).start);return}if(R.end){x(As(w,N).end);return}if(R.backspace){if(N===0)return;T([...w.slice(0,N-1),...w.slice(N)].join(""),N-1);return}if(R.delete){if(N>=w.length)return;T([...w.slice(0,N),...w.slice(N+1)].join(""),N);return}if(R.ctrl){let C=As(w,N);if(_==="a")x(C.start);else if(_==="e")x(C.end);else if(_==="k")T([...w.slice(0,N),...w.slice(C.end)].join(""),N);else if(_==="u")T([...w.slice(0,C.start),...w.slice(N)].join(""),C.start);else if(_==="w"){let M=N;for(;M>C.start&&w[M-1]===" ";)M-=1;for(;M>C.start&&w[M-1]!==" ";)M-=1;T([...w.slice(0,M),...w.slice(N)].join(""),M)}return}R.meta||!_||k(w,N,_)}},{isActive:o});let E=jl(l,y),A=Hl(E,m),U=Math.min(d,Math.max(0,E.length-r));A<U&&(U=A),A>U+r-1&&(U=A-r+1),U!==d&&S(U);let v=[];for(let _=0;_<r;_+=1){let R=U+_,w=E[R];if(w===void 0){v.push(Jt(mn,{children:" "},R));continue}let N=l.slice(w.start,w.end).join("");if(!o||R!==A){v.push(Jt(mn,{wrap:"truncate",color:u.foreground,children:N===""?" ":N},R));continue}let C=l.slice(w.start,m).join(""),M=m<w.end?l[m]??" ":" ",q=m<w.end?l.slice(m+1,w.end).join(""):"";v.push(Wl(mn,{wrap:"truncate",children:[Jt(mn,{color:u.foreground,children:C}),Jt(Po,{char:M}),Jt(mn,{color:u.foreground,children:q})]},R))}if(e===""&&i!==void 0){let _=[...i];v[0]=o?Wl(mn,{wrap:"truncate",children:[Jt(Po,{char:_[0]??" "}),Jt(mn,{color:u.faintForeground,children:_.slice(1).join("")})]},"placeholder"):Jt(mn,{wrap:"truncate",color:u.faintForeground,children:i},"placeholder")}let P=Ue({onWheel:_=>{b(_)},onClick:({row:_,column:R})=>{c?.();let w=E[U+_];x(w===void 0?l.length:ql(l,w,R))}});return Jt(bg,{ref:P,flexDirection:"column",children:v})}import{Fragment as Yl,jsx as pe,jsxs as yt}from"react/jsx-runtime";var wg=e=>Object.fromEntries(e.map(t=>[t.name,"initial"in t?t.initial??"":""])),Vl="\u9009\u586B",kg=(e,t)=>e.kind!=="text"&&e.kind!=="textarea"?!1:typeof e.optional=="function"?e.optional(t):e.optional===!0,vg=(e,t)=>{let o=typeof e.hint=="function"?e.hint(t[e.name]??""):e.hint;return kg(e,t)?o===void 0?Vl:`${Vl} \xB7 ${o}`:o},_g=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},Rg=6e4,Cg=4,Ns=4,Eg=2,zr=(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,p]=oo(()=>wg(t)),[f,m]=oo(0),[d,S]=oo({}),[h,g]=oo(null),[,y]=oo(0),x=s===!0,T=_g(t),b=T[Math.min(f,T.length-1)],k=b!==void 0&&b.type!=="submit"?t[b.index]:void 0,E=b?.type==="field"&&(k?.kind==="text"||k?.kind==="code"),A=b?.type==="field"&&k?.kind==="textarea",U=Object.values(d).some(I=>I.phase==="cooldown"&&I.until>Date.now());Tg(()=>{if(!U)return;let I=setInterval(()=>y(F=>F+1),1e3);return()=>clearInterval(I)},[U]);let v=I=>m(F=>(F+I+T.length)%T.length),P=(I,F)=>{if(I.options.length===0)return;let J=I.options.findIndex(Me=>Me.value===l[I.name]),de=I.options[(J+F+I.options.length)%I.options.length];de!==void 0&&p(Me=>({...Me,[I.name]:de.value}))},_=I=>{b?.type!=="field"||k?.kind!=="select"||P(k,I)},R=I=>{let F=t[I];if(F===void 0||F.kind!=="code")return;let J=(l[F.emailField]??"").trim();if(J===""){S(Me=>({...Me,[F.name]:{phase:"error",message:"\u8BF7\u5148\u586B\u5199\u90AE\u7BB1"}}));return}let de=d[F.name];de?.phase!=="sending"&&(de?.phase==="cooldown"&&de.email===J&&de.until>Date.now()||(S(Me=>({...Me,[F.name]:{phase:"sending"}})),F.send(J).then(()=>S(Me=>({...Me,[F.name]:{phase:"cooldown",email:J,until:Date.now()+Rg}}))).catch(Me=>S(wt=>({...wt,[F.name]:{phase:"error",message:Te(Me)}})))))};Xl((I,F)=>{if(F.tab){v(F.shift?-1:1);return}if(!A){if(F.upArrow){v(-1);return}if(F.downArrow){v(1);return}if(!E){if(F.leftArrow){_(-1);return}if(F.rightArrow){_(1);return}F.return&&(b?.type==="submit"?n(l):b?.type==="send"?R(b.index):v(1))}}},{isActive:!x}),rn(r,{isActive:!x,layer:Jn.panel});let w=Math.max(0,...t.map(I=>Is(I.label))),N=i-le,C=Math.max(8,N-w-8),M=(I,F)=>T.findIndex(J=>J.type===I&&(J.type==="submit"||J.index===F)),q=Kl(new Map).current,O=Kl(new Map).current,G=2+w+Ns,j=(I,F)=>{let J=T[I];if(J===void 0)return;if(m(I),J.type==="submit"){n(l);return}if(J.type==="send"){R(J.index);return}let de=t[J.index];if(de!==void 0){if(de.kind==="select"){let Me=de.options.find(kt=>kt.value===l[de.name]),wt=we(Me?.label??"\u2014",C);F>=G-Eg&&F<G?P(de,-1):F>=G+Is(wt)&&P(de,1);return}F>=G&&O.get(J.index)?.moveToColumn(F-G)}},ie=(I,F)=>{if(I===null)return null;let J=Gl(I),de=null;for(let[Me,wt]of q){if(wt===null)continue;let kt=Gl(wt),Oe=kt.y-J.y;F<Oe||F>=Oe+kt.height||(de===null||kt.height<de.box.height)&&(de={index:Me,box:kt})}return de===null?null:{...de,frameX:J.x}},it=Ue({isActive:!x,onClick:({row:I,column:F})=>{let J=ie(it.current,I);J!==null&&j(J.index,F-(J.box.x-J.frameX))},onHover:({row:I})=>g(ie(it.current,I)?.index??null),onHoverLeave:()=>g(null)});return yt(Bt,{ref:it,flexDirection:"column",children:[pe(Io,{title:e,width:i}),yt(Bt,{flexDirection:"column",marginTop:Be,paddingLeft:le,children:[c!=null&&pe(Bt,{marginBottom:1,children:pe(Rn,{message:c.message,hint:c.hint,width:N})}),t.map((I,F)=>{let J=f===M("field",F)&&!x,de=vg(I,l),Me=I.kind==="select"?I.options.find(Oe=>Oe.value===l[I.name]):void 0;if(I.kind==="textarea")return yt(Bt,{flexDirection:"column",ref:Oe=>{q.set(M("field",F),Oe)},children:[yt(Ee,{children:[pe(Ee,{color:u.accent,children:J?`${Z.cursor} `:" "}),pe(Ee,{color:zr(J,h===M("field",F)),bold:J,children:I.label})]}),pe(Bt,{paddingLeft:2,children:pe(zl,{value:l[I.name]??"",onChange:Oe=>p(Ri=>({...Ri,[I.name]:Oe})),isActive:J,width:N-2,rows:I.rows??Cg,placeholder:I.placeholder,maxLength:I.maxLength,onEdge:Oe=>v(Oe==="up"?-1:1),onFocusRequest:()=>m(M("field",F))})}),J&&de!==void 0&&pe(Ee,{color:u.faintForeground,children:` ${we(de,N-2)}`})]},I.name);let wt=I.kind==="code"&&f===M("send",F)&&!x,kt=d[I.name];return yt(Bt,{flexDirection:"column",ref:Oe=>{q.set(M("field",F),Oe)},children:[yt(Ee,{children:[pe(Ee,{color:u.accent,children:J?`${Z.cursor} `:" "}),pe(Ee,{color:zr(J,h===M("field",F)),bold:J,children:Ie(I.label,w)}),I.kind==="select"?yt(Yl,{children:[pe(Ee,{color:J?u.accent:u.border,children:` ${Z.prev} `}),pe(Ee,{color:u.foreground,children:we(Me?.label??"\u2014",C)}),pe(Ee,{color:J?u.accent:u.border,children:` ${Z.next}`})]}):yt(Yl,{children:[pe(Ee,{children:" ".repeat(Ns)}),pe(Ar,{ref:Oe=>{O.set(F,Oe)},value:l[I.name]??"",onChange:Oe=>p(Ri=>({...Ri,[I.name]:Oe})),onSubmit:()=>v(1),isActive:J,placeholder:I.kind==="text"||I.kind==="code"?I.placeholder:void 0,mask:I.kind==="text"?I.mask:void 0,width:C})]})]}),J&&de!==void 0&&pe(Ee,{color:u.faintForeground,children:`${" ".repeat(2+w+Ns)}${we(de,C)}`}),I.kind==="code"&&pe(Ag,{active:wt,state:kt,email:(l[I.emailField]??"").trim(),indent:G,width:C,hovered:h===M("send",F),nodeRef:Oe=>{q.set(M("send",F),Oe)}})]},I.name)}),pe(Bt,{marginTop:1,ref:I=>{q.set(M("submit"),I)},children:x?pe(Ze,{label:a}):yt(Ee,{children:[pe(Ee,{color:u.accent,children:b?.type==="submit"?`${Z.cursor} `:" "}),pe(Ee,{color:zr(b?.type==="submit",h===M("submit")),bold:b?.type==="submit",children:o})]})})]})]})}function Ag({active:e,state:t,email:o,indent:n,width:r,hovered:i,nodeRef:s}){if(t?.phase==="sending")return pe(Bt,{paddingLeft:n,children:pe(Ze,{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 yt(Bt,{ref:s,flexDirection:"column",paddingLeft:n-2,children:[yt(Ee,{children:[pe(Ee,{color:u.accent,children:e?`${Z.cursor} `:" "}),pe(Ee,{color:a>0?u.faintForeground:zr(e,i),bold:e&&a===0,children:c})]}),t?.phase==="error"&&pe(Ee,{color:u.danger,children:` ${we(t.message,r)}`})]})}var Pg=2,Jl=2;function Ql({options:e,value:t,onChange:o}){let n=e.findIndex(p=>p.value===t),r=wr();Xl((p,f)=>{if(!f.leftArrow&&!f.rightArrow)return;let m=f.leftArrow?-1:1,d=e[(n+m+e.length)%e.length];d!==void 0&&o(d.value)},{isActive:!r});let i=[],s=0;e.forEach((p,f)=>{f>0&&(s+=Jl);let m=Is(p.label)+Pg;i.push({value:p.value,from:s,to:s+m}),s+=m});let[a,c]=oo(null),l=Ue({onClick:({column:p})=>{let f=i.find(m=>p>=m.from&&p<m.to);f!==void 0&&o(f.value)},onHover:({column:p})=>{let f=i.find(m=>p>=m.from&&p<m.to);c(f?.value??null)},onHoverLeave:()=>c(null)});return pe(Bt,{ref:l,children:pe(Ee,{wrap:"truncate",children:e.map((p,f)=>{let m=p.value===t;return yt(Ee,{children:[f>0&&" ".repeat(Jl),pe(Ee,{backgroundColor:m?u.foreground:u.border,color:m?u.background:p.value===a?u.foreground:u.mutedForeground,bold:m,children:` ${p.label} `})]},p.value)})})})}import{Box as Os,Text as Zl}from"ink";import Ng from"qrcode";import{jsx as Fo,jsxs as Dg}from"react/jsx-runtime";var Ig="#000000",Lg="#ffffff",Ls=2,tu=2,$s=1,eu,Ms;function nu(e){if(e===eu&&Ms!==void 0)return Ms;let t=Ng.create(e,{errorCorrectionLevel:"L"}),o=t.modules.size,n=t.modules.data,r=o+Ls*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+Ls];c!==void 0&&(c[a+Ls]=n[s*o+a]===1)}return eu=e,Ms=i,i}function Mg(e){let t=nu(e).length;return{columns:t*tu,rows:t}}function Gr(e,t,o,n){let r=Mg(e),i=t.rows-r.rows-$s;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+$s+o.rows+n.rows}}}function Og(e,t){let o=[],n=0;for(let r=1;r<=e.length;r+=1)r<e.length&&e[r]===e[n]||(o.push(Fo(Zl,{backgroundColor:e[n]??!1?Ig:Lg,children:" ".repeat((r-n)*tu)},n)),n=r);return Fo(Zl,{children:o},t)}function $g({value:e}){return Fo(Os,{flexDirection:"column",flexShrink:0,children:nu(e).map((t,o)=>Og(t,o))})}function Kr({value:e,aside:t}){return Dg(Os,{flexDirection:"column",flexShrink:0,children:[Fo($g,{value:e}),Fo(Os,{marginTop:$s,flexDirection:"column",children:t})]})}import{Box as Vr,Text as tt}from"ink";import ou from"string-width";import{jsx as nt,jsxs as Uo}from"react/jsx-runtime";var Jr=2,Ds=4,ru=e=>" ".repeat(e),Bs=13,iu=4,su=(e,t,o)=>Math.max(1,Math.min(e,o,Math.floor((t+Jr)/(Bs+Jr)))),Yt=(e,t,o=iu)=>Math.ceil(e/su(e,t,o))*2;function ot({tiles:e,width:t,maxPerRow:o=iu}){let n=su(e.length,t,o),r=Math.floor((t-Jr*(n-1))/n),i=[];for(let s=0;s<e.length;s+=n)i.push(e.slice(s,s+n));return nt(Vr,{flexDirection:"column",children:i.map((s,a)=>nt(Vr,{flexDirection:"column",children:["label","value"].map(c=>nt(tt,{wrap:"truncate",children:s.map((l,p)=>Uo(tt,{children:[p>0&&ru(Jr),nt(tt,{color:c==="label"?u.mutedForeground:u.foreground,bold:c==="value",children:Ie(l[c],r)})]},l.label))},c))},a))})}function au({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 Uo(tt,{children:[nt(tt,{color:i,children:Z.barFilled.repeat(r)}),nt(tt,{color:u.border,children:Z.barEmpty.repeat(o-r)})]})}function Bg({items:e,width:t}){let o=Math.max(0,...e.map(([r])=>ou(r))),n=Math.max(0,t-o-3);return nt(Vr,{flexDirection:"column",children:e.map(([r,i])=>Uo(tt,{wrap:"truncate",children:[nt(tt,{color:u.mutedForeground,children:Ie(r,o)})," ",nt(tt,{color:u.foreground,children:we(i,n)})]},r))})}var cu=(e,t)=>Math.floor((t-Ds)/2)<Bs*2?e:Math.ceil(e/2);function Ae({items:e,width:t}){let o=Math.floor((t-Ds)/2);if(o<Bs*2)return nt(Bg,{items:e,width:t});let n=Math.max(0,...e.map(([a])=>ou(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?nt(tt,{children:" ".repeat(o)}):Uo(tt,{children:[nt(tt,{color:u.mutedForeground,children:Ie(a[0],n)})," ",nt(tt,{color:u.foreground,children:Ie(a[1],r)})]});return nt(Vr,{flexDirection:"column",children:i.map((a,c)=>Uo(tt,{wrap:"truncate",children:[s(a[0]),ru(Ds),s(a[1])]},c))})}import{Fragment as zg,jsx as se,jsxs as dn}from"react/jsx-runtime";var Ug={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"},uu="\u5BC6\u94A5 ",jg=10,Hg={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"}},qg=2+Y;function Wg({codes:e,width:t}){let o=Math.max(...e.map(r=>r.length))+4,n=[];for(let r=0;r<e.length;r+=2)n.push(dn(jo,{wrap:"truncate",color:u.accent,children:[Ie(e[r]??"",Math.min(o,t)),e[r+1]??""]},r));return se(St,{flexDirection:"column",children:n})}function mu(){let e=B(),{width:t,columns:o,rows:n}=H(),r=re(),[i,s]=lu({name:"menu"}),[a,c]=lu(!1),{busy:l,error:p,reset:f,fail:m,run:d}=ge(),S=Q([e.revision],async()=>{let[T,b,k]=await Promise.all([Rl(),Ll(),Nl()]);return{user:T.user,security:b,sessions:k.sessions}});z(T=>{i.name==="menu"&&l===null&&T==="r"&&e.reload()}),Mc(i.name==="codes");let h=()=>{if(i.name!=="codes"){if(i.name==="menu"){e.pop();return}f(),i.name==="passkey-rename"||i.name==="passkey-delete"?s({name:"passkey",item:i.item}):i.name==="confirm-revoke"?s({name:"session",item:i.item}):s({name:"menu"})}},g=T=>{s({name:"menu"}),e.reload(),e.toast("ok",T)},y=(T,b)=>{c(!1),s({name:"codes",codes:T,message:b})},x=(T,b)=>{T==="rebind"?d("\u6B63\u5728\u751F\u6210\u65B0\u5BC6\u94A5",()=>Es({code:b}),{onSuccess:k=>s({name:"enroll",setup:k})}):T==="regenerate"?d("\u6B63\u5728\u751F\u6210\u6062\u590D\u7801",()=>$l({code:b}),{onSuccess:({recoveryCodes:k})=>y(k,"\u6062\u590D\u7801\u5DF2\u66F4\u65B0")}):d("\u6B63\u5728\u505C\u7528",()=>Ol({code:b}),{onSuccess:()=>g("\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u505C\u7528")})};return se(K,{hints:i.name==="menu"?["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","r \u5237\u65B0"]:i.name==="codes"?["\u2191\u2193 \u79FB\u52A8","Enter \u786E\u8BA4"]:["Esc \u8FD4\u56DE"],locked:i.name==="codes",onEscape:h,children:se(X,{state:S,loading:"\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u4FE1\u606F",width:t,children:({user:T,security:b,sessions:k})=>{if(i.name==="rename")return se(V,{title:"\u4FEE\u6539\u7528\u6237\u540D",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:p,fields:[{kind:"text",name:"username",label:"\u7528\u6237\u540D",initial:T.username,placeholder:"\u8BF7\u8F93\u5165\u65B0\u7528\u6237\u540D"}],onCancel:h,onSubmit:v=>{let P=(v.username??"").trim();if(P===""||P.length>Sn){m(`\u8BF7\u8F93\u5165 1 \u5230 ${Sn} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}d("\u6B63\u5728\u4FDD\u5B58",()=>Cl({username:P}),{onSuccess:()=>g("\u5DF2\u4FDD\u5B58")})}});if(i.name==="email")return se(V,{title:"\u4FEE\u6539\u90AE\u7BB1",width:t,submitLabel:"\u786E\u8BA4\u4FEE\u6539",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:p,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:v=>Al({email:v})},{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:h,onSubmit:v=>{let P=(v.email??"").trim(),_=(v.code??"").trim(),R=v.password??"";if(P===""||_===""||R===""){m("\u8BF7\u586B\u5199\u65B0\u90AE\u7BB1\u3001\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801");return}d("\u6B63\u5728\u4FDD\u5B58",()=>Pl({email:P,code:_,password:R}),{onSuccess:()=>g("\u90AE\u7BB1\u5DF2\u4FEE\u6539")})}});if(i.name==="password")return se(V,{title:"\u4FEE\u6539\u5BC6\u7801",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:p,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 ${st} \u4F4D\uFF0C\u4FDD\u5B58\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55`}],onCancel:h,onSubmit:v=>{let P=v.old??"",_=v.next??"";if(P===""){m("\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801");return}if(_.length<st){m(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${st} \u4F4D`);return}d("\u6B63\u5728\u4FDD\u5B58",()=>El({oldPassword:P,newPassword:_}),{onSuccess:()=>g("\u5BC6\u7801\u5DF2\u4FEE\u6539")})}});if(i.name==="confirm-logout")return se(We,{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:p,onConfirm:()=>d("\u6B63\u5728\u9000\u51FA",()=>gr(),{onSuccess:()=>{e.toast("ok","\u5DF2\u9000\u51FA\u767B\u5F55"),e.home()}}),onCancel:h});if(i.name==="code"){let v=Hg[i.intent];return se(V,{title:v.title,width:t,submitLabel:v.submit,busy:l!==null,busyLabel:l??"\u6B63\u5728\u5904\u7406",error:p,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",placeholder:"\u9A8C\u8BC1\u5668\u663E\u793A\u7684 6 \u4F4D\u6570\u5B57",hint:v.hint}],onCancel:h,onSubmit:P=>{let _=(P.code??"").trim();if(_===""){m("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}x(i.intent,_)}})}if(i.name==="enroll"){let v=(_,R)=>dn(zg,{children:[R&&se(jo,{color:u.mutedForeground,children:"\u4F7F\u7528 Google Authenticator \u7B49\u9A8C\u8BC1\u5668 App \u626B\u7801\u6DFB\u52A0"}),dn(jo,{children:[se(jo,{color:u.mutedForeground,children:uu}),se(jo,{color:u.accent,children:i.setup.secret})]}),se(St,{marginTop:1,children:se(V,{title:"\u586B\u5165\u52A8\u6001\u9A8C\u8BC1\u7801\u5B8C\u6210\u7ED1\u5B9A",width:_,submitLabel:"\u7ED1\u5B9A",busy:l!==null,busyLabel:l??"\u6B63\u5728\u7ED1\u5B9A",error:p,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801"}],onCancel:h,onSubmit:w=>{let N=(w.code??"").trim();if(N===""){m("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}d("\u6B63\u5728\u7ED1\u5B9A",()=>Ml({code:N}),{onSuccess:({recoveryCodes:C})=>y(C,"\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u7ED1\u5B9A")})}})})]}),P=Gr(i.setup.otpauthUri,{width:t,rows:r},{columns:Fg(uu)+i.setup.secret.length,rows:jg},{columns:o-t,rows:n-r});return P.fits?se(Kr,{value:i.setup.otpauthUri,aside:v(P.asideWidth,!0)}):dn(St,{flexDirection:"column",children:[se(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"}),v(t,!1)]})}if(i.name==="codes")return dn(St,{flexDirection:"column",children:[se(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"}),se(St,{marginTop:1,children:se(Wg,{codes:i.codes,width:t})}),se(St,{marginTop:1,children:se(ae,{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:v=>{if(v==="ack"){c(_=>!_);return}let P=i.message;s({name:"menu"}),e.reload(),e.toast("ok",P)}})})]});if(i.name==="passkey-add")return se(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 se(V,{title:`\u91CD\u547D\u540D Passkey ${i.item.name}`,width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:p,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:h,onSubmit:v=>{let P=(v.name??"").trim();if(P===""){m("\u8BF7\u8F93\u5165\u540D\u79F0");return}d("\u6B63\u5728\u4FDD\u5B58",()=>Dl(i.item.id,{name:P}),{onSuccess:()=>g("\u5DF2\u4FDD\u5B58")})}});if(i.name==="passkey-delete")return se(We,{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:p,onConfirm:()=>d("\u6B63\u5728\u5220\u9664",()=>Bl(i.item.id),{onSuccess:()=>g("\u5DF2\u5220\u9664")}),onCancel:h});if(i.name==="passkey"){let v=i.item;return se(St,{flexDirection:"column",children:dn(oe,{title:`Passkey ${v.name}`,width:t,children:[se(Ae,{width:t-le,items:[["\u540D\u79F0",v.name],["\u6DFB\u52A0\u65F6\u95F4",ee(v.createdAt)],["\u6700\u8FD1\u4F7F\u7528",v.lastUsedAt===null?"\u2014":ee(v.lastUsedAt)]]}),se(St,{marginTop:1,children:se(ae,{width:t-le,items:[{value:"rename",label:"\u91CD\u547D\u540D"},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:P=>{f(),s(P==="rename"?{name:"passkey-rename",item:v}:{name:"passkey-delete",item:v})}})})]})})}if(i.name==="confirm-revoke")return se(We,{width:t,title:"\u786E\u8BA4\u9000\u51FA\u8BE5\u8BBE\u5907\u7684\u767B\u5F55\uFF1F",confirmLabel:"\u9000\u51FA",busy:l,error:p,onConfirm:()=>d("\u6B63\u5728\u9000\u51FA\u8BE5\u8BBE\u5907",()=>Il(i.item.id),{onSuccess:()=>g("\u5DF2\u9000\u51FA\u8BE5\u8BBE\u5907")}),onCancel:h});if(i.name==="session"){let v=i.item;return dn(St,{flexDirection:"column",children:[se(oe,{title:nr(v.device),note:v.current?"\u5F53\u524D\u8BBE\u5907":void 0,width:t,children:se(Ae,{width:t-le,items:[["\u8BBE\u5907\u7C7B\u578B",v.device?.type!=null?Ug[v.device.type]??v.device.type:"\u684C\u9762\u8BBE\u5907"],["\u5BA2\u6237\u7AEF",v.device?.client!=null?`${v.device.client} ${v.device.clientVersion??""}`.trim():"\u2014"],["\u64CD\u4F5C\u7CFB\u7EDF",v.device?.os!=null?`${v.device.os} ${v.device.osVersion??""}`.trim():"\u2014"],["\u8BBE\u5907\u578B\u53F7",v.device?.model!=null?`${v.device.vendor??""} ${v.device.model}`.trim():"\u2014"],["IP \u5730\u5740",v.ip??"\u2014"],["\u767B\u5F55\u65F6\u95F4",ee(v.loginAt)],["\u6700\u540E\u6D3B\u8DC3",ee(v.lastActiveAt)],["\u767B\u5F55\u6709\u6548\u671F\u81F3",ee(v.expiresAt)],["\u5BA2\u6237\u7AEF\u6807\u8BC6",v.userAgent??"\u2014"]]})}),!v.current&&l===null&&se(St,{marginTop:1,children:se(ae,{width:t,items:[{value:"revoke",label:"\u9000\u51FA\u8BE5\u8BBE\u5907",labelTone:"danger"}],onSelect:()=>{f(),s({name:"confirm-revoke",item:v})}})})]})}let E=b.totp,A=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",U=[{heading:"\u8D26\u6237"},{value:{kind:"rename"},label:"\u4FEE\u6539\u7528\u6237\u540D"},{value:{kind:"email"},label:"\u4FEE\u6539\u90AE\u7BB1",hint:"\u9700\u8981\u90AE\u7BB1\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801"},{value:{kind:"password"},label:"\u4FEE\u6539\u5BC6\u7801",hint:"\u4FDD\u5B58\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55"},{heading:""},{heading:"\u4E24\u6B65\u9A8C\u8BC1"},...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"},...b.passkeys.length===0?[{value:{kind:"none"},label:"\u6682\u65E0 Passkey",hint:"\u6DFB\u52A0\u540E\u53EF\u4F7F\u7528\u6307\u7EB9\u3001\u9762\u5BB9\u6216\u786C\u4EF6\u5BC6\u94A5\u4E00\u6B65\u767B\u5F55",disabled:!0}]:[],...b.passkeys.map(v=>({value:{kind:"passkey",item:v},label:v.name,hint:`\u6700\u8FD1\u4F7F\u7528 ${v.lastUsedAt===null?"\u2014":ee(v.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(v=>({value:{kind:"session",item:v},label:v.current?`${nr(v.device)}\uFF08\u5F53\u524D\u8BBE\u5907\uFF09`:nr(v.device),...v.current?{labelTone:"accent"}:{},hint:`${v.ip??"\u2014"} \xB7 \u6700\u540E\u6D3B\u8DC3 ${ee(v.lastActiveAt)}`})),{heading:""},{value:{kind:"logout"},label:"\u9000\u51FA\u767B\u5F55",labelTone:"danger"}];return dn(St,{flexDirection:"column",children:[se(Ae,{width:t,items:[["\u7528\u6237\u540D",T.username],["\u90AE\u7BB1",T.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",A]]}),se(St,{marginTop:Y,children:se(ae,{width:t,height:Math.max(3,r-qg),isActive:l===null,items:U,retain:"menu",onSelect:v=>{f(),v.kind==="rename"?s({name:"rename"}):v.kind==="email"?s({name:"email"}):v.kind==="password"?s({name:"password"}):v.kind==="logout"?s({name:"confirm-logout"}):v.kind==="enable"?d("\u6B63\u5728\u751F\u6210\u5BC6\u94A5",()=>Es({}),{onSuccess:P=>s({name:"enroll",setup:P})}):v.kind==="code"?s({name:"code",intent:v.intent}):v.kind==="add-passkey"?s({name:"passkey-add"}):v.kind==="passkey"?s({name:"passkey",item:v.item}):v.kind==="session"&&s({name:"session",item:v.item})}})})]})}})})}import{Box as ei,Text as ti,useInput as rh}from"ink";import{useRef as vu,useState as Ho}from"react";import ih from"string-width";import{z as Ke}from"zod";var Gg=Ke.object({siteName:Ke.string(),siteDescription:Ke.string(),apiLines:Fa,quotaPerUsd:Ke.number().int().positive(),ticketAutoCloseMinutes:Ke.number(),legal:Ke.object({termsConfigured:Ke.boolean(),privacyConfigured:Ke.boolean()}),invitation:Ke.object({firstInviterPercent:Ke.number(),firstInviteePercent:Ke.number()}),initialized:Ke.boolean()});function ve(e,t){return Ct(Gg,`${e}/api/site-config`,{...t===void 0?{}:{timeoutMs:t}})}var Kg=Ke.object({title:Ke.string(),content:Ke.string(),configured:Ke.boolean()});function du(e,t){return Ct(Kg,`${e}/api/agreements/${t}`)}var pu=12e4,fu=e=>$(bn(ir),Mt("/tickets",{...e})),gu=e=>$(ir,"/tickets",{method:"POST",json:e}),Fs=e=>$(Xa,`/tickets/${e}`),hu=(e,t,o)=>$(Gi,`/tickets/${e}/messages`,{method:"POST",json:{content:t,attachmentIds:o}}),bu=e=>$(zi,Mt("/tickets/attachments",{filename:e.fileName,contentType:e.contentType}),{method:"POST",body:e.bytes,headers:{"content-type":"application/octet-stream"},timeoutMs:pu}),yu=e=>$(ye,`/tickets/attachments/${e}`,{method:"DELETE"}).then(()=>{}),Su=(e,t)=>_c(`/tickets/${e}/attachments/${t}`,{timeoutMs:pu}),xu=e=>$(ye,`/tickets/${e}/close`,{method:"POST"}).then(()=>{}),Tu=e=>$(ye,`/tickets/${e}/reopen`,{method:"POST"}).then(()=>{});import{existsSync as wu,readFileSync as Vg,statSync as Jg,writeFileSync as Yg}from"fs";import{homedir as Xg}from"os";import An from"path";var Qg={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".avif":"image/avif"};function Zg(e){return e.split(`
13
- `).map(t=>t.trim()).filter(t=>t!=="").map(t=>t.startsWith("~/")?An.join(Xg(),t.slice(2)):t)}function eh(e){if(!wu(e))throw new D(`${e} \u4E0D\u5B58\u5728`);let t=Jg(e);if(!t.isFile())throw new D(`${e} \u4E0D\u662F\u6587\u4EF6`);if(t.size===0)throw new D(`${e} \u662F\u7A7A\u6587\u4EF6\uFF0C\u65E0\u6CD5\u4E0A\u4F20`);if(t.size>bo)throw new D(`${e} \u8D85\u8FC7\u5355\u4E2A\u9644\u4EF6\u5927\u5C0F\u4E0A\u9650 ${Vn(bo)}`);let o;try{o=Vg(e)}catch(r){throw new D(`${e} \u8BFB\u53D6\u5931\u8D25\uFF1A${Te(r)}`,{cause:r})}let n=An.basename(e);return{fileName:n,contentType:Qg[An.extname(n).toLowerCase()]??"application/octet-stream",bytes:o}}function Yr(e){let t=Zg(e);if(t.length>sr)throw new D("\u9644\u4EF6\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650");return t.map(eh)}async function Xr(e,t){let o=[];try{for(let n of e)o.push((await bu(n)).id);return await t(o)}catch(n){for(let r of o)await yu(r).catch(()=>{});throw n}}function th(e,t){let o=An.basename(t),n=An.extname(o),r=o.slice(0,o.length-n.length),i=An.join(e,o);for(let s=1;wu(i);s+=1)i=An.join(e,`${r}-${s}${n}`);return i}function ku(e,t,o){let n=th(e,t);try{Yg(n,o)}catch(r){throw new D(`\u5199\u5165 ${n} \u5931\u8D25\uFF1A${Te(r)}`,{cause:r})}return n}import{useEffect as nh,useRef as oh}from"react";function Qr(e,t,o=!0){let n=oh(t);n.current=t,nh(()=>{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])}var Zr={kind:"textarea",name:"attachments",label:"\u9644\u4EF6\u8DEF\u5F84",rows:2,placeholder:"\u6BCF\u884C\u4E00\u4E2A\u672C\u5730\u6587\u4EF6\u8DEF\u5F84\uFF0C\u53EF\u7559\u7A7A",hint:`\u6700\u591A ${sr} \u4E2A\uFF0C\u5355\u4E2A\u4E0D\u8D85\u8FC7 ${bo/1024/1024}MB`,optional:!0};import{jsx as xt,jsxs as Us}from"react/jsx-runtime";var sh=5e3,ah=11,ch=3,_u=1;function lh(e,t){let o=[],n=r=>{let i=r.spans.reduce((a,c)=>a+ih(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=r.content===""?[]:$t([{text:r.content,color:u.foreground}],Math.max(8,t-4)),l=r.attachments.map(p=>({spans:[{text:"[\u9644\u4EF6] ",color:u.faintForeground},{text:p.fileName,color:u.foreground},{text:` (${Vn(p.fileSize)})`,color:u.mutedForeground}]}));s?o.push(n(a),...c.map(n),...l.map(n)):o.push(a,...c,...l)}),o}function Ru({params:e}){let t=B(),{width:o}=H(),n=re(),[r,i]=Ho("main"),[s,a]=Ho(!1),[c,l]=Ho(null),[p,f]=Ho(0),{busy:m,error:d,reset:S,fail:h,run:g}=ge(),y=Q([e.id,t.revision],async()=>{let[R,w]=await Promise.all([Fs(e.id),ve(t.ctx.site)]);return{detail:R,site:w}}),[x,T]=Ho(null),b=vu(0),k=vu(t.revision);k.current!==t.revision&&(k.current=t.revision,b.current+=1,x!==null&&T(null));let E=y.phase==="ready"?y.data:null,A=x??E?.detail??null;Qr(sh,async()=>{if(A===null||m!==null)return;let R=b.current,w=await Fs(e.id);R===b.current&&(w.ticket.updatedAt!==A.ticket.updatedAt||w.messages.length!==A.messages.length)&&T(w)},r==="main"&&E!==null);let U=A?.messages.some(R=>R.attachments.length>0)??!1;z(R=>{r!=="main"||s||m!==null||(R==="r"?t.reload():R==="x"&&A!==null&&A.ticket.status!=="closed"?(S(),i("confirm-close")):R==="a"&&U&&(S(),l(null),i("attachments")))}),rh((R,w)=>{w.tab&&r==="main"&&!s&&A?.ticket.status!=="closed"&&a(!0)},{isActive:r==="main"&&!s&&m===null});let v=()=>{if(r!=="main"){S(),i("main");return}if(s){a(!1);return}t.pop()},P=(R,w)=>{g("\u6B63\u5728\u53D1\u9001",()=>Xr(w,N=>hu(e.id,R,N)),{onSuccess:()=>{a(!1),f(N=>N+1),t.reload(),t.toast("ok","\u5DF2\u53D1\u9001")}})},_=r==="main"&&!s?["\u2191\u2193 \u6EDA\u52A8",...A?.ticket.status==="closed"?[]:["Tab \u56DE\u590D"],...U?["a \u9644\u4EF6"]:[],...A?.ticket.status==="closed"?[]:["x \u5173\u95ED\u5DE5\u5355"],"r \u5237\u65B0"]:[];return xt(K,{trail:["\u5DE5\u5355\u652F\u6301",A?.ticket.title??"\u5DE5\u5355\u8BE6\u60C5"],hints:_,onEscape:v,children:xt(X,{state:y,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:o,children:({site:R})=>{if(A===null)return null;let w=A.ticket,N=w.status==="closed";if(r==="confirm-close")return xt(We,{width:o,title:"\u5173\u95ED\u5DE5\u5355",detail:`\u786E\u5B9A\u5173\u95ED\u5DE5\u5355\u300C${w.title}\u300D\u5417\uFF1F\u5173\u95ED\u540E\u53EF\u91CD\u65B0\u6253\u5F00`,confirmLabel:"\u5173\u95ED\u5DE5\u5355",busy:m,error:d,onConfirm:()=>g("\u6B63\u5728\u5173\u95ED",()=>xu(e.id),{onSuccess:()=>{i("main"),t.reload(),t.toast("ok","\u5DF2\u5173\u95ED")}}),onCancel:v});if(r==="attachments")return Us(ei,{flexDirection:"column",children:[xt(ae,{width:o,height:Math.max(3,n-1),isActive:m===null,items:[{heading:"\u9644\u4EF6"},...A.messages.flatMap(O=>O.attachments.map(G=>({value:G,label:G.fileName,hint:`${O.authorKind==="user"?"\u6211":"\u7BA1\u7406\u5458"} \xB7 ${Vn(G.fileSize)} \xB7 ${ee(O.createdAt)}`})))],onSelect:O=>g("\u6B63\u5728\u4E0B\u8F7D",async()=>{let G=await Su(e.id,O.id);l(ku(process.cwd(),O.fileName,G))},{failToast:!0,onSuccess:()=>t.toast("ok","\u9644\u4EF6\u5DF2\u4FDD\u5B58")})}),c!==null&&xt(ti,{wrap:"truncate",color:u.faintForeground,children:`\u5DF2\u4FDD\u5B58\u5230 ${c}`})]});let C=R.ticketAutoCloseMinutes>0?_u:0,M=N?ch:s?ah:_u,q=Math.max(3,n-C-M-Y);return Us(ei,{flexDirection:"column",children:[C>0&&xt(ti,{wrap:"truncate",color:u.faintForeground,children:`\u7BA1\u7406\u5458\u56DE\u590D\u540E\u8D85\u8FC7 ${R.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`}),xt(an,{lines:lh(A.messages,o),height:q,isActive:!s&&m===null,pinBottom:!0}),xt(ei,{marginTop:1,flexDirection:"column",children:N?Us(ei,{flexDirection:"column",children:[xt(ti,{color:u.mutedForeground,children:"\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u5982\u9700\u7EE7\u7EED\u6C9F\u901A\u53EF\u91CD\u65B0\u6253\u5F00"}),xt(ae,{width:o,isActive:m===null,items:[{value:"reopen",label:"\u91CD\u65B0\u6253\u5F00"}],onSelect:()=>g("\u6B63\u5728\u91CD\u65B0\u6253\u5F00",()=>Tu(e.id),{onSuccess:()=>{t.reload(),t.toast("ok","\u5DF2\u91CD\u65B0\u6253\u5F00")}})})]}):s?xt(V,{title:"\u56DE\u590D\u5DE5\u5355",width:o,submitLabel:"\u53D1\u9001\u56DE\u590D",busy:m!==null,busyLabel:m??"\u6B63\u5728\u53D1\u9001",error:d,fields:[{kind:"textarea",name:"content",label:"\u56DE\u590D\u5185\u5BB9",rows:3,maxLength:5e3,placeholder:"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9",optional:!0},Zr],onCancel:()=>a(!1),onSubmit:O=>{let G=(O.content??"").trim(),j;try{j=Yr(O.attachments??"")}catch(ie){h(Te(ie));return}if(G===""&&j.length===0){h("\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9\u6216\u9644\u4EF6\u8DEF\u5F84");return}P(G,j)}},p):xt(ti,{color:u.faintForeground,children:"\u6309 Tab \u64B0\u5199\u56DE\u590D"})})]})}})})}import{Box as uh}from"ink";import{useState as mh}from"react";import{jsx as Pn,jsxs as fh}from"react/jsx-runtime";var dh=Xe($i,Xi,"\u5168\u90E8\u72B6\u6001"),ph={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"},js={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:ph};function Cu(){let e=B(),{width:t}=H(),o=re(),[n,r]=mh({name:"list"}),[i,s]=Je("status",()=>""),{busy:a,error:c,reset:l,fail:p,run:f}=ge(),m=ln([e.revision,i],(h,g)=>fu({page:h,pageSize:g,...i===""?{}:{status:i}}),{retain:"page"}),d=n.name==="list";z((h,g)=>{d&&(h==="r"?e.reload():h==="f"?r({name:"filter"}):h==="n"?r({name:"create-category"}):g.leftArrow?m.go(-1):g.rightArrow&&m.go(1))});let S=()=>{n.name==="list"?e.pop():n.name==="create"?r({name:"create-category"}):(l(),r({name:"list"}))};return Pn(K,{hints:d?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","n \u65B0\u5EFA","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:S,children:n.name==="filter"?Pn(V,{title:"\u7B5B\u9009\u5DE5\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:dh,initial:i}],onCancel:S,onSubmit:h=>{s(h.status??""),m.reset(),r({name:"list"})}}):n.name==="create-category"?Pn(ae,{width:t,height:o,items:[{heading:"\u5206\u7C7B"},...Di.map(h=>({value:h,label:ur(h),hint:js[h].title}))],onSelect:h=>r({name:"create",category:h})}):n.name==="create"?Pn(V,{title:`\u65B0\u5EFA\u5DE5\u5355 \u2014 ${ur(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:Bi.map(h=>({value:h,label:Qi(h).label})),initial:"normal"},{kind:"text",name:"title",label:"\u6807\u9898",placeholder:js[n.category].title},{kind:"textarea",name:"content",label:"\u95EE\u9898\u63CF\u8FF0",rows:5,maxLength:5e3,placeholder:js[n.category].content},Zr],onCancel:S,onSubmit:h=>{let g=(h.title??"").trim(),y=(h.content??"").trim();if(g===""){p("\u8BF7\u586B\u5199\u6807\u9898");return}if(y===""){p("\u8BF7\u586B\u5199\u95EE\u9898\u63CF\u8FF0");return}let x;try{x=Yr(h.attachments??"")}catch(T){p(Te(T));return}f("\u6B63\u5728\u63D0\u4EA4\u5DE5\u5355",()=>Xr(x,T=>gu({title:g,category:n.category,priority:h.priority??"normal",content:y,attachmentIds:T})),{onSuccess:T=>{r({name:"list"}),m.reset(),e.reload(),e.push("ticket",{id:T.id}),e.toast("ok","\u5DE5\u5355\u5DF2\u63D0\u4EA4")}})}}):Pn(X,{state:m.state,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:t,children:h=>fh(uh,{flexDirection:"column",children:[Pn(Ce,{retain:"list",items:h.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:g=>[g.title,Gt(Qi(g.priority)),ur(g.category),ee(g.updatedAt),Gt(Xi(g.status))],onOpen:g=>e.push("ticket",{id:g.id}),emptyLabel:i===""?"\u6682\u65E0\u5DE5\u5355":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u9047\u5230\u95EE\u9898\u65F6\u53EF\u65B0\u5EFA\u5DE5\u5355\uFF0C\u7BA1\u7406\u5458\u4F1A\u5C3D\u5FEB\u56DE\u590D":void 0}),Pn(un,{page:m.page,pages:m.pages,total:m.total,width:t})]})})})}import{Box as gh}from"ink";import{jsx as qo}from"react/jsx-runtime";function Eu({params:e}){let t=B(),{width:o}=H(),n=re(),r=Q([e.type,t.revision],()=>du(t.ctx.site,e.type));return qo(K,{trail:["\u6CD5\u5F8B\u6761\u6B3E",e.type==="terms"?"\u7528\u6237\u534F\u8BAE":"\u9690\u79C1\u653F\u7B56"],hints:["\u2191\u2193 \u6EDA\u52A8"],children:qo(X,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6761\u6B3E",width:o,children:i=>i.configured?qo(gh,{flexDirection:"column",children:qo(an,{lines:eo(i.content,o),height:n})}):qo(fe,{tone:"info",width:o,title:"\u8BE5\u6761\u6B3E\u5C1A\u672A\u914D\u7F6E"})})})}async function Au(e,t){await Ct(ye,`${e}/api/auth/send-code`,{json:t})}async function Pu(e,t){let o=await ft(`${e}/api/auth/register`,{json:t});Rt(o);let n=zn.parse(o.data);return wo(e,To({refresh:null,device:null},o.headers),n)}async function Nu(e,t){await Ct(ye,`${e}/api/auth/forgot-password`,{json:t})}async function Iu(e,t){await Ct(ye,`${e}/api/auth/reset-password`,{json:t})}import{jsx as Lu}from"react/jsx-runtime";function Mu(){let e=B(),{width:t}=H(),{busy:o,error:n,fail:r,run:i}=ge();return Lu(K,{trail:["\u627E\u56DE\u5BC6\u7801"],isActive:o===null,children:Lu(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=>Nu(e.ctx.site,{email:s})},{kind:"text",name:"password",label:"\u65B0\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${st} \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<st){r(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${st} \u4F4D`);return}i("\u6B63\u5728\u91CD\u7F6E",()=>Iu(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 qs,Text as bh}from"ink";import{useState as $u}from"react";import{Box as Ou}from"ink";import{jsx as Hs,jsxs as hh}from"react/jsx-runtime";var ni=e=>e.termsConfigured||e.privacyConfigured;function oi({legal:e,width:t,onAgree:o}){let n=B(),r=[e.termsConfigured?"\u300A\u7528\u6237\u534F\u8BAE\u300B":"",e.privacyConfigured?"\u300A\u9690\u79C1\u653F\u7B56\u300B":""].filter(s=>s!==""),i=[{value:"agree",label:"\u6211\u5DF2\u9605\u8BFB\u5E76\u540C\u610F\uFF0C\u7EE7\u7EED",hint:r.join("\u4E0E")},...e.termsConfigured?[{value:"terms",label:"\u67E5\u770B\u7528\u6237\u534F\u8BAE"}]:[],...e.privacyConfigured?[{value:"privacy",label:"\u67E5\u770B\u9690\u79C1\u653F\u7B56"}]:[],{value:"back",label:"\u8FD4\u56DE"}];return hh(Ou,{flexDirection:"column",children:[Hs(fe,{tone:"info",width:t,title:`\u7EE7\u7EED\u524D\u8BF7\u9605\u8BFB\u5E76\u540C\u610F${r.join("\u4E0E")}`}),Hs(Ou,{marginTop:1,children:Hs(ae,{items:i,width:t,onSelect:s=>{s==="agree"?o():s==="terms"?n.push("agreement",{type:"terms"}):s==="privacy"?n.push("agreement",{type:"privacy"}):n.pop()}})})]})}import{jsx as pn,jsxs as Du}from"react/jsx-runtime";function Bu(){let e=B(),{width:t}=H(),[o,n]=$u({name:"credentials"}),[r,i]=$u(!1),{busy:s,error:a,reset:c,fail:l,run:p}=ge(),f=Q([e.revision],()=>ve(e.ctx.site)),m=g=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u5DF2\u767B\u5F55\uFF1A${g}`),e.home()},d=(g,y)=>{p("\u6B63\u5728\u9A8C\u8BC1",()=>hc(e.ctx.site,g,y),{onSuccess:x=>{if(x.status==="totp_required"){n({name:"factor",ticket:x.ticket,jar:x.jar});return}m(x.session.username)}})},S=(g,y)=>{p("\u6B63\u5728\u9A8C\u8BC1",()=>bc(e.ctx.site,g.jar,g.ticket,y,g.kind),{onSuccess:x=>m(x.username)})},h=()=>{o.name==="credentials"?e.pop():(c(),n({name:"credentials"}))};return Du(K,{trail:o.name==="credentials"?["\u767B\u5F55\u8D26\u53F7"]:["\u767B\u5F55\u8D26\u53F7","\u4E24\u6B65\u9A8C\u8BC1"],onEscape:h,isActive:s===null,children:[o.name==="credentials"&&pn(X,{state:f,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:g=>ni(g.legal)&&!r?pn(oi,{legal:g.legal,width:t,onAgree:()=>i(!0)}):Du(qs,{flexDirection:"column",children:[pn(V,{title:"\u767B\u5F55",width:t,submitLabel:"\u767B\u5F55",error:a,busy:s!==null,busyLabel:s??"\u6B63\u5728\u9A8C\u8BC1",fields:[{kind:"text",name:"account",label:"\u8D26\u53F7",placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D\u6216\u90AE\u7BB1"},{kind:"text",name:"password",label:"\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u5BC6\u7801"}],onCancel:h,onSubmit:y=>{let x=(y.account??"").trim(),T=y.password??"";if(x===""||T===""){l("\u8BF7\u586B\u5199\u8D26\u53F7\u4E0E\u5BC6\u7801");return}d(x,T)}}),pn(qs,{marginTop:1,children:pn(bh,{color:u.faintForeground,children:"Passkey \u767B\u5F55\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"})})]})}),o.name==="factor"&&pn(ae,{width:t,items:[{value:"totp",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",hint:"\u8F93\u5165\u9A8C\u8BC1\u5668 App \u4E2D\u663E\u793A\u7684\u52A8\u6001\u9A8C\u8BC1\u7801"},{value:"recovery-code",label:"\u6062\u590D\u7801",hint:"\u8F93\u5165\u672A\u4F7F\u7528\u8FC7\u7684\u4E00\u6B21\u6027\u6062\u590D\u7801"}],onSelect:g=>n({name:"code",ticket:o.ticket,jar:o.jar,kind:g})}),o.name==="code"&&pn(qs,{flexDirection:"column",children:pn(V,{title:"\u4E24\u6B65\u9A8C\u8BC1",width:t,submitLabel:"\u9A8C\u8BC1\u5E76\u767B\u5F55",error:a,busy:s!==null,busyLabel:s??"\u6B63\u5728\u9A8C\u8BC1",fields:[{kind:"text",name:"code",label:o.kind==="totp"?"\u52A8\u6001\u9A8C\u8BC1\u7801":"\u6062\u590D\u7801",placeholder:o.kind==="totp"?"6 \u4F4D\u6570\u5B57\u9A8C\u8BC1\u7801":"\u8BF7\u8F93\u5165\u6062\u590D\u7801",hint:o.kind==="totp"?"\u8F93\u5165\u9A8C\u8BC1\u5668 App \u4E2D\u663E\u793A\u7684\u52A8\u6001\u9A8C\u8BC1\u7801":"\u8F93\u5165\u672A\u4F7F\u7528\u8FC7\u7684\u4E00\u6B21\u6027\u6062\u590D\u7801"}],onCancel:h,onSubmit:g=>{let y=(g.code??"").trim();if(y===""){l("\u8BF7\u586B\u5199\u9A8C\u8BC1\u7801");return}S(o,y)}})})]})}import{useState as yh}from"react";import{jsx as ri}from"react/jsx-runtime";function Fu(){let e=B(),{width:t}=H(),[o,n]=yh(!1),{busy:r,error:i,fail:s,run:a}=ge(),c=Q([e.revision],()=>ve(e.ctx.site));return ri(K,{trail:["\u6CE8\u518C\u8D26\u53F7"],isActive:r===null,children:ri(X,{state:c,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:l=>ni(l.legal)&&!o?ri(oi,{legal:l.legal,width:t,onAgree:()=>n(!0)}):ri(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:p=>Au(e.ctx.site,{email:p,purpose:"register"})},{kind:"text",name:"password",label:"\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${st} \u4F4D`},{kind:"text",name:"invite",label:"\u9080\u8BF7\u7801",placeholder:"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801",optional:!0}],onCancel:()=>e.pop(),onSubmit:p=>{let f=(p.username??"").trim(),m=(p.email??"").trim(),d=(p.code??"").trim(),S=p.password??"",h=(p.invite??"").trim();if(f===""||f.length>Sn){s(`\u8BF7\u8F93\u5165 1 \u5230 ${Sn} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}if(m===""||d===""){s("\u8BF7\u586B\u5199\u90AE\u7BB1\u4E0E\u9A8C\u8BC1\u7801");return}if(S.length<st){s(`\u5BC6\u7801\u81F3\u5C11 ${st} \u4F4D`);return}a("\u6B63\u5728\u6CE8\u518C",()=>Pu(e.ctx.site,{username:f,email:m,password:S,code:d,...h===""?{}:{inviteCode:h}}),{onSuccess:g=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u6CE8\u518C\u6210\u529F\uFF1A${g.username}`),e.home()}})}})})})}import{Box as In}from"ink";import{useEffect as Mh,useRef as Oh,useState as Vs}from"react";import{z as L}from"zod";var Sh=L.object({balance:L.number(),today:L.object({requests:L.number(),tokens:L.number(),cost:L.number()})}),Uu=()=>$(Sh,"/dashboard/summary"),ju=["all","30d","7d"],xh=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()}),Ws=e=>$(xh,Mt("/dashboard/stats",{range:e})),Th=L.object({id:L.number().int(),requestId:L.string(),tokenName:L.string(),protocol:va,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:Ia,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()}),Hu=e=>$(bn(Th),Mt("/logs",{...e})),wh=L.object({quotaCost:L.number(),rpm:L.number(),tpm:L.number(),concurrency:L.number()}),qu=e=>$(wh,Mt("/logs/stats",{...e})),kh=L.object({id:L.number().int(),type:Aa,amount:L.number(),balanceAfter:L.number(),refType:Pa,refId:L.string().nullable(),createdAt:L.string()}),Wu=e=>$(bn(kh),Mt("/quota-ledger",{...e}));import{Box as vh,Text as Pt}from"ink";import Wo from"string-width";import{Fragment as Gu,jsx as Nt,jsxs as zs}from"react/jsx-runtime";var Nn=1,_h=4,Rh=1,ro=8,Ch=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587"],zu=e=>`${Number(e.slice(5,7))}\u6708${Number(e.slice(8,10))}\u65E5`;function Ku({data:e,order:t,width:o,rows:n}){let r=n-Rh,i=[];for(let P=e.start;P<=e.end;P=en(P,1))i.push(P);let s=Math.min(_h,Math.floor((o+Nn)/i.length)-Nn);s<1&&(s=1,i=i.slice(-Math.floor((o+Nn)/(1+Nn))));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,Cr.length).map((P,_)=>[P,_])),p=Cr.length,f=P=>Cr[P]??u.faintForeground,m=new Map(i.map((P,_)=>[P,_])),d=i.map(()=>Array.from({length:p+1},()=>0));for(let P of e.points){let _=m.get(P.day);if(_===void 0)continue;let R=d[_];if(R===void 0)continue;let w=l.get(P.model)??p;R[w]=(R[w]??0)+P.tokens}let S=d.map(P=>P.reduce((_,R)=>_+R,0)),h=Math.max(0,...S),g=r*ro,y=d.map((P,_)=>{let R=Array.from({length:r},()=>null),w=S[_]??0;if(w<=0||h<=0)return R;let N=Math.max(1,Math.round(w/h*g)),C=[],M=0,q=0;P.forEach((O,G)=>{M+=O;let j=Math.round(M/w*N);for(let ie=q;ie<j;ie+=1)C[ie]=f(G);q=j});for(let O=0;O<r;O+=1){let G=Math.min(ro,N-O*ro);if(G<=0)break;let j=new Map;for(let I=O*ro;I<O*ro+G;I+=1){let F=C[I];F!==void 0&&j.set(F,(j.get(F)??0)+1)}let ie=null,it=0;for(let[I,F]of j)F>it&&(ie=I,it=F);if(ie===null)break;R[O]={color:ie,glyph:G===ro?null:Ch[G-1]??null}}return R}),x=P=>{let _=[],R=(w,N,C)=>{let M=_[_.length-1];M!==void 0&&M.color===w&&M.glyph===N?M.width+=C:_.push({color:w,glyph:N,width:C})};return y.forEach((w,N)=>{N>0&&R(null,null,Nn);let C=w[P]??null;C===null?R(null,null,s):R(C.color,C.glyph,s)}),_},T=i.length*(s+Nn)-Nn,b=zu(a),k=zu(c),E=h>0?`\u5355\u65E5\u5CF0\u503C ${on(h)}`:"",A=T-Wo(b)-Wo(k),U=E!==""&&A>=Wo(E)+4,v=U?Math.floor((A-Wo(E))/2):A;return zs(vh,{flexDirection:"column",children:[Array.from({length:r},(P,_)=>{let R=r-1-_;return Nt(Pt,{wrap:"truncate",children:x(R).map((w,N)=>w.color===null?Nt(Pt,{children:" ".repeat(w.width)},N):w.glyph===null?Nt(Pt,{backgroundColor:w.color,children:" ".repeat(w.width)},N):Nt(Pt,{color:w.color,children:w.glyph.repeat(w.width)},N))},R)}),Nt(Pt,{wrap:"truncate",children:A<2?Nt(Pt,{color:u.faintForeground,children:we(b,T)}):zs(Gu,{children:[Nt(Pt,{color:u.faintForeground,children:b}),Nt(Pt,{children:" ".repeat(v)}),U&&zs(Gu,{children:[Nt(Pt,{color:u.mutedForeground,children:E}),Nt(Pt,{children:" ".repeat(A-Wo(E)-v)})]}),Nt(Pt,{color:u.faintForeground,children:k})]})})]})}import{Box as Vu,Text as Ut}from"ink";import Eh from"string-width";import{jsx as Ft,jsxs as Gs}from"react/jsx-runtime";var ii=3,Xt=2,Ks=10,Ah=8,Ju=e=>Math.floor((e-ii)/Xt),Yu=e=>Ju(e)>=Ah;function Ph(e){let t=new Map(e.days.map(c=>[c.day,c.cost])),o=e.days.map(c=>c.cost).sort((c,l)=>c-l),n=c=>o[Math.floor((o.length-1)*c)]??0,[r,i,s]=[n(.25),n(.5),n(.75)],a=[];for(let c=e.start;c<=e.end;c=en(c,1)){let l=t.get(c)??0;a.push({day:c,level:l<=0?0:l<=r?1:l<=i?2:l<=s?3:4})}return a}function Nh(e,t){let o=t*Xt,n="",r=0,i="";for(;r<o;){let s=r%Xt===0?e[r/Xt*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=Eh(c);if(r+l<=o){n+=c,r+=l;continue}}}n+=" ",r+=1}return n}var Ih={1:"\u4E00",3:"\u4E09",5:"\u4E94"};function Lh({cells:e,day:t,weeks:o}){return Gs(Ut,{wrap:"truncate",children:[Ft(Ut,{color:u.faintForeground,children:Ie(Ih[t]??"",ii)}),Array.from({length:o},(n,r)=>{let i=e[r*7+t];return i===void 0?Ft(Ut,{children:" ".repeat(Xt)},r):Ft(Ut,{backgroundColor:Rr[i.level],children:" ".repeat(Xt)},r)})]})}function Xu({data:e,funFact:t,width:o}){let n=Ph(e),r=Math.ceil(n.length/7),i=Math.min(r,Ju(o)),s=n.slice((r-i)*7),a=3+Rr.length*Xt+3,c=Math.max(0,ii+i*Xt-a-2);return Gs(Vu,{flexDirection:"column",children:[Ft(Ut,{wrap:"truncate",color:u.faintForeground,children:" ".repeat(ii)+Nh(s,i)}),Array.from({length:7},(l,p)=>Ft(Lh,{cells:s,day:p,weeks:i},p)),Ft(Vu,{marginTop:1,children:Gs(Ut,{wrap:"truncate",children:[Ft(Ut,{color:u.mutedForeground,children:Ie(t??"",c)})," ",Ft(Ut,{color:u.faintForeground,children:"\u5C11 "}),Rr.map(l=>Ft(Ut,{backgroundColor:l,children:" ".repeat(Xt)},l)),Ft(Ut,{color:u.faintForeground,children:" \u591A"})]})})]})}import{jsx as He,jsxs as Zu}from"react/jsx-runtime";var $h={all:"\u5168\u90E8","30d":"30 \u5929","7d":"7 \u5929"},Dh=1,si=4,Qu=5,Bh=9;function Fh(e){let t=-1,o=0;return e.forEach((n,r)=>{n>o&&(o=n,t=r)}),t<0?"\u2014":`${t} \u70B9`}function em(){let e=B(),{width:t}=H(),o=re(),[n,r]=Vs("all"),[i,s]=Vs("heatmap"),[a,c]=Vs(null),l=Oh(null),p=Q([n,e.revision],async()=>{let f=l.current;if(f!==null&&f.revision===e.revision){let h=await Ws(n);return{summary:f.summary,stats:h,site:f.site}}let[m,d,S]=await Promise.all([Uu(),Ws(n),ve(e.ctx.site)]);return l.current={revision:e.revision,summary:m,site:S},{summary:m,stats:d,site:S}});return Mh(()=>{p.phase==="ready"&&c(ec({tokens:p.data.stats.totals.tokens,scope:"user",range:n}))},[p,n]),z(f=>{f==="r"&&e.reload(),f==="t"&&s(m=>m==="heatmap"?"chart":"heatmap")}),He(K,{hints:["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u5207\u6362\u533A\u95F4","t \u5207\u6362\u56FE\u8868","/ \u8FC7\u6EE4","r \u5237\u65B0"],children:He(In,{flexDirection:"column",children:He(X,{state:p,loading:"\u6B63\u5728\u8BFB\u53D6\u7528\u91CF",width:t,children:({summary:f,stats:m,site:d})=>{let S=[{label:"\u8D26\u6237\u4F59\u989D",value:ce(f.balance,d.quotaPerUsd)},{label:"\u4ECA\u65E5\u8BF7\u6C42",value:Re(f.today.requests)},{label:"\u4ECA\u65E5 Token",value:Re(f.today.tokens)},{label:"\u4ECA\u65E5\u6D88\u8017",value:ce(f.today.cost,d.quotaPerUsd)}],h=[{label:"\u8BF7\u6C42\u6570",value:Re(m.totals.requests)},{label:"Token \u603B\u91CF",value:on(m.totals.tokens)},{label:"\u6D88\u8017",value:ce(m.totals.cost,d.quotaPerUsd)},{label:"\u6D3B\u8DC3\u5929\u6570",value:Re(m.activeDays)},{label:"\u5F53\u524D\u8FDE\u7EED",value:`${m.currentStreak} \u5929`},{label:"\u6700\u957F\u8FDE\u7EED",value:`${m.longestStreak} \u5929`},{label:"\u9AD8\u5CF0\u65F6\u6BB5",value:Fh(m.hourly)},{label:"\u5E38\u7528\u6A21\u578B",value:m.models[0]?.displayName??"\u2014"}],g=t-le,y=_=>ct+_+Yt(S.length,g)+Y+ct+_+Dh+_+Yt(h.length,g)+Y+ct+_,x=o-y(Be)>=si?Be:0,T=o-y(x),b=Y+ct+x+Qu,k=i==="chart"&&m.chart.points.length>0&&T>=b+si,E=i==="heatmap"&&Yu(g)&&T-(Y+Ks)>=si,A=E?Y+Ks:0,U=k?Math.min(Bh,Qu+Math.floor((T-b-si)/2)):0,v=T-A-(k?Y+ct+x+U:0),P=_=>`${(m.totals.tokens>0?_/m.totals.tokens*100:0).toFixed(1)}%`;return Zu(In,{flexDirection:"column",children:[He(oe,{title:"\u6982\u89C8",width:t,gap:x,children:He(ot,{width:g,tiles:S})}),He(In,{marginTop:1,flexDirection:"column",children:Zu(oe,{title:"\u533A\u95F4\u7EDF\u8BA1",width:t,gap:x,children:[He(Ql,{options:ju.map(_=>({value:_,label:$h[_]})),value:n,onChange:r}),He(In,{marginTop:x,children:He(ot,{width:g,tiles:h})}),E&&He(In,{marginTop:1,flexDirection:"column",children:He(Xu,{data:m.heatmap,funFact:a,width:g})})]})}),k&&He(In,{marginTop:1,flexDirection:"column",children:He(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:He(Ku,{data:m.chart,order:m.models.map(_=>_.model),width:g,rows:U})})}),He(In,{marginTop:1,flexDirection:"column",children:He(oe,{title:"\u6A21\u578B\u7528\u91CF",width:t,gap:x,children:m.models.length===0?He(fe,{tone:"info",width:g,title:"\u6682\u65E0\u7528\u91CF\u6570\u636E",detail:"\u8C03\u7528 API \u540E\u8FD9\u91CC\u4F1A\u663E\u793A\u5404\u6A21\u578B\u7684\u6BCF\u65E5 Token \u7528\u91CF"}):He(Ce,{retain:"list",items:m.models,width:g,height:v,columns:[{label:"\u6A21\u578B",shrink:!0},{label:"\u603B Token",align:"right"},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u5360\u6BD4",align:"right"}],row:_=>[_.displayName,on(_.tokens),on(_.inTokens),on(_.outTokens),P(_.tokens)],searchOf:_=>_.displayName})})})]})}})})})}import{Box as io,Text as Ys}from"ink";import{useState as om}from"react";import{z as ze}from"zod";var Uh=ze.object({id:ze.number().int(),name:ze.string(),description:ze.string(),multiplier:ze.coerce.number()}),ai=()=>$(ze.array(Uh),"/groups"),Js=ze.object({id:ze.number().int(),name:ze.string(),keyPrefix:ze.string(),keySuffix:ze.string(),groupId:ze.number().int().nullable(),groupName:ze.string().nullable(),usedQuota:ze.number(),quotaLimit:ze.number().nullable()}),ci=()=>$(ze.array(Js),"/tokens"),tm=e=>$(Js.extend({token:ze.string()}),"/tokens",{method:"POST",json:e}),li=(e,t)=>$(Js,`/tokens/${e}`,{method:"PATCH",json:t}),nm=e=>$(ye,`/tokens/${e}`,{method:"DELETE"}).then(()=>{});import{jsx as qe,jsxs as ui}from"react/jsx-runtime";var rm={model:"",requestId:"",token:"",group:"",status:"",range:"today",since:"",until:""},im=/^\d{4}-\d{2}-\d{2}$/;function jh(e){let t=Vi();return e.range==="today"?{since:t,until:t}:e.range==="7d"?{since:en(t,-6),until:t}:e.range==="30d"?{since:en(t,-29),until:t}:e.range==="custom"?{...e.since===""?{}:{since:e.since},...e.until===""?{}:{until:e.until}}:{}}function sm(e){let t=jh(e);return{...e.model.trim()===""?{}:{model:e.model.trim()},...e.requestId.trim()===""?{}:{requestId:e.requestId.trim()},...e.token===""?{}:{token:e.token},...e.group===""?{}:{group:e.group},...e.status===""?{}:{status:e.status},...t.since===void 0?{}:{since:Ji(t.since).toISOString()},...t.until===void 0?{}:{until:Ji(en(t.until,1)).toISOString()}}}var Hh=Xe(Oi,cr,"\u5168\u90E8\u72B6\u6001"),qh=[{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 Wh({log:e,quotaPerUsd:t,width:o}){let n=o-le,r=cr(e.status),i=Ge(r),s=e.status!=="anomaly"?null:e.totalTokens>0?"\u672C\u6B21\u8C03\u7528\u672A\u8FD4\u56DE\u7528\u91CF\u6570\u636E\uFF0C\u8D39\u7528\u6309\u8BF7\u6C42\u4E0E\u54CD\u5E94\u7684\u6587\u672C\u91CF\u4F30\u7B97":"\u672C\u6B21\u8C03\u7528\u672A\u8FD4\u56DE\u7528\u91CF\u6570\u636E\u4E14\u65E0\u6CD5\u4F30\u7B97\uFF0C\u672A\u8BA1\u8D39",a=[];e.cachedTokens>0&&a.push(["\u7F13\u5B58\u8BFB",Re(e.cachedTokens)]),e.cacheWrite5mTokens>0&&a.push(["\u7F13\u5B58\u5199 5m",Re(e.cacheWrite5mTokens)]),e.cacheWrite1hTokens>0&&a.push(["\u7F13\u5B58\u5199 1h",Re(e.cacheWrite1hTokens)]),e.firstByteMs!==null&&a.push(["\u9996\u5B57\u8282",`${wn(e.firstByteMs)} s`]);let c=[["\u8BF7\u6C42 ID",e.requestId],["\u4EE4\u724C",e.tokenName],["\u5206\u7EC4",e.groupName],["\u534F\u8BAE",oc(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 ui(oe,{title:e.modelDisplayName,note:ee(e.createdAt),width:o,children:[ui(Ys,{wrap:"truncate",children:[qe(Ys,{color:i===void 0?u.mutedForeground:je[i],children:r.label}),qe(Ys,{color:u.faintForeground,children:` ${De([e.stream?"\u6D41\u5F0F":"",e.model])}`})]}),qe(io,{marginTop:1,children:qe(ot,{width:n,tiles:[{label:"\u8F93\u5165 Token",value:Re(e.promptTokens)},{label:"\u8F93\u51FA Token",value:Re(e.completionTokens)},{label:"\u6D88\u8017",value:Kn(e.quotaCost,t)},{label:"\u603B\u8017\u65F6",value:`${wn(e.latencyMs)} s`}]})}),s!==null&&qe(io,{marginTop:1,children:qe(fe,{tone:"warn",width:n,title:s})}),qe(io,{marginTop:1,children:qe(Ae,{width:n,items:[...a,...c]})})]})}function am(){let e=B(),{width:t}=H(),o=re(),[n,r]=om({name:"list"}),[i,s]=om(rm),{error:a,fail:c,reset:l}=ge(),p=Q([e.revision],async()=>{let[g,y,x]=await Promise.all([ai(),ci(),ve(e.ctx.site)]);return{groups:g,tokens:y,site:x}}),f=ln([e.revision,JSON.stringify(i)],(g,y)=>Hu({page:g,pageSize:y,...sm(i)}),{retain:"page"}),m=Q([e.revision,JSON.stringify(i)],()=>qu(sm(i))),d=n.name==="list";z((g,y)=>{d&&(g==="r"?e.reload():g==="f"?(l(),r({name:"filter"})):y.leftArrow?f.go(-1):y.rightArrow&&f.go(1))});let S=()=>{n.name==="list"?e.pop():(l(),r({name:"list"}))},h=JSON.stringify(i)!==JSON.stringify(rm);return qe(K,{hints:d?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:S,children:qe(X,{state:p,loading:"\u6B63\u5728\u8BFB\u53D6\u7B5B\u9009\u9009\u9879",width:t,children:({groups:g,tokens:y,site:x})=>{if(n.name==="filter")return qe(V,{title:"\u7B5B\u9009\u65E5\u5FD7",width:t,submitLabel:"\u67E5\u8BE2",error:a,fields:[{kind:"text",name:"model",label:"\u6A21\u578B",initial:i.model,placeholder:"\u641C\u7D22\u6A21\u578B ID \u6216\u540D\u79F0"},{kind:"text",name:"requestId",label:"\u8BF7\u6C42 ID",initial:i.requestId,placeholder:"\u641C\u7D22\u8BF7\u6C42 ID"},{kind:"select",name:"token",label:"\u4EE4\u724C",options:[{value:"",label:"\u5168\u90E8\u4EE4\u724C"},...[...new Set(y.map(b=>b.name))].map(b=>({value:b,label:b}))],initial:i.token},{kind:"select",name:"group",label:"\u5206\u7EC4",options:[{value:"",label:"\u5168\u90E8\u5206\u7EC4"},...g.map(b=>({value:b.name,label:b.name}))],initial:i.group},{kind:"select",name:"status",label:"\u72B6\u6001",options:Hh,initial:i.status},{kind:"select",name:"range",label:"\u65F6\u95F4\u8303\u56F4",options:qh,initial:i.range},{kind:"text",name:"since",label:"\u5F00\u59CB\u65E5\u671F",initial:i.since,placeholder:"YYYY-MM-DD",hint:"\u4EC5\u65F6\u95F4\u8303\u56F4\u9009\u300C\u81EA\u5B9A\u4E49\u8D77\u6B62\u300D\u65F6\u751F\u6548"},{kind:"text",name:"until",label:"\u7ED3\u675F\u65E5\u671F",initial:i.until,placeholder:"YYYY-MM-DD",hint:"\u4EC5\u65F6\u95F4\u8303\u56F4\u9009\u300C\u81EA\u5B9A\u4E49\u8D77\u6B62\u300D\u65F6\u751F\u6548"}],onCancel:S,onSubmit:b=>{let k=b.range??"",E=(b.since??"").trim(),A=(b.until??"").trim();if(k==="custom"&&(E!==""&&!im.test(E)||A!==""&&!im.test(A))){c("\u65E5\u671F\u683C\u5F0F\u5E94\u4E3A YYYY-MM-DD");return}s({model:b.model??"",requestId:b.requestId??"",token:b.token??"",group:b.group??"",status:b.status??"",range:k,since:E,until:A}),f.reset(),r({name:"list"})}});if(n.name==="detail")return qe(Wh,{log:n.log,quotaPerUsd:x.quotaPerUsd,width:t});let T=Yt(4,t);return ui(io,{flexDirection:"column",children:[qe(io,{height:T+1,flexDirection:"column",overflow:"hidden",children:qe(X,{state:m,loading:"\u6B63\u5728\u7EDF\u8BA1\u7B5B\u9009\u7ED3\u679C",width:t,children:b=>qe(ot,{width:t,tiles:[{label:"\u6D88\u8017",value:ce(b.quotaCost,x.quotaPerUsd)},{label:"RPM",value:Re(b.rpm)},{label:"TPM",value:Re(b.tpm)},{label:"\u5E76\u53D1",value:Re(b.concurrency)}]})})}),qe(X,{state:f.state,loading:"\u6B63\u5728\u8BFB\u53D6\u4F7F\u7528\u65E5\u5FD7",width:t,children:b=>ui(io,{flexDirection:"column",children:[qe(Ce,{retain:"list",items:b.items,width:t,height:Math.max(3,o-2-T),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:k=>[ee(k.createdAt),k.modelDisplayName,Re(k.promptTokens),Re(k.completionTokens),Kn(k.quotaCost,x.quotaPerUsd),Gt(cr(k.status))],onOpen:k=>r({name:"detail",log:k}),emptyLabel:h?"\u65E0\u5339\u914D\u7ED3\u679C":"\u6682\u65E0\u8C03\u7528\u8BB0\u5F55",emptyDescription:h?void 0:"\u901A\u8FC7\u4EE4\u724C\u8C03\u7528 API \u540E\uFF0C\u660E\u7EC6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),qe(un,{page:f.page,pages:f.pages,total:f.total,width:t})]})})]})}})})}import{Box as zo,Text as fn}from"ink";import{useState as Jh}from"react";import{z as te}from"zod";var zh=te.object({id:te.number().int(),model:te.string(),displayName:te.string(),inputPricePerMillionTokens:te.string(),outputPricePerMillionTokens:te.string(),cachedInputPricePerMillionTokens:te.string(),cacheWritePricePerMillionTokens:te.string()}),Gh=te.object({quotaPerUsd:te.number().int().positive(),cnyPerUsd:te.number(),minTopupCny:te.number(),models:te.array(zh)});function mi(e){return Ct(Gh,`${e}/api/pricing`)}var Kh=te.object({cnyPerUsd:te.number(),groups:te.array(te.object({id:te.number().int(),name:te.string(),multiplier:te.coerce.number()})),stats:te.object({requests:te.number(),errors:te.number(),latencyP50Ms:te.number().nullable(),firstByteP50Ms:te.number().nullable()}),heartbeat:te.object({bucketStartMs:te.number(),groups:te.array(te.object({id:te.number().int(),name:te.string(),minutes:te.array(te.object({requests:te.number(),errors:te.number()}))}))})});function cm(e,t){return Ct(Kh,`${e}/api/pricing/${t}`)}var Vh=te.object({data:te.array(te.object({id:te.string()}))});async function lm(e,t,o){return(await Ct(Vh,`${e}/v1/models`,{headers:{authorization:`Bearer ${t}`},...o===void 0?{}:{timeoutMs:o}})).data.map(r=>r.id)}import{jsx as Le,jsxs as Go}from"react/jsx-runtime";var Yh=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",Qh=1,Zh=1+Be,eb=e=>e.requests===0?u.border:e.errors===0?u.success:e.errors/e.requests>=.5?u.danger:u.warning;function tb({minutes:e,width:t}){let o=e.slice(Math.max(0,e.length-t)),n=[];for(let r of o){let i=eb(r),s=n[n.length-1];s!==void 0&&s.color===i?s.count+=1:n.push({color:i,count:1})}return Le(fn,{wrap:"truncate",children:n.map((r,i)=>Le(fn,{color:r.color,children:Z.barFilled.repeat(r.count)},i))})}function nb({price:e,width:t,contentRows:o}){let n=B(),r=Q([e.id,n.revision],()=>cm(n.ctx.site,e.id)),i=(s,a)=>Tn(String(Number(s)*a),"-");return Le(X,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u8BE6\u60C5",width:t,children:s=>{let a=t-le,c=s.stats,l=[{label:"\u53EF\u7528\u7387",value:c.requests>0?`${((c.requests-c.errors)/c.requests*100).toFixed(1)}%`:"\u2014"},{label:"\u8C03\u7528\u6B21\u6570",value:Re(c.requests)},{label:"\u5EF6\u8FDF P50",value:c.latencyP50Ms!==null?`${wn(c.latencyP50Ms)} s`:"\u2014"},{label:"\u9996\u5B57\u8282 P50",value:c.firstByteP50Ms!==null?`${wn(c.firstByteP50Ms)} s`:"\u2014"}],p=Zh+At+Yt(l.length,a,2)+Y+At+Qh,f=s.heartbeat.groups.length,m=o-p-Yh-Y-At,d=Math.max(0,Math.floor(m/2));d<f&&(d=Math.max(0,Math.floor((m-1)/2))),d=Math.min(f,d);let S=d>0?Y+At+d*2+(d<f?1:0):0,h=Math.max(1,o-p-S);return Go(zo,{flexDirection:"column",children:[Le(zo,{marginBottom:Be,children:Go(fn,{wrap:"truncate",children:[Le(fn,{bold:!0,color:u.foreground,children:e.displayName}),Le(fn,{color:u.faintForeground,children:` ${e.model}`})]})}),Le(oe,{title:"\u8FD1 24 \u5C0F\u65F6",note:"\u5168\u90E8\u5206\u7EC4\u7684\u7EFC\u5408\u8C03\u7528\u7EDF\u8BA1",width:t,children:Le(ot,{width:a,tiles:l,maxPerRow:2})}),d>0&&Le(zo,{marginTop:1,flexDirection:"column",children:Go(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,d).map(g=>Go(zo,{flexDirection:"column",children:[Le(fn,{wrap:"truncate",color:u.foreground,children:g.name}),Le(tb,{minutes:g.minutes,width:a})]},g.id)),d<f&&Le(fn,{color:u.faintForeground,children:`\u5176\u4F59 ${f-d} \u4E2A\u5206\u7EC4\u672A\u663E\u793A`})]})}),Le(zo,{marginTop:1,flexDirection:"column",children:Go(oe,{title:"\u5206\u7EC4\u4EF7\u683C",width:t,children:[Le(fn,{wrap:"truncate",color:u.mutedForeground,children:Xh}),s.groups.length===0?Le(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"}):Le(Ce,{items:s.groups,width:a,height:h,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:g=>[g.name,`\xD7${g.multiplier}`,`\xA5${(s.cnyPerUsd*g.multiplier).toFixed(2)}`,i(e.inputPricePerMillionTokens,g.multiplier),i(e.outputPricePerMillionTokens,g.multiplier),i(e.cachedInputPricePerMillionTokens,g.multiplier),i(e.cacheWritePricePerMillionTokens,g.multiplier)]})]})})]})}})}function um(){let e=B(),{width:t}=H(),o=re(),[n,r]=Jh({name:"list"}),i=Q([e.revision],async()=>(await mi(e.ctx.site)).models);z(a=>{a==="r"&&e.reload()});let s=()=>{n.name==="list"?e.pop():r({name:"list"})};return Le(K,{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:Le(X,{state:i,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u5B9A\u4EF7",width:t,children:a=>a.length===0?Le(fe,{tone:"info",width:t,title:"\u6682\u65E0\u6A21\u578B"}):n.name==="detail"?Le(nb,{price:n.price,width:t,contentRows:o}):Le(Ce,{retain:"list",items:a,width:t,height:o,columns:[{label:"\u6A21\u578B",shrink:!0},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u7F13\u5B58\u8BFB\u53D6",align:"right"},{label:"\u7F13\u5B58\u5199\u5165",align:"right"}],row:c=>[c.displayName,Tn(c.inputPricePerMillionTokens,"-"),Tn(c.outputPricePerMillionTokens,"-"),Tn(c.cachedInputPricePerMillionTokens,"-"),Tn(c.cacheWritePricePerMillionTokens,"-")],searchOf:c=>`${c.displayName} ${c.model}`,onOpen:c=>r({name:"detail",price:c}),emptyLabel:"\u65E0\u5339\u914D\u7ED3\u679C"})})})}import{Box as Ln,Text as gb}from"ink";import{useState as fi}from"react";function mm(e,t){let o=e.line??t.apiLines[0];if(o===void 0)throw new D("\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 dm(e,t){let o=await ve(e.site);return lm(mm(kn(),o).url,t)}async function pm(e,t,o,n){let r=await ve(e.site),i=mm(kn(),r).url;t.apply({siteName:r.siteName,baseUrl:t.relayUrl(i),apiKey:o,model:t.requiresModel?n??null:null},t.resolveDir())}import{homedir as Sm}from"os";import{join as pi,resolve as ob}from"path";function di(e,t){let o=e[t];return typeof o!="object"||o===null||Array.isArray(o)?null:o}function Ko(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&&di(o,i)===null)throw new D(`${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?{}:{...di(o,i)??{}};c[s]=r,o[i]=c}er(e,o,384)}function fm(e,t){let o=Zo(e);if(o===null)return null;let n=t.length===1?o[t[0]]:di(o,t[0])?.[t[1]];return typeof n=="string"?n:null}function gm(e,t){let o=Zo(e);if(o===null)return!1;if(t.length===1)return t[0]in o;let n=di(o,t[0]);return n!==null&&t[1]in n}var hm=["env","ANTHROPIC_BASE_URL"],rb=["env","ANTHROPIC_AUTH_TOKEN"],bm=["hasCompletedOnboarding"],Xs=e=>pi(e.dir,"settings.json"),ym=e=>e.custom?pi(e.dir,".claude.json"):pi(Sm(),".claude.json"),xm={id:"claude-code",label:"Claude Code",requiresModel:!1,resolveDir(){let e=process.env.CLAUDE_CONFIG_DIR;return e?{dir:ob(e),custom:!0}:{dir:pi(Sm(),".claude"),custom:!1}},relayUrl:e=>e,configPaths:e=>[Xs(e),ym(e)],read(e){return{baseUrl:fm(Xs(e),hm),model:null}},apply(e,t){Ko(Xs(t),[[hm,e.baseUrl],[rb,e.apiKey]]);let o=ym(t);gm(o,bm)||Ko(o,[[bm,!0]])}};import{homedir as ib}from"os";import{join as ta,resolve as sb}from"path";import{parse as ab,patch as cb}from"@decimalturn/toml-patch";import{parse as lb}from"smol-toml";var ub=["OPENAI_API_KEY"],Tm="model_provider",Qs="model",Zs=e=>ta(e.dir,"config.toml"),wm=e=>ta(e.dir,"auth.json");function ea(e,t){try{return lb(e,{integersAsBigInt:"asNeeded"})}catch(o){throw new D(`${t} \u4E0D\u662F\u5408\u6CD5 TOML\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`,{cause:o})}}function mb(e,t){let o=Zs(t);if(e.model===null)throw new D("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=Hn(o)??"";n!==""&&ea(n,o);let r=e.siteName.toLowerCase(),i=ab(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[Tm]=r,i[Qs]=e.model;let a=cb(n,i,{inlineTableStart:2}),c=ea(a,o);if(c[Tm]!==r||c[Qs]!==e.model||c.model_providers?.[r]?.base_url!==e.baseUrl)throw new D(`\u65E0\u6CD5\u5B89\u5168\u6539\u5199 ${o}\uFF0C\u5176\u7ED3\u6784\u8D85\u51FA\u9884\u671F\uFF0C\u8BF7\u624B\u5DE5\u914D\u7F6E\u8BE5\u6587\u4EF6`);Ei(o,a,384)}var km={id:"codex",label:"Codex",requiresModel:!0,resolveDir(){let e=process.env.CODEX_HOME;return e?{dir:sb(e),custom:!0}:{dir:ta(ib(),".codex"),custom:!1}},relayUrl:e=>`${e}/v1`,configPaths:e=>[Zs(e),wm(e)],read(e){let t=Zs(e),o=Hn(t),n=o===null?null:ea(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?.[Qs])}},apply(e,t){mb(e,t),Ko(wm(t),[[ub,e.apiKey]])}};var vm=[xm,km];var db=6e3,pb=2,_m=e=>ft(`${e.url}/api/site-config`,{timeoutMs:db});async function fb(e){try{await _m(e);let t=Number.POSITIVE_INFINITY;for(let o=0;o<pb;o+=1){let n=Date.now();await _m(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 fb(o));return t}import{jsx as Se,jsxs as gi}from"react/jsx-runtime";var hb=10,bb=3,Cm=4,Nm=e=>1+Math.max(1,Math.min(e,Cm))+(e>Cm?1:0);function Em(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}`})),Pm=(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 yb({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(Ce,{retain:"lines",items:e,width:n-le,height:Nm(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 Im(){let e=B(),{width:t}=H(),o=re(),[n,r]=fi({name:"list"}),[i,s]=fi(!1),[a,c]=fi(()=>kn().line),[l,p]=fi(0),{busy:f,error:m,reset:d,fail:S,run:h}=ge(),g=Q([e.revision],async()=>{let[C,M,q]=await Promise.all([ci(),ai(),ve(e.ctx.site)]);return{tokens:C,groups:M,site:q}}),y=g.phase==="ready"?g.data.site.apiLines:[],x=Q([l,y.map(C=>C.url).join("|")],()=>Rm(y)),T=f!==null,b=n.name==="list"&&!T,k=C=>{r({name:"list"}),e.reload(),e.toast("ok",C)};z(C=>{if(C==="r"){p(M=>M+1),e.reload();return}i||(C==="n"?r({name:"create"}):C==="l"&&y.length>0&&s(!0))},b);let E=C=>{hr(M=>{M.line={name:C.name,url:C.url}}),c({name:C.name,url:C.url}),s(!1),e.toast("ok",`\u5DF2\u9009\u7528\u7EBF\u8DEF ${C.name}\uFF0C\u65B0\u5EFA\u4EE4\u724C\u5E76\u5199\u5165\u914D\u7F6E\u540E\u751F\u6548`)},A=(C,M,q)=>{h("\u6B63\u5728\u521B\u5EFA\u4EE4\u724C",()=>tm({name:C,groupId:M,quotaLimit:q}),{onSuccess:O=>{e.reload(),r({name:"created",token:O,secret:O.token})}})},U=C=>{h("\u6B63\u5728\u5220\u9664\u4EE4\u724C",()=>nm(C.id),{onSuccess:()=>k("\u4EE4\u724C\u5DF2\u5220\u9664")})},v=(C,M)=>{h("\u6B63\u5728\u8BFB\u53D6\u5BA2\u6237\u7AEF\u914D\u7F6E",async()=>vm.map(q=>{let O=q.resolveDir(),G=q.read(O);return{client:q,configured:G.baseUrl!==null,paths:q.configPaths(O),model:G.model}}),{failToast:!0,onSuccess:q=>r({name:"apply-pick",token:C,secret:M,targets:q})})},P=(C,M,q)=>{h("\u6B63\u5728\u5199\u5165",()=>pm(e.ctx,C,M,q),{failToast:!0,onSuccess:()=>{r({name:"list"}),e.toast("ok",De([`\u5DF2\u5199\u5165 ${C.label}`,q]))}})},_=(C,M)=>{let q=C.targets.find(O=>O.client.id===M);if(q!==void 0){if(!q.client.requiresModel){P(q.client,C.secret);return}h("\u6B63\u5728\u8BFB\u53D6\u53EF\u8DEF\u7531\u7684\u6A21\u578B",async()=>{let O=await dm(e.ctx,C.secret);if(O.length===0)throw new D("\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 O},{failToast:!0,onSuccess:O=>r({name:"apply-model",token:C.token,secret:C.secret,targets:C.targets,needs:q,models:O})})}},R=(C,M)=>{d(),r(C==="rename"?{name:"rename",token:M}:C==="regroup"?{name:"regroup",token:M}:C==="relimit"?{name:"relimit",token:M}:{name:"confirm-delete",token:M})},w=()=>{if(n.name==="list"){i?s(!1):e.pop();return}if(d(),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"})},N=()=>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(K,{hints:N(),onEscape:w,children:gi(Ln,{flexDirection:"column",children:[f!==null&&Se(Ze,{label:f}),n.name==="created"&&!T&&gi(Ln,{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(Ln,{marginTop:1,children:Se(gb,{color:u.accent,children:n.secret})}),Se(Ln,{marginTop:1,children:Se(ae,{width:t,items:[{value:"apply",label:"\u5199\u5165\u914D\u7F6E"},{value:"back",label:"\u6211\u5DF2\u4FDD\u5B58"}],onSelect:C=>{C==="back"?r({name:"list"}):v(n.token,n.secret)}})})]}),n.name==="apply-pick"&&!T&&Se(oe,{title:"\u5199\u5165\u914D\u7F6E",note:n.token.name,width:t,children:Se(ae,{width:t-le,height:o-At,retain:"apply",items:n.targets.map(C=>({value:C.client.id,label:C.client.label,badge:C.configured?"\u5DF2\u914D\u7F6E":"\u672A\u914D\u7F6E",badgeTone:C.configured?"accent":void 0,hint:C.paths.join(" ")})),onSelect:C=>_(n,C)})}),n.name==="apply-model"&&!T&&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(C=>({value:C,label:C})),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:w,onSubmit:C=>{let M=C.model;if(M===void 0||M===""){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u6A21\u578B");return}P(n.needs.client,n.secret,M)}})]})}):Se(K,{hints:N(),onEscape:w,children:Se(X,{state:g,loading:"\u6B63\u5728\u8BFB\u53D6\u4EE4\u724C",width:t,children:({tokens:C,groups:M,site:q})=>{let O=Y+At+Nm(q.apiLines.length),G=Math.max(bb,o-(n.name==="list"?O:hb));return gi(Ln,{flexDirection:"column",children:[Se(Ln,{flexDirection:"column",marginBottom:Y,children:Se(Ce,{retain:"list",items:C,width:t,height:G,isActive:b&&!i,columns:[{label:"\u540D\u79F0",shrink:!0},{label:"\u5206\u7EC4"},{label:"\u5DF2\u6D88\u8D39",align:"right"},{label:"\u8D39\u7528\u9650\u5236",align:"right"},{label:"\u5BC6\u94A5"}],row:j=>{let ie=ce(j.usedQuota,q.quotaPerUsd);return[j.name,j.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664",j.quotaLimit!==null&&j.usedQuota>=j.quotaLimit?{text:ie,tone:"danger"}:ie,j.quotaLimit===null?"\u4E0D\u9650":ce(j.quotaLimit,q.quotaPerUsd),pr(j.keyPrefix,j.keySuffix)]},searchOf:j=>`${j.name} ${j.groupName??""}`,onOpen:j=>r({name:"actions",token:j}),emptyLabel:"\u6682\u65E0\u4EE4\u724C",emptyDescription:"\u521B\u5EFA\u4E00\u4E2A\u4EE4\u724C\u5373\u53EF\u5F00\u59CB\u8C03\u7528\u4E2D\u8F6C API"})}),f!==null&&(n.name==="list"||n.name==="actions"||n.name==="confirm-delete")&&Se(Ze,{label:f}),n.name==="list"&&Se(yb,{lines:q.apiLines,measured:x.phase==="ready"?x.data:null,effective:a??q.apiLines[0],width:t,isActive:b&&i,onPick:E}),n.name==="actions"&&!T&&gi(oe,{title:n.token.name,width:t,children:[Se(Ae,{width:t-le,items:[["\u5206\u7EC4",n.token.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664"],["\u5DF2\u6D88\u8D39",ce(n.token.usedQuota,q.quotaPerUsd)],["\u8D39\u7528\u9650\u5236",n.token.quotaLimit===null?"\u4E0D\u9650":ce(n.token.quotaLimit,q.quotaPerUsd)],["\u5BC6\u94A5",pr(n.token.keyPrefix,n.token.keySuffix)]]}),Se(Ln,{marginTop:1,children:Se(ae,{width:t-le,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":ce(n.token.quotaLimit,q.quotaPerUsd)},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:j=>R(j,n.token)})})]}),n.name==="create"&&Se(V,{title:"\u521B\u5EFA\u4EE4\u724C",width:t,submitLabel:"\u521B\u5EFA",error:m,busy:T,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(M),initial:String(M[0]?.id??""),hint:j=>Pm(M,j)},{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:w,onSubmit:j=>{let ie=(j.name??"").trim();if(ie===""){S("\u8BF7\u586B\u5199\u4EE4\u724C\u540D\u79F0");return}let it=M.find(F=>String(F.id)===j.group);if(it===void 0){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}let I=Em(j.limit??"",q.quotaPerUsd);if(I==="invalid"){S("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}A(ie,it.id,I)}}),n.name==="rename"&&Se(V,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:m,busy:T,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:w,onSubmit:j=>{let ie=(j.name??"").trim();if(ie===""){S("\u8BF7\u586B\u5199\u4EE4\u724C\u540D\u79F0");return}h("\u6B63\u5728\u4FDD\u5B58",()=>li(n.token.id,{name:ie}),{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:T,busyLabel:"\u6B63\u5728\u4FDD\u5B58",fields:[{kind:"select",name:"group",label:"\u5206\u7EC4",options:Am(M),initial:String(n.token.groupId??M[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":j=>Pm(M,j)}],onCancel:w,onSubmit:j=>{let ie=M.find(it=>String(it.id)===j.group);if(ie===void 0){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}h("\u6B63\u5728\u4FDD\u5B58",()=>li(n.token.id,{groupId:ie.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:T,busyLabel:"\u6B63\u5728\u4FDD\u5B58",fields:[{kind:"text",name:"limit",label:"\u8D39\u7528\u9650\u5236",initial:n.token.quotaLimit===null?"":String(Math.round(n.token.quotaLimit/q.quotaPerUsd*100)/100),placeholder:"\u7F8E\u5143\u91D1\u989D\uFF0C\u7559\u7A7A\u5219\u4E0D\u9650\u5236",hint:`\u8BE5\u4EE4\u724C\u5DF2\u7D2F\u8BA1\u6D88\u8D39 ${ce(n.token.usedQuota,q.quotaPerUsd)}\uFF0C\u8FBE\u5230\u8D39\u7528\u4E0A\u9650\u540E\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD`,optional:!0}],onCancel:w,onSubmit:j=>{let ie=Em(j.limit??"",q.quotaPerUsd);if(ie==="invalid"){S("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}h("\u6B63\u5728\u4FDD\u5B58",()=>li(n.token.id,{quotaLimit:ie}),{onSuccess:()=>k("\u5DF2\u4FDD\u5B58")})}}),n.name==="confirm-delete"&&!T&&Se(We,{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:()=>U(n.token),onCancel:w})]})}})})}import{Box as na}from"ink";import{jsx as It,jsxs as Sb}from"react/jsx-runtime";var Lm=[["\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"]],Om=[["\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 $m({width:e,height:t}){let o=e-le,n=[["\u7248\u672C",`${mt} v${dt}`],["\u672C\u5730\u5B58\u50A8",Ht()]],r=[Lm,Mm,Om,n],s=(a=>r.reduce((c,l)=>c+ct+a+cu(l.length,o),Y*(r.length-1)))(Be)<=t?Be:0;return Sb(Pc,{height:t,children:[It(oe,{title:"\u901A\u7528",width:e,gap:s,children:It(Ae,{items:Lm,width:o})}),It(na,{marginTop:Y,flexDirection:"column",children:It(oe,{title:"\u9F20\u6807",width:e,gap:s,children:It(Ae,{items:Mm,width:o})})}),It(na,{marginTop:Y,flexDirection:"column",children:It(oe,{title:"\u6587\u672C\u8F93\u5165",width:e,gap:s,children:It(Ae,{items:Om,width:o})})}),It(na,{marginTop:Y,flexDirection:"column",children:It(oe,{title:"\u5173\u4E8E",width:e,gap:s,children:It(Ae,{items:n,width:o})})})]})}import{jsx as oa}from"react/jsx-runtime";function Dm(){let e=B(),{width:t}=H(),o=re();return rn(e.pop),oa(Cn,{header:oa(Hr,{trail:["CodeFlow","\u952E\u4F4D\u5E2E\u52A9"],width:t,onBack:e.pop,isActive:!0}),hints:["Esc \u8FD4\u56DE"],children:oa($m,{width:t,height:o})})}import{Box as Bm,Text as xb}from"ink";import{jsx as Vo,jsxs as Tb}from"react/jsx-runtime";var Fm=[{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 Um(){let e=B(),{width:t}=H(),o=$o(0),n=Y+1+Y+Fm.length,r=Br(t)&&o-Dr>=n;return Tb(Cn,{header:r?Vo(Fr,{width:t}):null,hints:["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","? \u5E2E\u52A9","q \u9000\u51FA"],children:[Vo(Bm,{marginTop:1,children:Vo(xb,{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"})}),Vo(Bm,{marginTop:1,children:Vo(ae,{items:Fm,width:t,retain:"menu",onSelect:i=>e.push(i)})})]})}import{Box as hi,Text as Mn}from"ink";import{useState as Hm}from"react";import{z as Ve}from"zod";var wb=Ve.object({inviteCode:Ve.string(),invitedCount:Ve.number(),totalReward:Ve.number(),rewards:Ve.object({firstInviterPercent:Ve.number(),firstInviteePercent:Ve.number(),subsequentInviterPercent:Ve.number()}),items:Ve.array(Ve.object({id:Ve.number().int(),rewardType:Na,rewardQuota:Ve.number(),rewardQuotaReversed:Ve.number(),inviterUsername:Ve.string(),inviteeUsername:Ve.string(),createdAt:Ve.string()}))}),jm=()=>$(wb,"/invite");import{jsx as Ye,jsxs as bi}from"react/jsx-runtime";var kb=Xe(Mi,lr,"\u5168\u90E8\u7C7B\u578B"),qm=3;function vb(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=B(),{width:t}=H(),o=re(),[n,r]=Hm("main"),[i,s]=Hm(""),a=Q([e.revision],async()=>{let[l,p]=await Promise.all([jm(),ve(e.ctx.site)]);return{invite:l,site:p}});z(l=>{n==="main"&&(l==="r"?e.reload():l==="f"&&r("filter"))});let c=()=>{n==="main"?e.pop():r("main")};return Ye(K,{hints:n==="main"?["\u2191\u2193 \u6EDA\u52A8","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:c,children:Ye(X,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u9080\u8BF7\u4FE1\u606F",width:t,children:({invite:l,site:p})=>{if(n==="filter")return Ye(V,{title:"\u7B5B\u9009\u5956\u52B1\u8BB0\u5F55",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"type",label:"\u7C7B\u578B",options:kb,initial:i}],onCancel:c,onSubmit:y=>{s(y.type??""),r("main")}});let f=t-le,m=vb(l.rewards),d=i===""?l.items:l.items.filter(y=>y.rewardType===i),S=y=>Yt(2,t)+Y+ct+y+2+Y+ct+y+m.length+Y+ct+y,h=o-S(Be)>=qm?Be:0,g=Math.max(qm,o-S(h));return bi(hi,{flexDirection:"column",children:[Ye(ot,{width:t,tiles:[{label:"\u5DF2\u9080\u8BF7\u4EBA\u6570",value:Re(l.invitedCount)},{label:"\u7D2F\u8BA1\u5956\u52B1\u989D\u5EA6",value:ce(l.totalReward,p.quotaPerUsd)}]}),Ye(hi,{marginTop:1,flexDirection:"column",children:bi(oe,{title:"\u6211\u7684\u9080\u8BF7",width:t,gap:h,children:[bi(Mn,{wrap:"truncate",children:[Ye(Mn,{color:u.mutedForeground,children:"\u6211\u7684\u9080\u8BF7\u7801 "}),Ye(Mn,{color:u.accent,children:l.inviteCode})]}),bi(Mn,{wrap:"truncate",children:[Ye(Mn,{color:u.mutedForeground,children:"\u9080\u8BF7\u94FE\u63A5 "}),Ye(Mn,{color:u.accent,children:`${e.ctx.site}/register?invite=${l.inviteCode}`})]})]})}),Ye(hi,{marginTop:1,flexDirection:"column",children:Ye(oe,{title:"\u5956\u52B1\u89C4\u5219",width:t,gap:h,children:m.map((y,x)=>Ye(Mn,{wrap:"truncate",color:u.mutedForeground,children:y},x))})}),Ye(hi,{marginTop:1,flexDirection:"column",children:Ye(oe,{title:"\u9080\u8BF7\u5956\u52B1\u8BB0\u5F55",note:i===""?void 0:lr(i),width:t,gap:h,children:Ye(Ce,{retain:"list",items:d,width:f,height:g,columns:[{label:"\u65F6\u95F4"},{label:"\u597D\u53CB",shrink:!0},{label:"\u5956\u52B1\u7C7B\u578B"},{label:"\u5956\u52B1\u989D\u5EA6",align:"right"}],row:y=>{let x=y.rewardQuota-y.rewardQuotaReversed,T=y.rewardQuotaReversed>0?`\u9000\u6B3E\u51B2\u51CF -${ce(y.rewardQuotaReversed,p.quotaPerUsd)}`:"";return[ee(y.createdAt),y.rewardType==="first_invitee"?y.inviterUsername:y.inviteeUsername,lr(y.rewardType),De([ce(x,p.quotaPerUsd),T])]},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 td}from"react";import{z as be}from"zod";var _b=be.object({id:be.number().int(),orderNo:be.string(),amountCny:be.number().int()}),zm=()=>$(be.array(_b),"/invoices/eligible-orders"),ra=be.object({id:be.number().int(),type:Ii,title:be.string(),taxId:be.string().nullable(),email:be.string(),remark:be.string().nullable(),amountCny:be.number().int(),status:Ca,rejectReason:be.string().nullable(),rejectedAt:be.string().nullable(),issuedAt:be.string().nullable(),createdAt:be.string()}),Rb=ra.extend({orders:be.array(be.object({orderNo:be.string(),amountCny:be.number().int()}))}),Gm=()=>$(be.array(ra),"/invoices"),Km=e=>$(Rb,`/invoices/${e}`),Vm=e=>$(ra,"/invoices",{method:"POST",json:e}),ia=be.object({id:be.number().int(),type:Ii,title:be.string(),taxId:be.string().nullable(),email:be.string()}),yi=()=>$(be.array(ia),"/invoices/profiles"),Jm=e=>$(ia,"/invoices/profiles",{method:"POST",json:e}),Ym=(e,t)=>$(ia,`/invoices/profiles/${e}`,{method:"PATCH",json:t}),Xm=e=>$(ye,`/invoices/profiles/${e}`,{method:"DELETE"}).then(()=>{});import{Box as Cb,Text as On,useInput as Eb}from"ink";import{useEffect as Ab,useState as Pb}from"react";import{jsx as Jo,jsxs as sa}from"react/jsx-runtime";var Nb="[x]",Ib="[ ]",Qm=4,Si=2,Zm=2;function ed({items:e,columns:t,row:o,selected:n,onToggle:r,onToggleAll:i,onSubmit:s,width:a,height:c,emptyLabel:l}){let[p,f]=Pb(0),m=Math.max(1,c-1),d=e.length>m?Math.max(1,m-1):m;Ab(()=>{f(b=>Math.min(b,Math.max(0,e.length-1)))},[e.length]);let S=fs(p,d),h=b=>{e.length!==0&&f(k=>(k+b+e.length)%e.length)};Eb((b,k)=>{if(k.upArrow){h(-1);return}if(k.downArrow){h(1);return}if(k.return){s();return}b===" "&&e.length>0&&r(p)}),z(b=>{if(b==="k"){h(-1);return}if(b==="j"){h(1);return}b==="a"&&i()});let g=b=>{let k=S+b-1;return k>=0&&k<e.length?k:null},y=Ue({onWheel:h,onClick:({row:b})=>{let k=g(b);k!==null&&(f(k),r(k))},onHover:({row:b})=>{let k=g(b);k!==null&&f(k)}}),x=_s(t,e.map(b=>o(b)),a-Si-Qm),T=e.slice(S,S+d);return sa(Cb,{ref:y,flexDirection:"column",children:[sa(On,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(Si+Qm),t.map((b,k)=>b.align==="right"?sn(b.label,x[k]??0):Ie(b.label,x[k]??0)).join(" ".repeat(Zm))]}),e.length===0?Jo(On,{color:u.faintForeground,children:`${" ".repeat(Si)}${l}`}):T.map((b,k)=>{let E=S+k,A=E===p,U=n.has(E),v=A?u.accent:u.foreground,P=o(b);return sa(On,{wrap:"truncate",children:[Jo(On,{color:u.accent,children:A?`${Z.cursor} `:" "}),Jo(On,{color:U?u.accent:v,bold:A,children:`${U?Nb:Ib} `}),t.map((_,R)=>{let w=_.align==="right"?sn(P[R]??"",x[R]??0):Ie(P[R]??"",x[R]??0);return Jo(On,{color:v,bold:A,children:R>0?`${" ".repeat(Zm)}${w}`:w},_.label)})]},E)}),(S>0||S+d<e.length)&&Jo(On,{color:u.faintForeground,children:`${" ".repeat(Si)}${S+1}-${Math.min(S+d,e.length)} / ${e.length}`})]})}function xi(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 Ti=e=>[{kind:"select",name:"type",label:"\u7C7B\u578B",options:[{value:"general",label:So("general")},{value:"special",label:So("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 so}from"react/jsx-runtime";function nd(){let e=B(),{width:t}=H(),o=re(),[n,r]=td({name:"pick"}),[i,s]=td(new Set),{busy:a,error:c,reset:l,fail:p,run:f}=ge(),m=Q([e.revision],async()=>{let[h,g]=await Promise.all([zm(),yi()]);return{orders:h,profiles:g}});z(h=>{n.name==="pick"&&h==="r"&&e.reload()});let d=()=>{n.name==="pick"?e.pop():n.name==="preset"?r({name:"pick"}):(l(),r({name:"pick"}))},S=(h,g)=>{let y=xi(g,p);if(y===null)return;let x=(g.remark??"").trim(),T=h.filter(b=>i.has(b.id)).map(b=>b.id);f("\u6B63\u5728\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7",()=>Vm({orderIds:T,...y,remark:x===""?null:x}),{onSuccess:()=>{e.toast("ok","\u5DF2\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7"),e.pop()}})};return so(K,{trail:["\u53D1\u7968\u7BA1\u7406","\u7533\u8BF7\u5F00\u7968"],hints:n.name==="pick"?["\u2191\u2193 \u79FB\u52A8","Space \u52FE\u9009","a \u5168\u9009","Enter \u4E0B\u4E00\u6B65","r \u5237\u65B0"]:[],onEscape:d,children:so(X,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u53EF\u5F00\u7968\u8BA2\u5355",width:t,children:({orders:h,profiles:g})=>{if(n.name==="pick")return h.length===0?so(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"}):so(ed,{items:h,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(h.flatMap((x,T)=>i.has(x.id)?[T]:[])),onToggle:x=>{let T=h[x]?.id;T!==void 0&&s(b=>{let k=new Set(b);return k.has(T)?k.delete(T):k.add(T),k})},onToggleAll:()=>s(x=>h.every(T=>x.has(T.id))?new Set:new Set(h.map(T=>T.id))),onSubmit:()=>{if(!h.some(x=>i.has(x.id))){e.toast("warn","\u8BF7\u5148\u52FE\u9009\u8981\u5F00\u7968\u7684\u8BA2\u5355");return}r(g.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"},...g.map(T=>({value:{kind:"profile",profile:T},label:`${xn(T.type)} \xB7 ${T.title}`,hint:T.email})),{heading:""},{value:{kind:"manual"},label:"\u624B\u52A8\u586B\u5199",hint:"\u4E0D\u5957\u7528\u5E38\u7528\u4FE1\u606F"}];return so(ae,{items:x,width:t,height:o,onSelect:T=>{T.kind==="manual"?r({name:"identity",preset:null}):r({name:"identity",preset:T.profile})}})}let y=n.preset;return so(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:[...Ti(y),{kind:"textarea",name:"remark",label:"\u5907\u6CE8",rows:2,maxLength:512,placeholder:"\u5176\u4ED6\u5F00\u7968\u8981\u6C42\u6216\u8BF4\u660E",optional:!0}],onCancel:d,onSubmit:x=>S(h,x)})}})})}import{Box as aa}from"ink";import{useState as Lb}from"react";import{jsx as Qt,jsxs as od}from"react/jsx-runtime";var Mb=8,Ob=3;function rd(){let e=B(),{width:t}=H(),o=re(),[n,r]=Lb({name:"list"}),{busy:i,error:s,reset:a,fail:c,run:l}=ge(),p=Q([e.revision],yi),f=i!==null,m=n.name==="list"&&!f;z(S=>{S==="r"?e.reload():S==="n"&&r({name:"create"})},m);let d=()=>{n.name==="list"?e.pop():(a(),r({name:"list"}))};return Qt(K,{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:d,children:Qt(X,{state:p,loading:"\u6B63\u5728\u8BFB\u53D6\u5E38\u7528\u5F00\u7968\u4FE1\u606F",width:t,children:S=>{let h=n.name==="list"?o:Math.max(Ob,o-Mb);return od(aa,{flexDirection:"column",children:[Qt(aa,{marginBottom:n.name==="list"?0:1,children:Qt(Ce,{retain:"list",items:S,width:t,height:h,isActive:m,columns:[{label:"\u7C7B\u578B"},{label:"\u62AC\u5934",shrink:!0},{label:"\u7A0E\u53F7"},{label:"\u90AE\u7BB1"}],row:g=>[xn(g.type),g.title,g.taxId??"\u2014",g.email],onOpen:g=>r({name:"actions",profile:g}),emptyLabel:"\u6682\u65E0\u5E38\u7528\u5F00\u7968\u4FE1\u606F",emptyDescription:"\u6309 n \u4FDD\u5B58\u4E00\u6761\u5E38\u7528\u5F00\u7968\u4FE1\u606F"})}),n.name==="actions"&&!f&&od(oe,{title:n.profile.title,width:t,children:[Qt(Ae,{width:t-le,items:[["\u7C7B\u578B",So(n.profile.type)],["\u7A0E\u53F7",n.profile.taxId??"\u2014"],["\u90AE\u7BB1",n.profile.email]]}),Qt(aa,{marginTop:1,children:Qt(ae,{width:t-le,items:[{value:"edit",label:"\u7F16\u8F91"},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:g=>{a(),r(g==="edit"?{name:"edit",profile:n.profile}:{name:"confirm-delete",profile:n.profile})}})})]}),(n.name==="create"||n.name==="edit")&&Qt(V,{title:n.name==="create"?"\u65B0\u589E\u5E38\u7528\u4FE1\u606F":`\u7F16\u8F91\u5E38\u7528\u4FE1\u606F \u2014 ${n.profile.title}`,width:t,submitLabel:"\u4FDD\u5B58",busy:f,busyLabel:i??"\u6B63\u5728\u4FDD\u5B58",error:s,fields:Ti(n.name==="edit"?n.profile:null),onCancel:d,onSubmit:g=>{let y=xi(g,c);if(y===null)return;let x=n.name==="edit"?()=>Ym(n.profile.id,y):()=>Jm(y);l("\u6B63\u5728\u4FDD\u5B58",x,{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u4FDD\u5B58")}})}}),n.name==="confirm-delete"&&Qt(We,{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",()=>Xm(n.profile.id),{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u5220\u9664")}}),onCancel:d})]})}})})}import{Box as ca,Text as wi}from"ink";import{useState as $b}from"react";import{jsx as rt,jsxs as id}from"react/jsx-runtime";var Db=Xe(Ni,ar,"\u5168\u90E8\u72B6\u6001");function Bb({id:e,width:t}){let o=B(),n=Q([e,o.revision],()=>Km(e)),r=t-le;return rt(X,{state:n,loading:"\u6B63\u5728\u8BFB\u53D6\u53D1\u7968\u8BE6\u60C5",width:t,children:i=>{let s=ar(i.status),a=Ge(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 id(oe,{title:i.title,note:qt(i.createdAt),width:t,children:[id(wi,{wrap:"truncate",children:[rt(wi,{color:u.mutedForeground,children:xn(i.type)}),rt(wi,{color:a===void 0?u.mutedForeground:je[a],children:` ${s.label}`})]}),rt(ca,{marginTop:1,children:rt(ot,{width:r,maxPerRow:2,tiles:[{label:"\u91D1\u989D",value:he(i.amountCny)},{label:"\u5173\u8054\u8BA2\u5355",value:`${i.orders.length} \u7B14`}]})}),rt(ca,{marginTop:1,children:rt(Ae,{width:r,items:c})}),rt(ca,{marginTop:1,flexDirection:"column",children:i.orders.map(l=>rt(wi,{wrap:"truncate",color:u.faintForeground,children:De([l.orderNo,he(l.amountCny)])},l.orderNo))})]})}})}function sd(){let e=B(),{width:t}=H(),o=re(),[n,r]=$b({name:"list"}),[i,s]=Je("status",()=>""),a=Q([e.revision],Gm);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 rt(K,{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:rt(X,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u5F00\u7968\u8BB0\u5F55",width:t,children:l=>{if(n.name==="filter")return rt(V,{title:"\u7B5B\u9009\u53D1\u7968",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:Db,initial:i}],onCancel:c,onSubmit:f=>{s(f.status??""),r({name:"list"})}});if(n.name==="detail")return rt(Bb,{id:n.id,width:t});let p=i===""?l:l.filter(f=>f.status===i);return rt(Ce,{retain:"list",items:p,width:t,height:o,columns:[{label:"\u65F6\u95F4"},{label:"\u62AC\u5934",shrink:!0},{label:"\u7C7B\u578B"},{label:"\u91D1\u989D",align:"right"},{label:"\u72B6\u6001",align:"right"}],row:f=>[qt(f.createdAt),f.title,xn(f.type),he(f.amountCny),Gt(ar(f.status))],searchOf:f=>f.title,onOpen:f=>r({name:"detail",id:f.id}),emptyLabel:i===""?"\u6682\u65E0\u5F00\u7968\u8BB0\u5F55":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u6309 n \u4E3A\u5DF2\u4ED8\u6B3E\u8BA2\u5355\u7533\u8BF7\u5F00\u7968":void 0})}})})}import{Box as Fb}from"ink";import{useState as ad}from"react";import{jsx as ao,jsxs as jb}from"react/jsx-runtime";var Ub=Xe(Li,Yi,"\u5168\u90E8\u7C7B\u578B");function cd(){let e=B(),{width:t}=H(),o=re(),[n,r]=ad("list"),[i,s]=ad(""),a=Q([e.revision],()=>ve(e.ctx.site)),c=ln([e.revision,i],(f,m)=>Wu({page:f,pageSize:m,...i===""?{}:{type:i}}),{retain:"page"}),l=n==="list";z((f,m)=>{l&&(f==="r"?e.reload():f==="f"?r("filter"):m.leftArrow?c.go(-1):m.rightArrow&&c.go(1))});let p=()=>{n==="list"?e.pop():r("list")};return ao(K,{hints:l?["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:p,children:ao(X,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:f=>n==="filter"?ao(V,{title:"\u7B5B\u9009\u6D41\u6C34",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"type",label:"\u7C7B\u578B",options:Ub,initial:i}],onCancel:p,onSubmit:m=>{s(m.type??""),c.reset(),r("list")}}):ao(X,{state:c.state,loading:"\u6B63\u5728\u8BFB\u53D6\u989D\u5EA6\u6D41\u6C34",width:t,children:m=>jb(Fb,{flexDirection:"column",children:[ao(Ce,{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:d=>{let S=Kn(d.amount,f.quotaPerUsd);return[ee(d.createdAt),Yi(d.type),{text:d.amount>=0?`+${S}`:S,tone:d.amount>=0?"success":"danger"},ce(d.balanceAfter,f.quotaPerUsd),De([tc(d.refType),d.refId??""])]},emptyLabel:i===""?"\u6682\u65E0\u989D\u5EA6\u6D41\u6C34":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u5145\u503C\u6216\u6D88\u8017\u540E\uFF0C\u6BCF\u7B14\u53D8\u52A8\u4F1A\u8BB0\u5F55\u5728\u8FD9\u91CC":void 0}),ao(un,{page:c.page,pages:c.pages,total:c.total,width:t})]})})})})}import{Box as gd}from"ink";import{useState as Hb}from"react";import{z as la}from"zod";var Yo={recharge:"/recharge",subscription:"/subscriptions"};function ld(e){return e==="recharge"?go:ho}var ki=(e,t)=>$(ld(e),`${Yo[e]}/orders/${t}`),ud=(e,t)=>$(la.object({order:ld(e),qrCode:la.string()}),`${Yo[e]}/orders/${t}/pay`,{method:"POST"}),md=(e,t)=>$(la.array(Ja),`${Yo[e]}/orders/${t}/refunds`),dd=(e,t,o)=>$(ye,`${Yo[e]}/orders/${t}/refund-request`,{method:"POST",json:{reason:o}}).then(()=>{}),pd=(e,t)=>$(ye,`${Yo[e]}/orders/${t}/refund-request/cancel`,{method:"POST"}).then(()=>{});import{Box as vi,Text as jt}from"ink";import{jsx as Tt,jsxs as Xo}from"react/jsx-runtime";function fd({order:e,refunds:t,quotaPerUsd:o,width:n}){let r=n-le,i=nn(e.status),s=Ge(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",ce(e.refundedQuota,o)]),e.pendingRefundCny>0&&a.push(["\u5F85\u786E\u8BA4\u9000\u6B3E",he(e.pendingRefundCny)]),Xo(oe,{title:e.kind==="recharge"?"\u5145\u503C":e.planName,note:e.orderNo,width:n,children:[Xo(jt,{wrap:"truncate",children:[Tt(jt,{color:s===void 0?u.mutedForeground:je[s],children:i.label}),e.kind==="subscription"&&Tt(jt,{color:u.faintForeground,children:` ${e.renewal?"\u7EED\u8D39":"\u65B0\u8D2D"}`})]}),Tt(vi,{marginTop:1,children:Tt(ot,{width:r,maxPerRow:2,tiles:e.kind==="recharge"?[{label:"\u91D1\u989D",value:he(e.amountCny)},{label:"\u5230\u8D26\u989D\u5EA6",value:ce(e.quota,o)}]:[{label:"\u91D1\u989D",value:he(e.amountCny)},{label:"\u8BA2\u9605\u65F6\u957F",value:`${e.grantedDurationDays} \u5929`}]})}),Tt(vi,{marginTop:1,children:Tt(Ae,{width:r,items:a})}),t!==null&&Xo(vi,{marginTop:1,flexDirection:"column",children:[Tt(jt,{color:u.mutedForeground,children:"\u9000\u6B3E\u8BB0\u5F55"}),t.length===0?Tt(jt,{color:u.faintForeground,children:"\u6682\u65E0\u9000\u6B3E\u8BB0\u5F55"}):t.map(c=>{let l=nc(c.status),p=Ge(l);return Xo(vi,{flexDirection:"column",children:[Xo(jt,{wrap:"truncate",children:[Tt(jt,{color:u.foreground,children:he(c.amountCny)}),Tt(jt,{color:p===void 0?u.mutedForeground:je[p],children:` ${l.label}`}),Tt(jt,{color:u.faintForeground,children:` ${ee(c.createdAt)}`})]}),(c.reason!==null||c.rejectReason!==null||c.refundTradeNo!==null)&&Tt(jt,{wrap:"truncate",color:u.faintForeground,children:` ${De([c.reason??"",c.rejectReason===null?"":`\u9A73\u56DE\uFF1A${c.rejectReason}`,c.refundTradeNo??""])}`})]},c.id)})]})]})}import{jsx as $n,jsxs as Wb}from"react/jsx-runtime";var qb=new Set(["pending","expired","failed"]);function _i(e){let t=nn(e.status);return e.pendingRefundCny>0?{badge:`${t.label}\uFF08\u5F85\u786E\u8BA4 ${he(e.pendingRefundCny)}\uFF09`,badgeTone:"warning"}:{badge:t.label,badgeTone:Ge(t)}}function co(e,t,o){return e.kind==="recharge"?{kind:"recharge",orderNo:e.orderNo,qrCode:t,amountCny:e.amountCny,summary:[`\u5230\u8D26\u989D\u5EA6 ${ce(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 hd({params:e}){let t=B(),{width:o}=H(),[n,r]=Hb("main"),{busy:i,error:s,reset:a,fail:c,run:l}=ge(),p=Q([e.kind,e.orderNo,t.revision],async()=>{let[h,g]=await Promise.all([ki(e.kind,e.orderNo),ve(t.ctx.site)]),y=qb.has(h.status)?null:await md(e.kind,e.orderNo);return{order:{kind:e.kind,...h},refunds:y,site:g}});z(h=>{n==="main"&&i===null&&h==="r"&&t.reload()});let f=()=>{n==="main"?t.pop():(a(),r("main"))},m=h=>{l("\u6B63\u5728\u62C9\u8D77\u652F\u4ED8",()=>ud(e.kind,e.orderNo),{onSuccess:({order:g,qrCode:y})=>{t.push("pay",co({kind:e.kind,...g},y,h.quotaPerUsd))}})},d=h=>{l("\u6B63\u5728\u63D0\u4EA4\u9000\u6B3E\u7533\u8BF7",()=>dd(e.kind,e.orderNo,h),{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",()=>pd(e.kind,e.orderNo),{onSuccess:()=>{r("main"),t.reload(),t.toast("ok","\u5DF2\u64A4\u9500\u9000\u6B3E\u7533\u8BF7")}})};return $n(K,{trail:["\u8BA2\u5355\u8BE6\u60C5"],hints:n==="main"?["\u2191\u2193 \u79FB\u52A8","Enter \u6267\u884C","r \u5237\u65B0"]:[],onEscape:f,children:$n(X,{state:p,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u5355",width:o,children:({order:h,refunds:g,site:y})=>{if(n==="refund")return $n(V,{title:`\u7533\u8BF7\u9000\u6B3E \u2014 ${h.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:[...ns[e.kind].map(T=>({value:T,label:T})),{value:"other",label:"\u5176\u4ED6"}],initial:ns[e.kind][0],hint:cc[e.kind]},{kind:"textarea",name:"custom",label:"\u5177\u4F53\u8BF4\u660E",rows:3,maxLength:256,placeholder:"\u8BF4\u660E\u7533\u8BF7\u9000\u6B3E\u7684\u539F\u56E0",hint:"\u4EC5\u9000\u6B3E\u539F\u56E0\u9009\u300C\u5176\u4ED6\u300D\u65F6\u5FC5\u586B"}],onCancel:f,onSubmit:T=>{let b=T.reason??"",k=b==="other"?(T.custom??"").trim():b;if(k===""){c("\u8BF7\u586B\u5199\u5177\u4F53\u8BF4\u660E");return}d(k)}});if(n==="confirm-cancel")return $n(We,{width:o,title:"\u64A4\u9500\u9000\u6B3E\u7533\u8BF7",detail:`\u786E\u8BA4\u64A4\u9500\u8BA2\u5355 ${h.orderNo} \u7684\u9000\u6B3E\u7533\u8BF7\uFF1F${h.kind==="recharge"?"\u6536\u56DE\u7684\u989D\u5EA6":"\u51BB\u7ED3\u7684\u8BA2\u9605\u65F6\u957F"}\u5C06\u7ACB\u5373\u6062\u590D`,confirmLabel:"\u64A4\u9500\u7533\u8BF7",busy:i,error:s,onConfirm:S,onCancel:f});let x=[];return h.status==="pending"&&x.push({value:"pay",label:"\u7EE7\u7EED\u652F\u4ED8",hint:"\u91CD\u65B0\u62C9\u8D77\u652F\u4ED8\u5B9D\u4E8C\u7EF4\u7801"}),h.status==="refund_requested"&&x.push({value:"cancel-refund",label:"\u64A4\u9500\u7533\u8BF7",hint:"\u9000\u6B3E\u5C1A\u672A\u5BA1\u6838\uFF0C\u53EF\u64A4\u56DE"}),Ya(h)&&x.push({value:"refund",label:"\u7533\u8BF7\u9000\u6B3E",labelTone:"danger"}),Wb(gd,{flexDirection:"column",children:[$n(fd,{order:h,refunds:g,quotaPerUsd:y.quotaPerUsd,width:o}),x.length>0&&i===null&&$n(gd,{marginTop:1,children:$n(ae,{width:o,items:x,retain:"menu",onSelect:T=>{a(),T==="pay"?m(y):r(T==="refund"?"refund":"confirm-cancel")}})})]})}})})}import{useRef as Jb,useState as kd}from"react";import{spawn as zb}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 Kb(e,t){return new Promise((o,n)=>{let r=zb(e.command,e.args,{stdio:["pipe","ignore","ignore"]});r.on("error",i=>{i.code==="ENOENT"?o(!1):n(new D(`\u6267\u884C ${e.command} \u5931\u8D25\uFF1A${i.message}`,{cause:i}))}),r.on("close",i=>{i===0?o(!0):n(new D(`${e.command} \u9000\u51FA\u7801 ${i??"null"}`))}),r.stdin.on("error",i=>n(new D(`\u5199\u5165 ${e.command} \u5931\u8D25\uFF1A${i.message}`,{cause:i}))),r.stdin.end(t)})}async function bd(e){let t=Gb[process.platform];if(t===void 0)throw new D(`\u5F53\u524D\u7CFB\u7EDF\u4E0D\u652F\u6301\u5199\u5165\u526A\u8D34\u677F\uFF08${process.platform}\uFF09`);for(let o of t)if(await Kb(o,e))return;throw new D("\u672A\u627E\u5230\u53EF\u7528\u7684\u526A\u8D34\u677F\u547D\u4EE4")}import{Box as yd,Text as Dn}from"ink";import{Fragment as Vb,jsx as ut,jsxs as Sd}from"react/jsx-runtime";var xd={columns:20,rows:2};function Td(e,t,o){return Gr(e,t,xd,o)}function wd({phase:e,qrCode:t,amountCny:o,summary:n,paidNote:r,expiredNote:i,pollError:s,width:a,layout:c}){let l=s===null?ut(Ze,{label:"\u7B49\u5F85\u652F\u4ED8\u5230\u8D26\u2026"}):ut(Dn,{wrap:"truncate",color:je.warning,children:`\u67E5\u8BE2\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u8BD5\uFF1A${s}`});if(e==="paid")return ut(fe,{tone:"ok",width:a,title:"\u652F\u4ED8\u6210\u529F\uFF01",detail:r});if(e==="expired")return ut(fe,{tone:"warn",width:a,title:"\u8BA2\u5355\u5DF2\u8D85\u65F6",detail:i});if(!c.fits)return Sd(yd,{flexDirection:"column",children:[ut(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`}),ut(Dn,{color:u.accent,children:t}),ut(yd,{marginTop:1,children:ut(Dn,{bold:!0,color:u.foreground,children:he(o)})}),l]});let p=c.asideRows-xd.rows,f=p>=1,m=p>=2,d=p>=2+n.length;return ut(Kr,{value:t,aside:Sd(Vb,{children:[m&&ut(Dn,{bold:!0,color:u.foreground,children:"\u626B\u7801\u652F\u4ED8"}),ut(Dn,{bold:!0,color:u.foreground,children:he(o)}),f&&ut(Dn,{color:u.mutedForeground,children:"\u8BF7\u4F7F\u7528\u652F\u4ED8\u5B9D\u626B\u4E00\u626B\u5B8C\u6210\u652F\u4ED8"}),d&&n.map((S,h)=>ut(Dn,{wrap:"truncate",color:u.mutedForeground,children:S},h)),l]})})}import{jsx as vd}from"react/jsx-runtime";var Yb=5,Xb=2e3;function _d({params:e}){let t=B(),{width:o,columns:n,rows:r}=H(),i=$o(0),[s,a]=kd("waiting"),[c,l]=kd(null),p=Jb(0);Qr(Xb,async()=>{let d;try{d=await ki(e.kind,e.orderNo)}catch(S){l(Te(S));return}if(l(null),d.status==="paid"||d.credited){a("paid"),t.toast("ok",e.paidMessage);return}if(d.status==="expired"||d.status==="failed"){p.current+=1,p.current>=Yb&&a("expired");return}p.current=0},s==="waiting"),z(d=>{d!=="c"||s!=="waiting"||bd(e.qrCode).then(()=>t.toast("ok","\u5DF2\u590D\u5236"),()=>t.toast("fail","\u590D\u5236\u5931\u8D25\uFF0C\u53EF\u7528 Option / Alt \u62D6\u9009\u590D\u5236"))});let f=Td(e.qrCode,{width:o,rows:i},{columns:n-o,rows:r-i}),m=s==="waiting"&&f.fits;return vd(K,{trail:["\u626B\u7801\u652F\u4ED8"],bleed:m,hints:s==="waiting"?["c \u590D\u5236\u94FE\u63A5"]:[],children:vd(wd,{phase:s,qrCode:e.qrCode,amountCny:e.amountCny,summary:e.summary,paidNote:e.paidNote,expiredNote:e.expiredNote,pollError:c,width:o,layout:f})})}import{useState as ey}from"react";import{z as Lt}from"zod";var Qb=Lt.object({id:Lt.number().int(),name:Lt.string(),originalCny:Lt.number().int(),discountPercent:Lt.number().int(),payCny:Lt.number().int(),quota:Lt.number()}),Rd=()=>$(Lt.array(Qb),"/recharge-packages"),Zb=Lt.object({order:go,qrCode:Lt.string()}),Cd=e=>$(Zb,"/recharge/orders",{method:"POST",json:e}),Ed=()=>$(Lt.array(go),"/recharge/orders");import{jsx as lo}from"react/jsx-runtime";var ty=Xe(mo,nn,"\u5168\u90E8\u72B6\u6001");function ny(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 ${ce(e.quota,t)}`}function Ad(){let e=B(),{width:t}=H(),o=re(),[n,r]=ey({name:"menu"}),[i,s]=Je("status",()=>""),{busy:a,error:c,reset:l,fail:p,run:f}=ge(),m=Q([e.revision],async()=>{let[h,g,y]=await Promise.all([Rd(),mi(e.ctx.site),Ed()]);return{packages:h,pricing:g,orders:y}});z(h=>{n.name==="menu"&&(h==="r"?e.reload():h==="f"&&r({name:"filter"}))});let d=()=>{n.name==="menu"?e.pop():(l(),r({name:"menu"}))},S=(h,g)=>{f("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>Cd(h),{onSuccess:({order:y,qrCode:x})=>{r({name:"menu"}),e.push("pay",co({kind:"recharge",...y},x,g))}})};return lo(K,{hints:n.name==="menu"?["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","f \u7B5B\u9009\u8BB0\u5F55","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:d,children:lo(X,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u5145\u503C\u5957\u9910",width:t,children:({packages:h,pricing:g,orders:y})=>{if(n.name==="confirm")return lo(We,{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},g.quotaPerUsd),onCancel:d});if(n.name==="custom")return lo(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 ${g.minTopupCny} \u5143 \xB7 \u5230\u8D26\u989D\u5EA6\u6309\u5145\u503C\u6C47\u7387\u6298\u7B97`}],onCancel:d,onSubmit:b=>{let k=Number((b.yuan??"").trim()),E=Zi(k);if(!Number.isFinite(k)||E<Zi(g.minTopupCny)||E>Ui){p(`\u8BF7\u8F93\u5165 ${g.minTopupCny} \u5230 ${rc(Ui)} \u5143\u4E4B\u95F4\u7684\u91D1\u989D`);return}S({amountCny:E},g.quotaPerUsd)}});if(n.name==="filter")return lo(V,{title:"\u7B5B\u9009\u5145\u503C\u8BB0\u5F55",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:ty,initial:i}],onCancel:d,onSubmit:b=>{s(b.status??""),r({name:"menu"})}});let x=i===""?y:y.filter(b=>b.status===i),T=[{heading:"\u5145\u503C\u5957\u9910"},...h.map(b=>({value:{kind:"pkg",pkg:b},label:b.name,hint:ny(b,g.quotaPerUsd)})),{value:{kind:"custom"},label:"\u81EA\u5B9A\u4E49\u91D1\u989D",hint:"\u8F93\u5165\u4EFB\u610F\u91D1\u989D\u5145\u503C"},{heading:""},{heading:"\u5145\u503C\u8BB0\u5F55"},...x.length===0?[{value:{kind:"none"},label:i===""?"\u6682\u65E0\u5145\u503C\u8BB0\u5F55":"\u65E0\u5339\u914D\u7ED3\u679C",...i===""?{hint:"\u9009\u62E9\u4E0A\u65B9\u5957\u9910\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u91D1\u989D\u5373\u53EF\u5145\u503C"}:{},disabled:!0}]:x.map(b=>({value:{kind:"order",orderNo:b.orderNo},label:he(b.amountCny),..._i(b),hint:`${ee(b.createdAt)} \xB7 \u5230\u8D26\u989D\u5EA6 ${ce(b.quota,g.quotaPerUsd)}`}))];return lo(ae,{items:T,width:t,height:o,retain:"menu",onSelect:b=>{l(),b.kind==="custom"?r({name:"custom"}):b.kind==="order"?e.push("order",{kind:"recharge",orderNo:b.orderNo}):b.kind==="pkg"&&r({name:"confirm",pkg:b.pkg})}})}})})}import{Box as Zt,Text as Qo}from"ink";import{useState as sy}from"react";import ay from"string-width";import{z as ne}from"zod";var oy=ne.object({windowId:ne.number().int(),durationMinutes:ne.number().int(),quota:ne.number(),used:ne.number(),resetAt:ne.string()}),ry=ne.object({fallbackToBalance:ne.boolean(),subscriptions:ne.array(ne.object({id:ne.number().int(),planName:ne.string(),groupNames:ne.array(ne.string()),startsAt:ne.string(),expiresAt:ne.string(),revokedAt:ne.string().nullable(),renewable:ne.boolean(),windows:ne.array(oy)}))}),Pd=()=>$(ry,"/subscriptions"),iy=ne.object({id:ne.number().int(),name:ne.string(),description:ne.string().nullable(),priceCny:ne.number().int(),durationDays:ne.number().int(),enabled:ne.boolean(),groupNames:ne.array(ne.string()),windows:ne.array(ne.object({durationMinutes:ne.number().int(),quota:ne.number()}))}),Nd=()=>$(ne.array(iy),"/subscription-plans"),Id=ne.object({order:ho,qrCode:ne.string()}),Ld=e=>$(Id,"/subscriptions/orders",{method:"POST",json:e}),Md=e=>$(Id,`/subscriptions/${e}/renew`,{method:"POST"}),Od=()=>$(ne.array(ho),"/subscriptions/orders"),$d=e=>$(ne.object({fallbackToBalance:ne.boolean()}),"/subscriptions/preference",{method:"PUT",json:e});import{jsx as _e,jsxs as Bn}from"react/jsx-runtime";var cy=Xe(mo,nn,"\u5168\u90E8\u72B6\u6001"),ly=3;function uy({win:e,quotaPerUsd:t,width:o}){let n=es(e),r=sc(e.durationMinutes),i=`\u5DF2\u7528 ${n}% ${Z.bullet} ${ce(e.used,t)} / ${ce(e.quota,t)}`;return Bn(Zt,{flexDirection:"column",children:[Bn(Qo,{wrap:"truncate",children:[_e(Qo,{color:u.foreground,children:r}),_e(Qo,{color:n>=100?u.danger:u.mutedForeground,children:sn(i,Math.max(0,o-ay(r)))})]}),_e(au,{used:e.used,total:e.quota,width:o}),_e(Qo,{wrap:"truncate",color:u.faintForeground,children:`\u5C06\u4E8E ${ee(e.resetAt)} \u91CD\u7F6E`})]})}function my(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(es))}% \xB7 ${t}`}function dy(e){let t=e.windows.length*4;return Y+At+2+t+(e.renewable?Y+1:0)}function py(e){let t=e.description!==null&&e.description!==""?1+Be:0,o=Math.ceil((1+e.windows.length)/2);return Y+At+t+o+Y+1}function Dd(){let e=B(),{width:t}=H(),o=re(),[n,r]=sy({name:"menu"}),[i,s]=Je("status",()=>""),{busy:a,error:c,reset:l,run:p}=ge(),f=Q([e.revision],async()=>{let[g,y,x,T]=await Promise.all([Pd(),Nd(),Od(),ve(e.ctx.site)]);return{mine:g,plans:y,orders:x,site:T}});z(g=>{n.name!=="menu"||a!==null||(g==="r"?e.reload():g==="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"})},d=g=>{p("\u6B63\u5728\u4FDD\u5B58\u504F\u597D",()=>$d({fallbackToBalance:!g}),{failToast:!0,onSuccess:()=>{e.reload(),e.toast("ok","\u504F\u597D\u5DF2\u4FDD\u5B58")}})},S=(g,y)=>{p("\u6B63\u5728\u521B\u5EFA\u7EED\u8D39\u8BA2\u5355",()=>Md(g.id),{onSuccess:({order:x,qrCode:T})=>{r({name:"menu"}),e.push("pay",co({kind:"subscription",...x},T,y.quotaPerUsd))}})},h=(g,y)=>{p("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>Ld({planId:g.id}),{onSuccess:({order:x,qrCode:T})=>{r({name:"menu"}),e.push("pay",co({kind:"subscription",...x},T,y.quotaPerUsd))}})};return _e(K,{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:_e(X,{state:f,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u9605",width:t,children:({mine:g,plans:y,orders:x,site:T})=>{if(n.name==="filter")return _e(V,{title:"\u7B5B\u9009\u8BA2\u9605\u8BA2\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:cy,initial:i}],onCancel:m,onSubmit:w=>{s(w.status??""),r({name:"menu"})}});let b=n.name==="sub"||n.name==="confirm-renew"?g.subscriptions.find(w=>w.id===n.id):void 0,k=n.name==="plan"||n.name==="confirm-buy"?y.find(w=>w.id===n.id):void 0,E=k?.description??"";if((n.name==="sub"||n.name==="confirm-renew")&&b===void 0)return _e(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 _e(fe,{tone:"warn",width:t,title:"\u5957\u9910\u4E0D\u5B58\u5728\u6216\u5DF2\u4E0B\u67B6",detail:"\u6309 Esc \u8FD4\u56DE"});if(n.name==="confirm-renew"&&b!==void 0)return _e(We,{width:t,title:`\u786E\u8BA4\u7EED\u8D39\u300C${b.planName}\u300D\uFF1F`,detail:"\u5C06\u6309\u5957\u9910\u5F53\u524D\u4EF7\u683C\u4E0E\u65F6\u957F\u5728\u5230\u671F\u65F6\u95F4\u4E0A\u987A\u5EF6",confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>S(b,T),onCancel:m});if(n.name==="confirm-buy"&&k!==void 0)return _e(We,{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:()=>h(k,T),onCancel:m});let A=i===""?x:x.filter(w=>w.status===i),U=[{heading:"\u6211\u7684\u8BA2\u9605"},...g.subscriptions.length===0?[{value:{kind:"none"},label:"\u6682\u65E0\u8BA2\u9605",hint:"\u8BA2\u9605\u4E0B\u65B9\u5957\u9910\u540E\uFF0C\u8986\u76D6\u8303\u56F4\u5185\u7684\u8C03\u7528\u5C06\u4F18\u5148\u4F7F\u7528\u8BA2\u9605\u989D\u5EA6",disabled:!0}]:g.subscriptions.map(w=>{let N=ts(w);return{value:{kind:"sub",id:w.id},label:w.planName,badge:N.label,badgeTone:Ge(N),hint:my(w)}}),{heading:""},{value:{kind:"fallback"},label:"\u8BA2\u9605\u989D\u5EA6\u7528\u5C3D\u540E\u81EA\u52A8\u6539\u6309\u4F59\u989D\u8BA1\u8D39",badge:g.fallbackToBalance?"\u5DF2\u5F00\u542F":"\u5DF2\u5173\u95ED",...g.fallbackToBalance?{badgeTone:"accent"}:{},hint:"\u5173\u95ED\u65F6\u8D85\u9650\u8BF7\u6C42\u5C06\u88AB\u62D2\u7EDD\uFF0C\u5E76\u5728\u54CD\u5E94\u4E2D\u7ED9\u51FA\u6700\u8FD1\u7684\u7A97\u53E3\u91CD\u7F6E\u65F6\u95F4"},{heading:""},{heading:"\u53EF\u9009\u5957\u9910"},...y.length===0?[{value:{kind:"none"},label:"\u6682\u65E0\u53EF\u9009\u5957\u9910",hint:"\u8BA2\u9605\u5957\u9910\u4E0A\u67B6\u540E\u5C06\u663E\u793A\u5728\u8FD9\u91CC",disabled:!0}]:y.map(w=>({value:{kind:"plan",id:w.id},label:w.name,...w.enabled?{}:{badge:"\u5DF2\u505C\u552E",badgeTone:"warning"},hint:`${he(w.priceCny)} / ${w.durationDays} \u5929 \xB7 ${w.groupNames.join("\u3001")}`})),{heading:""},{heading:"\u8BA2\u9605\u8BA2\u5355"},...A.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}]:A.map(w=>({value:{kind:"order",orderNo:w.orderNo},label:`${w.planName}${w.renewal?"\uFF08\u7EED\u8D39\uFF09":""}`,..._i(w),hint:`${ee(w.createdAt)} \xB7 ${he(w.amountCny)}`}))],v=n.name==="sub"&&b!==void 0?dy(b):n.name==="plan"&&k!==void 0?py(k):0,P=v===0?o:o-v>=ly?o-v:0,_=t-le,R=n.name==="menu"&&a===null;return Bn(Zt,{flexDirection:"column",children:[P>0&&_e(ae,{items:U,width:t,height:P,isActive:R,retain:"menu",onSelect:w=>{l(),w.kind==="fallback"?d(g.fallbackToBalance):w.kind==="order"?e.push("order",{kind:"subscription",orderNo:w.orderNo}):w.kind==="sub"?r({name:"sub",id:w.id}):w.kind==="plan"&&r({name:"plan",id:w.id})}}),n.name==="sub"&&b!==void 0&&Bn(Zt,{marginTop:P>0?Y:0,flexDirection:"column",children:[Bn(oe,{title:b.planName,note:b.revokedAt!==null?`${ee(b.revokedAt)} \u4F5C\u5E9F`:`${ee(b.expiresAt)} \u5230\u671F`,width:t,children:[_e(Ae,{width:_,items:[["\u72B6\u6001",ts(b).label],["\u8986\u76D6\u5206\u7EC4",b.groupNames.join("\u3001")],["\u751F\u6548\u65F6\u95F4",ee(b.startsAt)]]}),_e(Zt,{marginTop:1,flexDirection:"column",children:b.windows.map((w,N)=>_e(Zt,{marginTop:N===0?0:1,flexDirection:"column",children:_e(uy,{win:w,quotaPerUsd:T.quotaPerUsd,width:_})},w.windowId))})]}),b.renewable&&a===null&&_e(Zt,{marginTop:Y,children:_e(ae,{width:t,items:[{value:"renew",label:"\u7EED\u8D39"}],onSelect:()=>r({name:"confirm-renew",id:b.id})})})]}),n.name==="plan"&&k!==void 0&&Bn(Zt,{marginTop:P>0?Y:0,flexDirection:"column",children:[Bn(oe,{title:k.name,note:`${he(k.priceCny)} / ${k.durationDays} \u5929`,width:t,children:[E!==""&&_e(Qo,{wrap:"truncate",color:u.mutedForeground,children:E}),_e(Zt,{marginTop:E===""?0:Be,children:_e(Ae,{width:_,items:[["\u8986\u76D6\u5206\u7EC4",k.groupNames.join("\u3001")],...ac(k,T.quotaPerUsd).map((w,N)=>[N===0?"\u7528\u91CF\u7A97\u53E3":"",w])]})})]}),a===null&&_e(Zt,{marginTop:Y,children:_e(ae,{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 ke}from"react/jsx-runtime";var Bd={home:{render:()=>ke(Um,{})},help:{render:()=>ke(Dm,{})},login:{render:()=>ke(Bu,{})},register:{render:()=>ke(Fu,{})},forgot:{render:()=>ke(Mu,{})},agreement:{render:e=>ke(Eu,{params:e})},tokens:{render:()=>ke(Im,{})},logs:{render:()=>ke(am,{})},usage:{render:()=>ke(em,{})},ledger:{render:()=>ke(cd,{})},subscription:{render:()=>ke(Dd,{})},models:{render:()=>ke(um,{})},recharge:{render:()=>ke(Ad,{})},order:{render:e=>ke(hd,{params:e})},pay:{render:e=>ke(_d,{params:e})},invoices:{render:()=>ke(sd,{})},"invoice-apply":{render:()=>ke(nd,{})},"invoice-profiles":{render:()=>ke(rd,{})},invite:{render:()=>ke(Wm,{})},tickets:{render:()=>ke(Cu,{})},ticket:{render:e=>ke(Ru,{params:e})},announcements:{render:()=>ke(_l,{})},"announce-gate":{render:e=>ke(xl,{params:e}),lockNav:!0},profile:{render:()=>ke(mu,{})}};function Fd(e){return Bd[e].lockNav===!0}function Ud(e){let t=Bd[e.id].render;return t(e.params)}import{jsx as Fn,jsxs as Ry}from"react/jsx-runtime";function yy(){let e=B(),{rows:t}=H(),o=Tr(),n=Fd(e.current.id)||o,r=e.depth===1&&vr(e.current.id)&&_t().session===null;return ua(()=>{r&&e.home()}),hy((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())}),Fn(fy,{flexDirection:"column",height:Math.max(1,t),paddingX:1,paddingTop:1,overflow:"hidden",children:Ud(e.current)})}function Sy(){let e=B(),t=Q([e.revision],async()=>{if(e.gate.announcementsChecked||_t().session===null)return null;let o;try{o=await Cc()}catch{return null}return e.gate.announcementsChecked=!0,o});return ua(()=>{t.phase!=="ready"||t.data===null||e.gate.announcementsShown||(e.gate.announcementsShown=!0,e.push("announce-gate",{item:t.data}))}),null}function xy(){let e=B(),t=by(!1);return ua(()=>{t.current||(t.current=!0,vc().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${Te(o)}`)))}),null}function Ty({ctx:e,mouse:t}){return Fn(Hc,{subscribe:t.subscribe,children:Fn(Lc,{children:Ry(Kc,{ctx:e,children:[Fn(xy,{}),Fn(Sy,{}),Fn(yy,{})]})})})}var wy="\x1B[2J\x1B[3J\x1B[H",ky="\x1B[H\x1B[J",vy="\x1B[3J";function _y(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(wy).join(ky).split(vy).join("");return t.write(s,...i)}}})}async function jd(e){let t=Uc(process.stdin,process.stdout);try{await gy(Fn(Ty,{ctx:e,mouse:t}),{exitOnCtrlC:!0,alternateScreen:!0,stdin:t.stdin,stdout:_y(process.stdout)}).waitUntilExit()}finally{t.dispose()}}var Py=`${mt} v${dt} \u2014 CodeFlow \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF
11
+ `;)n+=1;return{start:o,end:n}}function Kl({value:e,onChange:t,isActive:o,width:n,rows:r,placeholder:i,maxLength:s,onEdge:a,onFocusRequest:c}){let l=[...e],[m,f]=ql(l.length),d=Math.min(m,l.length),[p,y]=ql(0),h=jl(e),g=jl(d);h.current=e,g.current=d,kr(o);let b=Math.max(4,n),T=_=>{g.current=_,f(_)},w=(_,E)=>{h.current=_,T(E),t(_)},S=_=>{let E=[...h.current],v=Math.min(g.current,E.length),A=Hl(E,b),R=Wl(A,v),N=A[R],H=A[R+_];return N===void 0||H===void 0?!1:(T(zl(E,H,_g(E,N,v))),!0)},k=(_,E,v)=>{let A=vg(v);if(s!==void 0){let R=s-_.length;if(R<=0)return;A=[...A].slice(0,R).join("")}A!==""&&w([..._.slice(0,E),A,..._.slice(E)].join(""),E+[...A].length)};kg((_,E)=>{let v=[...h.current],A=Math.min(g.current,v.length);if(E.return){k(v,A,`
12
+ `);return}if(!E.tab){if(E.upArrow||E.downArrow){let R=E.upArrow?-1:1;S(R)||a?.(E.upArrow?"up":"down");return}if(E.leftArrow){T(Math.max(0,A-1));return}if(E.rightArrow){T(Math.min(v.length,A+1));return}if(E.home){T(Ns(v,A).start);return}if(E.end){T(Ns(v,A).end);return}if(E.backspace){if(A===0)return;w([...v.slice(0,A-1),...v.slice(A)].join(""),A-1);return}if(E.delete){if(A>=v.length)return;w([...v.slice(0,A),...v.slice(A+1)].join(""),A);return}if(E.ctrl){let R=Ns(v,A);if(_==="a")T(R.start);else if(_==="e")T(R.end);else if(_==="k")w([...v.slice(0,A),...v.slice(R.end)].join(""),A);else if(_==="u")w([...v.slice(0,R.start),...v.slice(A)].join(""),R.start);else if(_==="w"){let N=A;for(;N>R.start&&v[N-1]===" ";)N-=1;for(;N>R.start&&v[N-1]!==" ";)N-=1;w([...v.slice(0,N),...v.slice(A)].join(""),N)}return}E.meta||!_||k(v,A,_)}},{isActive:o});let C=Hl(l,b),M=Wl(C,d),j=Math.min(p,Math.max(0,C.length-r));M<j&&(j=M),M>j+r-1&&(j=M-r+1),j!==p&&y(j);let x=[];for(let _=0;_<r;_+=1){let E=j+_,v=C[E];if(v===void 0){x.push(Yt(pn,{children:" "},E));continue}let A=l.slice(v.start,v.end).join("");if(!o||E!==M){x.push(Yt(pn,{wrap:"truncate",color:u.foreground,children:A===""?" ":A},E));continue}let R=l.slice(v.start,d).join(""),N=d<v.end?l[d]??" ":" ",H=d<v.end?l.slice(d+1,v.end).join(""):"";x.push(Gl(pn,{wrap:"truncate",children:[Yt(pn,{color:u.foreground,children:R}),Yt(Io,{char:N}),Yt(pn,{color:u.foreground,children:H})]},E))}if(e===""&&i!==void 0){let _=[...i];x[0]=o?Gl(pn,{wrap:"truncate",children:[Yt(Io,{char:_[0]??" "}),Yt(pn,{color:u.faintForeground,children:_.slice(1).join("")})]},"placeholder"):Yt(pn,{wrap:"truncate",color:u.faintForeground,children:i},"placeholder")}let P=je({onWheel:_=>{S(_)},onClick:({row:_,column:E})=>{c?.();let v=C[j+_];T(v===void 0?l.length:zl(l,v,E))}});return Yt(wg,{ref:P,flexDirection:"column",children:x})}import{Fragment as Ql,jsx as fe,jsxs as St}from"react/jsx-runtime";var Cg=e=>Object.fromEntries(e.map(t=>[t.name,"initial"in t?t.initial??"":""])),Yl="\u9009\u586B",Eg=(e,t)=>e.kind!=="text"&&e.kind!=="textarea"?!1:typeof e.optional=="function"?e.optional(t):e.optional===!0,Ag=(e,t)=>{let o=typeof e.hint=="function"?e.hint(t[e.name]??""):e.hint;return Eg(e,t)?o===void 0?Yl:`${Yl} \xB7 ${o}`:o},Pg=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},Ng=6e4,Ig=4,Ls=4,Lg=2,Vr=(e,t)=>e?u.accent:t?u.foreground:u.mutedForeground;function G({title:e,fields:t,submitLabel:o,onSubmit:n,onCancel:r,width:i,busy:s,busyLabel:a="\u6B63\u5728\u63D0\u4EA4",error:c}){let[l,m]=oo(()=>Cg(t)),[f,d]=oo(0),[p,y]=oo({}),[h,g]=oo(null),[,b]=oo(0),T=s===!0,w=Pg(t),S=w[Math.min(f,w.length-1)],k=S!==void 0&&S.type!=="submit"?t[S.index]:void 0,C=S?.type==="field"&&(k?.kind==="text"||k?.kind==="code"),M=S?.type==="field"&&k?.kind==="textarea",j=Object.values(p).some(I=>I.phase==="cooldown"&&I.until>Date.now());Rg(()=>{if(!j)return;let I=setInterval(()=>b(U=>U+1),1e3);return()=>clearInterval(I)},[j]);let x=I=>d(U=>(U+I+w.length)%w.length),P=(I,U)=>{if(I.options.length===0)return;let V=I.options.findIndex(Me=>Me.value===l[I.name]),pe=I.options[(V+U+I.options.length)%I.options.length];pe!==void 0&&m(Me=>({...Me,[I.name]:pe.value}))},_=I=>{S?.type!=="field"||k?.kind!=="select"||P(k,I)},E=I=>{let U=t[I];if(U===void 0||U.kind!=="code")return;let V=(l[U.emailField]??"").trim();if(V===""){y(Me=>({...Me,[U.name]:{phase:"error",message:"\u8BF7\u5148\u586B\u5199\u90AE\u7BB1"}}));return}let pe=p[U.name];pe?.phase!=="sending"&&(pe?.phase==="cooldown"&&pe.email===V&&pe.until>Date.now()||(y(Me=>({...Me,[U.name]:{phase:"sending"}})),U.send(V).then(()=>y(Me=>({...Me,[U.name]:{phase:"cooldown",email:V,until:Date.now()+Ng}}))).catch(Me=>y(kt=>({...kt,[U.name]:{phase:"error",message:Te(Me)}})))))};Zl((I,U)=>{if(U.tab){x(U.shift?-1:1);return}if(!M){if(U.upArrow){x(-1);return}if(U.downArrow){x(1);return}if(!C){if(U.leftArrow){_(-1);return}if(U.rightArrow){_(1);return}U.return&&(S?.type==="submit"?n(l):S?.type==="send"?E(S.index):x(1))}}},{isActive:!T}),an(r,{isActive:!T,layer:Jn.panel});let v=Math.max(0,...t.map(I=>Ms(I.label))),A=i-le,R=Math.max(8,A-v-8),N=(I,U)=>w.findIndex(V=>V.type===I&&(V.type==="submit"||V.index===U)),H=Jl(new Map).current,B=Jl(new Map).current,ne=2+v+Ls,F=(I,U)=>{let V=w[I];if(V===void 0)return;if(d(I),V.type==="submit"){n(l);return}if(V.type==="send"){E(V.index);return}let pe=t[V.index];if(pe!==void 0){if(pe.kind==="select"){let Me=pe.options.find(vt=>vt.value===l[pe.name]),kt=we(Me?.label??"\u2014",R);U>=ne-Lg&&U<ne?P(pe,-1):U>=ne+Ms(kt)&&P(pe,1);return}U>=ne&&B.get(V.index)?.moveToColumn(U-ne)}},Z=(I,U)=>{if(I===null)return null;let V=Vl(I),pe=null;for(let[Me,kt]of H){if(kt===null)continue;let vt=Vl(kt),Oe=vt.y-V.y;U<Oe||U>=Oe+vt.height||(pe===null||vt.height<pe.box.height)&&(pe={index:Me,box:vt})}return pe===null?null:{...pe,frameX:V.x}},ze=je({isActive:!T,onClick:({row:I,column:U})=>{let V=Z(ze.current,I);V!==null&&F(V.index,U-(V.box.x-V.frameX))},onHover:({row:I})=>g(Z(ze.current,I)?.index??null),onHoverLeave:()=>g(null)});return St(Ft,{ref:ze,flexDirection:"column",children:[fe(Mo,{title:e,width:i}),St(Ft,{flexDirection:"column",marginTop:Be,paddingLeft:le,children:[c!=null&&fe(Ft,{marginBottom:1,children:fe(En,{message:c.message,hint:c.hint,width:A})}),t.map((I,U)=>{let V=f===N("field",U)&&!T,pe=Ag(I,l),Me=I.kind==="select"?I.options.find(Oe=>Oe.value===l[I.name]):void 0;if(I.kind==="textarea")return St(Ft,{flexDirection:"column",ref:Oe=>{H.set(N("field",U),Oe)},children:[St(Ee,{children:[fe(Ee,{color:u.accent,children:V?`${Q.cursor} `:" "}),fe(Ee,{color:Vr(V,h===N("field",U)),bold:V,children:I.label})]}),fe(Ft,{paddingLeft:2,children:fe(Kl,{value:l[I.name]??"",onChange:Oe=>m(Ei=>({...Ei,[I.name]:Oe})),isActive:V,width:A-2,rows:I.rows??Ig,placeholder:I.placeholder,maxLength:I.maxLength,onEdge:Oe=>x(Oe==="up"?-1:1),onFocusRequest:()=>d(N("field",U))})}),V&&pe!==void 0&&fe(Ee,{color:u.faintForeground,children:` ${we(pe,A-2)}`})]},I.name);let kt=I.kind==="code"&&f===N("send",U)&&!T,vt=p[I.name];return St(Ft,{flexDirection:"column",ref:Oe=>{H.set(N("field",U),Oe)},children:[St(Ee,{children:[fe(Ee,{color:u.accent,children:V?`${Q.cursor} `:" "}),fe(Ee,{color:Vr(V,h===N("field",U)),bold:V,children:Ie(I.label,v)}),I.kind==="select"?St(Ql,{children:[fe(Ee,{color:V?u.accent:u.border,children:` ${Q.prev} `}),fe(Ee,{color:u.foreground,children:we(Me?.label??"\u2014",R)}),fe(Ee,{color:V?u.accent:u.border,children:` ${Q.next}`})]}):St(Ql,{children:[fe(Ee,{children:" ".repeat(Ls)}),fe(Ir,{ref:Oe=>{B.set(U,Oe)},value:l[I.name]??"",onChange:Oe=>m(Ei=>({...Ei,[I.name]:Oe})),onSubmit:()=>x(1),isActive:V,placeholder:I.kind==="text"||I.kind==="code"?I.placeholder:void 0,mask:I.kind==="text"?I.mask:void 0,width:R})]})]}),V&&pe!==void 0&&fe(Ee,{color:u.faintForeground,children:`${" ".repeat(2+v+Ls)}${we(pe,R)}`}),I.kind==="code"&&fe(Mg,{active:kt,state:vt,email:(l[I.emailField]??"").trim(),indent:ne,width:R,hovered:h===N("send",U),nodeRef:Oe=>{H.set(N("send",U),Oe)}})]},I.name)}),fe(Ft,{marginTop:1,ref:I=>{H.set(N("submit"),I)},children:T?fe(tt,{label:a}):St(Ee,{children:[fe(Ee,{color:u.accent,children:S?.type==="submit"?`${Q.cursor} `:" "}),fe(Ee,{color:Vr(S?.type==="submit",h===N("submit")),bold:S?.type==="submit",children:o})]})})]})]})}function Mg({active:e,state:t,email:o,indent:n,width:r,hovered:i,nodeRef:s}){if(t?.phase==="sending")return fe(Ft,{paddingLeft:n,children:fe(tt,{label:"\u6B63\u5728\u53D1\u9001\u9A8C\u8BC1\u7801"})});let a=t?.phase==="cooldown"&&t.email===o?Math.ceil((t.until-Date.now())/1e3):0,c=a>0?`${a} \u79D2\u540E\u53EF\u91CD\u53D1`:"\u53D1\u9001\u9A8C\u8BC1\u7801";return St(Ft,{ref:s,flexDirection:"column",paddingLeft:n-2,children:[St(Ee,{children:[fe(Ee,{color:u.accent,children:e?`${Q.cursor} `:" "}),fe(Ee,{color:a>0?u.faintForeground:Vr(e,i),bold:e&&a===0,children:c})]}),t?.phase==="error"&&fe(Ee,{color:u.danger,children:` ${we(t.message,r)}`})]})}var Og=2,Xl=2;function eu({options:e,value:t,onChange:o}){let n=e.findIndex(m=>m.value===t),r=_r();Zl((m,f)=>{if(!f.leftArrow&&!f.rightArrow)return;let d=f.leftArrow?-1:1,p=e[(n+d+e.length)%e.length];p!==void 0&&o(p.value)},{isActive:!r});let i=[],s=0;e.forEach((m,f)=>{f>0&&(s+=Xl);let d=Ms(m.label)+Og;i.push({value:m.value,from:s,to:s+d}),s+=d});let[a,c]=oo(null),l=je({onClick:({column:m})=>{let f=i.find(d=>m>=d.from&&m<d.to);f!==void 0&&o(f.value)},onHover:({column:m})=>{let f=i.find(d=>m>=d.from&&m<d.to);c(f?.value??null)},onHoverLeave:()=>c(null)});return fe(Ft,{ref:l,children:fe(Ee,{wrap:"truncate",children:e.map((m,f)=>{let d=m.value===t;return St(Ee,{children:[f>0&&" ".repeat(Xl),fe(Ee,{backgroundColor:d?u.foreground:u.border,color:d?u.background:m.value===a?u.foreground:u.mutedForeground,bold:d,children:` ${m.label} `})]},m.value)})})})}import{Box as Ds,Text as tu}from"ink";import $g from"qrcode";import{jsx as jo,jsxs as qg}from"react/jsx-runtime";var Dg="#000000",Bg="#ffffff",Os=2,ou=2,Bs=1,nu,$s;function ru(e){if(e===nu&&$s!==void 0)return $s;let t=$g.create(e,{errorCorrectionLevel:"L"}),o=t.modules.size,n=t.modules.data,r=o+Os*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+Os];c!==void 0&&(c[a+Os]=n[s*o+a]===1)}return nu=e,$s=i,i}function Fg(e){let t=ru(e).length;return{columns:t*ou,rows:t}}function Jr(e,t,o,n){let r=Fg(e),i=t.rows-r.rows-Bs;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+Bs+o.rows+n.rows}}}function Ug(e,t){let o=[],n=0;for(let r=1;r<=e.length;r+=1)r<e.length&&e[r]===e[n]||(o.push(jo(tu,{backgroundColor:e[n]??!1?Dg:Bg,children:" ".repeat((r-n)*ou)},n)),n=r);return jo(tu,{children:o},t)}function jg({value:e}){return jo(Ds,{flexDirection:"column",flexShrink:0,children:ru(e).map((t,o)=>Ug(t,o))})}function Yr({value:e,aside:t}){return qg(Ds,{flexDirection:"column",flexShrink:0,children:[jo(jg,{value:e}),jo(Ds,{marginTop:Bs,flexDirection:"column",children:t})]})}import{Box as Xr,Text as ot}from"ink";import iu from"string-width";import{jsx as rt,jsxs as qo}from"react/jsx-runtime";var Qr=2,Fs=4,su=e=>" ".repeat(e),Us=13,au=4,cu=(e,t,o)=>Math.max(1,Math.min(e,o,Math.floor((t+Qr)/(Us+Qr)))),Xt=(e,t,o=au)=>Math.ceil(e/cu(e,t,o))*2;function it({tiles:e,width:t,maxPerRow:o=au}){let n=cu(e.length,t,o),r=Math.floor((t-Qr*(n-1))/n),i=[];for(let s=0;s<e.length;s+=n)i.push(e.slice(s,s+n));return rt(Xr,{flexDirection:"column",children:i.map((s,a)=>rt(Xr,{flexDirection:"column",children:["label","value"].map(c=>rt(ot,{wrap:"truncate",children:s.map((l,m)=>qo(ot,{children:[m>0&&su(Qr),rt(ot,{color:c==="label"?u.mutedForeground:u.foreground,bold:c==="value",children:Ie(l[c],r)})]},l.label))},c))},a))})}function lu({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 qo(ot,{children:[rt(ot,{color:i,children:Q.barFilled.repeat(r)}),rt(ot,{color:u.border,children:Q.barEmpty.repeat(o-r)})]})}function Hg({items:e,width:t}){let o=Math.max(0,...e.map(([r])=>iu(r))),n=Math.max(0,t-o-3);return rt(Xr,{flexDirection:"column",children:e.map(([r,i])=>qo(ot,{wrap:"truncate",children:[rt(ot,{color:u.mutedForeground,children:Ie(r,o)})," ",rt(ot,{color:u.foreground,children:we(i,n)})]},r))})}var uu=(e,t)=>Math.floor((t-Fs)/2)<Us*2?e:Math.ceil(e/2);function Ae({items:e,width:t}){let o=Math.floor((t-Fs)/2);if(o<Us*2)return rt(Hg,{items:e,width:t});let n=Math.max(0,...e.map(([a])=>iu(a))),r=o-n-2,i=[];for(let a=0;a<e.length;a+=2)i.push(e.slice(a,a+2));let s=a=>a===void 0?rt(ot,{children:" ".repeat(o)}):qo(ot,{children:[rt(ot,{color:u.mutedForeground,children:Ie(a[0],n)})," ",rt(ot,{color:u.foreground,children:Ie(a[1],r)})]});return rt(Xr,{flexDirection:"column",children:i.map((a,c)=>qo(ot,{wrap:"truncate",children:[s(a[0]),su(Fs),s(a[1])]},c))})}import{Fragment as Yg,jsx as se,jsxs as fn}from"react/jsx-runtime";var zg={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"},du="\u5BC6\u94A5 ",Gg=10,Kg={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"}},Vg=2+J;function Jg({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(fn(Ho,{wrap:"truncate",color:u.accent,children:[Ie(e[r]??"",Math.min(o,t)),e[r+1]??""]},r));return se(xt,{flexDirection:"column",children:n})}function pu(){let e=D(),{width:t,columns:o,rows:n}=q(),r=ie(),[i,s]=mu({name:"menu"}),[a,c]=mu(!1),{busy:l,error:m,reset:f,fail:d,run:p}=de(),y=X([e.revision],async()=>{let[w,S,k]=await Promise.all([El(),Ol(),Ll()]);return{user:w.user,security:S,sessions:k.sessions}});W(w=>{i.name==="menu"&&l===null&&w==="r"&&e.reload()}),$c(i.name==="codes");let h=()=>{if(i.name!=="codes"){if(i.name==="menu"){e.pop();return}f(),i.name==="passkey-rename"||i.name==="passkey-delete"?s({name:"passkey",item:i.item}):i.name==="confirm-revoke"?s({name:"session",item:i.item}):s({name:"menu"})}},g=w=>{s({name:"menu"}),e.reload(),e.toast("ok",w)},b=(w,S)=>{c(!1),s({name:"codes",codes:w,message:S})},T=(w,S)=>{w==="rebind"?p("\u6B63\u5728\u751F\u6210\u65B0\u5BC6\u94A5",()=>Ps({code:S}),{onSuccess:k=>s({name:"enroll",setup:k})}):w==="regenerate"?p("\u6B63\u5728\u751F\u6210\u6062\u590D\u7801",()=>Bl({code:S}),{onSuccess:({recoveryCodes:k})=>b(k,"\u6062\u590D\u7801\u5DF2\u66F4\u65B0")}):p("\u6B63\u5728\u505C\u7528",()=>Dl({code:S}),{onSuccess:()=>g("\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u505C\u7528")})};return se(K,{hints:i.name==="menu"?["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","r \u5237\u65B0"]:i.name==="codes"?["\u2191\u2193 \u79FB\u52A8","Enter \u786E\u8BA4"]:["Esc \u8FD4\u56DE"],locked:i.name==="codes",onEscape:h,children:se(Y,{state:y,loading:"\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u4FE1\u606F",width:t,children:({user:w,security:S,sessions:k})=>{if(i.name==="rename")return se(G,{title:"\u4FEE\u6539\u7528\u6237\u540D",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:m,fields:[{kind:"text",name:"username",label:"\u7528\u6237\u540D",initial:w.username,placeholder:"\u8BF7\u8F93\u5165\u65B0\u7528\u6237\u540D"}],onCancel:h,onSubmit:x=>{let P=(x.username??"").trim();if(P===""||P.length>Tn){d(`\u8BF7\u8F93\u5165 1 \u5230 ${Tn} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}p("\u6B63\u5728\u4FDD\u5B58",()=>Al({username:P}),{onSuccess:()=>g("\u5DF2\u4FDD\u5B58")})}});if(i.name==="email")return se(G,{title:"\u4FEE\u6539\u90AE\u7BB1",width:t,submitLabel:"\u786E\u8BA4\u4FEE\u6539",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:m,fields:[{kind:"text",name:"email",label:"\u65B0\u90AE\u7BB1",placeholder:"\u7528\u4E8E\u767B\u5F55\u4E0E\u63A5\u6536\u901A\u77E5\u7684\u65B0\u90AE\u7BB1"},{kind:"code",name:"code",label:"\u9A8C\u8BC1\u7801",emailField:"email",send:x=>Nl({email:x})},{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:h,onSubmit:x=>{let P=(x.email??"").trim(),_=(x.code??"").trim(),E=x.password??"";if(P===""||_===""||E===""){d("\u8BF7\u586B\u5199\u65B0\u90AE\u7BB1\u3001\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801");return}p("\u6B63\u5728\u4FDD\u5B58",()=>Il({email:P,code:_,password:E}),{onSuccess:()=>g("\u90AE\u7BB1\u5DF2\u4FEE\u6539")})}});if(i.name==="password")return se(G,{title:"\u4FEE\u6539\u5BC6\u7801",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:m,fields:[{kind:"text",name:"old",label:"\u5F53\u524D\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801"},{kind:"text",name:"next",label:"\u65B0\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u65B0\u5BC6\u7801",hint:`\u81F3\u5C11 ${st} \u4F4D\uFF0C\u4FDD\u5B58\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55`}],onCancel:h,onSubmit:x=>{let P=x.old??"",_=x.next??"";if(P===""){d("\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801");return}if(_.length<st){d(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${st} \u4F4D`);return}p("\u6B63\u5728\u4FDD\u5B58",()=>Pl({oldPassword:P,newPassword:_}),{onSuccess:()=>g("\u5BC6\u7801\u5DF2\u4FEE\u6539")})}});if(i.name==="confirm-logout")return se(Ge,{width:t,title:"\u786E\u8BA4\u9000\u51FA\u767B\u5F55\uFF1F",detail:"\u9000\u51FA\u540E\u9700\u91CD\u65B0\u767B\u5F55\u624D\u80FD\u7BA1\u7406\u8D26\u6237",confirmLabel:"\u9000\u51FA\u767B\u5F55",busy:l,error:m,onConfirm:()=>p("\u6B63\u5728\u9000\u51FA",()=>br(),{onSuccess:()=>{e.toast("ok","\u5DF2\u9000\u51FA\u767B\u5F55"),e.home()}}),onCancel:h});if(i.name==="code"){let x=Kg[i.intent];return se(G,{title:x.title,width:t,submitLabel:x.submit,busy:l!==null,busyLabel:l??"\u6B63\u5728\u5904\u7406",error:m,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",placeholder:"\u9A8C\u8BC1\u5668\u663E\u793A\u7684 6 \u4F4D\u6570\u5B57",hint:x.hint}],onCancel:h,onSubmit:P=>{let _=(P.code??"").trim();if(_===""){d("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}T(i.intent,_)}})}if(i.name==="enroll"){let x=(_,E)=>fn(Yg,{children:[E&&se(Ho,{color:u.mutedForeground,children:"\u4F7F\u7528 Google Authenticator \u7B49\u9A8C\u8BC1\u5668 App \u626B\u7801\u6DFB\u52A0"}),fn(Ho,{children:[se(Ho,{color:u.mutedForeground,children:du}),se(Ho,{color:u.accent,children:i.setup.secret})]}),se(xt,{marginTop:1,children:se(G,{title:"\u586B\u5165\u52A8\u6001\u9A8C\u8BC1\u7801\u5B8C\u6210\u7ED1\u5B9A",width:_,submitLabel:"\u7ED1\u5B9A",busy:l!==null,busyLabel:l??"\u6B63\u5728\u7ED1\u5B9A",error:m,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801"}],onCancel:h,onSubmit:v=>{let A=(v.code??"").trim();if(A===""){d("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}p("\u6B63\u5728\u7ED1\u5B9A",()=>$l({code:A}),{onSuccess:({recoveryCodes:R})=>b(R,"\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u7ED1\u5B9A")})}})})]}),P=Jr(i.setup.otpauthUri,{width:t,rows:r},{columns:Wg(du)+i.setup.secret.length,rows:Gg},{columns:o-t,rows:n-r});return P.fits?se(Yr,{value:i.setup.otpauthUri,aside:x(P.asideWidth,!0)}):fn(xt,{flexDirection:"column",children:[se(ge,{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"}),x(t,!1)]})}if(i.name==="codes")return fn(xt,{flexDirection:"column",children:[se(ge,{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"}),se(xt,{marginTop:1,children:se(Jg,{codes:i.codes,width:t})}),se(xt,{marginTop:1,children:se(ae,{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:x=>{if(x==="ack"){c(_=>!_);return}let P=i.message;s({name:"menu"}),e.reload(),e.toast("ok",P)}})})]});if(i.name==="passkey-add")return se(ge,{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 se(G,{title:`\u91CD\u547D\u540D Passkey ${i.item.name}`,width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:m,fields:[{kind:"text",name:"name",label:"\u540D\u79F0",initial:i.item.name,placeholder:"\u6807\u8BB0\u6240\u5728\u8BBE\u5907\uFF0C\u5982 MacBook \u6307\u7EB9"}],onCancel:h,onSubmit:x=>{let P=(x.name??"").trim();if(P===""){d("\u8BF7\u8F93\u5165\u540D\u79F0");return}p("\u6B63\u5728\u4FDD\u5B58",()=>Fl(i.item.id,{name:P}),{onSuccess:()=>g("\u5DF2\u4FDD\u5B58")})}});if(i.name==="passkey-delete")return se(Ge,{width:t,title:`\u786E\u8BA4\u5220\u9664 Passkey\u300C${i.item.name}\u300D\uFF1F`,detail:"\u5220\u9664\u540E\u65E0\u6CD5\u518D\u7528\u5B83\u767B\u5F55",confirmLabel:"\u5220\u9664",busy:l,error:m,onConfirm:()=>p("\u6B63\u5728\u5220\u9664",()=>Ul(i.item.id),{onSuccess:()=>g("\u5DF2\u5220\u9664")}),onCancel:h});if(i.name==="passkey"){let x=i.item;return se(xt,{flexDirection:"column",children:fn(re,{title:`Passkey ${x.name}`,width:t,children:[se(Ae,{width:t-le,items:[["\u540D\u79F0",x.name],["\u6DFB\u52A0\u65F6\u95F4",ee(x.createdAt)],["\u6700\u8FD1\u4F7F\u7528",x.lastUsedAt===null?"\u2014":ee(x.lastUsedAt)]]}),se(xt,{marginTop:1,children:se(ae,{width:t-le,items:[{value:"rename",label:"\u91CD\u547D\u540D"},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:P=>{f(),s(P==="rename"?{name:"passkey-rename",item:x}:{name:"passkey-delete",item:x})}})})]})})}if(i.name==="confirm-revoke")return se(Ge,{width:t,title:"\u786E\u8BA4\u9000\u51FA\u8BE5\u8BBE\u5907\u7684\u767B\u5F55\uFF1F",confirmLabel:"\u9000\u51FA",busy:l,error:m,onConfirm:()=>p("\u6B63\u5728\u9000\u51FA\u8BE5\u8BBE\u5907",()=>Ml(i.item.id),{onSuccess:()=>g("\u5DF2\u9000\u51FA\u8BE5\u8BBE\u5907")}),onCancel:h});if(i.name==="session"){let x=i.item;return fn(xt,{flexDirection:"column",children:[se(re,{title:rr(x.device),note:x.current?"\u5F53\u524D\u8BBE\u5907":void 0,width:t,children:se(Ae,{width:t-le,items:[["\u8BBE\u5907\u7C7B\u578B",x.device?.type!=null?zg[x.device.type]??x.device.type:"\u684C\u9762\u8BBE\u5907"],["\u5BA2\u6237\u7AEF",x.device?.client!=null?`${x.device.client} ${x.device.clientVersion??""}`.trim():"\u2014"],["\u64CD\u4F5C\u7CFB\u7EDF",x.device?.os!=null?`${x.device.os} ${x.device.osVersion??""}`.trim():"\u2014"],["\u8BBE\u5907\u578B\u53F7",x.device?.model!=null?`${x.device.vendor??""} ${x.device.model}`.trim():"\u2014"],["IP \u5730\u5740",x.ip??"\u2014"],["\u767B\u5F55\u65F6\u95F4",ee(x.loginAt)],["\u6700\u540E\u6D3B\u8DC3",ee(x.lastActiveAt)],["\u767B\u5F55\u6709\u6548\u671F\u81F3",ee(x.expiresAt)],["\u5BA2\u6237\u7AEF\u6807\u8BC6",x.userAgent??"\u2014"]]})}),!x.current&&l===null&&se(xt,{marginTop:1,children:se(ae,{width:t,items:[{value:"revoke",label:"\u9000\u51FA\u8BE5\u8BBE\u5907",labelTone:"danger"}],onSelect:()=>{f(),s({name:"confirm-revoke",item:x})}})})]})}let C=S.totp,M=C.enabled?C.recoveryCodesRemaining===0?"\u5DF2\u5168\u90E8\u7528\u5B8C\uFF0C\u8BF7\u91CD\u65B0\u751F\u6210":`\u5269\u4F59 ${C.recoveryCodesRemaining} \u679A\uFF0C\u9A8C\u8BC1\u5668\u4E0D\u53EF\u7528\u65F6\u53EF\u4F5C\u4E3A\u767B\u5F55\u51ED\u8BC1`:"\u542F\u7528\u4E24\u6B65\u9A8C\u8BC1\u540E\u751F\u6210\uFF0C\u9A8C\u8BC1\u5668\u4E0D\u53EF\u7528\u65F6\u53EF\u4F5C\u4E3A\u767B\u5F55\u51ED\u8BC1",j=[{heading:"\u8D26\u6237"},{value:{kind:"rename"},label:"\u4FEE\u6539\u7528\u6237\u540D"},{value:{kind:"email"},label:"\u4FEE\u6539\u90AE\u7BB1",hint:"\u9700\u8981\u90AE\u7BB1\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801"},{value:{kind:"password"},label:"\u4FEE\u6539\u5BC6\u7801",hint:"\u4FDD\u5B58\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55"},{heading:""},{heading:"\u4E24\u6B65\u9A8C\u8BC1"},...C.enabled?[{value:{kind:"code",intent:"rebind"},label:"\u91CD\u65B0\u7ED1\u5B9A",hint:"\u751F\u6210\u65B0\u5BC6\u94A5\u5E76\u66F4\u6362\u6062\u590D\u7801"},{value:{kind:"code",intent:"regenerate"},label:"\u91CD\u65B0\u751F\u6210\u6062\u590D\u7801",hint:"\u539F\u6709\u6062\u590D\u7801\u5168\u90E8\u4F5C\u5E9F"},{value:{kind:"code",intent:"disable"},label:"\u505C\u7528",labelTone:"danger"}]:[{value:{kind:"enable"},label:"\u542F\u7528\u4E24\u6B65\u9A8C\u8BC1",hint:"\u767B\u5F55\u65F6\u8981\u6C42\u989D\u5916\u8F93\u5165\u9A8C\u8BC1\u5668\u52A8\u6001\u7801\uFF0C\u5BC6\u7801\u6CC4\u9732\u540E\u4ECD\u53EF\u62E6\u622A\u5192\u7528\u767B\u5F55"}],{heading:""},{heading:"Passkey"},...S.passkeys.length===0?[{value:{kind:"none"},label:"\u6682\u65E0 Passkey",hint:"\u6DFB\u52A0\u540E\u53EF\u4F7F\u7528\u6307\u7EB9\u3001\u9762\u5BB9\u6216\u786C\u4EF6\u5BC6\u94A5\u4E00\u6B65\u767B\u5F55",disabled:!0}]:[],...S.passkeys.map(x=>({value:{kind:"passkey",item:x},label:x.name,hint:`\u6700\u8FD1\u4F7F\u7528 ${x.lastUsedAt===null?"\u2014":ee(x.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(x=>({value:{kind:"session",item:x},label:x.current?`${rr(x.device)}\uFF08\u5F53\u524D\u8BBE\u5907\uFF09`:rr(x.device),...x.current?{labelTone:"accent"}:{},hint:`${x.ip??"\u2014"} \xB7 \u6700\u540E\u6D3B\u8DC3 ${ee(x.lastActiveAt)}`})),{heading:""},{value:{kind:"logout"},label:"\u9000\u51FA\u767B\u5F55",labelTone:"danger"}];return fn(xt,{flexDirection:"column",children:[se(Ae,{width:t,items:[["\u7528\u6237\u540D",w.username],["\u90AE\u7BB1",w.email],["\u4E24\u6B65\u9A8C\u8BC1",C.enabled?`\u5DF2\u542F\u7528\uFF08\u542F\u7528\u4E8E ${C.enabledAt===null?"\u2014":ee(C.enabledAt)}\uFF09`:"\u672A\u542F\u7528"],["\u6062\u590D\u7801",M]]}),se(xt,{marginTop:J,children:se(ae,{width:t,height:Math.max(3,r-Vg),isActive:l===null,items:j,retain:"menu",onSelect:x=>{f(),x.kind==="rename"?s({name:"rename"}):x.kind==="email"?s({name:"email"}):x.kind==="password"?s({name:"password"}):x.kind==="logout"?s({name:"confirm-logout"}):x.kind==="enable"?p("\u6B63\u5728\u751F\u6210\u5BC6\u94A5",()=>Ps({}),{onSuccess:P=>s({name:"enroll",setup:P})}):x.kind==="code"?s({name:"code",intent:x.intent}):x.kind==="add-passkey"?s({name:"passkey-add"}):x.kind==="passkey"?s({name:"passkey",item:x.item}):x.kind==="session"&&s({name:"session",item:x.item})}})})]})}})})}import{Box as ii,Text as si,useInput as lh}from"ink";import{useRef as Ru,useState as ro}from"react";import uh from"string-width";import{z as Je}from"zod";var Xg=Je.object({siteName:Je.string(),siteDescription:Je.string(),apiLines:qa,quotaPerUsd:Je.number().int().positive(),ticketAutoCloseMinutes:Je.number(),legal:Je.object({termsConfigured:Je.boolean(),privacyConfigured:Je.boolean()}),invitation:Je.object({firstInviterPercent:Je.number(),firstInviteePercent:Je.number()}),initialized:Je.boolean()});function ve(e,t){return Et(Xg,`${e}/api/site-config`,{...t===void 0?{}:{timeoutMs:t}})}var Qg=Je.object({title:Je.string(),content:Je.string(),configured:Je.boolean()});function fu(e,t){return Et(Qg,`${e}/api/agreements/${t}`)}var gu=12e4,hu=e=>O(Sn(ar),Ot("/tickets",{...e})),bu=e=>O(ar,"/tickets",{method:"POST",json:e}),js=e=>O(ec,`/tickets/${e}`),yu=(e,t,o)=>O(Vi,`/tickets/${e}/messages`,{method:"POST",json:{content:t,attachmentIds:o}}),Su=e=>O(Ki,Ot("/tickets/attachments",{filename:e.fileName,contentType:e.contentType}),{method:"POST",body:e.bytes,headers:{"content-type":"application/octet-stream"},timeoutMs:gu}),xu=e=>O(ye,`/tickets/attachments/${e}`,{method:"DELETE"}).then(()=>{}),Tu=(e,t)=>Sr(`/tickets/${e}/attachments/${t}`,{timeoutMs:gu}),wu=e=>O(ye,`/tickets/${e}/close`,{method:"POST"}).then(()=>{}),ku=e=>O(ye,`/tickets/${e}/reopen`,{method:"POST"}).then(()=>{});import{existsSync as Zr,readFileSync as Zg,statSync as vu,writeFileSync as eh}from"fs";import{homedir as qs}from"os";import Tt from"path";var th={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".avif":"image/avif"};function nh(e){return e.split(`
13
+ `).map(t=>t.trim()).filter(t=>t!=="").map(t=>t.startsWith("~/")?Tt.join(qs(),t.slice(2)):t)}function oh(e){if(!Zr(e))throw new $(`${e} \u4E0D\u5B58\u5728`);let t=vu(e);if(!t.isFile())throw new $(`${e} \u4E0D\u662F\u6587\u4EF6`);if(t.size===0)throw new $(`${e} \u662F\u7A7A\u6587\u4EF6\uFF0C\u65E0\u6CD5\u4E0A\u4F20`);if(t.size>So)throw new $(`${e} \u8D85\u8FC7\u5355\u4E2A\u9644\u4EF6\u5927\u5C0F\u4E0A\u9650 ${Vn(So)}`);let o;try{o=Zg(e)}catch(r){throw new $(`${e} \u8BFB\u53D6\u5931\u8D25\uFF1A${Te(r)}`,{cause:r})}let n=Tt.basename(e);return{fileName:n,contentType:th[Tt.extname(n).toLowerCase()]??"application/octet-stream",bytes:o}}function ei(e){let t=nh(e);if(t.length>cr)throw new $("\u9644\u4EF6\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650");return t.map(oh)}async function ti(e,t){let o=[];try{for(let n of e)o.push((await Su(n)).id);return await t(o)}catch(n){for(let r of o)await xu(r).catch(()=>{});throw n}}function rh(e,t){let o=Tt.basename(t),n=Tt.extname(o),r=o.slice(0,o.length-n.length),i=Tt.join(e,o);for(let s=1;Zr(i);s+=1)i=Tt.join(e,`${r}-${s}${n}`);return i}function ih(e,t){let o=e.trim();if(o==="")return{dir:process.cwd(),fileName:t};if(o==="~")return{dir:qs(),fileName:t};let n=o.startsWith("~/")||o.startsWith(`~${Tt.sep}`)?Tt.join(qs(),o.slice(2)):o;return o.endsWith("/")||o.endsWith(Tt.sep)||Zr(n)&&vu(n).isDirectory()?{dir:n,fileName:t}:{dir:Tt.dirname(n),fileName:Tt.basename(n)}}function _u(e,t,o){let n=ih(e,t);if(!Zr(n.dir))throw new $(`${n.dir} \u76EE\u5F55\u4E0D\u5B58\u5728`);let r=rh(n.dir,n.fileName);try{eh(r,o)}catch(i){throw new $(`\u5199\u5165 ${r} \u5931\u8D25\uFF1A${Te(i)}`,{cause:i})}return r}import{jsx as sh}from"react/jsx-runtime";function ni({title:e,width:t,fileName:o,download:n,onCancel:r,onSaved:i}){let{busy:s,error:a,run:c}=de();return sh(G,{title:e,width:t,submitLabel:"\u4E0B\u8F7D",busy:s!==null,busyLabel:"\u6B63\u5728\u4E0B\u8F7D",error:a,fields:[{kind:"text",name:"path",label:"\u4FDD\u5B58\u8DEF\u5F84",placeholder:"\u7559\u7A7A\u4FDD\u5B58\u5230\u5F53\u524D\u76EE\u5F55",hint:"\u53EF\u586B\u76EE\u5F55\u6216\u5E26\u6587\u4EF6\u540D\u7684\u5B8C\u6574\u8DEF\u5F84",optional:!0}],onCancel:r,onSubmit:l=>{c("\u6B63\u5728\u4E0B\u8F7D",async()=>{let m=await n();return _u(l.path??"",o,m)},{onSuccess:i})}})}import{useEffect as ah,useRef as ch}from"react";function oi(e,t,o=!0){let n=ch(t);n.current=t,ah(()=>{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])}var ri={kind:"textarea",name:"attachments",label:"\u9644\u4EF6\u8DEF\u5F84",rows:2,placeholder:"\u6BCF\u884C\u4E00\u4E2A\u672C\u5730\u6587\u4EF6\u8DEF\u5F84\uFF0C\u53EF\u7559\u7A7A",hint:`\u6700\u591A ${cr} \u4E2A\uFF0C\u5355\u4E2A\u4E0D\u8D85\u8FC7 ${So/1024/1024}MB`,optional:!0};import{jsx as ut,jsxs as Hs}from"react/jsx-runtime";var mh=5e3,dh=11,ph=3,Cu=1;function fh(e,t){let o=[],n=r=>{let i=r.spans.reduce((a,c)=>a+uh(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=r.content===""?[]:Dt([{text:r.content,color:u.foreground}],Math.max(8,t-4)),l=r.attachments.map(m=>({spans:[{text:"[\u9644\u4EF6] ",color:u.faintForeground},{text:m.fileName,color:u.foreground},{text:` (${Vn(m.fileSize)})`,color:u.mutedForeground}]}));s?o.push(n(a),...c.map(n),...l.map(n)):o.push(a,...c,...l)}),o}function Eu({params:e}){let t=D(),{width:o}=q(),n=ie(),[r,i]=ro("main"),[s,a]=ro(!1),[c,l]=ro(null),[m,f]=ro(null),[d,p]=ro(0),{busy:y,error:h,reset:g,fail:b,run:T}=de(),w=X([e.id,t.revision],async()=>{let[A,R]=await Promise.all([js(e.id),ve(t.ctx.site)]);return{detail:A,site:R}}),[S,k]=ro(null),C=Ru(0),M=Ru(t.revision);M.current!==t.revision&&(M.current=t.revision,C.current+=1,S!==null&&k(null));let j=w.phase==="ready"?w.data:null,x=S??j?.detail??null;oi(mh,async()=>{if(x===null||y!==null)return;let A=C.current,R=await js(e.id);A===C.current&&(R.ticket.updatedAt!==x.ticket.updatedAt||R.messages.length!==x.messages.length)&&k(R)},r==="main"&&j!==null);let P=x?.messages.some(A=>A.attachments.length>0)??!1;W(A=>{r!=="main"||s||y!==null||(A==="r"?t.reload():A==="x"&&x!==null&&x.ticket.status!=="closed"?(g(),i("confirm-close")):A==="a"&&P&&(g(),l(null),f(null),i("attachments")))}),lh((A,R)=>{R.tab&&r==="main"&&!s&&x?.ticket.status!=="closed"&&a(!0)},{isActive:r==="main"&&!s&&y===null});let _=()=>{if(r!=="main"){g(),i("main");return}if(s){a(!1);return}t.pop()},E=(A,R)=>{T("\u6B63\u5728\u53D1\u9001",()=>ti(R,N=>yu(e.id,A,N)),{onSuccess:()=>{a(!1),p(N=>N+1),t.reload(),t.toast("ok","\u5DF2\u53D1\u9001")}})},v=r==="main"&&!s?["\u2191\u2193 \u6EDA\u52A8",...x?.ticket.status==="closed"?[]:["Tab \u56DE\u590D"],...P?["a \u9644\u4EF6"]:[],...x?.ticket.status==="closed"?[]:["x \u5173\u95ED\u5DE5\u5355"],"r \u5237\u65B0"]:[];return ut(K,{trail:["\u5DE5\u5355\u652F\u6301",x?.ticket.title??"\u5DE5\u5355\u8BE6\u60C5"],hints:v,onEscape:_,children:ut(Y,{state:w,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:o,children:({site:A})=>{if(x===null)return null;let R=x.ticket,N=R.status==="closed";if(r==="confirm-close")return ut(Ge,{width:o,title:"\u5173\u95ED\u5DE5\u5355",detail:`\u786E\u5B9A\u5173\u95ED\u5DE5\u5355\u300C${R.title}\u300D\u5417\uFF1F\u5173\u95ED\u540E\u53EF\u91CD\u65B0\u6253\u5F00`,confirmLabel:"\u5173\u95ED\u5DE5\u5355",busy:y,error:h,onConfirm:()=>T("\u6B63\u5728\u5173\u95ED",()=>wu(e.id),{onSuccess:()=>{i("main"),t.reload(),t.toast("ok","\u5DF2\u5173\u95ED")}}),onCancel:_});if(r==="attachments")return m!==null?ut(ni,{title:`\u4FDD\u5B58\u9644\u4EF6 \u2014 ${m.fileName}`,width:o,fileName:m.fileName,download:()=>Tu(e.id,m.id),onCancel:()=>f(null),onSaved:F=>{f(null),l(F),t.toast("ok","\u9644\u4EF6\u5DF2\u4FDD\u5B58")}}):Hs(ii,{flexDirection:"column",children:[ut(ae,{width:o,height:Math.max(3,n-1),isActive:y===null,items:[{heading:"\u9644\u4EF6"},...x.messages.flatMap(F=>F.attachments.map(Z=>({value:Z,label:Z.fileName,hint:`${F.authorKind==="user"?"\u6211":"\u7BA1\u7406\u5458"} \xB7 ${Vn(Z.fileSize)} \xB7 ${ee(F.createdAt)}`})))],onSelect:F=>{l(null),f(F)}}),c!==null&&ut(si,{wrap:"truncate",color:u.faintForeground,children:`\u5DF2\u4FDD\u5B58\u5230 ${c}`})]});let H=A.ticketAutoCloseMinutes>0?Cu:0,B=N?ph:s?dh:Cu,ne=Math.max(3,n-H-B-J);return Hs(ii,{flexDirection:"column",children:[H>0&&ut(si,{wrap:"truncate",color:u.faintForeground,children:`\u7BA1\u7406\u5458\u56DE\u590D\u540E\u8D85\u8FC7 ${A.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`}),ut(ln,{lines:fh(x.messages,o),height:ne,isActive:!s&&y===null,pinBottom:!0}),ut(ii,{marginTop:1,flexDirection:"column",children:N?Hs(ii,{flexDirection:"column",children:[ut(si,{color:u.mutedForeground,children:"\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u5982\u9700\u7EE7\u7EED\u6C9F\u901A\u53EF\u91CD\u65B0\u6253\u5F00"}),ut(ae,{width:o,isActive:y===null,items:[{value:"reopen",label:"\u91CD\u65B0\u6253\u5F00"}],onSelect:()=>T("\u6B63\u5728\u91CD\u65B0\u6253\u5F00",()=>ku(e.id),{onSuccess:()=>{t.reload(),t.toast("ok","\u5DF2\u91CD\u65B0\u6253\u5F00")}})})]}):s?ut(G,{title:"\u56DE\u590D\u5DE5\u5355",width:o,submitLabel:"\u53D1\u9001\u56DE\u590D",busy:y!==null,busyLabel:y??"\u6B63\u5728\u53D1\u9001",error:h,fields:[{kind:"textarea",name:"content",label:"\u56DE\u590D\u5185\u5BB9",rows:3,maxLength:5e3,placeholder:"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9",optional:!0},ri],onCancel:()=>a(!1),onSubmit:F=>{let Z=(F.content??"").trim(),ze;try{ze=ei(F.attachments??"")}catch(I){b(Te(I));return}if(Z===""&&ze.length===0){b("\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9\u6216\u9644\u4EF6\u8DEF\u5F84");return}E(Z,ze)}},d):ut(si,{color:u.faintForeground,children:"\u6309 Tab \u64B0\u5199\u56DE\u590D"})})]})}})})}import{Box as gh}from"ink";import{useState as hh}from"react";import{jsx as Nn,jsxs as Sh}from"react/jsx-runtime";var bh=Ze(Bi,Zi,"\u5168\u90E8\u72B6\u6001"),yh={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"},Ws={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:yh};function Au(){let e=D(),{width:t}=q(),o=ie(),[n,r]=hh({name:"list"}),[i,s]=Xe("status",()=>""),{busy:a,error:c,reset:l,fail:m,run:f}=de(),d=mn([e.revision,i],(h,g)=>hu({page:h,pageSize:g,...i===""?{}:{status:i}}),{retain:"page"}),p=n.name==="list";W((h,g)=>{p&&(h==="r"?e.reload():h==="f"?r({name:"filter"}):h==="n"?r({name:"create-category"}):g.leftArrow?d.go(-1):g.rightArrow&&d.go(1))});let y=()=>{n.name==="list"?e.pop():n.name==="create"?r({name:"create-category"}):(l(),r({name:"list"}))};return Nn(K,{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:y,children:n.name==="filter"?Nn(G,{title:"\u7B5B\u9009\u5DE5\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:bh,initial:i}],onCancel:y,onSubmit:h=>{s(h.status??""),d.reset(),r({name:"list"})}}):n.name==="create-category"?Nn(ae,{width:t,height:o,items:[{heading:"\u5206\u7C7B"},...Fi.map(h=>({value:h,label:dr(h),hint:Ws[h].title}))],onSelect:h=>r({name:"create",category:h})}):n.name==="create"?Nn(G,{title:`\u65B0\u5EFA\u5DE5\u5355 \u2014 ${dr(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:Ui.map(h=>({value:h,label:es(h).label})),initial:"normal"},{kind:"text",name:"title",label:"\u6807\u9898",placeholder:Ws[n.category].title},{kind:"textarea",name:"content",label:"\u95EE\u9898\u63CF\u8FF0",rows:5,maxLength:5e3,placeholder:Ws[n.category].content},ri],onCancel:y,onSubmit:h=>{let g=(h.title??"").trim(),b=(h.content??"").trim();if(g===""){m("\u8BF7\u586B\u5199\u6807\u9898");return}if(b===""){m("\u8BF7\u586B\u5199\u95EE\u9898\u63CF\u8FF0");return}let T;try{T=ei(h.attachments??"")}catch(w){m(Te(w));return}f("\u6B63\u5728\u63D0\u4EA4\u5DE5\u5355",()=>ti(T,w=>bu({title:g,category:n.category,priority:h.priority??"normal",content:b,attachmentIds:w})),{onSuccess:w=>{r({name:"list"}),d.reset(),e.reload(),e.push("ticket",{id:w.id}),e.toast("ok","\u5DE5\u5355\u5DF2\u63D0\u4EA4")}})}}):Nn(Y,{state:d.state,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:t,children:h=>Sh(gh,{flexDirection:"column",children:[Nn(Ce,{retain:"list",items:h.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:g=>[g.title,Kt(es(g.priority)),dr(g.category),ee(g.updatedAt),Kt(Zi(g.status))],onOpen:g=>e.push("ticket",{id:g.id}),emptyLabel:i===""?"\u6682\u65E0\u5DE5\u5355":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u9047\u5230\u95EE\u9898\u65F6\u53EF\u65B0\u5EFA\u5DE5\u5355\uFF0C\u7BA1\u7406\u5458\u4F1A\u5C3D\u5FEB\u56DE\u590D":void 0}),Nn(dn,{page:d.page,pages:d.pages,total:d.total,width:t})]})})})}import{Box as xh}from"ink";import{jsx as Wo}from"react/jsx-runtime";function Pu({params:e}){let t=D(),{width:o}=q(),n=ie(),r=X([e.type,t.revision],()=>fu(t.ctx.site,e.type));return Wo(K,{trail:["\u6CD5\u5F8B\u6761\u6B3E",e.type==="terms"?"\u7528\u6237\u534F\u8BAE":"\u9690\u79C1\u653F\u7B56"],hints:["\u2191\u2193 \u6EDA\u52A8"],children:Wo(Y,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6761\u6B3E",width:o,children:i=>i.configured?Wo(xh,{flexDirection:"column",children:Wo(ln,{lines:eo(i.content,o),height:n})}):Wo(ge,{tone:"info",width:o,title:"\u8BE5\u6761\u6B3E\u5C1A\u672A\u914D\u7F6E"})})})}async function Nu(e,t){await Et(ye,`${e}/api/auth/send-code`,{json:t})}async function Iu(e,t){let o=await gt(`${e}/api/auth/register`,{json:t});Ct(o);let n=zn.parse(o.data);return vo(e,ko({refresh:null,device:null},o.headers),n)}async function Lu(e,t){await Et(ye,`${e}/api/auth/forgot-password`,{json:t})}async function Mu(e,t){await Et(ye,`${e}/api/auth/reset-password`,{json:t})}import{jsx as Ou}from"react/jsx-runtime";function $u(){let e=D(),{width:t}=q(),{busy:o,error:n,fail:r,run:i}=de();return Ou(K,{trail:["\u627E\u56DE\u5BC6\u7801"],isActive:o===null,children:Ou(G,{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 ${st} \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<st){r(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${st} \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 Gs,Text as wh}from"ink";import{useState as Bu}from"react";import{Box as Du}from"ink";import{jsx as zs,jsxs as Th}from"react/jsx-runtime";var ai=e=>e.termsConfigured||e.privacyConfigured;function ci({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 Th(Du,{flexDirection:"column",children:[zs(ge,{tone:"info",width:t,title:`\u7EE7\u7EED\u524D\u8BF7\u9605\u8BFB\u5E76\u540C\u610F${r.join("\u4E0E")}`}),zs(Du,{marginTop:1,children:zs(ae,{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 gn,jsxs as Fu}from"react/jsx-runtime";function Uu(){let e=D(),{width:t}=q(),[o,n]=Bu({name:"credentials"}),[r,i]=Bu(!1),{busy:s,error:a,reset:c,fail:l,run:m}=de(),f=X([e.revision],()=>ve(e.ctx.site)),d=g=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u5DF2\u767B\u5F55\uFF1A${g}`),e.home()},p=(g,b)=>{m("\u6B63\u5728\u9A8C\u8BC1",()=>Sc(e.ctx.site,g,b),{onSuccess:T=>{if(T.status==="totp_required"){n({name:"factor",ticket:T.ticket,jar:T.jar});return}d(T.session.username)}})},y=(g,b)=>{m("\u6B63\u5728\u9A8C\u8BC1",()=>xc(e.ctx.site,g.jar,g.ticket,b,g.kind),{onSuccess:T=>d(T.username)})},h=()=>{o.name==="credentials"?e.pop():(c(),n({name:"credentials"}))};return Fu(K,{trail:o.name==="credentials"?["\u767B\u5F55\u8D26\u53F7"]:["\u767B\u5F55\u8D26\u53F7","\u4E24\u6B65\u9A8C\u8BC1"],onEscape:h,isActive:s===null,children:[o.name==="credentials"&&gn(Y,{state:f,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:g=>ai(g.legal)&&!r?gn(ci,{legal:g.legal,width:t,onAgree:()=>i(!0)}):Fu(Gs,{flexDirection:"column",children:[gn(G,{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:h,onSubmit:b=>{let T=(b.account??"").trim(),w=b.password??"";if(T===""||w===""){l("\u8BF7\u586B\u5199\u8D26\u53F7\u4E0E\u5BC6\u7801");return}p(T,w)}}),gn(Gs,{marginTop:1,children:gn(wh,{color:u.faintForeground,children:"Passkey \u767B\u5F55\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"})})]})}),o.name==="factor"&&gn(ae,{width:t,items:[{value:"totp",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",hint:"\u8F93\u5165\u9A8C\u8BC1\u5668 App \u4E2D\u663E\u793A\u7684\u52A8\u6001\u9A8C\u8BC1\u7801"},{value:"recovery-code",label:"\u6062\u590D\u7801",hint:"\u8F93\u5165\u672A\u4F7F\u7528\u8FC7\u7684\u4E00\u6B21\u6027\u6062\u590D\u7801"}],onSelect:g=>n({name:"code",ticket:o.ticket,jar:o.jar,kind:g})}),o.name==="code"&&gn(Gs,{flexDirection:"column",children:gn(G,{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:h,onSubmit:g=>{let b=(g.code??"").trim();if(b===""){l("\u8BF7\u586B\u5199\u9A8C\u8BC1\u7801");return}y(o,b)}})})]})}import{useState as kh}from"react";import{jsx as li}from"react/jsx-runtime";function ju(){let e=D(),{width:t}=q(),[o,n]=kh(!1),{busy:r,error:i,fail:s,run:a}=de(),c=X([e.revision],()=>ve(e.ctx.site));return li(K,{trail:["\u6CE8\u518C\u8D26\u53F7"],isActive:r===null,children:li(Y,{state:c,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:l=>ai(l.legal)&&!o?li(ci,{legal:l.legal,width:t,onAgree:()=>n(!0)}):li(G,{title:"\u6CE8\u518C",width:t,submitLabel:"\u6CE8\u518C",busy:r!==null,busyLabel:r??"\u6B63\u5728\u6CE8\u518C",error:i,fields:[{kind:"text",name:"username",label:"\u7528\u6237\u540D",placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D"},{kind:"text",name:"email",label:"\u90AE\u7BB1",placeholder:"\u8BF7\u8F93\u5165\u90AE\u7BB1"},{kind:"code",name:"code",label:"\u9A8C\u8BC1\u7801",placeholder:"6 \u4F4D\u6570\u5B57\u9A8C\u8BC1\u7801",emailField:"email",send:m=>Nu(e.ctx.site,{email:m,purpose:"register"})},{kind:"text",name:"password",label:"\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${st} \u4F4D`},{kind:"text",name:"invite",label:"\u9080\u8BF7\u7801",placeholder:"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801",optional:!0}],onCancel:()=>e.pop(),onSubmit:m=>{let f=(m.username??"").trim(),d=(m.email??"").trim(),p=(m.code??"").trim(),y=m.password??"",h=(m.invite??"").trim();if(f===""||f.length>Tn){s(`\u8BF7\u8F93\u5165 1 \u5230 ${Tn} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}if(d===""||p===""){s("\u8BF7\u586B\u5199\u90AE\u7BB1\u4E0E\u9A8C\u8BC1\u7801");return}if(y.length<st){s(`\u5BC6\u7801\u81F3\u5C11 ${st} \u4F4D`);return}a("\u6B63\u5728\u6CE8\u518C",()=>Iu(e.ctx.site,{username:f,email:d,password:y,code:p,...h===""?{}:{inviteCode:h}}),{onSuccess:g=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u6CE8\u518C\u6210\u529F\uFF1A${g.username}`),e.home()}})}})})})}import{Box as Ln}from"ink";import{useEffect as Fh,useRef as Uh,useState as Xs}from"react";import{z as L}from"zod";var vh=L.object({balance:L.number(),today:L.object({requests:L.number(),tokens:L.number(),cost:L.number()})}),qu=()=>O(vh,"/dashboard/summary"),Hu=["all","30d","7d"],_h=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()}),Ks=e=>O(_h,Ot("/dashboard/stats",{range:e})),Rh=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:Oa,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()}),Wu=e=>O(Sn(Rh),Ot("/logs",{...e})),Ch=L.object({quotaCost:L.number(),rpm:L.number(),tpm:L.number(),concurrency:L.number()}),zu=e=>O(Ch,Ot("/logs/stats",{...e})),Eh=L.object({id:L.number().int(),type:Ia,amount:L.number(),balanceAfter:L.number(),refType:La,refId:L.string().nullable(),createdAt:L.string()}),Gu=e=>O(Sn(Eh),Ot("/quota-ledger",{...e}));import{Box as Ah,Text as Nt}from"ink";import zo from"string-width";import{Fragment as Vu,jsx as It,jsxs as Vs}from"react/jsx-runtime";var In=1,Ph=4,Nh=1,io=8,Ih=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587"],Ku=e=>`${Number(e.slice(5,7))}\u6708${Number(e.slice(8,10))}\u65E5`;function Ju({data:e,order:t,width:o,rows:n}){let r=n-Nh,i=[];for(let P=e.start;P<=e.end;P=nn(P,1))i.push(P);let s=Math.min(Ph,Math.floor((o+In)/i.length)-In);s<1&&(s=1,i=i.slice(-Math.floor((o+In)/(1+In))));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,Pr.length).map((P,_)=>[P,_])),m=Pr.length,f=P=>Pr[P]??u.faintForeground,d=new Map(i.map((P,_)=>[P,_])),p=i.map(()=>Array.from({length:m+1},()=>0));for(let P of e.points){let _=d.get(P.day);if(_===void 0)continue;let E=p[_];if(E===void 0)continue;let v=l.get(P.model)??m;E[v]=(E[v]??0)+P.tokens}let y=p.map(P=>P.reduce((_,E)=>_+E,0)),h=Math.max(0,...y),g=r*io,b=p.map((P,_)=>{let E=Array.from({length:r},()=>null),v=y[_]??0;if(v<=0||h<=0)return E;let A=Math.max(1,Math.round(v/h*g)),R=[],N=0,H=0;P.forEach((B,ne)=>{N+=B;let F=Math.round(N/v*A);for(let Z=H;Z<F;Z+=1)R[Z]=f(ne);H=F});for(let B=0;B<r;B+=1){let ne=Math.min(io,A-B*io);if(ne<=0)break;let F=new Map;for(let I=B*io;I<B*io+ne;I+=1){let U=R[I];U!==void 0&&F.set(U,(F.get(U)??0)+1)}let Z=null,ze=0;for(let[I,U]of F)U>ze&&(Z=I,ze=U);if(Z===null)break;E[B]={color:Z,glyph:ne===io?null:Ih[ne-1]??null}}return E}),T=P=>{let _=[],E=(v,A,R)=>{let N=_[_.length-1];N!==void 0&&N.color===v&&N.glyph===A?N.width+=R:_.push({color:v,glyph:A,width:R})};return b.forEach((v,A)=>{A>0&&E(null,null,In);let R=v[P]??null;R===null?E(null,null,s):E(R.color,R.glyph,s)}),_},w=i.length*(s+In)-In,S=Ku(a),k=Ku(c),C=h>0?`\u5355\u65E5\u5CF0\u503C ${sn(h)}`:"",M=w-zo(S)-zo(k),j=C!==""&&M>=zo(C)+4,x=j?Math.floor((M-zo(C))/2):M;return Vs(Ah,{flexDirection:"column",children:[Array.from({length:r},(P,_)=>{let E=r-1-_;return It(Nt,{wrap:"truncate",children:T(E).map((v,A)=>v.color===null?It(Nt,{children:" ".repeat(v.width)},A):v.glyph===null?It(Nt,{backgroundColor:v.color,children:" ".repeat(v.width)},A):It(Nt,{color:v.color,children:v.glyph.repeat(v.width)},A))},E)}),It(Nt,{wrap:"truncate",children:M<2?It(Nt,{color:u.faintForeground,children:we(S,w)}):Vs(Vu,{children:[It(Nt,{color:u.faintForeground,children:S}),It(Nt,{children:" ".repeat(x)}),j&&Vs(Vu,{children:[It(Nt,{color:u.mutedForeground,children:C}),It(Nt,{children:" ".repeat(M-zo(C)-x)})]}),It(Nt,{color:u.faintForeground,children:k})]})})]})}import{Box as Yu,Text as jt}from"ink";import Lh from"string-width";import{jsx as Ut,jsxs as Js}from"react/jsx-runtime";var ui=3,Qt=2,Ys=10,Mh=8,Xu=e=>Math.floor((e-ui)/Qt),Qu=e=>Xu(e)>=Mh;function Oh(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=nn(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 $h(e,t){let o=t*Qt,n="",r=0,i="";for(;r<o;){let s=r%Qt===0?e[r/Qt*7]:void 0;if(s!==void 0){let a=s.day.slice(0,7);if(a!==i){i=a;let c=`${Number(s.day.slice(5,7))}\u6708`,l=Lh(c);if(r+l<=o){n+=c,r+=l;continue}}}n+=" ",r+=1}return n}var Dh={1:"\u4E00",3:"\u4E09",5:"\u4E94"};function Bh({cells:e,day:t,weeks:o}){return Js(jt,{wrap:"truncate",children:[Ut(jt,{color:u.faintForeground,children:Ie(Dh[t]??"",ui)}),Array.from({length:o},(n,r)=>{let i=e[r*7+t];return i===void 0?Ut(jt,{children:" ".repeat(Qt)},r):Ut(jt,{backgroundColor:Ar[i.level],children:" ".repeat(Qt)},r)})]})}function Zu({data:e,funFact:t,width:o}){let n=Oh(e),r=Math.ceil(n.length/7),i=Math.min(r,Xu(o)),s=n.slice((r-i)*7),a=3+Ar.length*Qt+3,c=Math.max(0,ui+i*Qt-a-2);return Js(Yu,{flexDirection:"column",children:[Ut(jt,{wrap:"truncate",color:u.faintForeground,children:" ".repeat(ui)+$h(s,i)}),Array.from({length:7},(l,m)=>Ut(Bh,{cells:s,day:m,weeks:i},m)),Ut(Yu,{marginTop:1,children:Js(jt,{wrap:"truncate",children:[Ut(jt,{color:u.mutedForeground,children:Ie(t??"",c)})," ",Ut(jt,{color:u.faintForeground,children:"\u5C11 "}),Ar.map(l=>Ut(jt,{backgroundColor:l,children:" ".repeat(Qt)},l)),Ut(jt,{color:u.faintForeground,children:" \u591A"})]})})]})}import{jsx as He,jsxs as tm}from"react/jsx-runtime";var jh={all:"\u5168\u90E8","30d":"30 \u5929","7d":"7 \u5929"},qh=1,mi=4,em=5,Hh=9;function Wh(e){let t=-1,o=0;return e.forEach((n,r)=>{n>o&&(o=n,t=r)}),t<0?"\u2014":`${t} \u70B9`}function nm(){let e=D(),{width:t}=q(),o=ie(),[n,r]=Xs("all"),[i,s]=Xs("heatmap"),[a,c]=Xs(null),l=Uh(null),m=X([n,e.revision],async()=>{let f=l.current;if(f!==null&&f.revision===e.revision){let h=await Ks(n);return{summary:f.summary,stats:h,site:f.site}}let[d,p,y]=await Promise.all([qu(),Ks(n),ve(e.ctx.site)]);return l.current={revision:e.revision,summary:d,site:y},{summary:d,stats:p,site:y}});return Fh(()=>{m.phase==="ready"&&c(oc({tokens:m.data.stats.totals.tokens,scope:"user",range:n}))},[m,n]),W(f=>{f==="r"&&e.reload(),f==="t"&&s(d=>d==="heatmap"?"chart":"heatmap")}),He(K,{hints:["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u5207\u6362\u533A\u95F4","t \u5207\u6362\u56FE\u8868","/ \u8FC7\u6EE4","r \u5237\u65B0"],children:He(Ln,{flexDirection:"column",children:He(Y,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u7528\u91CF",width:t,children:({summary:f,stats:d,site:p})=>{let y=[{label:"\u8D26\u6237\u4F59\u989D",value:ce(f.balance,p.quotaPerUsd)},{label:"\u4ECA\u65E5\u8BF7\u6C42",value:Re(f.today.requests)},{label:"\u4ECA\u65E5 Token",value:Re(f.today.tokens)},{label:"\u4ECA\u65E5\u6D88\u8017",value:ce(f.today.cost,p.quotaPerUsd)}],h=[{label:"\u8BF7\u6C42\u6570",value:Re(d.totals.requests)},{label:"Token \u603B\u91CF",value:sn(d.totals.tokens)},{label:"\u6D88\u8017",value:ce(d.totals.cost,p.quotaPerUsd)},{label:"\u6D3B\u8DC3\u5929\u6570",value:Re(d.activeDays)},{label:"\u5F53\u524D\u8FDE\u7EED",value:`${d.currentStreak} \u5929`},{label:"\u6700\u957F\u8FDE\u7EED",value:`${d.longestStreak} \u5929`},{label:"\u9AD8\u5CF0\u65F6\u6BB5",value:Wh(d.hourly)},{label:"\u5E38\u7528\u6A21\u578B",value:d.models[0]?.displayName??"\u2014"}],g=t-le,b=_=>ct+_+Xt(y.length,g)+J+ct+_+qh+_+Xt(h.length,g)+J+ct+_,T=o-b(Be)>=mi?Be:0,w=o-b(T),S=J+ct+T+em,k=i==="chart"&&d.chart.points.length>0&&w>=S+mi,C=i==="heatmap"&&Qu(g)&&w-(J+Ys)>=mi,M=C?J+Ys:0,j=k?Math.min(Hh,em+Math.floor((w-S-mi)/2)):0,x=w-M-(k?J+ct+T+j:0),P=_=>`${(d.totals.tokens>0?_/d.totals.tokens*100:0).toFixed(1)}%`;return tm(Ln,{flexDirection:"column",children:[He(re,{title:"\u6982\u89C8",width:t,gap:T,children:He(it,{width:g,tiles:y})}),He(Ln,{marginTop:1,flexDirection:"column",children:tm(re,{title:"\u533A\u95F4\u7EDF\u8BA1",width:t,gap:T,children:[He(eu,{options:Hu.map(_=>({value:_,label:jh[_]})),value:n,onChange:r}),He(Ln,{marginTop:T,children:He(it,{width:g,tiles:h})}),C&&He(Ln,{marginTop:1,flexDirection:"column",children:He(Zu,{data:d.heatmap,funFact:a,width:g})})]})}),k&&He(Ln,{marginTop:1,flexDirection:"column",children:He(re,{title:"\u7528\u91CF\u8D8B\u52BF",note:"\u67F1\u8272\u7531\u4EAE\u81F3\u6697\u5BF9\u5E94\u7528\u91CF\u524D\u4E94\u7684\u6A21\u578B\uFF0C\u7070\u8272\u4E3A\u5176\u4ED6",width:t,gap:T,children:He(Ju,{data:d.chart,order:d.models.map(_=>_.model),width:g,rows:j})})}),He(Ln,{marginTop:1,flexDirection:"column",children:He(re,{title:"\u6A21\u578B\u7528\u91CF",width:t,gap:T,children:d.models.length===0?He(ge,{tone:"info",width:g,title:"\u6682\u65E0\u7528\u91CF\u6570\u636E",detail:"\u8C03\u7528 API \u540E\u8FD9\u91CC\u4F1A\u663E\u793A\u5404\u6A21\u578B\u7684\u6BCF\u65E5 Token \u7528\u91CF"}):He(Ce,{retain:"list",items:d.models,width:g,height:x,columns:[{label:"\u6A21\u578B",shrink:!0},{label:"\u603B Token",align:"right"},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u5360\u6BD4",align:"right"}],row:_=>[_.displayName,sn(_.tokens),sn(_.inTokens),sn(_.outTokens),P(_.tokens)],searchOf:_=>_.displayName})})})]})}})})})}import{Box as so,Text as Zs}from"ink";import{useState as im}from"react";import{z as Ke}from"zod";var zh=Ke.object({id:Ke.number().int(),name:Ke.string(),description:Ke.string(),multiplier:Ke.coerce.number()}),di=()=>O(Ke.array(zh),"/groups"),Qs=Ke.object({id:Ke.number().int(),name:Ke.string(),keyPrefix:Ke.string(),keySuffix:Ke.string(),groupId:Ke.number().int().nullable(),groupName:Ke.string().nullable(),usedQuota:Ke.number(),quotaLimit:Ke.number().nullable()}),pi=()=>O(Ke.array(Qs),"/tokens"),om=e=>O(Qs.extend({token:Ke.string()}),"/tokens",{method:"POST",json:e}),fi=(e,t)=>O(Qs,`/tokens/${e}`,{method:"PATCH",json:t}),rm=e=>O(ye,`/tokens/${e}`,{method:"DELETE"}).then(()=>{});import{jsx as We,jsxs as gi}from"react/jsx-runtime";var sm={model:"",requestId:"",token:"",group:"",status:"",range:"today",since:"",until:""},am=/^\d{4}-\d{2}-\d{2}$/;function Gh(e){let t=Yi();return e.range==="today"?{since:t,until:t}:e.range==="7d"?{since:nn(t,-6),until:t}:e.range==="30d"?{since:nn(t,-29),until:t}:e.range==="custom"?{...e.since===""?{}:{since:e.since},...e.until===""?{}:{until:e.until}}:{}}function cm(e){let t=Gh(e);return{...e.model.trim()===""?{}:{model:e.model.trim()},...e.requestId.trim()===""?{}:{requestId:e.requestId.trim()},...e.token===""?{}:{token:e.token},...e.group===""?{}:{group:e.group},...e.status===""?{}:{status:e.status},...t.since===void 0?{}:{since:Xi(t.since).toISOString()},...t.until===void 0?{}:{until:Xi(nn(t.until,1)).toISOString()}}}var Kh=Ze(Di,ur,"\u5168\u90E8\u72B6\u6001"),Vh=[{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 Jh({log:e,quotaPerUsd:t,width:o}){let n=o-le,r=ur(e.status),i=Ve(r),s=e.status!=="anomaly"?null:e.totalTokens>0?"\u672C\u6B21\u8C03\u7528\u672A\u8FD4\u56DE\u7528\u91CF\u6570\u636E\uFF0C\u8D39\u7528\u6309\u8BF7\u6C42\u4E0E\u54CD\u5E94\u7684\u6587\u672C\u91CF\u4F30\u7B97":"\u672C\u6B21\u8C03\u7528\u672A\u8FD4\u56DE\u7528\u91CF\u6570\u636E\u4E14\u65E0\u6CD5\u4F30\u7B97\uFF0C\u672A\u8BA1\u8D39",a=[];e.cachedTokens>0&&a.push(["\u7F13\u5B58\u8BFB",Re(e.cachedTokens)]),e.cacheWrite5mTokens>0&&a.push(["\u7F13\u5B58\u5199 5m",Re(e.cacheWrite5mTokens)]),e.cacheWrite1hTokens>0&&a.push(["\u7F13\u5B58\u5199 1h",Re(e.cacheWrite1hTokens)]),e.firstByteMs!==null&&a.push(["\u9996\u5B57\u8282",`${vn(e.firstByteMs)} s`]);let c=[["\u8BF7\u6C42 ID",e.requestId],["\u4EE4\u724C",e.tokenName],["\u5206\u7EC4",e.groupName],["\u534F\u8BAE",sc(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 gi(re,{title:e.modelDisplayName,note:ee(e.createdAt),width:o,children:[gi(Zs,{wrap:"truncate",children:[We(Zs,{color:i===void 0?u.mutedForeground:qe[i],children:r.label}),We(Zs,{color:u.faintForeground,children:` ${De([e.stream?"\u6D41\u5F0F":"",e.model])}`})]}),We(so,{marginTop:1,children:We(it,{width:n,tiles:[{label:"\u8F93\u5165 Token",value:Re(e.promptTokens)},{label:"\u8F93\u51FA Token",value:Re(e.completionTokens)},{label:"\u6D88\u8017",value:Kn(e.quotaCost,t)},{label:"\u603B\u8017\u65F6",value:`${vn(e.latencyMs)} s`}]})}),s!==null&&We(so,{marginTop:1,children:We(ge,{tone:"warn",width:n,title:s})}),We(so,{marginTop:1,children:We(Ae,{width:n,items:[...a,...c]})})]})}function lm(){let e=D(),{width:t}=q(),o=ie(),[n,r]=im({name:"list"}),[i,s]=im(sm),{error:a,fail:c,reset:l}=de(),m=X([e.revision],async()=>{let[g,b,T]=await Promise.all([di(),pi(),ve(e.ctx.site)]);return{groups:g,tokens:b,site:T}}),f=mn([e.revision,JSON.stringify(i)],(g,b)=>Wu({page:g,pageSize:b,...cm(i)}),{retain:"page"}),d=X([e.revision,JSON.stringify(i)],()=>zu(cm(i))),p=n.name==="list";W((g,b)=>{p&&(g==="r"?e.reload():g==="f"?(l(),r({name:"filter"})):b.leftArrow?f.go(-1):b.rightArrow&&f.go(1))});let y=()=>{n.name==="list"?e.pop():(l(),r({name:"list"}))},h=JSON.stringify(i)!==JSON.stringify(sm);return We(K,{hints:p?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:y,children:We(Y,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u7B5B\u9009\u9009\u9879",width:t,children:({groups:g,tokens:b,site:T})=>{if(n.name==="filter")return We(G,{title:"\u7B5B\u9009\u65E5\u5FD7",width:t,submitLabel:"\u67E5\u8BE2",error:a,fields:[{kind:"text",name:"model",label:"\u6A21\u578B",initial:i.model,placeholder:"\u641C\u7D22\u6A21\u578B ID \u6216\u540D\u79F0"},{kind:"text",name:"requestId",label:"\u8BF7\u6C42 ID",initial:i.requestId,placeholder:"\u641C\u7D22\u8BF7\u6C42 ID"},{kind:"select",name:"token",label:"\u4EE4\u724C",options:[{value:"",label:"\u5168\u90E8\u4EE4\u724C"},...[...new Set(b.map(S=>S.name))].map(S=>({value:S,label:S}))],initial:i.token},{kind:"select",name:"group",label:"\u5206\u7EC4",options:[{value:"",label:"\u5168\u90E8\u5206\u7EC4"},...g.map(S=>({value:S.name,label:S.name}))],initial:i.group},{kind:"select",name:"status",label:"\u72B6\u6001",options:Kh,initial:i.status},{kind:"select",name:"range",label:"\u65F6\u95F4\u8303\u56F4",options:Vh,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:y,onSubmit:S=>{let k=S.range??"",C=(S.since??"").trim(),M=(S.until??"").trim();if(k==="custom"&&(C!==""&&!am.test(C)||M!==""&&!am.test(M))){c("\u65E5\u671F\u683C\u5F0F\u5E94\u4E3A YYYY-MM-DD");return}s({model:S.model??"",requestId:S.requestId??"",token:S.token??"",group:S.group??"",status:S.status??"",range:k,since:C,until:M}),f.reset(),r({name:"list"})}});if(n.name==="detail")return We(Jh,{log:n.log,quotaPerUsd:T.quotaPerUsd,width:t});let w=Xt(4,t);return gi(so,{flexDirection:"column",children:[We(so,{height:w+1,flexDirection:"column",overflow:"hidden",children:We(Y,{state:d,loading:"\u6B63\u5728\u7EDF\u8BA1\u7B5B\u9009\u7ED3\u679C",width:t,children:S=>We(it,{width:t,tiles:[{label:"\u6D88\u8017",value:ce(S.quotaCost,T.quotaPerUsd)},{label:"RPM",value:Re(S.rpm)},{label:"TPM",value:Re(S.tpm)},{label:"\u5E76\u53D1",value:Re(S.concurrency)}]})})}),We(Y,{state:f.state,loading:"\u6B63\u5728\u8BFB\u53D6\u4F7F\u7528\u65E5\u5FD7",width:t,children:S=>gi(so,{flexDirection:"column",children:[We(Ce,{retain:"list",items:S.items,width:t,height:Math.max(3,o-2-w),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:k=>[ee(k.createdAt),k.modelDisplayName,Re(k.promptTokens),Re(k.completionTokens),Kn(k.quotaCost,T.quotaPerUsd),Kt(ur(k.status))],onOpen:k=>r({name:"detail",log:k}),emptyLabel:h?"\u65E0\u5339\u914D\u7ED3\u679C":"\u6682\u65E0\u8C03\u7528\u8BB0\u5F55",emptyDescription:h?void 0:"\u901A\u8FC7\u4EE4\u724C\u8C03\u7528 API \u540E\uFF0C\u660E\u7EC6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),We(dn,{page:f.page,pages:f.pages,total:f.total,width:t})]})})]})}})})}import{Box as Go,Text as hn}from"ink";import{useState as eb}from"react";import{z as te}from"zod";var Yh=te.object({id:te.number().int(),model:te.string(),displayName:te.string(),inputPricePerMillionTokens:te.string(),outputPricePerMillionTokens:te.string(),cachedInputPricePerMillionTokens:te.string(),cacheWritePricePerMillionTokens:te.string()}),Xh=te.object({quotaPerUsd:te.number().int().positive(),cnyPerUsd:te.number(),minTopupCny:te.number(),models:te.array(Yh)});function hi(e){return Et(Xh,`${e}/api/pricing`)}var Qh=te.object({cnyPerUsd:te.number(),groups:te.array(te.object({id:te.number().int(),name:te.string(),multiplier:te.coerce.number()})),stats:te.object({requests:te.number(),errors:te.number(),latencyP50Ms:te.number().nullable(),firstByteP50Ms:te.number().nullable()}),heartbeat:te.object({bucketStartMs:te.number(),groups:te.array(te.object({id:te.number().int(),name:te.string(),minutes:te.array(te.object({requests:te.number(),errors:te.number()}))}))})});function um(e,t){return Et(Qh,`${e}/api/pricing/${t}`)}var Zh=te.object({data:te.array(te.object({id:te.string()}))});async function mm(e,t,o){return(await Et(Zh,`${e}/v1/models`,{headers:{authorization:`Bearer ${t}`},...o===void 0?{}:{timeoutMs:o}})).data.map(r=>r.id)}import{jsx as Le,jsxs as Ko}from"react/jsx-runtime";var tb=4,nb="\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",ob=1,rb=1+Be,ib=e=>e.requests===0?u.border:e.errors===0?u.success:e.errors/e.requests>=.5?u.danger:u.warning;function sb({minutes:e,width:t}){let o=e.slice(Math.max(0,e.length-t)),n=[];for(let r of o){let i=ib(r),s=n[n.length-1];s!==void 0&&s.color===i?s.count+=1:n.push({color:i,count:1})}return Le(hn,{wrap:"truncate",children:n.map((r,i)=>Le(hn,{color:r.color,children:Q.barFilled.repeat(r.count)},i))})}function ab({price:e,width:t,contentRows:o}){let n=D(),r=X([e.id,n.revision],()=>um(n.ctx.site,e.id)),i=(s,a)=>kn(String(Number(s)*a),"-");return Le(Y,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u8BE6\u60C5",width:t,children:s=>{let a=t-le,c=s.stats,l=[{label:"\u53EF\u7528\u7387",value:c.requests>0?`${((c.requests-c.errors)/c.requests*100).toFixed(1)}%`:"\u2014"},{label:"\u8C03\u7528\u6B21\u6570",value:Re(c.requests)},{label:"\u5EF6\u8FDF P50",value:c.latencyP50Ms!==null?`${vn(c.latencyP50Ms)} s`:"\u2014"},{label:"\u9996\u5B57\u8282 P50",value:c.firstByteP50Ms!==null?`${vn(c.firstByteP50Ms)} s`:"\u2014"}],m=rb+Pt+Xt(l.length,a,2)+J+Pt+ob,f=s.heartbeat.groups.length,d=o-m-tb-J-Pt,p=Math.max(0,Math.floor(d/2));p<f&&(p=Math.max(0,Math.floor((d-1)/2))),p=Math.min(f,p);let y=p>0?J+Pt+p*2+(p<f?1:0):0,h=Math.max(1,o-m-y);return Ko(Go,{flexDirection:"column",children:[Le(Go,{marginBottom:Be,children:Ko(hn,{wrap:"truncate",children:[Le(hn,{bold:!0,color:u.foreground,children:e.displayName}),Le(hn,{color:u.faintForeground,children:` ${e.model}`})]})}),Le(re,{title:"\u8FD1 24 \u5C0F\u65F6",note:"\u5168\u90E8\u5206\u7EC4\u7684\u7EFC\u5408\u8C03\u7528\u7EDF\u8BA1",width:t,children:Le(it,{width:a,tiles:l,maxPerRow:2})}),p>0&&Le(Go,{marginTop:1,flexDirection:"column",children:Ko(re,{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(g=>Ko(Go,{flexDirection:"column",children:[Le(hn,{wrap:"truncate",color:u.foreground,children:g.name}),Le(sb,{minutes:g.minutes,width:a})]},g.id)),p<f&&Le(hn,{color:u.faintForeground,children:`\u5176\u4F59 ${f-p} \u4E2A\u5206\u7EC4\u672A\u663E\u793A`})]})}),Le(Go,{marginTop:1,flexDirection:"column",children:Ko(re,{title:"\u5206\u7EC4\u4EF7\u683C",width:t,children:[Le(hn,{wrap:"truncate",color:u.mutedForeground,children:nb}),s.groups.length===0?Le(ge,{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"}):Le(Ce,{items:s.groups,width:a,height:h,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:g=>[g.name,`\xD7${g.multiplier}`,`\xA5${(s.cnyPerUsd*g.multiplier).toFixed(2)}`,i(e.inputPricePerMillionTokens,g.multiplier),i(e.outputPricePerMillionTokens,g.multiplier),i(e.cachedInputPricePerMillionTokens,g.multiplier),i(e.cacheWritePricePerMillionTokens,g.multiplier)]})]})})]})}})}function dm(){let e=D(),{width:t}=q(),o=ie(),[n,r]=eb({name:"list"}),i=X([e.revision],async()=>(await hi(e.ctx.site)).models);W(a=>{a==="r"&&e.reload()});let s=()=>{n.name==="list"?e.pop():r({name:"list"})};return Le(K,{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:Le(Y,{state:i,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u5B9A\u4EF7",width:t,children:a=>a.length===0?Le(ge,{tone:"info",width:t,title:"\u6682\u65E0\u6A21\u578B"}):n.name==="detail"?Le(ab,{price:n.price,width:t,contentRows:o}):Le(Ce,{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,kn(c.inputPricePerMillionTokens,"-"),kn(c.outputPricePerMillionTokens,"-"),kn(c.cachedInputPricePerMillionTokens,"-"),kn(c.cacheWritePricePerMillionTokens,"-")],searchOf:c=>`${c.displayName} ${c.model}`,onOpen:c=>r({name:"detail",price:c}),emptyLabel:"\u65E0\u5339\u914D\u7ED3\u679C"})})})}import{Box as Mn,Text as xb}from"ink";import{useState as Si}from"react";function pm(e,t){let o=e.line??t.apiLines[0];if(o===void 0)throw new $("\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 fm(e,t){let o=await ve(e.site);return mm(pm(_n(),o).url,t)}async function gm(e,t,o,n){let r=await ve(e.site),i=pm(_n(),r).url;t.apply({siteName:r.siteName,baseUrl:t.relayUrl(i),apiKey:o,model:t.requiresModel?n??null:null},t.resolveDir())}import{homedir as Tm}from"os";import{join as yi,resolve as cb}from"path";function bi(e,t){let o=e[t];return typeof o!="object"||o===null||Array.isArray(o)?null:o}function Vo(e,t){let o={...tr(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&&bi(o,i)===null)throw new $(`${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?{}:{...bi(o,i)??{}};c[s]=r,o[i]=c}nr(e,o,384)}function hm(e,t){let o=tr(e);if(o===null)return null;let n=t.length===1?o[t[0]]:bi(o,t[0])?.[t[1]];return typeof n=="string"?n:null}function bm(e,t){let o=tr(e);if(o===null)return!1;if(t.length===1)return t[0]in o;let n=bi(o,t[0]);return n!==null&&t[1]in n}var ym=["env","ANTHROPIC_BASE_URL"],lb=["env","ANTHROPIC_AUTH_TOKEN"],Sm=["hasCompletedOnboarding"],ea=e=>yi(e.dir,"settings.json"),xm=e=>e.custom?yi(e.dir,".claude.json"):yi(Tm(),".claude.json"),wm={id:"claude-code",label:"Claude Code",requiresModel:!1,resolveDir(){let e=process.env.CLAUDE_CONFIG_DIR;return e?{dir:cb(e),custom:!0}:{dir:yi(Tm(),".claude"),custom:!1}},relayUrl:e=>e,configPaths:e=>[ea(e),xm(e)],read(e){return{baseUrl:hm(ea(e),ym),model:null}},apply(e,t){Vo(ea(t),[[ym,e.baseUrl],[lb,e.apiKey]]);let o=xm(t);bm(o,Sm)||Vo(o,[[Sm,!0]])}};import{homedir as ub}from"os";import{join as ra,resolve as mb}from"path";import{parse as db,patch as pb}from"@decimalturn/toml-patch";import{parse as fb}from"smol-toml";var gb=["OPENAI_API_KEY"],km="model_provider",ta="model",na=e=>ra(e.dir,"config.toml"),vm=e=>ra(e.dir,"auth.json");function oa(e,t){try{return fb(e,{integersAsBigInt:"asNeeded"})}catch(o){throw new $(`${t} \u4E0D\u662F\u5408\u6CD5 TOML\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`,{cause:o})}}function hb(e,t){let o=na(t);if(e.model===null)throw new $("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=Hn(o)??"";n!==""&&oa(n,o);let r=e.siteName.toLowerCase(),i=db(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[km]=r,i[ta]=e.model;let a=pb(n,i,{inlineTableStart:2}),c=oa(a,o);if(c[km]!==r||c[ta]!==e.model||c.model_providers?.[r]?.base_url!==e.baseUrl)throw new $(`\u65E0\u6CD5\u5B89\u5168\u6539\u5199 ${o}\uFF0C\u5176\u7ED3\u6784\u8D85\u51FA\u9884\u671F\uFF0C\u8BF7\u624B\u5DE5\u914D\u7F6E\u8BE5\u6587\u4EF6`);Pi(o,a,384)}var _m={id:"codex",label:"Codex",requiresModel:!0,resolveDir(){let e=process.env.CODEX_HOME;return e?{dir:mb(e),custom:!0}:{dir:ra(ub(),".codex"),custom:!1}},relayUrl:e=>`${e}/v1`,configPaths:e=>[na(e),vm(e)],read(e){let t=na(e),o=Hn(t),n=o===null?null:oa(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?.[ta])}},apply(e,t){hb(e,t),Vo(vm(t),[[gb,e.apiKey]])}};var Rm=[wm,_m];var bb=6e3,yb=2,Cm=e=>gt(`${e.url}/api/site-config`,{timeoutMs:bb});async function Sb(e){try{await Cm(e);let t=Number.POSITIVE_INFINITY;for(let o=0;o<yb;o+=1){let n=Date.now();await Cm(e),t=Math.min(t,Date.now()-n)}return{line:e,latencyMs:t}}catch{return{line:e,latencyMs:null}}}async function Em(e){let t=[];for(let o of e)t.push(await Sb(o));return t}import{jsx as Se,jsxs as xi}from"react/jsx-runtime";var Tb=10,wb=3,Am=4,Lm=e=>1+Math.max(1,Math.min(e,Am))+(e>Am?1:0);function Pm(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 Nm=e=>e.map(t=>({value:String(t.id),label:`${t.name} \xD7${t.multiplier}`})),Im=(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 kb({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(re,{title:"API \u63A5\u5165\u5730\u5740",note:o===void 0?void 0:`\u5F53\u524D ${o.name}`,width:n,children:Se(Ce,{retain:"lines",items:e,width:n-le,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 Mm(){let e=D(),{width:t}=q(),o=ie(),[n,r]=Si({name:"list"}),[i,s]=Si(!1),[a,c]=Si(()=>_n().line),[l,m]=Si(0),{busy:f,error:d,reset:p,fail:y,run:h}=de(),g=X([e.revision],async()=>{let[R,N,H]=await Promise.all([pi(),di(),ve(e.ctx.site)]);return{tokens:R,groups:N,site:H}}),b=g.phase==="ready"?g.data.site.apiLines:[],T=X([l,b.map(R=>R.url).join("|")],()=>Em(b)),w=f!==null,S=n.name==="list"&&!w,k=R=>{r({name:"list"}),e.reload(),e.toast("ok",R)};W(R=>{if(R==="r"){m(N=>N+1),e.reload();return}i||(R==="n"?r({name:"create"}):R==="l"&&b.length>0&&s(!0))},S);let C=R=>{yr(N=>{N.line={name:R.name,url:R.url}}),c({name:R.name,url:R.url}),s(!1),e.toast("ok",`\u5DF2\u9009\u7528\u7EBF\u8DEF ${R.name}\uFF0C\u65B0\u5EFA\u4EE4\u724C\u5E76\u5199\u5165\u914D\u7F6E\u540E\u751F\u6548`)},M=(R,N,H)=>{h("\u6B63\u5728\u521B\u5EFA\u4EE4\u724C",()=>om({name:R,groupId:N,quotaLimit:H}),{onSuccess:B=>{e.reload(),r({name:"created",token:B,secret:B.token})}})},j=R=>{h("\u6B63\u5728\u5220\u9664\u4EE4\u724C",()=>rm(R.id),{onSuccess:()=>k("\u4EE4\u724C\u5DF2\u5220\u9664")})},x=(R,N)=>{h("\u6B63\u5728\u8BFB\u53D6\u5BA2\u6237\u7AEF\u914D\u7F6E",async()=>Rm.map(H=>{let B=H.resolveDir(),ne=H.read(B);return{client:H,configured:ne.baseUrl!==null,paths:H.configPaths(B),model:ne.model}}),{failToast:!0,onSuccess:H=>r({name:"apply-pick",token:R,secret:N,targets:H})})},P=(R,N,H)=>{h("\u6B63\u5728\u5199\u5165",()=>gm(e.ctx,R,N,H),{failToast:!0,onSuccess:()=>{r({name:"list"}),e.toast("ok",De([`\u5DF2\u5199\u5165 ${R.label}`,H]))}})},_=(R,N)=>{let H=R.targets.find(B=>B.client.id===N);if(H!==void 0){if(!H.client.requiresModel){P(H.client,R.secret);return}h("\u6B63\u5728\u8BFB\u53D6\u53EF\u8DEF\u7531\u7684\u6A21\u578B",async()=>{let B=await fm(e.ctx,R.secret);if(B.length===0)throw new $("\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 B},{failToast:!0,onSuccess:B=>r({name:"apply-model",token:R.token,secret:R.secret,targets:R.targets,needs:H,models:B})})}},E=(R,N)=>{p(),r(R==="rename"?{name:"rename",token:N}:R==="regroup"?{name:"regroup",token:N}:R==="relimit"?{name:"relimit",token:N}:{name:"confirm-delete",token:N})},v=()=>{if(n.name==="list"){i?s(!1):e.pop();return}if(p(),n.name==="apply-pick"){r({name:"created",token:n.token,secret:n.secret});return}if(n.name==="apply-model"){r({name:"apply-pick",token:n.token,secret:n.secret,targets:n.targets});return}r({name:"list"})},A=()=>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(K,{hints:A(),onEscape:v,children:xi(Mn,{flexDirection:"column",children:[f!==null&&Se(tt,{label:f}),n.name==="created"&&!w&&xi(Mn,{flexDirection:"column",children:[Se(ge,{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(Mn,{marginTop:1,children:Se(xb,{color:u.accent,children:n.secret})}),Se(Mn,{marginTop:1,children:Se(ae,{width:t,items:[{value:"apply",label:"\u5199\u5165\u914D\u7F6E"},{value:"back",label:"\u6211\u5DF2\u4FDD\u5B58"}],onSelect:R=>{R==="back"?r({name:"list"}):x(n.token,n.secret)}})})]}),n.name==="apply-pick"&&!w&&Se(re,{title:"\u5199\u5165\u914D\u7F6E",note:n.token.name,width:t,children:Se(ae,{width:t-le,height:o-Pt,retain:"apply",items:n.targets.map(R=>({value:R.client.id,label:R.client.label,badge:R.configured?"\u5DF2\u914D\u7F6E":"\u672A\u914D\u7F6E",badgeTone:R.configured?"accent":void 0,hint:R.paths.join(" ")})),onSelect:R=>_(n,R)})}),n.name==="apply-model"&&!w&&Se(G,{title:`${n.needs.client.label} \u9ED8\u8BA4\u6A21\u578B`,width:t,submitLabel:"\u5199\u5165",error:d,fields:[{kind:"select",name:"model",label:"\u6A21\u578B",options:n.models.map(R=>({value:R,label:R})),initial:n.needs.model!==null&&n.models.includes(n.needs.model)?n.needs.model:n.models[0],hint:`${n.needs.client.label} \u7684\u914D\u7F6E\u91CC\u5FC5\u987B\u5199\u6B7B\u4E00\u4E2A\u6A21\u578B`}],onCancel:v,onSubmit:R=>{let N=R.model;if(N===void 0||N===""){y("\u8BF7\u9009\u62E9\u4E00\u4E2A\u6A21\u578B");return}P(n.needs.client,n.secret,N)}})]})}):Se(K,{hints:A(),onEscape:v,children:Se(Y,{state:g,loading:"\u6B63\u5728\u8BFB\u53D6\u4EE4\u724C",width:t,children:({tokens:R,groups:N,site:H})=>{let B=J+Pt+Lm(H.apiLines.length),ne=Math.max(wb,o-(n.name==="list"?B:Tb));return xi(Mn,{flexDirection:"column",children:[Se(Mn,{flexDirection:"column",marginBottom:J,children:Se(Ce,{retain:"list",items:R,width:t,height:ne,isActive:S&&!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:F=>{let Z=ce(F.usedQuota,H.quotaPerUsd);return[F.name,F.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664",F.quotaLimit!==null&&F.usedQuota>=F.quotaLimit?{text:Z,tone:"danger"}:Z,F.quotaLimit===null?"\u4E0D\u9650":ce(F.quotaLimit,H.quotaPerUsd),gr(F.keyPrefix,F.keySuffix)]},searchOf:F=>`${F.name} ${F.groupName??""}`,onOpen:F=>r({name:"actions",token:F}),emptyLabel:"\u6682\u65E0\u4EE4\u724C",emptyDescription:"\u521B\u5EFA\u4E00\u4E2A\u4EE4\u724C\u5373\u53EF\u5F00\u59CB\u8C03\u7528\u4E2D\u8F6C API"})}),f!==null&&(n.name==="list"||n.name==="actions"||n.name==="confirm-delete")&&Se(tt,{label:f}),n.name==="list"&&Se(kb,{lines:H.apiLines,measured:T.phase==="ready"?T.data:null,effective:a??H.apiLines[0],width:t,isActive:S&&i,onPick:C}),n.name==="actions"&&!w&&xi(re,{title:n.token.name,width:t,children:[Se(Ae,{width:t-le,items:[["\u5206\u7EC4",n.token.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664"],["\u5DF2\u6D88\u8D39",ce(n.token.usedQuota,H.quotaPerUsd)],["\u8D39\u7528\u9650\u5236",n.token.quotaLimit===null?"\u4E0D\u9650":ce(n.token.quotaLimit,H.quotaPerUsd)],["\u5BC6\u94A5",gr(n.token.keyPrefix,n.token.keySuffix)]]}),Se(Mn,{marginTop:1,children:Se(ae,{width:t-le,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":ce(n.token.quotaLimit,H.quotaPerUsd)},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:F=>E(F,n.token)})})]}),n.name==="create"&&Se(G,{title:"\u521B\u5EFA\u4EE4\u724C",width:t,submitLabel:"\u521B\u5EFA",error:d,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:Nm(N),initial:String(N[0]?.id??""),hint:F=>Im(N,F)},{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:F=>{let Z=(F.name??"").trim();if(Z===""){y("\u8BF7\u586B\u5199\u4EE4\u724C\u540D\u79F0");return}let ze=N.find(U=>String(U.id)===F.group);if(ze===void 0){y("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}let I=Pm(F.limit??"",H.quotaPerUsd);if(I==="invalid"){y("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}M(Z,ze.id,I)}}),n.name==="rename"&&Se(G,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:d,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:F=>{let Z=(F.name??"").trim();if(Z===""){y("\u8BF7\u586B\u5199\u4EE4\u724C\u540D\u79F0");return}h("\u6B63\u5728\u4FDD\u5B58",()=>fi(n.token.id,{name:Z}),{onSuccess:()=>k("\u5DF2\u4FDD\u5B58")})}}),n.name==="regroup"&&Se(G,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:d,busy:w,busyLabel:"\u6B63\u5728\u4FDD\u5B58",fields:[{kind:"select",name:"group",label:"\u5206\u7EC4",options:Nm(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":F=>Im(N,F)}],onCancel:v,onSubmit:F=>{let Z=N.find(ze=>String(ze.id)===F.group);if(Z===void 0){y("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}h("\u6B63\u5728\u4FDD\u5B58",()=>fi(n.token.id,{groupId:Z.id}),{onSuccess:()=>k("\u5DF2\u4FDD\u5B58")})}}),n.name==="relimit"&&Se(G,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:d,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 ${ce(n.token.usedQuota,H.quotaPerUsd)}\uFF0C\u8FBE\u5230\u8D39\u7528\u4E0A\u9650\u540E\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD`,optional:!0}],onCancel:v,onSubmit:F=>{let Z=Pm(F.limit??"",H.quotaPerUsd);if(Z==="invalid"){y("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}h("\u6B63\u5728\u4FDD\u5B58",()=>fi(n.token.id,{quotaLimit:Z}),{onSuccess:()=>k("\u5DF2\u4FDD\u5B58")})}}),n.name==="confirm-delete"&&!w&&Se(Ge,{width:t,title:"\u5220\u9664\u4EE4\u724C",detail:`\u5220\u9664\u300C${n.token.name}\u300D\u540E\u8BE5\u4EE4\u724C\u7ACB\u5373\u5931\u6548\uFF0C\u4F7F\u7528\u5B83\u7684\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD`,confirmLabel:"\u5220\u9664",error:d,onConfirm:()=>j(n.token),onCancel:v})]})}})})}import{Box as ia}from"ink";import{jsx as Lt,jsxs as vb}from"react/jsx-runtime";var Om=[["\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"]],$m=[["\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 Bm({width:e,height:t}){let o=e-le,n=[["\u7248\u672C",`${dt} v${pt}`],["\u672C\u5730\u5B58\u50A8",Ht()]],r=[Om,$m,Dm,n],s=(a=>r.reduce((c,l)=>c+ct+a+uu(l.length,o),J*(r.length-1)))(Be)<=t?Be:0;return vb(Ic,{height:t,children:[Lt(re,{title:"\u901A\u7528",width:e,gap:s,children:Lt(Ae,{items:Om,width:o})}),Lt(ia,{marginTop:J,flexDirection:"column",children:Lt(re,{title:"\u9F20\u6807",width:e,gap:s,children:Lt(Ae,{items:$m,width:o})})}),Lt(ia,{marginTop:J,flexDirection:"column",children:Lt(re,{title:"\u6587\u672C\u8F93\u5165",width:e,gap:s,children:Lt(Ae,{items:Dm,width:o})})}),Lt(ia,{marginTop:J,flexDirection:"column",children:Lt(re,{title:"\u5173\u4E8E",width:e,gap:s,children:Lt(Ae,{items:n,width:o})})})]})}import{jsx as sa}from"react/jsx-runtime";function Fm(){let e=D(),{width:t}=q(),o=ie();return an(e.pop),sa(An,{header:sa(zr,{trail:["CodeFlow","\u952E\u4F4D\u5E2E\u52A9"],width:t,onBack:e.pop,isActive:!0}),hints:["Esc \u8FD4\u56DE"],children:sa(Bm,{width:t,height:o})})}import{Box as Um,Text as _b}from"ink";import{jsx as Jo,jsxs as Rb}from"react/jsx-runtime";var jm=[{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 qm(){let e=D(),{width:t}=q(),o=Bo(0),n=J+1+J+jm.length,r=jr(t)&&o-Ur>=n;return Rb(An,{header:r?Jo(qr,{width:t}):null,hints:["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","? \u5E2E\u52A9","q \u9000\u51FA"],children:[Jo(Um,{marginTop:1,children:Jo(_b,{color:u.mutedForeground,wrap:"truncate",children:"\u767B\u5F55\u540E\u5373\u53EF\u521B\u5EFA\u4EE4\u724C\u3001\u5199\u5165\u914D\u7F6E\u5E76\u67E5\u770B\u7528\u91CF"})}),Jo(Um,{marginTop:1,children:Jo(ae,{items:jm,width:t,retain:"menu",onSelect:i=>e.push(i)})})]})}import{Box as Ti,Text as On}from"ink";import{useState as Wm}from"react";import{z as Ye}from"zod";var Cb=Ye.object({inviteCode:Ye.string(),invitedCount:Ye.number(),totalReward:Ye.number(),rewards:Ye.object({firstInviterPercent:Ye.number(),firstInviteePercent:Ye.number(),subsequentInviterPercent:Ye.number()}),items:Ye.array(Ye.object({id:Ye.number().int(),rewardType:Ma,rewardQuota:Ye.number(),rewardQuotaReversed:Ye.number(),inviterUsername:Ye.string(),inviteeUsername:Ye.string(),createdAt:Ye.string()}))}),Hm=()=>O(Cb,"/invite");import{jsx as Qe,jsxs as wi}from"react/jsx-runtime";var Eb=Ze($i,mr,"\u5168\u90E8\u7C7B\u578B"),zm=3;function Ab(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 Gm(){let e=D(),{width:t}=q(),o=ie(),[n,r]=Wm("main"),[i,s]=Wm(""),a=X([e.revision],async()=>{let[l,m]=await Promise.all([Hm(),ve(e.ctx.site)]);return{invite:l,site:m}});W(l=>{n==="main"&&(l==="r"?e.reload():l==="f"&&r("filter"))});let c=()=>{n==="main"?e.pop():r("main")};return Qe(K,{hints:n==="main"?["\u2191\u2193 \u6EDA\u52A8","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:c,children:Qe(Y,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u9080\u8BF7\u4FE1\u606F",width:t,children:({invite:l,site:m})=>{if(n==="filter")return Qe(G,{title:"\u7B5B\u9009\u5956\u52B1\u8BB0\u5F55",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"type",label:"\u7C7B\u578B",options:Eb,initial:i}],onCancel:c,onSubmit:b=>{s(b.type??""),r("main")}});let f=t-le,d=Ab(l.rewards),p=i===""?l.items:l.items.filter(b=>b.rewardType===i),y=b=>Xt(2,t)+J+ct+b+2+J+ct+b+d.length+J+ct+b,h=o-y(Be)>=zm?Be:0,g=Math.max(zm,o-y(h));return wi(Ti,{flexDirection:"column",children:[Qe(it,{width:t,tiles:[{label:"\u5DF2\u9080\u8BF7\u4EBA\u6570",value:Re(l.invitedCount)},{label:"\u7D2F\u8BA1\u5956\u52B1\u989D\u5EA6",value:ce(l.totalReward,m.quotaPerUsd)}]}),Qe(Ti,{marginTop:1,flexDirection:"column",children:wi(re,{title:"\u6211\u7684\u9080\u8BF7",width:t,gap:h,children:[wi(On,{wrap:"truncate",children:[Qe(On,{color:u.mutedForeground,children:"\u6211\u7684\u9080\u8BF7\u7801 "}),Qe(On,{color:u.accent,children:l.inviteCode})]}),wi(On,{wrap:"truncate",children:[Qe(On,{color:u.mutedForeground,children:"\u9080\u8BF7\u94FE\u63A5 "}),Qe(On,{color:u.accent,children:`${e.ctx.site}/register?invite=${l.inviteCode}`})]})]})}),Qe(Ti,{marginTop:1,flexDirection:"column",children:Qe(re,{title:"\u5956\u52B1\u89C4\u5219",width:t,gap:h,children:d.map((b,T)=>Qe(On,{wrap:"truncate",color:u.mutedForeground,children:b},T))})}),Qe(Ti,{marginTop:1,flexDirection:"column",children:Qe(re,{title:"\u9080\u8BF7\u5956\u52B1\u8BB0\u5F55",note:i===""?void 0:mr(i),width:t,gap:h,children:Qe(Ce,{retain:"list",items:p,width:f,height:g,columns:[{label:"\u65F6\u95F4"},{label:"\u597D\u53CB",shrink:!0},{label:"\u5956\u52B1\u7C7B\u578B"},{label:"\u5956\u52B1\u989D\u5EA6",align:"right"}],row:b=>{let T=b.rewardQuota-b.rewardQuotaReversed,w=b.rewardQuotaReversed>0?`\u9000\u6B3E\u51B2\u51CF -${ce(b.rewardQuotaReversed,m.quotaPerUsd)}`:"";return[ee(b.createdAt),b.rewardType==="first_invitee"?b.inviterUsername:b.inviteeUsername,mr(b.rewardType),De([ce(T,m.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 rd}from"react";import{z as be}from"zod";var Pb=12e4,Nb=be.object({id:be.number().int(),orderNo:be.string(),amountCny:be.number().int()}),Km=()=>O(be.array(Nb),"/invoices/eligible-orders"),aa=be.object({id:be.number().int(),type:Mi,title:be.string(),taxId:be.string().nullable(),invoiceNo:be.string().nullable(),remark:be.string().nullable(),amountCny:be.number().int(),status:Pa,rejectReason:be.string().nullable(),rejectedAt:be.string().nullable(),issuedAt:be.string().nullable(),createdAt:be.string()}),Ib=aa.extend({hasFile:be.boolean(),orders:be.array(be.object({orderNo:be.string(),amountCny:be.number().int()}))}),Vm=()=>O(be.array(aa),"/invoices"),Jm=e=>O(Ib,`/invoices/${e}`),Ym=e=>O(aa,"/invoices",{method:"POST",json:e}),Xm=e=>Sr(`/invoices/${e}/file`,{timeoutMs:Pb}),ca=be.object({id:be.number().int(),type:Mi,title:be.string(),taxId:be.string().nullable()}),ki=()=>O(be.array(ca),"/invoices/profiles"),Qm=e=>O(ca,"/invoices/profiles",{method:"POST",json:e}),Zm=(e,t)=>O(ca,`/invoices/profiles/${e}`,{method:"PATCH",json:t}),ed=e=>O(ye,`/invoices/profiles/${e}`,{method:"DELETE"}).then(()=>{});import{Box as Lb,Text as $n,useInput as Mb}from"ink";import{useEffect as Ob,useState as $b}from"react";import{jsx as Yo,jsxs as la}from"react/jsx-runtime";var Db="[x]",Bb="[ ]",td=4,vi=2,nd=2;function od({items:e,columns:t,row:o,selected:n,onToggle:r,onToggleAll:i,onSubmit:s,width:a,height:c,emptyLabel:l}){let[m,f]=$b(0),d=Math.max(1,c-1),p=e.length>d?Math.max(1,d-1):d;Ob(()=>{f(S=>Math.min(S,Math.max(0,e.length-1)))},[e.length]);let y=hs(m,p),h=S=>{e.length!==0&&f(k=>(k+S+e.length)%e.length)};Mb((S,k)=>{if(k.upArrow){h(-1);return}if(k.downArrow){h(1);return}if(k.return){s();return}S===" "&&e.length>0&&r(m)}),W(S=>{if(S==="k"){h(-1);return}if(S==="j"){h(1);return}S==="a"&&i()});let g=S=>{let k=y+S-1;return k>=0&&k<e.length?k:null},b=je({onWheel:h,onClick:({row:S})=>{let k=g(S);k!==null&&(f(k),r(k))},onHover:({row:S})=>{let k=g(S);k!==null&&f(k)}}),T=Cs(t,e.map(S=>o(S)),a-vi-td),w=e.slice(y,y+p);return la(Lb,{ref:b,flexDirection:"column",children:[la($n,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(vi+td),t.map((S,k)=>S.align==="right"?cn(S.label,T[k]??0):Ie(S.label,T[k]??0)).join(" ".repeat(nd))]}),e.length===0?Yo($n,{color:u.faintForeground,children:`${" ".repeat(vi)}${l}`}):w.map((S,k)=>{let C=y+k,M=C===m,j=n.has(C),x=M?u.accent:u.foreground,P=o(S);return la($n,{wrap:"truncate",children:[Yo($n,{color:u.accent,children:M?`${Q.cursor} `:" "}),Yo($n,{color:j?u.accent:x,bold:M,children:`${j?Db:Bb} `}),t.map((_,E)=>{let v=_.align==="right"?cn(P[E]??"",T[E]??0):Ie(P[E]??"",T[E]??0);return Yo($n,{color:x,bold:M,children:E>0?`${" ".repeat(nd)}${v}`:v},_.label)})]},C)}),(y>0||y+p<e.length)&&Yo($n,{color:u.faintForeground,children:`${" ".repeat(vi)}${y+1}-${Math.min(y+p,e.length)} / ${e.length}`})]})}import{jsx as ao}from"react/jsx-runtime";function id(){let e=D(),{width:t}=q(),o=ie(),[n,r]=rd({name:"pick"}),[i,s]=rd(new Set),{busy:a,error:c,reset:l,run:m}=de(),f=X([e.revision],async()=>{let[y,h]=await Promise.all([Km(),ki()]);return{orders:y,profiles:h}});W(y=>{n.name==="pick"&&y==="r"&&e.reload()});let d=()=>{n.name==="pick"?e.pop():n.name==="preset"?r({name:"pick"}):(l(),r({name:"preset"}))},p=(y,h,g)=>{let b=(g.remark??"").trim(),T=y.filter(w=>i.has(w.id)).map(w=>w.id);m("\u6B63\u5728\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7",()=>Ym({orderIds:T,type:h.type,title:h.title,taxId:h.taxId,remark:b===""?null:b}),{onSuccess:()=>{e.toast("ok","\u5DF2\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7"),e.pop()}})};return ao(K,{trail:["\u53D1\u7968\u7BA1\u7406","\u7533\u8BF7\u5F00\u7968"],hints:n.name==="pick"?["\u2191\u2193 \u79FB\u52A8","Space \u52FE\u9009","a \u5168\u9009","Enter \u4E0B\u4E00\u6B65","r \u5237\u65B0"]:[],onEscape:d,children:ao(Y,{state:f,loading:"\u6B63\u5728\u8BFB\u53D6\u53EF\u5F00\u7968\u8BA2\u5355",width:t,children:({orders:y,profiles:h})=>{if(n.name==="pick")return y.length===0?ao(ge,{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"}):ao(od,{items:y,width:t,height:o,columns:[{label:"\u8BA2\u5355\u53F7",shrink:!0},{label:"\u91D1\u989D",align:"right"}],row:g=>[g.orderNo,he(g.amountCny)],selected:new Set(y.flatMap((g,b)=>i.has(g.id)?[b]:[])),onToggle:g=>{let b=y[g]?.id;b!==void 0&&s(T=>{let w=new Set(T);return w.has(b)?w.delete(b):w.add(b),w})},onToggleAll:()=>s(g=>y.every(b=>g.has(b.id))?new Set:new Set(y.map(b=>b.id))),onSubmit:()=>{if(!y.some(g=>i.has(g.id))){e.toast("warn","\u8BF7\u5148\u52FE\u9009\u8981\u5F00\u7968\u7684\u8BA2\u5355");return}if(h.length===0){e.toast("warn","\u6682\u65E0\u5E38\u7528\u5F00\u7968\u4FE1\u606F\uFF0C\u8FD4\u56DE\u540E\u6309 p \u65B0\u589E");return}r({name:"preset"})},emptyLabel:"\u6682\u65E0\u53EF\u5F00\u7968\u8BA2\u5355"});if(n.name==="preset"){let g=[{heading:"\u5E38\u7528\u4FE1\u606F"},...h.map(b=>({value:b,label:`${wn(b.type)} \xB7 ${b.title}`,hint:b.taxId??void 0}))];return ao(ae,{items:g,width:t,height:o,onSelect:b=>r({name:"remark",profile:b})})}return ao(G,{title:"\u7533\u8BF7\u5F00\u7968 \u2014 \u5907\u6CE8",width:t,submitLabel:"\u63D0\u4EA4\u7533\u8BF7",busy:a!==null,busyLabel:a??"\u6B63\u5728\u63D0\u4EA4",error:c,fields:[{kind:"textarea",name:"remark",label:"\u5907\u6CE8",rows:2,maxLength:200,placeholder:"\u5C55\u793A\u5728\u53D1\u7968\u7968\u9762\u5907\u6CE8\u680F\u7684\u5185\u5BB9",optional:!0}],onCancel:d,onSubmit:g=>p(y,n.profile,g)})}})})}import{Box as ua}from"ink";import{useState as Fb}from"react";function sd(e,t){let o=e.type??"general",n=(e.title??"").trim(),r=(e.taxId??"").trim();return n===""?(t("\u8BF7\u8F93\u5165\u62AC\u5934"),null):o==="special"&&r===""?(t("\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968\u9700\u586B\u5199\u7A0E\u53F7"),null):{type:o,title:n,taxId:r===""?null:r}}var ad=e=>[{kind:"select",name:"type",label:"\u7C7B\u578B",options:[{value:"general",label:To("general")},{value:"special",label:To("special")}],initial:e?.type??"general"},{kind:"text",name:"title",label:"\u62AC\u5934",initial:e?.title??"",placeholder:"\u4E2A\u4EBA\u6216\u5355\u4F4D\u540D\u79F0"},{kind:"text",name:"taxId",label:"\u7A0E\u53F7",initial:e?.taxId??"",placeholder:"\u7EB3\u7A0E\u4EBA\u8BC6\u522B\u53F7",optional:t=>t.type!=="special"}];import{jsx as Zt,jsxs as cd}from"react/jsx-runtime";var Ub=8,jb=3;function ld(){let e=D(),{width:t}=q(),o=ie(),[n,r]=Fb({name:"list"}),{busy:i,error:s,reset:a,fail:c,run:l}=de(),m=X([e.revision],ki),f=i!==null,d=n.name==="list"&&!f;W(y=>{y==="r"?e.reload():y==="n"&&r({name:"create"})},d);let p=()=>{n.name==="list"?e.pop():(a(),r({name:"list"}))};return Zt(K,{trail:["\u53D1\u7968\u7BA1\u7406","\u5E38\u7528\u4FE1\u606F"],hints:d?["\u2191\u2193 \u79FB\u52A8","Enter \u64CD\u4F5C","n \u65B0\u5EFA","r \u5237\u65B0"]:[],onEscape:p,children:Zt(Y,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u5E38\u7528\u5F00\u7968\u4FE1\u606F",width:t,children:y=>{let h=n.name==="list"?o:Math.max(jb,o-Ub);return cd(ua,{flexDirection:"column",children:[Zt(ua,{marginBottom:n.name==="list"?0:1,children:Zt(Ce,{retain:"list",items:y,width:t,height:h,isActive:d,columns:[{label:"\u7C7B\u578B"},{label:"\u62AC\u5934",shrink:!0},{label:"\u7A0E\u53F7"}],row:g=>[wn(g.type),g.title,g.taxId??"\u2014"],onOpen:g=>r({name:"actions",profile:g}),emptyLabel:"\u6682\u65E0\u5E38\u7528\u5F00\u7968\u4FE1\u606F",emptyDescription:"\u6309 n \u4FDD\u5B58\u4E00\u6761\u5E38\u7528\u5F00\u7968\u4FE1\u606F"})}),n.name==="actions"&&!f&&cd(re,{title:n.profile.title,width:t,children:[Zt(Ae,{width:t-le,items:[["\u7C7B\u578B",To(n.profile.type)],["\u7A0E\u53F7",n.profile.taxId??"\u2014"]]}),Zt(ua,{marginTop:1,children:Zt(ae,{width:t-le,items:[{value:"edit",label:"\u7F16\u8F91"},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:g=>{a(),r(g==="edit"?{name:"edit",profile:n.profile}:{name:"confirm-delete",profile:n.profile})}})})]}),(n.name==="create"||n.name==="edit")&&Zt(G,{title:n.name==="create"?"\u65B0\u589E\u5E38\u7528\u4FE1\u606F":`\u7F16\u8F91\u5E38\u7528\u4FE1\u606F \u2014 ${n.profile.title}`,width:t,submitLabel:"\u4FDD\u5B58",busy:f,busyLabel:i??"\u6B63\u5728\u4FDD\u5B58",error:s,fields:ad(n.name==="edit"?n.profile:null),onCancel:p,onSubmit:g=>{let b=sd(g,c);if(b===null)return;let T=n.name==="edit"?()=>Zm(n.profile.id,b):()=>Qm(b);l("\u6B63\u5728\u4FDD\u5B58",T,{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u4FDD\u5B58")}})}}),n.name==="confirm-delete"&&Zt(Ge,{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",()=>ed(n.profile.id),{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u5220\u9664")}}),onCancel:p})]})}})})}import{Box as Xo,Text as co}from"ink";import{useState as ma}from"react";import{jsx as Fe,jsxs as ud}from"react/jsx-runtime";var qb=Ze(Li,lr,"\u5168\u90E8\u72B6\u6001");function Hb({id:e,width:t}){let o=D(),n=X([e,o.revision],()=>Jm(e)),r=t-le,[i,s]=ma(null),[a,c]=ma(null),l=n.phase==="ready"?n.data:null;return W(m=>{if(m!=="d"||l===null||a!==null)return;let f=l.invoiceNo;!l.hasFile||f===null||(s(null),c(f))}),Fe(Y,{state:n,loading:"\u6B63\u5728\u8BFB\u53D6\u53D1\u7968\u8BE6\u60C5",width:t,children:m=>{if(a!==null)return Fe(ni,{title:"\u4FDD\u5B58\u53D1\u7968\u6587\u4EF6",width:t,fileName:`\u53D1\u7968-${a}.pdf`,download:()=>Xm(m.id),onCancel:()=>c(null),onSaved:y=>{c(null),s(y),o.toast("ok","\u53D1\u7968\u5DF2\u4FDD\u5B58")}});let f=lr(m.status),d=Ve(f),p=[["\u62AC\u5934",m.title],...m.taxId===null?[]:[["\u7A0E\u53F7",m.taxId]],...m.invoiceNo===null?[]:[["\u53D1\u7968\u53F7\u7801",m.invoiceNo]],...m.remark===null?[]:[["\u5907\u6CE8",m.remark]],["\u7533\u8BF7\u65F6\u95F4",ee(m.createdAt)],...m.rejectReason===null?[]:[["\u9A73\u56DE\u539F\u56E0",m.rejectReason]],...m.rejectedAt===null?[]:[["\u9A73\u56DE\u65F6\u95F4",ee(m.rejectedAt)]],...m.issuedAt===null?[]:[["\u5F00\u7968\u65F6\u95F4",ee(m.issuedAt)]]];return ud(re,{title:m.title,note:Wt(m.createdAt),width:t,children:[ud(co,{wrap:"truncate",children:[Fe(co,{color:u.mutedForeground,children:wn(m.type)}),Fe(co,{color:d===void 0?u.mutedForeground:qe[d],children:` ${f.label}`})]}),Fe(Xo,{marginTop:1,children:Fe(it,{width:r,maxPerRow:2,tiles:[{label:"\u91D1\u989D",value:he(m.amountCny)},{label:"\u5173\u8054\u8BA2\u5355",value:`${m.orders.length} \u7B14`}]})}),Fe(Xo,{marginTop:1,children:Fe(Ae,{width:r,items:p})}),Fe(Xo,{marginTop:1,flexDirection:"column",children:m.orders.map(y=>Fe(co,{wrap:"truncate",color:u.faintForeground,children:De([y.orderNo,he(y.amountCny)])},y.orderNo))}),m.hasFile&&i===null&&Fe(Xo,{marginTop:1,children:Fe(co,{wrap:"truncate",color:u.faintForeground,children:"\u6309 d \u4E0B\u8F7D\u53D1\u7968\u6587\u4EF6"})}),i!==null&&Fe(Xo,{marginTop:1,children:Fe(co,{wrap:"truncate",color:u.faintForeground,children:`\u5DF2\u4FDD\u5B58\u5230 ${i}`})})]})}})}function md(){let e=D(),{width:t}=q(),o=ie(),[n,r]=ma({name:"list"}),[i,s]=Xe("status",()=>""),a=X([e.revision],Vm);W(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 Fe(K,{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:Fe(Y,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u5F00\u7968\u8BB0\u5F55",width:t,children:l=>{if(n.name==="filter")return Fe(G,{title:"\u7B5B\u9009\u53D1\u7968",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:qb,initial:i}],onCancel:c,onSubmit:f=>{s(f.status??""),r({name:"list"})}});if(n.name==="detail")return Fe(Hb,{id:n.id,width:t});let m=i===""?l:l.filter(f=>f.status===i);return Fe(Ce,{retain:"list",items:m,width:t,height:o,columns:[{label:"\u65F6\u95F4"},{label:"\u62AC\u5934",shrink:!0},{label:"\u7C7B\u578B"},{label:"\u91D1\u989D",align:"right"},{label:"\u72B6\u6001",align:"right"}],row:f=>[Wt(f.createdAt),f.title,wn(f.type),he(f.amountCny),Kt(lr(f.status))],searchOf:f=>f.title,onOpen:f=>r({name:"detail",id:f.id}),emptyLabel:i===""?"\u6682\u65E0\u5F00\u7968\u8BB0\u5F55":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u6309 n \u4E3A\u5DF2\u4ED8\u6B3E\u8BA2\u5355\u7533\u8BF7\u5F00\u7968":void 0})}})})}import{Box as Wb}from"ink";import{useState as dd}from"react";import{jsx as lo,jsxs as Gb}from"react/jsx-runtime";var zb=Ze(Oi,Qi,"\u5168\u90E8\u7C7B\u578B");function pd(){let e=D(),{width:t}=q(),o=ie(),[n,r]=dd("list"),[i,s]=dd(""),a=X([e.revision],()=>ve(e.ctx.site)),c=mn([e.revision,i],(f,d)=>Gu({page:f,pageSize:d,...i===""?{}:{type:i}}),{retain:"page"}),l=n==="list";W((f,d)=>{l&&(f==="r"?e.reload():f==="f"?r("filter"):d.leftArrow?c.go(-1):d.rightArrow&&c.go(1))});let m=()=>{n==="list"?e.pop():r("list")};return lo(K,{hints:l?["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:m,children:lo(Y,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:f=>n==="filter"?lo(G,{title:"\u7B5B\u9009\u6D41\u6C34",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"type",label:"\u7C7B\u578B",options:zb,initial:i}],onCancel:m,onSubmit:d=>{s(d.type??""),c.reset(),r("list")}}):lo(Y,{state:c.state,loading:"\u6B63\u5728\u8BFB\u53D6\u989D\u5EA6\u6D41\u6C34",width:t,children:d=>Gb(Wb,{flexDirection:"column",children:[lo(Ce,{retain:"list",items:d.items,width:t,height:Math.max(3,o-1),columns:[{label:"\u65F6\u95F4"},{label:"\u7C7B\u578B"},{label:"\u53D8\u52A8",align:"right"},{label:"\u4F59\u989D",align:"right"},{label:"\u6765\u6E90",align:"right"}],row:p=>{let y=Kn(p.amount,f.quotaPerUsd);return[ee(p.createdAt),Qi(p.type),{text:p.amount>=0?`+${y}`:y,tone:p.amount>=0?"success":"danger"},ce(p.balanceAfter,f.quotaPerUsd),De([rc(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}),lo(dn,{page:c.page,pages:c.pages,total:c.total,width:t})]})})})})}import{Box as xd}from"ink";import{useState as Kb}from"react";import{z as da}from"zod";var Qo={recharge:"/recharge",subscription:"/subscriptions"};function fd(e){return e==="recharge"?bo:yo}var _i=(e,t)=>O(fd(e),`${Qo[e]}/orders/${t}`),gd=(e,t)=>O(da.object({order:fd(e),qrCode:da.string()}),`${Qo[e]}/orders/${t}/pay`,{method:"POST"}),hd=(e,t)=>O(da.array(Qa),`${Qo[e]}/orders/${t}/refunds`),bd=(e,t,o)=>O(ye,`${Qo[e]}/orders/${t}/refund-request`,{method:"POST",json:{reason:o}}).then(()=>{}),yd=(e,t)=>O(ye,`${Qo[e]}/orders/${t}/refund-request/cancel`,{method:"POST"}).then(()=>{});import{Box as Ri,Text as qt}from"ink";import{jsx as wt,jsxs as Zo}from"react/jsx-runtime";function Sd({order:e,refunds:t,quotaPerUsd:o,width:n}){let r=n-le,i=rn(e.status),s=Ve(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",ce(e.refundedQuota,o)]),e.pendingRefundCny>0&&a.push(["\u5F85\u786E\u8BA4\u9000\u6B3E",he(e.pendingRefundCny)]),Zo(re,{title:e.kind==="recharge"?"\u5145\u503C":e.planName,note:e.orderNo,width:n,children:[Zo(qt,{wrap:"truncate",children:[wt(qt,{color:s===void 0?u.mutedForeground:qe[s],children:i.label}),e.kind==="subscription"&&wt(qt,{color:u.faintForeground,children:` ${e.renewal?"\u7EED\u8D39":"\u65B0\u8D2D"}`})]}),wt(Ri,{marginTop:1,children:wt(it,{width:r,maxPerRow:2,tiles:e.kind==="recharge"?[{label:"\u91D1\u989D",value:he(e.amountCny)},{label:"\u5230\u8D26\u989D\u5EA6",value:ce(e.quota,o)}]:[{label:"\u91D1\u989D",value:he(e.amountCny)},{label:"\u8BA2\u9605\u65F6\u957F",value:`${e.grantedDurationDays} \u5929`}]})}),wt(Ri,{marginTop:1,children:wt(Ae,{width:r,items:a})}),t!==null&&Zo(Ri,{marginTop:1,flexDirection:"column",children:[wt(qt,{color:u.mutedForeground,children:"\u9000\u6B3E\u8BB0\u5F55"}),t.length===0?wt(qt,{color:u.faintForeground,children:"\u6682\u65E0\u9000\u6B3E\u8BB0\u5F55"}):t.map(c=>{let l=ic(c.status),m=Ve(l);return Zo(Ri,{flexDirection:"column",children:[Zo(qt,{wrap:"truncate",children:[wt(qt,{color:u.foreground,children:he(c.amountCny)}),wt(qt,{color:m===void 0?u.mutedForeground:qe[m],children:` ${l.label}`}),wt(qt,{color:u.faintForeground,children:` ${ee(c.createdAt)}`})]}),(c.reason!==null||c.rejectReason!==null||c.refundTradeNo!==null)&&wt(qt,{wrap:"truncate",color:u.faintForeground,children:` ${De([c.reason??"",c.rejectReason===null?"":`\u9A73\u56DE\uFF1A${c.rejectReason}`,c.refundTradeNo??""])}`})]},c.id)})]})]})}import{jsx as Dn,jsxs as Jb}from"react/jsx-runtime";var Vb=new Set(["pending","expired","failed"]);function Ci(e){let t=rn(e.status);return e.pendingRefundCny>0?{badge:`${t.label}\uFF08\u5F85\u786E\u8BA4 ${he(e.pendingRefundCny)}\uFF09`,badgeTone:"warning"}:{badge:t.label,badgeTone:Ve(t)}}function uo(e,t,o){return e.kind==="recharge"?{kind:"recharge",orderNo:e.orderNo,qrCode:t,amountCny:e.amountCny,summary:[`\u5230\u8D26\u989D\u5EA6 ${ce(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 Td({params:e}){let t=D(),{width:o}=q(),[n,r]=Kb("main"),{busy:i,error:s,reset:a,fail:c,run:l}=de(),m=X([e.kind,e.orderNo,t.revision],async()=>{let[h,g]=await Promise.all([_i(e.kind,e.orderNo),ve(t.ctx.site)]),b=Vb.has(h.status)?null:await hd(e.kind,e.orderNo);return{order:{kind:e.kind,...h},refunds:b,site:g}});W(h=>{n==="main"&&i===null&&h==="r"&&t.reload()});let f=()=>{n==="main"?t.pop():(a(),r("main"))},d=h=>{l("\u6B63\u5728\u62C9\u8D77\u652F\u4ED8",()=>gd(e.kind,e.orderNo),{onSuccess:({order:g,qrCode:b})=>{t.push("pay",uo({kind:e.kind,...g},b,h.quotaPerUsd))}})},p=h=>{l("\u6B63\u5728\u63D0\u4EA4\u9000\u6B3E\u7533\u8BF7",()=>bd(e.kind,e.orderNo,h),{onSuccess:()=>{r("main"),t.reload(),t.toast("ok","\u5DF2\u63D0\u4EA4\u9000\u6B3E\u7533\u8BF7")}})},y=()=>{l("\u6B63\u5728\u64A4\u9500\u9000\u6B3E\u7533\u8BF7",()=>yd(e.kind,e.orderNo),{onSuccess:()=>{r("main"),t.reload(),t.toast("ok","\u5DF2\u64A4\u9500\u9000\u6B3E\u7533\u8BF7")}})};return Dn(K,{trail:["\u8BA2\u5355\u8BE6\u60C5"],hints:n==="main"?["\u2191\u2193 \u79FB\u52A8","Enter \u6267\u884C","r \u5237\u65B0"]:[],onEscape:f,children:Dn(Y,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u5355",width:o,children:({order:h,refunds:g,site:b})=>{if(n==="refund")return Dn(G,{title:`\u7533\u8BF7\u9000\u6B3E \u2014 ${h.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:[...rs[e.kind].map(w=>({value:w,label:w})),{value:"other",label:"\u5176\u4ED6"}],initial:rs[e.kind][0],hint:mc[e.kind]},{kind:"textarea",name:"custom",label:"\u5177\u4F53\u8BF4\u660E",rows:3,maxLength:256,placeholder:"\u8BF4\u660E\u7533\u8BF7\u9000\u6B3E\u7684\u539F\u56E0",hint:"\u4EC5\u9000\u6B3E\u539F\u56E0\u9009\u300C\u5176\u4ED6\u300D\u65F6\u5FC5\u586B"}],onCancel:f,onSubmit:w=>{let S=w.reason??"",k=S==="other"?(w.custom??"").trim():S;if(k===""){c("\u8BF7\u586B\u5199\u5177\u4F53\u8BF4\u660E");return}p(k)}});if(n==="confirm-cancel")return Dn(Ge,{width:o,title:"\u64A4\u9500\u9000\u6B3E\u7533\u8BF7",detail:`\u786E\u8BA4\u64A4\u9500\u8BA2\u5355 ${h.orderNo} \u7684\u9000\u6B3E\u7533\u8BF7\uFF1F${h.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:y,onCancel:f});let T=[];return h.status==="pending"&&T.push({value:"pay",label:"\u7EE7\u7EED\u652F\u4ED8",hint:"\u91CD\u65B0\u62C9\u8D77\u652F\u4ED8\u5B9D\u4E8C\u7EF4\u7801"}),h.status==="refund_requested"&&T.push({value:"cancel-refund",label:"\u64A4\u9500\u7533\u8BF7",hint:"\u9000\u6B3E\u5C1A\u672A\u5BA1\u6838\uFF0C\u53EF\u64A4\u56DE"}),Za(h)&&T.push({value:"refund",label:"\u7533\u8BF7\u9000\u6B3E",labelTone:"danger"}),Jb(xd,{flexDirection:"column",children:[Dn(Sd,{order:h,refunds:g,quotaPerUsd:b.quotaPerUsd,width:o}),T.length>0&&i===null&&Dn(xd,{marginTop:1,children:Dn(ae,{width:o,items:T,retain:"menu",onSelect:w=>{a(),w==="pay"?d(b):r(w==="refund"?"refund":"confirm-cancel")}})})]})}})})}import{useRef as ey,useState as Ed}from"react";import{spawn as Yb}from"child_process";var Xb={darwin:[{command:"pbcopy",args:[]}],win32:[{command:"clip",args:[]}],linux:[{command:"wl-copy",args:[]},{command:"xclip",args:["-selection","clipboard"]},{command:"xsel",args:["--clipboard","--input"]}]};function Qb(e,t){return new Promise((o,n)=>{let r=Yb(e.command,e.args,{stdio:["pipe","ignore","ignore"]});r.on("error",i=>{i.code==="ENOENT"?o(!1):n(new $(`\u6267\u884C ${e.command} \u5931\u8D25\uFF1A${i.message}`,{cause:i}))}),r.on("close",i=>{i===0?o(!0):n(new $(`${e.command} \u9000\u51FA\u7801 ${i??"null"}`))}),r.stdin.on("error",i=>n(new $(`\u5199\u5165 ${e.command} \u5931\u8D25\uFF1A${i.message}`,{cause:i}))),r.stdin.end(t)})}async function wd(e){let t=Xb[process.platform];if(t===void 0)throw new $(`\u5F53\u524D\u7CFB\u7EDF\u4E0D\u652F\u6301\u5199\u5165\u526A\u8D34\u677F\uFF08${process.platform}\uFF09`);for(let o of t)if(await Qb(o,e))return;throw new $("\u672A\u627E\u5230\u53EF\u7528\u7684\u526A\u8D34\u677F\u547D\u4EE4")}import{Box as kd,Text as Bn}from"ink";import{Fragment as Zb,jsx as mt,jsxs as vd}from"react/jsx-runtime";var _d={columns:20,rows:2};function Rd(e,t,o){return Jr(e,t,_d,o)}function Cd({phase:e,qrCode:t,amountCny:o,summary:n,paidNote:r,expiredNote:i,pollError:s,width:a,layout:c}){let l=s===null?mt(tt,{label:"\u7B49\u5F85\u652F\u4ED8\u5230\u8D26\u2026"}):mt(Bn,{wrap:"truncate",color:qe.warning,children:`\u67E5\u8BE2\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u8BD5\uFF1A${s}`});if(e==="paid")return mt(ge,{tone:"ok",width:a,title:"\u652F\u4ED8\u6210\u529F\uFF01",detail:r});if(e==="expired")return mt(ge,{tone:"warn",width:a,title:"\u8BA2\u5355\u5DF2\u8D85\u65F6",detail:i});if(!c.fits)return vd(kd,{flexDirection:"column",children:[mt(ge,{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`}),mt(Bn,{color:u.accent,children:t}),mt(kd,{marginTop:1,children:mt(Bn,{bold:!0,color:u.foreground,children:he(o)})}),l]});let m=c.asideRows-_d.rows,f=m>=1,d=m>=2,p=m>=2+n.length;return mt(Yr,{value:t,aside:vd(Zb,{children:[d&&mt(Bn,{bold:!0,color:u.foreground,children:"\u626B\u7801\u652F\u4ED8"}),mt(Bn,{bold:!0,color:u.foreground,children:he(o)}),f&&mt(Bn,{color:u.mutedForeground,children:"\u8BF7\u4F7F\u7528\u652F\u4ED8\u5B9D\u626B\u4E00\u626B\u5B8C\u6210\u652F\u4ED8"}),p&&n.map((y,h)=>mt(Bn,{wrap:"truncate",color:u.mutedForeground,children:y},h)),l]})})}import{jsx as Ad}from"react/jsx-runtime";var ty=5,ny=2e3;function Pd({params:e}){let t=D(),{width:o,columns:n,rows:r}=q(),i=Bo(0),[s,a]=Ed("waiting"),[c,l]=Ed(null),m=ey(0);oi(ny,async()=>{let p;try{p=await _i(e.kind,e.orderNo)}catch(y){l(Te(y));return}if(l(null),p.status==="paid"||p.credited){a("paid"),t.toast("ok",e.paidMessage);return}if(p.status==="expired"||p.status==="failed"){m.current+=1,m.current>=ty&&a("expired");return}m.current=0},s==="waiting"),W(p=>{p!=="c"||s!=="waiting"||wd(e.qrCode).then(()=>t.toast("ok","\u5DF2\u590D\u5236"),()=>t.toast("fail","\u590D\u5236\u5931\u8D25\uFF0C\u53EF\u7528 Option / Alt \u62D6\u9009\u590D\u5236"))});let f=Rd(e.qrCode,{width:o,rows:i},{columns:n-o,rows:r-i}),d=s==="waiting"&&f.fits;return Ad(K,{trail:["\u626B\u7801\u652F\u4ED8"],bleed:d,hints:s==="waiting"?["c \u590D\u5236\u94FE\u63A5"]:[],children:Ad(Cd,{phase:s,qrCode:e.qrCode,amountCny:e.amountCny,summary:e.summary,paidNote:e.paidNote,expiredNote:e.expiredNote,pollError:c,width:o,layout:f})})}import{useState as iy}from"react";import{z as Mt}from"zod";var oy=Mt.object({id:Mt.number().int(),name:Mt.string(),originalCny:Mt.number().int(),discountPercent:Mt.number().int(),payCny:Mt.number().int(),quota:Mt.number()}),Nd=()=>O(Mt.array(oy),"/recharge-packages"),ry=Mt.object({order:bo,qrCode:Mt.string()}),Id=e=>O(ry,"/recharge/orders",{method:"POST",json:e}),Ld=()=>O(Mt.array(bo),"/recharge/orders");import{jsx as mo}from"react/jsx-runtime";var sy=Ze(fo,rn,"\u5168\u90E8\u72B6\u6001");function ay(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 ${ce(e.quota,t)}`}function Md(){let e=D(),{width:t}=q(),o=ie(),[n,r]=iy({name:"menu"}),[i,s]=Xe("status",()=>""),{busy:a,error:c,reset:l,fail:m,run:f}=de(),d=X([e.revision],async()=>{let[h,g,b]=await Promise.all([Nd(),hi(e.ctx.site),Ld()]);return{packages:h,pricing:g,orders:b}});W(h=>{n.name==="menu"&&(h==="r"?e.reload():h==="f"&&r({name:"filter"}))});let p=()=>{n.name==="menu"?e.pop():(l(),r({name:"menu"}))},y=(h,g)=>{f("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>Id(h),{onSuccess:({order:b,qrCode:T})=>{r({name:"menu"}),e.push("pay",uo({kind:"recharge",...b},T,g))}})};return mo(K,{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:mo(Y,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u5145\u503C\u5957\u9910",width:t,children:({packages:h,pricing:g,orders:b})=>{if(n.name==="confirm")return mo(Ge,{width:t,title:`\u786E\u8BA4\u5145\u503C ${he(n.pkg.payCny)}\uFF1F`,confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>y({packageId:n.pkg.id},g.quotaPerUsd),onCancel:p});if(n.name==="custom")return mo(G,{title:"\u81EA\u5B9A\u4E49\u91D1\u989D\u5145\u503C",width:t,submitLabel:"\u53BB\u652F\u4ED8",busy:a!==null,busyLabel:a??"\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",error:c,fields:[{kind:"text",name:"yuan",label:"\u5145\u503C\u91D1\u989D\uFF08\u5143\uFF09",placeholder:"\u8BF7\u8F93\u5165\u91D1\u989D",hint:`\u6700\u4F4E ${g.minTopupCny} \u5143 \xB7 \u5230\u8D26\u989D\u5EA6\u6309\u5145\u503C\u6C47\u7387\u6298\u7B97`}],onCancel:p,onSubmit:S=>{let k=Number((S.yuan??"").trim()),C=ts(k);if(!Number.isFinite(k)||C<ts(g.minTopupCny)||C>qi){m(`\u8BF7\u8F93\u5165 ${g.minTopupCny} \u5230 ${ac(qi)} \u5143\u4E4B\u95F4\u7684\u91D1\u989D`);return}y({amountCny:C},g.quotaPerUsd)}});if(n.name==="filter")return mo(G,{title:"\u7B5B\u9009\u5145\u503C\u8BB0\u5F55",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:sy,initial:i}],onCancel:p,onSubmit:S=>{s(S.status??""),r({name:"menu"})}});let T=i===""?b:b.filter(S=>S.status===i),w=[{heading:"\u5145\u503C\u5957\u9910"},...h.map(S=>({value:{kind:"pkg",pkg:S},label:S.name,hint:ay(S,g.quotaPerUsd)})),{value:{kind:"custom"},label:"\u81EA\u5B9A\u4E49\u91D1\u989D",hint:"\u8F93\u5165\u4EFB\u610F\u91D1\u989D\u5145\u503C"},{heading:""},{heading:"\u5145\u503C\u8BB0\u5F55"},...T.length===0?[{value:{kind:"none"},label:i===""?"\u6682\u65E0\u5145\u503C\u8BB0\u5F55":"\u65E0\u5339\u914D\u7ED3\u679C",...i===""?{hint:"\u9009\u62E9\u4E0A\u65B9\u5957\u9910\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u91D1\u989D\u5373\u53EF\u5145\u503C"}:{},disabled:!0}]:T.map(S=>({value:{kind:"order",orderNo:S.orderNo},label:he(S.amountCny),...Ci(S),hint:`${ee(S.createdAt)} \xB7 \u5230\u8D26\u989D\u5EA6 ${ce(S.quota,g.quotaPerUsd)}`}))];return mo(ae,{items:w,width:t,height:o,retain:"menu",onSelect:S=>{l(),S.kind==="custom"?r({name:"custom"}):S.kind==="order"?e.push("order",{kind:"recharge",orderNo:S.orderNo}):S.kind==="pkg"&&r({name:"confirm",pkg:S.pkg})}})}})})}import{Box as en,Text as er}from"ink";import{useState as my}from"react";import dy from"string-width";import{z as oe}from"zod";var cy=oe.object({windowId:oe.number().int(),durationMinutes:oe.number().int(),quota:oe.number(),used:oe.number(),resetAt:oe.string()}),ly=oe.object({fallbackToBalance:oe.boolean(),subscriptions:oe.array(oe.object({id:oe.number().int(),planName:oe.string(),groupNames:oe.array(oe.string()),startsAt:oe.string(),expiresAt:oe.string(),revokedAt:oe.string().nullable(),renewable:oe.boolean(),windows:oe.array(cy)}))}),Od=()=>O(ly,"/subscriptions"),uy=oe.object({id:oe.number().int(),name:oe.string(),description:oe.string().nullable(),priceCny:oe.number().int(),durationDays:oe.number().int(),enabled:oe.boolean(),groupNames:oe.array(oe.string()),windows:oe.array(oe.object({durationMinutes:oe.number().int(),quota:oe.number()}))}),$d=()=>O(oe.array(uy),"/subscription-plans"),Dd=oe.object({order:yo,qrCode:oe.string()}),Bd=e=>O(Dd,"/subscriptions/orders",{method:"POST",json:e}),Fd=e=>O(Dd,`/subscriptions/${e}/renew`,{method:"POST"}),Ud=()=>O(oe.array(yo),"/subscriptions/orders"),jd=e=>O(oe.object({fallbackToBalance:oe.boolean()}),"/subscriptions/preference",{method:"PUT",json:e});import{jsx as _e,jsxs as Fn}from"react/jsx-runtime";var py=Ze(fo,rn,"\u5168\u90E8\u72B6\u6001"),fy=3;function gy({win:e,quotaPerUsd:t,width:o}){let n=ns(e),r=lc(e.durationMinutes),i=`\u5DF2\u7528 ${n}% ${Q.bullet} ${ce(e.used,t)} / ${ce(e.quota,t)}`;return Fn(en,{flexDirection:"column",children:[Fn(er,{wrap:"truncate",children:[_e(er,{color:u.foreground,children:r}),_e(er,{color:n>=100?u.danger:u.mutedForeground,children:cn(i,Math.max(0,o-dy(r)))})]}),_e(lu,{used:e.used,total:e.quota,width:o}),_e(er,{wrap:"truncate",color:u.faintForeground,children:`\u5C06\u4E8E ${ee(e.resetAt)} \u91CD\u7F6E`})]})}function hy(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(ns))}% \xB7 ${t}`}function by(e){let t=e.windows.length*4;return J+Pt+2+t+(e.renewable?J+1:0)}function yy(e){let t=e.description!==null&&e.description!==""?1+Be:0,o=Math.ceil((1+e.windows.length)/2);return J+Pt+t+o+J+1}function qd(){let e=D(),{width:t}=q(),o=ie(),[n,r]=my({name:"menu"}),[i,s]=Xe("status",()=>""),{busy:a,error:c,reset:l,run:m}=de(),f=X([e.revision],async()=>{let[g,b,T,w]=await Promise.all([Od(),$d(),Ud(),ve(e.ctx.site)]);return{mine:g,plans:b,orders:T,site:w}});W(g=>{n.name!=="menu"||a!==null||(g==="r"?e.reload():g==="f"&&r({name:"filter"}))});let d=()=>{l(),n.name==="menu"?e.pop():n.name==="confirm-renew"?r({name:"sub",id:n.id}):n.name==="confirm-buy"?r({name:"plan",id:n.id}):r({name:"menu"})},p=g=>{m("\u6B63\u5728\u4FDD\u5B58\u504F\u597D",()=>jd({fallbackToBalance:!g}),{failToast:!0,onSuccess:()=>{e.reload(),e.toast("ok","\u504F\u597D\u5DF2\u4FDD\u5B58")}})},y=(g,b)=>{m("\u6B63\u5728\u521B\u5EFA\u7EED\u8D39\u8BA2\u5355",()=>Fd(g.id),{onSuccess:({order:T,qrCode:w})=>{r({name:"menu"}),e.push("pay",uo({kind:"subscription",...T},w,b.quotaPerUsd))}})},h=(g,b)=>{m("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>Bd({planId:g.id}),{onSuccess:({order:T,qrCode:w})=>{r({name:"menu"}),e.push("pay",uo({kind:"subscription",...T},w,b.quotaPerUsd))}})};return _e(K,{hints:n.name==="menu"?["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","f \u7B5B\u9009\u8BA2\u5355","r \u5237\u65B0"]:n.name==="sub"||n.name==="plan"?["\u2191\u2193 \u79FB\u52A8","Enter \u6267\u884C","Esc \u8FD4\u56DE"]:["Esc \u8FD4\u56DE"],onEscape:d,children:_e(Y,{state:f,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u9605",width:t,children:({mine:g,plans:b,orders:T,site:w})=>{if(n.name==="filter")return _e(G,{title:"\u7B5B\u9009\u8BA2\u9605\u8BA2\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:py,initial:i}],onCancel:d,onSubmit:v=>{s(v.status??""),r({name:"menu"})}});let S=n.name==="sub"||n.name==="confirm-renew"?g.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,C=k?.description??"";if((n.name==="sub"||n.name==="confirm-renew")&&S===void 0)return _e(ge,{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 _e(ge,{tone:"warn",width:t,title:"\u5957\u9910\u4E0D\u5B58\u5728\u6216\u5DF2\u4E0B\u67B6",detail:"\u6309 Esc \u8FD4\u56DE"});if(n.name==="confirm-renew"&&S!==void 0)return _e(Ge,{width:t,title:`\u786E\u8BA4\u7EED\u8D39\u300C${S.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:()=>y(S,w),onCancel:d});if(n.name==="confirm-buy"&&k!==void 0)return _e(Ge,{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:()=>h(k,w),onCancel:d});let M=i===""?T:T.filter(v=>v.status===i),j=[{heading:"\u6211\u7684\u8BA2\u9605"},...g.subscriptions.length===0?[{value:{kind:"none"},label:"\u6682\u65E0\u8BA2\u9605",hint:"\u8BA2\u9605\u4E0B\u65B9\u5957\u9910\u540E\uFF0C\u8986\u76D6\u8303\u56F4\u5185\u7684\u8C03\u7528\u5C06\u4F18\u5148\u4F7F\u7528\u8BA2\u9605\u989D\u5EA6",disabled:!0}]:g.subscriptions.map(v=>{let A=os(v);return{value:{kind:"sub",id:v.id},label:v.planName,badge:A.label,badgeTone:Ve(A),hint:hy(v)}}),{heading:""},{value:{kind:"fallback"},label:"\u8BA2\u9605\u989D\u5EA6\u7528\u5C3D\u540E\u81EA\u52A8\u6539\u6309\u4F59\u989D\u8BA1\u8D39",badge:g.fallbackToBalance?"\u5DF2\u5F00\u542F":"\u5DF2\u5173\u95ED",...g.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":""}`,...Ci(v),hint:`${ee(v.createdAt)} \xB7 ${he(v.amountCny)}`}))],x=n.name==="sub"&&S!==void 0?by(S):n.name==="plan"&&k!==void 0?yy(k):0,P=x===0?o:o-x>=fy?o-x:0,_=t-le,E=n.name==="menu"&&a===null;return Fn(en,{flexDirection:"column",children:[P>0&&_e(ae,{items:j,width:t,height:P,isActive:E,retain:"menu",onSelect:v=>{l(),v.kind==="fallback"?p(g.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"&&S!==void 0&&Fn(en,{marginTop:P>0?J:0,flexDirection:"column",children:[Fn(re,{title:S.planName,note:S.revokedAt!==null?`${ee(S.revokedAt)} \u4F5C\u5E9F`:`${ee(S.expiresAt)} \u5230\u671F`,width:t,children:[_e(Ae,{width:_,items:[["\u72B6\u6001",os(S).label],["\u8986\u76D6\u5206\u7EC4",S.groupNames.join("\u3001")],["\u751F\u6548\u65F6\u95F4",ee(S.startsAt)]]}),_e(en,{marginTop:1,flexDirection:"column",children:S.windows.map((v,A)=>_e(en,{marginTop:A===0?0:1,flexDirection:"column",children:_e(gy,{win:v,quotaPerUsd:w.quotaPerUsd,width:_})},v.windowId))})]}),S.renewable&&a===null&&_e(en,{marginTop:J,children:_e(ae,{width:t,items:[{value:"renew",label:"\u7EED\u8D39"}],onSelect:()=>r({name:"confirm-renew",id:S.id})})})]}),n.name==="plan"&&k!==void 0&&Fn(en,{marginTop:P>0?J:0,flexDirection:"column",children:[Fn(re,{title:k.name,note:`${he(k.priceCny)} / ${k.durationDays} \u5929`,width:t,children:[C!==""&&_e(er,{wrap:"truncate",color:u.mutedForeground,children:C}),_e(en,{marginTop:C===""?0:Be,children:_e(Ae,{width:_,items:[["\u8986\u76D6\u5206\u7EC4",k.groupNames.join("\u3001")],...uc(k,w.quotaPerUsd).map((v,A)=>[A===0?"\u7528\u91CF\u7A97\u53E3":"",v])]})})]}),a===null&&_e(en,{marginTop:J,children:_e(ae,{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 ke}from"react/jsx-runtime";var Hd={home:{render:()=>ke(qm,{})},help:{render:()=>ke(Fm,{})},login:{render:()=>ke(Uu,{})},register:{render:()=>ke(ju,{})},forgot:{render:()=>ke($u,{})},agreement:{render:e=>ke(Pu,{params:e})},tokens:{render:()=>ke(Mm,{})},logs:{render:()=>ke(lm,{})},usage:{render:()=>ke(nm,{})},ledger:{render:()=>ke(pd,{})},subscription:{render:()=>ke(qd,{})},models:{render:()=>ke(dm,{})},recharge:{render:()=>ke(Md,{})},order:{render:e=>ke(Td,{params:e})},pay:{render:e=>ke(Pd,{params:e})},invoices:{render:()=>ke(md,{})},"invoice-apply":{render:()=>ke(id,{})},"invoice-profiles":{render:()=>ke(ld,{})},invite:{render:()=>ke(Gm,{})},tickets:{render:()=>ke(Au,{})},ticket:{render:e=>ke(Eu,{params:e})},announcements:{render:()=>ke(Cl,{})},"announce-gate":{render:e=>ke(wl,{params:e}),lockNav:!0},profile:{render:()=>ke(pu,{})}};function Wd(e){return Hd[e].lockNav===!0}function zd(e){let t=Hd[e.id].render;return t(e.params)}import{jsx as Un,jsxs as Ny}from"react/jsx-runtime";function ky(){let e=D(),{rows:t}=q(),o=vr(),n=Wd(e.current.id)||o,r=e.depth===1&&Cr(e.current.id)&&Rt().session===null;return pa(()=>{r&&e.home()}),Ty((i,s)=>{s.ctrl&&i==="c"&&e.exit()}),W(i=>{if(i==="?"){e.current.id==="help"?e.pop():n||e.push("help");return}i==="q"&&!n&&(e.depth>1?e.pop():e.exit())}),Un(Sy,{flexDirection:"column",height:Math.max(1,t),paddingX:1,paddingTop:1,overflow:"hidden",children:zd(e.current)})}function vy(){let e=D(),t=X([e.revision],async()=>{if(e.gate.announcementsChecked||Rt().session===null)return null;let o;try{o=await Ac()}catch{return null}return e.gate.announcementsChecked=!0,o});return pa(()=>{t.phase!=="ready"||t.data===null||e.gate.announcementsShown||(e.gate.announcementsShown=!0,e.push("announce-gate",{item:t.data}))}),null}function _y(){let e=D(),t=wy(!1);return pa(()=>{t.current||(t.current=!0,Cc().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${Te(o)}`)))}),null}function Ry({ctx:e,mouse:t}){return Un(Wc,{subscribe:t.subscribe,children:Un(Oc,{children:Ny(Jc,{ctx:e,children:[Un(_y,{}),Un(vy,{}),Un(ky,{})]})})})}var Cy="\x1B[2J\x1B[3J\x1B[H",Ey="\x1B[H\x1B[J",Ay="\x1B[3J";function Py(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(Cy).join(Ey).split(Ay).join("");return t.write(s,...i)}}})}async function Gd(e){let t=qc(process.stdin,process.stdout);try{await xy(Un(Ry,{ctx:e,mouse:t}),{exitOnCtrlC:!0,alternateScreen:!0,stdin:t.stdin,stdout:Py(process.stdout)}).waitUntilExit()}finally{t.dispose()}}var Oy=`${dt} v${pt} \u2014 CodeFlow \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF
14
14
 
15
15
  \u7528\u6CD5
16
- ${mt} \u8FDB\u5165\u4EA4\u4E92\u754C\u9762
17
- ${mt} help \u67E5\u770B\u672C\u8BF4\u660E
18
- ${mt} update \u68C0\u67E5\u5E76\u5B89\u88C5\u65B0\u7248\u672C
19
- ${mt} uninstall \u9000\u51FA\u767B\u5F55\u3001\u5220\u9664\u672C\u5730\u6587\u4EF6\u5E76\u5378\u8F7D\u672C\u7A0B\u5E8F
20
- `;async function Ny(){let e;try{({positionals:e}=Ay({args:process.argv.slice(2),allowPositionals:!0,options:{}}))}catch(o){throw new D(Te(o),{hint:`\u8FD0\u884C ${mt} help \u67E5\u770B\u7528\u6CD5`,exitCode:Ci})}let[t]=e;if(t==="help")return process.stdout.write(Py),uo;if(t==="update")return Iy();if(t==="uninstall")return My();if(t!==void 0)throw new D(`\u672A\u77E5\u547D\u4EE4 ${t}\uFF0C\u8FD0\u884C ${mt} help \u67E5\u770B\u7528\u6CD5`,{exitCode:Ci});return $y(),await jd(ka()),uo}async function Iy(){let e=process.stdout,t=Ly(e,"\u6B63\u5728\u68C0\u67E5\u65B0\u7248\u672C"),o;try{o=await kc()}finally{t()}let n=hn(e,u.accent,"\u2714");return e.write(o===null?`${n} \u5DF2\u662F\u6700\u65B0\u7248\u672C v${dt}
16
+ ${dt} \u8FDB\u5165\u4EA4\u4E92\u754C\u9762
17
+ ${dt} help \u67E5\u770B\u672C\u8BF4\u660E
18
+ ${dt} update \u68C0\u67E5\u5E76\u5B89\u88C5\u65B0\u7248\u672C
19
+ ${dt} uninstall \u9000\u51FA\u767B\u5F55\u3001\u5220\u9664\u672C\u5730\u6587\u4EF6\u5E76\u5378\u8F7D\u672C\u7A0B\u5E8F
20
+ `;async function $y(){let e;try{({positionals:e}=My({args:process.argv.slice(2),allowPositionals:!0,options:{}}))}catch(o){throw new $(Te(o),{hint:`\u8FD0\u884C ${dt} help \u67E5\u770B\u7528\u6CD5`,exitCode:Ai})}let[t]=e;if(t==="help")return process.stdout.write(Oy),po;if(t==="update")return Dy();if(t==="uninstall")return Fy();if(t!==void 0)throw new $(`\u672A\u77E5\u547D\u4EE4 ${t}\uFF0C\u8FD0\u884C ${dt} help \u67E5\u770B\u7528\u6CD5`,{exitCode:Ai});return jy(),await Gd(Ra()),po}async function Dy(){let e=process.stdout,t=By(e,"\u6B63\u5728\u68C0\u67E5\u65B0\u7248\u672C"),o;try{o=await Rc()}finally{t()}let n=yn(e,u.accent,"\u2714");return e.write(o===null?`${n} \u5DF2\u662F\u6700\u65B0\u7248\u672C v${pt}
21
21
  `:`${n} \u5DF2\u66F4\u65B0\u5230 v${o}
22
- `),uo}function Ly(e,t){if(!e.isTTY)return e.write(`${t}
23
- `),()=>{};let o=hn(e,u.mutedForeground,t),n=0,r=()=>{let s=Yn[n%Yn.length]??"";n+=1,e.write(`\r\x1B[2K${hn(e,u.accent,s)} ${o}`)};r();let i=setInterval(r,Er);return()=>{clearInterval(i),e.write("\r\x1B[2K")}}async function My(){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
24
- `),!await Oy("\u8F93\u5165 y \u786E\u8BA4\u5378\u8F7D\uFF1A"))return e.write(`\u5DF2\u53D6\u6D88
25
- `),jn;let t=await Sc({done:o=>e.write(`${hn(e,u.accent,"\u2714")} ${o}
26
- `),failed:o=>e.write(`${hn(e,u.danger,"\u2718")} ${o}
22
+ `),po}function By(e,t){if(!e.isTTY)return e.write(`${t}
23
+ `),()=>{};let o=yn(e,u.mutedForeground,t),n=0,r=()=>{let s=Yn[n%Yn.length]??"";n+=1,e.write(`\r\x1B[2K${yn(e,u.accent,s)} ${o}`)};r();let i=setInterval(r,Nr);return()=>{clearInterval(i),e.write("\r\x1B[2K")}}async function Fy(){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
24
+ `),!await Uy("\u8F93\u5165 y \u786E\u8BA4\u5378\u8F7D\uFF1A"))return e.write(`\u5DF2\u53D6\u6D88
25
+ `),qn;let t=await wc({done:o=>e.write(`${yn(e,u.accent,"\u2714")} ${o}
26
+ `),failed:o=>e.write(`${yn(e,u.danger,"\u2718")} ${o}
27
27
  `)});if(t.length===0)return e.write(`\u767B\u5F55\u72B6\u6001\u3001\u672C\u5730\u6587\u4EF6\u4E0E\u672C\u7A0B\u5E8F\u5747\u5DF2\u6E05\u9664
28
- `),uo;e.write(`\u4EE5\u4E0B\u9879\u76EE\u672A\u80FD\u6E05\u7406\uFF1A
28
+ `),po;e.write(`\u4EE5\u4E0B\u9879\u76EE\u672A\u80FD\u6E05\u7406\uFF1A
29
29
  `);for(let o of t)e.write(` ${o}
30
- `);return jn}async function Oy(e){let t=Ey({input:process.stdin,output:process.stdout});t.once("SIGINT",()=>t.close());let o=await Promise.race([t.question(e),Cy(t,"close").then(()=>"")]);return t.close(),o.trim().toLowerCase()==="y"}function $y(){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new D("\u4EA4\u4E92\u754C\u9762\u9700\u8981\u5728\u7EC8\u7AEF\u4E2D\u76F4\u63A5\u8FD0\u884C")}var Hd=(e,t)=>hn(process.stderr,e,t);try{process.exitCode=await Ny()}catch(e){process.stderr.write(`${Hd(u.danger,"\u2718")} ${Te(e)}
31
- `),e instanceof D&&e.hint&&process.stderr.write(` ${Hd(u.faintForeground,e.hint)}
32
- `),process.exitCode=e instanceof D?e.exitCode:jn}
30
+ `);return qn}async function Uy(e){let t=Ly({input:process.stdin,output:process.stdout});t.once("SIGINT",()=>t.close());let o=await Promise.race([t.question(e),Iy(t,"close").then(()=>"")]);return t.close(),o.trim().toLowerCase()==="y"}function jy(){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new $("\u4EA4\u4E92\u754C\u9762\u9700\u8981\u5728\u7EC8\u7AEF\u4E2D\u76F4\u63A5\u8FD0\u884C")}var Kd=(e,t)=>yn(process.stderr,e,t);try{process.exitCode=await $y()}catch(e){process.stderr.write(`${Kd(u.danger,"\u2718")} ${Te(e)}
31
+ `),e instanceof $&&e.hint&&process.stderr.write(` ${Kd(u.faintForeground,e.hint)}
32
+ `),process.exitCode=e instanceof $?e.exitCode:qn}