@codeflow-ai/cli 1.23.3 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +25 -25
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{once as
|
|
3
|
-
`,o)}function ir(e,t,o,n){let r=null,i=()=>{if(r)return r;let s=t(),a=Wn(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),rr(t(),a,384),r=a,a}}}import{homedir as op}from"os";import{join as zn}from"path";function Wt(){let e=process.env.XDG_CONFIG_HOME;if(e)return zn(e,"codeflow");if(process.platform==="win32"){let t=process.env.APPDATA;if(t)return zn(t,"codeflow")}return zn(op(),".config","codeflow")}var ya=()=>zn(Wt(),"config.json"),Sa=()=>zn(Wt(),"credentials.json"),xa=()=>zn(Wt(),"refresh.lock");var lp=Rt.object({refreshCookie:Rt.string(),accessToken:Rt.string(),accessExpiresAt:Rt.number(),username:Rt.string(),email:Rt.string(),site:Rt.string()}),up=Rt.object({site:Rt.string(),cookie:Rt.string()}),mp=Rt.object({session:lp.nullable().default(null),device:up.nullable().default(null)}),Ii=ir(mp,Sa,"\u672C\u5730\u51ED\u636E","\u91CD\u65B0\u767B\u5F55"),Ct=Ii.load,va=Ii.reload,Li=Ii.update;function _a(){let{session:e}=Ct();if(!e)throw new $("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:yn});return e}var dp=6e4,pp=75e3,fp=120;function gp(e,t){try{Ta(e)}catch{try{Date.now()-sp(e).mtimeMs>dp&&wa(e,{recursive:!0,force:!0})}catch{}return!1}return ap(ka(e,"owner"),t),!0}function hp(e,t){let o;try{o=ip(ka(e,"owner"),"utf8")}catch{return}o===t&&wa(e,{recursive:!0,force:!0})}async function Ra(e){let t=xa(),o=rp(16).toString("hex");Ta(Wt(),{recursive:!0,mode:448});let n=Date.now()+pp;for(;!gp(t,o);){if(Date.now()>n)throw new $(`\u7B49\u5F85\u5237\u65B0\u9501\u8D85\u65F6\uFF0C\u82E5\u786E\u8BA4\u6CA1\u6709\u5176\u4ED6 ${pt} \u5728\u8FD0\u884C\uFF0C\u8BF7\u5220\u9664 ${t}`);await cp(fp)}try{return await e()}finally{hp(t,o)}}function bp(){let e=process.env.CODEFLOW_SITE;if(e)return e;let t=Ct().session;return t?t.site:ha}function Ca(){return{site:bp()}}function Sn(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 cf,rmSync as lf}from"fs";import{z as De}from"zod";var yp=["active","disabled"],yS=De.enum(yp),Sp=["openai","anthropic"],SS=De.enum(Sp),xp=["openai-chat","openai-responses","anthropic-messages"],Ea=De.enum(xp);var Tp=["enabled","disabled"],xS=De.enum(Tp),ho=["pending","paid","refund_requested","partially_refunded","refunded","failed","expired"],Aa=De.enum(ho),wp=["recharge","subscription"],TS=De.enum(wp),kp=["requested","pending","succeeded","failed","rejected","canceled"],Pa=De.enum(kp),Mi=["pending","issued","rejected"],Na=De.enum(Mi),vp=["special","general"],Oi=De.enum(vp),_p=["info","success","warning","error"],Ia=De.enum(_p),Rp=["terms","privacy"],wS=De.enum(Rp),$i=["recharge","reserve","consume","reserve_refund","refund","refund_release","reward","admin_adjust"],La=De.enum($i),Cp=["usage_log","order","invitation","admin"],Ma=De.enum(Cp),Di=["first_inviter","first_invitee","subsequent_inviter"],Oa=De.enum(Di),Bi=["success","error","canceled","anomaly"],$a=De.enum(Bi),Fi=["open","replied","closed"],Da=De.enum(Fi),Ui=["billing","technical","account","other"],Ba=De.enum(Ui),ji=["low","normal","high"],Fa=De.enum(ji),Ep=["user","admin"],Ua=De.enum(Ep);import{z as nn}from"zod";var Ap=["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","docs_not_configured","docs_source_unavailable","docs_page_not_found"],Pp=nn.enum(Ap),ja=nn.object({error:nn.object({code:Pp,message:nn.string(),details:nn.unknown().optional(),requestId:nn.string().optional()})}),_S=nn.object({reason:nn.string()});var qa={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",docs_not_configured:"\u6587\u6863\u4E2D\u5FC3\u672A\u542F\u7528",docs_source_unavailable:"\u6587\u6863\u5185\u5BB9\u83B7\u53D6\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",docs_page_not_found:"\u8BE5\u6587\u6863\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u79FB\u9664"};import{z as ue}from"zod";var Np=ue.string().trim().min(1),qi=Np.pipe(ue.url()),Ip=ue.object({name:ue.string().trim().min(1).max(64),description:ue.string().trim().min(1).max(200),url:qi}),Ha=ue.array(Ip),Lp=["string","number","boolean","secret","markdown","money","api-lines","origins"],Mp=ue.enum(Lp),Op=ue.object({key:ue.string(),type:Mp,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()}),AS=ue.object({key:ue.string(),label:ue.string(),description:ue.string().optional(),fields:ue.array(Op)}),PS=ue.object({values:ue.record(ue.string(),ue.unknown()).refine(e=>Object.keys(e).length>0,{message:"at least one value required"})}),NS=ue.object({fields:ue.record(ue.string(),ue.string())});function Wa(e){return`codeflow-cli/${e.cliVersion} (${e.platform} ${e.release}; ${e.arch}) node/${e.nodeVersion}`}function sr(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 gt}from"zod";var Hi=1e8;var OS=gt.object({id:gt.coerce.number().int().positive()}),$S=gt.object({page:gt.coerce.number().int().min(1).default(1),pageSize:gt.coerce.number().int().min(1).max(100).default(20)});function xn(e){return gt.object({items:gt.array(e),total:gt.number().int().nonnegative(),page:gt.number().int().positive(),pageSize:gt.number().int().positive()})}var ye=gt.object({ok:gt.literal(!0)});import{z}from"zod";var Tn=z.email().max(254).toLowerCase(),at=8,bo=z.string().min(at).max(128),yo=z.string().min(1).max(128),wn=32,Wi=z.string().trim().min(1).max(wn),zi=z.string().trim().min(1).max(254),$p=["register","reset_password"],FS=z.object({email:Tn,purpose:z.enum($p)}),US=z.object({username:Wi,email:Tn,password:bo,code:z.string().min(4).max(8),inviteCode:z.string().trim().min(1).max(32).optional()}),jS=z.object({account:zi,password:yo}),qS=z.object({email:Tn,code:z.string().min(4).max(8),password:bo}),HS=z.object({oldPassword:yo,newPassword:bo}),WS=z.object({email:Tn}),zS=z.object({email:Tn,code:z.string().min(4).max(8),password:yo}),za=z.object({username:z.string(),email:z.string()}),Gn=z.object({accessToken:z.string(),user:za}),Ga=z.discriminatedUnion("status",[Gn.extend({status:z.literal("ok")}),z.object({status:z.literal("totp_required"),ticket:z.string()})]),Ka=z.object({user:za}),Dp=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()}),Bp=z.object({id:z.number().int(),ip:z.string().nullable(),userAgent:z.string().nullable(),device:Dp.nullable(),loginAt:z.string(),lastActiveAt:z.string(),expiresAt:z.string(),current:z.boolean()}),Va=z.object({sessions:z.array(Bp)});import{z as me}from"zod";var Kn=me.string().trim().length(6),Fp=me.string().trim().min(10).max(20),ar=me.string().trim().min(1).max(64),cr=me.record(me.string(),me.unknown()),VS=me.object({ticket:me.string().min(1),code:Kn}),JS=me.object({ticket:me.string().min(1),code:Fp}),YS=me.object({code:Kn.optional()}),XS=me.object({code:Kn}),Ja=me.object({secret:me.string(),otpauthUri:me.string()}),Gi=me.object({recoveryCodes:me.array(me.string())}),Up=me.object({id:me.number().int(),name:me.string(),createdAt:me.string(),lastUsedAt:me.string().nullable()}),Ya=me.object({totp:me.object({enabled:me.boolean(),enabledAt:me.string().nullable(),recoveryCodesRemaining:me.number().int()}),passkeys:me.array(Up)}),QS=me.object({name:ar,response:cr}),ZS=me.object({name:ar}),ex=me.object({response:cr});import{z as Se}from"zod";var ix=Se.object({account:zi,password:yo}),jp=Se.object({totp:Se.boolean(),passkeys:Se.boolean()}),sx=Se.discriminatedUnion("status",[Se.object({status:Se.literal("totp_required"),ticket:Se.string()}),Se.object({status:Se.literal("setup_required"),ticket:Se.string(),missing:jp})]),ax=Se.object({ticket:Se.string().min(1)}),cx=Se.object({ticket:Se.string().min(1),code:Kn}),lx=Se.object({ticket:Se.string().min(1),name:ar,response:cr}),ux=Se.object({ticket:Se.string().min(1),code:Kn.optional()}),Xa=Se.object({username:Se.string(),email:Se.string()}),mx=Se.object({accessToken:Se.string(),admin:Xa}),dx=Se.object({admin:Xa});import{z as Ki}from"zod";var bx=Ki.object({siteName:Ki.string().trim().min(1).max(64),siteDescription:Ki.string().trim().max(200).optional(),siteOrigin:qi,username:Wi,email:Tn,password:bo});import{z as Ne}from"zod";var Qa={orderNo:Ne.string(),amountCny:Ne.number().int(),status:Aa,credited:Ne.boolean(),refundedAmountCny:Ne.number().int(),succeededRefundCny:Ne.number().int(),pendingRefundCny:Ne.number().int(),createdAt:Ne.string()},So=Ne.object({...Qa,quota:Ne.number(),refundedQuota:Ne.number()}),xo=Ne.object({...Qa,planName:Ne.string(),renewal:Ne.boolean(),grantedDurationDays:Ne.number().int()}),Za=Ne.object({id:Ne.number().int(),amountCny:Ne.number().int(),status:Pa,refundTradeNo:Ne.string().nullable(),reason:Ne.string().nullable(),rejectReason:Ne.string().nullable(),createdAt:Ne.string()});function ec(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 je}from"zod";var lr=je.object({id:je.number().int(),title:je.string(),category:Ba,priority:Fa,status:Da,createdAt:je.string(),updatedAt:je.string()}),To=25*1024*1024,ur=5,Vi=je.object({id:je.number().int(),fileName:je.string(),fileSize:je.number().int(),contentType:je.string(),createdAt:je.string()}),Ji=je.object({id:je.number().int(),authorKind:Ua,content:je.string(),attachments:je.array(Vi),createdAt:je.string()}),tc=je.object({ticket:lr,messages:je.array(Ji)});import{z as wo}from"zod";var Yi=wo.object({id:wo.number().int(),title:wo.string(),content:wo.string(),level:Ia,publishedAt:wo.string()});import{z as Ie}from"zod";var Ax=Ie.union([Ie.object({ok:Ie.literal(!0),status:Ie.number().int(),latencyMs:Ie.number().int().nonnegative(),body:Ie.string()}),Ie.object({ok:Ie.literal(!1),reason:Ie.enum(["http","error_payload"]),status:Ie.number().int(),latencyMs:Ie.number().int().nonnegative(),body:Ie.string()}),Ie.object({ok:Ie.literal(!1),reason:Ie.literal("timeout"),latencyMs:Ie.number().int().nonnegative()}),Ie.object({ok:Ie.literal(!1),reason:Ie.literal("network"),detail:Ie.string(),latencyMs:Ie.number().int().nonnegative()})]);import{z as Re}from"zod";var Ix=Re.object({groups:Re.array(Re.object({title:Re.string(),items:Re.array(Re.object({slug:Re.string(),title:Re.string()}))}))}),Lx=Re.object({slug:Re.string(),title:Re.string(),markdown:Re.string(),images:Re.record(Re.string(),Re.object({width:Re.number().int(),height:Re.number().int()}))}),Mx=Re.object({slug:Re.string(),title:Re.string(),anchor:Re.string().nullable(),snippet:Re.string()});var nc="Asia/Shanghai",qp="+08:00";function Hp(e){return new Date(new Date(e).getTime()+288e5)}function Wp(e=Date.now()){let t=Hp(e);return{day:t.toISOString().slice(0,10),hour:t.getUTCHours()}}function Xi(e=Date.now()){return Wp(e).day}function Qi(e=Xi()){return new Date(`${e}T00:00:00${qp}`)}function on(e,t){let o=new Date(`${e}T00:00:00Z`);return new Date(o.getTime()+t*864e5).toISOString().slice(0,10)}var zp=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium",timeZone:nc}),Gp=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeZone:nc});function ee(e){return zp.format(new Date(e))}function zt(e){return Gp.format(new Date(e))}var Kp=[{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 Vp(e){return e>=10?Math.round(e).toLocaleString("en-US"):e>=1?e.toFixed(1):e.toFixed(-Math.floor(Math.log10(e)))}function ct(e){return e>=10?Math.round(e).toLocaleString("en-US"):e.toFixed(1)}function oc(e){return e<365?`${ct(e)} \u5929`:`${ct(e/365)} \u5E74`}function Jp(e){let t=e/1.2/250/60;if(t<48)return`${Math.max(1,Math.round(t))} \u5C0F\u65F6`;let o=t/24;return o<730?`${Math.round(o)} \u5929`:`${ct(o/365)} \u5E74`}function Yp(e){let t=e/1.2/80/60/8;return t<250?`${ct(t)} \u4E2A\u5DE5\u4F5C\u65E5`:`${ct(t/250)} \u4E2A\u5DE5\u4F5C\u5E74`}function Xp(e){let t=e/1.2/30*4;return t<1e3?`${Math.round(t).toLocaleString("en-US")} \u514B`:t<1e6?`${ct(t/1e3)} \u516C\u65A4`:`${ct(t/1e6)} \u5428`}var Qp=[...Kp.map(e=>({min:e.tokens/10,max:e.tokens*1e4,suffix:t=>`\u7EA6\u4E3A${e.name}\u7684 ${Vp(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 ${Jp(e)}`},{min:1680,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${Math.round(e/1.2/140).toLocaleString("en-US")} \u6761\u5199\u6EE1 140 \u5B57\u7684\u5FAE\u535A`},{min:9600,max:1/0,suffix:e=>`\u7EA6\u5408 ${Math.round(e/1.2/800).toLocaleString("en-US")} \u7BC7 800 \u5B57\u7684\u9AD8\u8003\u4F5C\u6587`},{min:131400,max:1/0,suffix:e=>`\u6309\u6BCF\u5929\u4E00\u7BC7 300 \u5B57\u7684\u65E5\u8BB0\u8BA1\uFF0C\u591F\u8FDE\u7EED\u5199 ${ct(e/1.2/300/365)} \u5E74`},{min:12e5,max:1/0,suffix:e=>`\u7EA6\u5408 ${Math.round(e/1.2/1e5).toLocaleString("en-US")} \u672C\u5341\u4E07\u5B57\u7684\u535A\u58EB\u8BBA\u6587`},{min:33e3,max:1/0,suffix:e=>`\u6309\u300A\u8D44\u6CBB\u901A\u9274\u300B\u7684\u7B14\u58A8\u5BC6\u5EA6\uFF0C\u7EA6\u591F\u53F8\u9A6C\u5149\u8BB0\u8F7D ${Math.round(e/45e5*1362).toLocaleString("en-US")} \u5E74\u5386\u53F2`},{min:49e3,max:1/0,suffix:e=>`\u7EA6\u5408\u300A\u4E00\u5343\u96F6\u4E00\u591C\u300B\u91CC\u5C71\u9C81\u4F50\u5FB7\u8BB2\u6545\u4E8B\u7684 ${Math.round(e/492e4*1001).toLocaleString("en-US")} \u4E2A\u591C\u665A`},{min:640,max:1/0,suffix:e=>`\u6309\u91D1\u9675\u523B\u7ECF\u5904\u523B\u5DE5\u534A\u6708\u523B\u6210\u4E00\u5757 800 \u5B57\u7ECF\u7248\u7684\u8FDB\u5EA6\uFF0C\u5168\u90E8\u523B\u4E0A\u96D5\u7248\u9700\u8981 ${oc(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 ${Yp(e)}`},{min:4500,max:1/0,suffix:e=>`\u82E5\u523B\u6210\u6BCF\u679A 30 \u5B57\u7684\u79E6\u6C49\u7AF9\u7B80\uFF0C\u603B\u91CD\u7EA6 ${Xp(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 ${oc(e/1.2/1500)}`},{min:108e3,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${Math.round(e/1.2/9e3).toLocaleString("en-US")} \u671F\u300A\u65B0\u95FB\u8054\u64AD\u300B\u7684\u64AD\u62A5\u7A3F`},{min:4e4,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${ct(e/1.2/33e3)} \u5C4A\u592E\u89C6\u6625\u665A\u7684\u5168\u90E8\u53F0\u8BCD\u548C\u6B4C\u8BCD`},{min:96e3,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u80FD\u7ED5\u6807\u51C6 400 \u7C73\u8DD1\u9053 ${ct(e/1.2*.005/400)} \u5708`},{min:96e5,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u5408\u5730\u9762\u5230\u56FD\u9645\u7A7A\u95F4\u7AD9\u8DDD\u79BB\u7684 ${ct(e/1.2*.005/4e5)} \u500D`},{min:26e7,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u80FD\u7ED5\u6708\u7403\u8D64\u9053 ${ct(e/1.2*.005/10917e3)} \u5708`},{min:96e7,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u80FD\u7ED5\u5730\u7403\u8D64\u9053 ${ct(e/1.2*.005/40075e3)} \u5708`}];function rc(e){let{tokens:t,scope:o,range:n}=e;if(t<=0)return null;let r=Qp.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 Gt(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown status value: ${t}`);return o}}function rn(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown label value: ${t}`);return o}}var sn=Gt({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"}}),Bx=rn({recharge:"\u5145\u503C",subscription:"\u8BA2\u9605"}),mr=Gt({pending:{label:"\u5F85\u5904\u7406",tone:"warning"},issued:{label:"\u5DF2\u5F00\u5177",tone:"success"},rejected:{label:"\u5DF2\u9A73\u56DE",tone:"danger"}}),Fx=Gt({enabled:{label:"\u5DF2\u542F\u7528",tone:"success"},disabled:{label:"\u5DF2\u7981\u7528",tone:"neutral"}}),Ux=Gt({active:{label:"\u6B63\u5E38",tone:"success"},disabled:{label:"\u7981\u7528",tone:"danger"}}),Zi=rn({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"}),ic=rn({usage_log:"\u7528\u91CF",order:"\u8BA2\u5355",invitation:"\u9080\u8BF7",admin:"\u7BA1\u7406\u5458"}),sc=Gt({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"}}),dr=Gt({success:{label:"\u6210\u529F",tone:"success"},error:{label:"\u5931\u8D25",tone:"danger"},canceled:{label:"\u53D6\u6D88",tone:"neutral"},anomaly:{label:"\u5F02\u5E38",tone:"warning"}}),ac=rn({"openai-chat":"OpenAI Chat","openai-responses":"OpenAI Responses","anthropic-messages":"Anthropic Messages"}),ko=rn({special:"\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968",general:"\u589E\u503C\u7A0E\u666E\u901A\u53D1\u7968"}),kn=rn({special:"\u4E13\u7968",general:"\u666E\u7968"}),pr=rn({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"}),vo=Gt({info:{label:"\u4FE1\u606F",tone:"neutral"},success:{label:"\u6210\u529F",tone:"success"},warning:{label:"\u8B66\u544A",tone:"warning"},error:{label:"\u91CD\u8981",tone:"danger"}}),es=Gt({open:{label:"\u5F85\u5904\u7406",tone:"warning"},replied:{label:"\u5DF2\u56DE\u590D",tone:"success"},closed:{label:"\u5DF2\u5173\u95ED",tone:"neutral"}}),fr=rn({billing:"\u8BA1\u8D39",technical:"\u6280\u672F",account:"\u8D26\u53F7",other:"\u5176\u4ED6"}),ts=Gt({low:{label:"\u8F83\u4F4E",tone:"neutral"},normal:{label:"\u666E\u901A",tone:"neutral"},high:{label:"\u7D27\u6025",tone:"danger"}});function et(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 ns(e){return Math.round(e*100)}function cc(e){return e/100}function lc(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 lc(e,t,2)}function Vn(e,t){return lc(e,t,6)}var gr=10080,hr=1440;function uc(e){if(e%gr===0){let t=e/gr;return t===1?"\u6BCF\u5468\u9650\u989D":`${t} \u5468\u9650\u989D`}if(e%hr===0){let t=e/hr;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 Zp(e){if(e%gr===0){let t=e/gr;return t===1?"\u6BCF\u5468":`\u6BCF ${t} \u5468`}if(e%hr===0){let t=e/hr;return t===1?"\u6BCF\u5929":`\u6BCF ${t} \u5929`}return e%60===0?`\u6BCF ${e/60} \u5C0F\u65F6`:`\u6BCF ${e} \u5206\u949F`}function mc(e,t){return e.windows.map(o=>`${Zp(o.durationMinutes)} ${ce(o.quota,t)}`)}function os(e){return e.quota<=0?100:Math.min(100,Math.floor(e.used/e.quota*100))}function rs(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 Ce(e){return e.toLocaleString("en-US")}function an(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`:Ce(e)}function vn(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 _n(e){return(e/1e3).toFixed(2)}function Jn(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 br(e,t){return`${e}******${t}`}var is={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"]},dc={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 ef}from"os";var tf=3e4,nf=Wa({cliVersion:ft,platform:process.platform,release:ef(),arch:process.arch,nodeVersion:process.versions.node});async function pc(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",nf);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??tf),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:ba,cause:r})}}async function fc(e){let t=await e.text();if(t==="")return null;try{return JSON.parse(t)}catch{return null}}async function ht(e,t={}){let o=await pc(e,t);if(!o.ok)return{status:o.status,ok:!1,headers:o.headers,data:await fc(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 gc(e,t={}){let o=await pc(e,t);if(!o.ok)return{status:o.status,ok:!1,headers:o.headers,data:await fc(o),bytes:null};let n=new Uint8Array(await o.arrayBuffer());return{status:o.status,ok:!0,headers:o.headers,data:null,bytes:n}}function of(e,t){let o=ja.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"?yn:void 0;return new $(qa[n]??r,i?{exitCode:i}:{})}function Et(e){if(!e.ok)throw of(e.status,e.data)}var yc="cf_refresh",Sc="cf_device",hc=6e4;function bc(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 _o(e,t){return{refresh:bc(t,yc)??e.refresh,device:bc(t,Sc)??e.device}}function yr(e){let t=[];return e.refresh&&t.push(`${yc}=${e.refresh}`),e.device&&t.push(`${Sc}=${e.device}`),t.length>0?{cookie:t.join("; ")}:{}}function rf(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 Ro(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:rf(o.accessToken),username:o.user.username,email:o.user.email,site:e};return Li(r=>{r.session=n,t.device&&(r.device={site:e,cookie:t.device})}),n}function ss(e){let{device:t}=Ct();return t!==null&&t.site===e?t.cookie:null}async function xc(e,t,o){let n={refresh:null,device:ss(e)},r=await ht(`${e}/api/auth/login`,{json:{account:t,password:o},headers:yr(n)});Et(r);let i=Ga.parse(r.data),s=_o(n,r.headers);return i.status==="totp_required"?{status:"totp_required",ticket:i.ticket,jar:s}:{status:"ok",session:Ro(e,s,i)}}async function Tc(e,t,o,n,r){let s=await ht(`${e}/api/auth/${r==="totp"?"login/totp":"login/recovery-code"}`,{json:{ticket:o,code:n},headers:yr(t)});Et(s);let a=Gn.parse(s.data);return Ro(e,_o(t,s.headers),a)}function wc(){Li(e=>{e.session=null})}async function sf(e){let t={refresh:e.refreshCookie,device:ss(e.site)},o=await ht(`${e.site}/api/auth/refresh`,{method:"POST",headers:yr(t)});if(o.status===401||o.status===403)throw wc(),new $("\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",{exitCode:yn});Et(o);let n=Gn.parse(o.data);return Ro(e.site,_o(t,o.headers),n)}async function Co(e=!1){let t=_a();return!e&&Date.now()<t.accessExpiresAt-hc?t:Ra(async()=>{let o=va().session;if(!o)throw new $("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:yn});return(o.refreshCookie!==t.refreshCookie||o.accessToken!==t.accessToken)&&Date.now()<o.accessExpiresAt-hc?o:sf(o)})}async function Sr(){let e=Ct().session;if(!e)return;let t=await ht(`${e.site}/api/auth/logout`,{method:"POST",headers:yr({refresh:e.refreshCookie,device:ss(e.site)})});wc(),Et(t)}import{spawn as af}from"child_process";function Eo(e,t={}){return new Promise((o,n)=>{let r=af("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 kc(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",()=>Sr()),await o("\u5220\u9664\u672C\u5730\u6587\u4EF6",()=>{let n=Wt();cf(n)&&lf(n,{recursive:!0,force:!0})}),await o("\u5378\u8F7D\u672C\u7A0B\u5E8F",async()=>{await Eo(["uninstall","-g",qn])}),t}import{z as Ao}from"zod";var uf=Ao.object({line:Ao.object({name:Ao.string(),url:Ao.string()}).nullable().default(null),lastUpdateCheckAt:Ao.number().nullable().default(null)}),vc=ir(uf,ya,"\u672C\u5730\u914D\u7F6E","\u91CD\u65B0\u8FD0\u884C"),Rn=vc.load,xr=vc.update;var mf=1440*60*1e3;async function _c(){let e=(await Eo(["view",qn,"version"])).trim();if(e==="")throw new $(`npm \u6CA1\u6709\u62A5\u51FA ${qn} \u7684\u7248\u672C`);return e}async function Rc(e,t){return await Eo(["install","-g",`${qn}@${e}`],{background:t}),e}async function Cc(){let e=await _c();return e===ft?null:await Rc(e,!1)}function df(){let e=Date.now(),t=Rn().lastUpdateCheckAt;return t!==null&&e-t<mf?!1:(xr(o=>{o.lastUpdateCheckAt=e}),!0)}async function Ec(){if(!df())return null;let e;try{e=await _c()}catch{return null}return e===ft?null:await Rc(e,!0)}import{Box as xy,render as Ty,useInput as wy}from"ink";import{useEffect as fa,useRef as ky}from"react";async function At(e,t,o={}){let n=await ht(t,o);return Et(n),e.parse(n.data)}async function O(e,t,o={}){let n=await Co(),r=s=>ht(`${n.site}/api${t}`,{...o,headers:{...o.headers,authorization:`Bearer ${s}`}}),i=await r(n.accessToken);if(i.status===401){let s=await Co(!0);i=await r(s.accessToken)}return Et(i),e.parse(i.data)}async function Tr(e,t={}){let o=await Co(),n=i=>gc(`${o.site}/api${e}`,{...t,headers:{...t.headers,authorization:`Bearer ${i}`}}),r=await n(o.accessToken);if(r.status===401){let i=await Co(!0);r=await n(i.accessToken)}if(Et(r),r.bytes===null)throw new $("\u9644\u4EF6\u4E0B\u8F7D\u54CD\u5E94\u4E3A\u7A7A");return r.bytes}function $t(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 Ac=e=>O(xn(Yi),$t("/announcements",{...e})),Pc=()=>O(Yi.nullable(),"/announcements/unread"),wr=e=>O(ye,`/announcements/${e}/read`,{method:"POST"}).then(()=>{});import{Box as Nc,useWindowSize as pf}from"ink";import{Children as ff}from"react";import{jsx as Ic}from"react/jsx-runtime";var gf=1,as=1,J=1;function q(){let{columns:e,rows:t}=pf();return{width:Math.max(1,e-gf*2),columns:e,rows:t}}function Lc({height:e,children:t}){return Ic(Nc,{flexDirection:"column",height:e,justifyContent:"space-between",children:ff.toArray(t).map((o,n)=>Ic(Nc,{flexDirection:"column",flexShrink:0,children:o},n))})}import{useInput as Oc}from"ink";import{createContext as us,useCallback as kr,useContext as hf,useEffect as ms,useMemo as cs,useRef as Po,useState as Mc}from"react";import{jsx as ls}from"react/jsx-runtime";var vr=us(null),ds=us(null),Yn={screen:0,panel:10,input:20},ps=us(null);function $c({children:e}){let[t,o]=Mc(!1),[n,r]=Mc(!1),i=Po(0),s=Po(0),a=Po([]),c=Po(0),l=kr(()=>(i.current+=1,o(!0),()=>{i.current-=1,i.current===0&&o(!1)}),[]),m=kr(()=>(s.current+=1,r(!0),()=>{s.current-=1,s.current===0&&r(!1)}),[]),f=kr(g=>{let b={...g,seq:c.current+=1};return a.current.push(b),()=>{a.current=a.current.filter(T=>T!==b)}},[]),d=kr(()=>{a.current.reduce((b,T)=>b===null||T.layer>b.layer||T.layer===b.layer&&T.seq>b.seq?T:b,null)?.handler()},[]);Oc((g,b)=>{b.escape&&d()});let p=cs(()=>({active:t,acquire:l}),[t,l]),y=cs(()=>({locked:n,acquire:m}),[n,m]),h=cs(()=>({push:f,fire:d}),[f,d]);return ls(vr.Provider,{value:p,children:ls(ds.Provider,{value:y,children:ls(ps.Provider,{value:h,children:e})})})}function Cn(e){let t=hf(e);if(!t)throw new Error("\u952E\u76D8\u94A9\u5B50\u5FC5\u987B\u5728 KeyboardProvider \u5185\u4F7F\u7528");return t}function _r(e){let{acquire:t}=Cn(vr);ms(()=>{if(e)return t()},[e,t])}function Dc(e){let{acquire:t}=Cn(ds);ms(()=>{if(e)return t()},[e,t])}function Rr(){return Cn(ds).locked}function Cr(){return Cn(vr).active}function W(e,t=!0){let o=Cn(vr).active;Oc(e,{isActive:t&&!o})}function Bc(){return Cn(ps).fire}function cn(e,{isActive:t=!0,layer:o=Yn.screen}={}){let{push:n}=Cn(ps),r=Po(e);r.current=e,ms(()=>{if(t)return n({handler:()=>r.current(),layer:o})},[t,o,n])}import{measureElement as bf}from"ink";import{PassThrough as yf}from"stream";import{createContext as Sf,useCallback as xf,useContext as Tf,useEffect as qc,useRef as Er}from"react";import{jsx as Nf}from"react/jsx-runtime";var wf="\x1B[?1000h\x1B[?1003h\x1B[?1006h",kf="\x1B[?1006l\x1B[?1003l\x1B[?1000l",vf=27,_f=91,Rf=60,Fc=77,Uc=109,jc=20,Cf=64,Ef=32,Af=20;function Pf(e){let t=[],o=[],n=0;for(;n<e.length;){let r=e[n];if(r===void 0)break;if(r!==vf){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!==_f){o.push(r),n+=1;continue}if(s===Fc){if(n+6>e.length)break;n+=6;continue}if(s!==Rf){o.push(r),n+=1;continue}let a=n+3,c;for(;a<e.length&&a-n<jc;){let p=e[a];if(p===Fc||p===Uc){c=p;break}a+=1}if(c===void 0){if(a-n<jc)break;o.push(r),n+=1;continue}let l=e.subarray(n+3,a).toString("latin1").split(";");if(n=a+1,c===Uc||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&Cf)!==0?{row:d,column:f,kind:"wheel",delta:(m&1)===0?-1:1}:{row:d,column:f,kind:(m&Ef)!==0?"move":"press"})}return{events:t,clean:Buffer.from(o),pending:e.subarray(n)}}function Hc(e,t){let o=new Set,n=new yf,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=Pf(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,Af))},c=()=>{t.write(kf)},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(wf);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 Wc=Sf(null);function zc({subscribe:e,children:t}){let o=Er(new Set).current,n=Er(null),r=xf(i=>(o.add(i),()=>{o.delete(i)}),[o]);return qc(()=>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=bf(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]),Nf(Wc.Provider,{value:r,children:t})}function qe(e){let t=Tf(Wc);if(t===null)throw new Error("useMouseRegion \u5FC5\u987B\u5728 MouseProvider \u5185\u4F7F\u7528");let o=Er(null),n=Er(e);return n.current=e,qc(()=>t({node:o,handlers:n}),[t]),o}import{useApp as If}from"ink";import{createContext as Lf,useCallback as En,useContext as Mf,useEffect as fs,useRef as Pr,useState as Io}from"react";var tt=[{id:"usage",label:"\u6570\u636E\u770B\u677F"},{id:"tokens",label:"\u4EE4\u724C\u7BA1\u7406"},{id:"logs",label:"\u4F7F\u7528\u65E5\u5FD7"},{id:"models",label:"\u6A21\u578B\u5E7F\u573A"},{id:"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"}],Gc="usage",No=e=>tt.findIndex(t=>t.id===e),Ar=e=>No(e)>=0;import{jsx as $f}from"react/jsx-runtime";var Of=5e3,Vc=Lf(null),Jc=e=>({id:e,params:void 0}),Kc=()=>Ct().session===null?[{id:"home",params:void 0}]:[Jc(Gc)];function D(){let e=Mf(Vc);if(!e)throw new Error("useNav \u5FC5\u987B\u5728 NavProvider \u5185\u4F7F\u7528");return e}function Yc({ctx:e,children:t}){let o=If(),[n,r]=Io(Kc),[i,s]=Io(0),[a,c]=Io([]),l=Pr({announcementsChecked:!1,announcementsShown:!1}).current,m=Pr(new WeakMap).current,f=En((C,...M)=>{r(j=>[...j,{id:C,params:M[0]}])},[]),d=En(()=>{r(C=>C.length>1?C.slice(0,-1):C),s(C=>C+1)},[]),p=En(C=>{r([Jc(C)]),s(M=>M+1)},[]),y=En(()=>{r(Kc()),s(C=>C+1)},[]),h=En(()=>s(C=>C+1),[]),g=En((C,M)=>{c(j=>[...j,{tone:C,message:M}])},[]),b=En(()=>c(C=>C.slice(1)),[]),T=a[0]??null;fs(()=>{if(T===null)return;let C=setTimeout(b,Of);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 $f(Vc.Provider,{value:k,children:t})}function Qe(e,t){let{retained:o}=D(),[n,r]=Io(()=>e!==void 0&&o.has(e)?o.get(e):t());return fs(()=>{e!==void 0&&o.set(e,n)},[o,e,n]),[n,r]}function X(e,t){let[o,n]=Io({phase:"loading"}),r=Pr(t);r.current=t;let i=Pr(0);return fs(()=>{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 Vr,Text as Nn,useInput as pg}from"ink";import{Box as Do,Text as eo}from"ink";import Lo 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"},Nr=["#242424","#5a4233","#746533","#70924f","#37be95"],Ir=["#37be95","#2d9273","#246e58","#1e5443","#193f33"],He={accent:u.accent,success:u.success,warning:u.warning,danger:u.danger},Xn=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Lr=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 Df=Lo(Q.ellipsis),Bf=(e,t)=>e+" ".repeat(Math.max(0,t-Lo(e))),Ff=(e,t)=>" ".repeat(Math.max(0,t-Lo(e)))+e;function we(e,t){if(t<=0)return"";if(Lo(e)<=t)return e;let o=t-Df,n="";for(let r of e){if(Lo(n+r)>o)break;n+=r}return n+Q.ellipsis}var Le=(e,t)=>Bf(we(e,t),t),ln=(e,t)=>Ff(we(e,t),t),Be=e=>e.filter(t=>typeof t=="string"&&t!=="").join(` ${Q.bullet} `);import{Text as Pt,useInput as Uf}from"ink";import{useImperativeHandle as jf,useRef as Xc,useEffect as qf,useState as Zc}from"react";import gs from"string-width";import{jsx as Dt,jsxs as hs}from"react/jsx-runtime";var Hf=e=>e.replace(new RegExp("\\p{Cc}","gu"),"");function Qc(e,t,o){let n=t,r=0;for(;n>0;){let s=gs(e[n-1]??"");if(r+s>o)break;r+=s,n-=1}let i=t;for(r+=1;i<e.length;){let s=gs(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 Mo({char:e}){return Dt(Pt,{backgroundColor:u.cursorBackground,color:u.foreground,children:e})}function Mr({value:e,onChange:t,onSubmit:o,placeholder:n,mask:r=!1,isActive:i=!0,width:s=40,ref:a}){let c=[...e],[l,m]=Zc(c.length),f=Math.min(l,c.length),d=Math.max(8,s),p=Xc(e),y=Xc(f);p.current=e,y.current=f,_r(i);let h=k=>{y.current=k,m(k)},g=(k,C)=>{p.current=k,h(C),t(k)};if(jf(a,()=>({moveToColumn:k=>{let C=[...p.current],M=r?Array.from({length:C.length},()=>"\u2022"):C,x=Qc(M,Math.min(y.current,C.length),d).start,P=0;for(;x<C.length;){let _=gs(M[x]??"");if(P+_>k)break;P+=_,x+=1}h(x)}})),Uf((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=Hf(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?hs(Pt,{children:[Dt(Mo,{char:k[0]??" "}),Dt(Pt,{color:u.faintForeground,children:k.slice(1).join("")})]}):Dt(Pt,{color:u.faintForeground,children:k.join("")})}let b=r?Array.from({length:c.length},()=>"\u2022"):c;if(!i)return Dt(Pt,{color:u.foreground,children:b.join("")});let{before:T,at:w,after:S}=Qc(b,f,d);return hs(Pt,{children:[Dt(Pt,{color:u.foreground,children:T}),Dt(Mo,{char:w}),Dt(Pt,{color:u.foreground,children:S})]})}function nt({label:e}){let[t,o]=Zc(0);return qf(()=>{let n=setInterval(()=>o(r=>(r+1)%Xn.length),Lr);return()=>clearInterval(n)},[]),hs(Pt,{children:[Dt(Pt,{color:u.accent,children:Xn[t]}),Dt(Pt,{color:u.mutedForeground,children:` ${e}`})]})}import{Box as nl,Text as Qn}from"ink";import{useEffect as rl,useState as zf}from"react";import ol from"string-width";import{Box as el,Text as Or}from"ink";import Wf from"string-width";import{jsx as Oo,jsxs as tl}from"react/jsx-runtime";var le=2,lt=1,Fe=1,Nt=lt+Fe;function $o({title:e,note:t,width:o}){let n=t===void 0?0:Wf(t)+2,r=Math.max(0,o-le-n);return tl(Or,{wrap:"truncate",children:[Oo(Or,{color:u.accent,children:`${Q.section} `}),Oo(Or,{bold:!0,color:u.foreground,children:we(e,r)}),t!==void 0&&Oo(Or,{color:u.faintForeground,children:` ${t}`})]})}function re({title:e,note:t,width:o,gap:n=Fe,children:r}){return tl(el,{flexDirection:"column",children:[Oo($o,{title:e,note:t,width:o}),Oo(el,{flexDirection:"column",marginTop:n,paddingLeft:le,children:r})]})}import{jsx as Kt,jsxs as sl}from"react/jsx-runtime";var Zn=e=>!("heading"in e),Gf=e=>e.flatMap(t=>!Zn(t)&&t.heading!==""?[t,{heading:""}]:[t]),il=2,$r=2,Kf=(e,t)=>t===void 0?e:e>t?Math.max(1,t-1):t;function Vf(e,t,o,n){let[r,i]=Qe(n,()=>e.findIndex(m=>Zn(m)&&m.disabled!==!0));rl(()=>{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&&Zn(h)&&h.disabled!==!0)return p}return f})},a=m=>{let f=e[m];return f!==void 0&&Zn(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 bs(e,t){let[o,n]=zf(()=>e>=t?e-t+1:0);return rl(()=>{n(r=>e<r?e:e>=r+t?e-t+1:r)},[e,t]),o}function Jf(e,t){let o=e.filter(Zn),n=Math.max(0,...o.map(s=>ol(s.label))),r=Math.max(0,...o.map(s=>s.badge===void 0?0:ol(s.badge))),i=il+n+(r>0?r+$r:0)+$r;return{label:n,badge:r,hint:Math.max(0,t-i)}}function Yf({item:e,active:t,metrics:o}){let n=e.disabled===!0,r=n?u.faintForeground:e.labelTone!==void 0?He[e.labelTone]:t?u.accent:u.foreground;return sl(Qn,{wrap:"truncate",children:[Kt(Qn,{color:u.accent,children:t?`${Q.cursor} `:" "}),Kt(Qn,{color:r,bold:t,children:Le(e.label,o.label)}),o.badge>0&&Kt(Qn,{color:e.badgeTone===void 0?u.faintForeground:He[e.badgeTone],children:`${" ".repeat($r)}${Le(e.badge??"",o.badge)}`}),e.hint!==void 0&&o.hint>0&&Kt(Qn,{color:n||!t?u.faintForeground:u.mutedForeground,children:`${" ".repeat($r)}${we(e.hint,o.hint)}`})]})}function Xf({items:e,cursor:t,metrics:o,window:n,width:r,isActive:i,onPick:s,onHover:a,onScroll:c}){let l=bs(t,n),m=e.slice(l,l+n),f=p=>p<m.length?l+p:null,d=qe({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 sl(nl,{ref:d,flexDirection:"column",children:[m.map((p,y)=>{let h=l+y;return Zn(p)?Kt(Yf,{item:p,active:h===t&&i,metrics:o},h):p.heading===""?Kt(nl,{height:1},h):Kt($o,{title:p.heading,width:r},h)}),e.length>n&&Kt(Qn,{color:u.faintForeground,children:`${" ".repeat(il)}${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=Gf(e),a=Vf(s,r,t,i);return Kt(Xf,{items:s,cursor:a.index,metrics:Jf(s,o),window:Kf(s.length,n),width:o,isActive:r,onPick:a.pick,onHover:a.moveTo,onScroll:a.step})}import{jsx as bt,jsxs as Dr}from"react/jsx-runtime";var al={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=al[e];return Dr(Do,{flexDirection:"column",children:[Dr(eo,{children:[bt(eo,{color:r.color,children:`${r.glyph} `}),bt(eo,{color:u.foreground,children:we(t,n-2)})]}),o!==void 0&&bt(eo,{color:u.faintForeground,children:` ${we(o,n-2)}`})]})}function An({message:e,hint:t,width:o}){return bt(ge,{tone:"fail",title:e,detail:t,width:o})}var Qf=2,Zf=2;function cl({tone:e,message:t,width:o,onDismiss:n}){let r=al[e],i=qe({onClick:n});return Dr(Do,{ref:i,children:[bt(eo,{backgroundColor:u.border,color:r.color,wrap:"truncate",children:` ${r.glyph} `}),bt(eo,{backgroundColor:u.border,color:u.foreground,wrap:"truncate",children:`${we(t,o-Qf-Zf)} `})]})}function Ke({title:e,detail:t,confirmLabel:o,onConfirm:n,onCancel:r,width:i,busy:s,error:a}){return Dr(Do,{flexDirection:"column",children:[bt(ge,{tone:"warn",title:e,detail:t,width:i}),a!=null&&bt(Do,{marginTop:1,children:bt(An,{message:a.message,hint:a.hint,width:i})}),bt(Do,{marginTop:1,children:typeof s=="string"?bt(nt,{label:s}):bt(ae,{items:[{value:"cancel",label:"\u53D6\u6D88"},{value:"confirm",label:o,labelTone:"danger"}],width:i,onSelect:c=>c==="confirm"?n():r()})})]})}import{Box as eg,Text as Br,useInput as tg}from"ink";import{useRef as ng,useState as og}from"react";import{jsx as Fr,jsxs as rg}from"react/jsx-runtime";function un({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]=og(n?s:0),l=ng(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));tg((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=qe({isActive:o&&r,onWheel:m}),d=e.slice(a,a+i);return rg(eg,{ref:f,flexDirection:"column",children:[d.map((p,y)=>Fr(Br,{wrap:"truncate",children:p.spans.length===0?" ":p.spans.map((h,g)=>Fr(Br,{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)=>Fr(Br,{children:" "},y)),r&&Fr(Br,{color:u.faintForeground,wrap:"truncate",children:`${a+1}-${Math.min(a+i,e.length)} / ${e.length}`})]})}function Ye(e){return e.tone==="neutral"?void 0:e.tone}function Vt(e){let t=Ye(e);return t===void 0?e.label:{text:e.label,tone:t}}import{useCallback as ys,useRef as ig,useState as ll}from"react";function de(){let e=D(),[t,o]=ll(null),[n,r]=ll(null),i=ig(0),s=ys(()=>{i.current+=1,o(null),r(null)},[]),a=ys((l,m)=>{r({message:l,hint:m})},[]),c=ys((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 sg}from"marked";import Ur from"string-width";var ag={spans:[]},Ss=e=>e===void 0||e.spans.every(t=>t.text.trim()==="");function ul(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 Bt(e,t,o=0){let n=()=>Array.from({length:o},()=>({ch:" "})),r=[],i=[],s=0,a=!0,c=()=>{r.push(ul(i)),a=!1,i=n(),s=o};for(let l of e)for(let m of l.text){if(m===`
|
|
5
|
-
`){c();continue}let
|
|
6
|
-
`});break;case"escape":o.push({text:n.text,...t});break;default:o.push({text:n.raw,...t})}return o}var
|
|
7
|
-
`))o.push(...Bt([{text:` ${i}`,color:u.mutedForeground}],t,2));n();break;case"blockquote":{let i=xs(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=Ur(l),f=xs(a.tokens,Math.max(4,t-m));f.forEach((d,p)=>{Ss(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(...cg(r.header,r.rows,r.raw,t)),n();break;default:o.push(...Bt([{text:r.raw,color:u.foreground}],t))}return o}function to(e,t){let o=sg.lex(e,{gfm:!0,breaks:!0}),n=xs(o,Math.max(8,t));for(;n.length>0&&Ss(n[n.length-1]);)n.pop();return n}import{Box as Fo}from"ink";import{Box as lg,Text as pl}from"ink";import gl from"string-width";import{jsx as fl,jsxs as ug}from"react/jsx-runtime";var jr=["\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"],hl=Math.max(...jr.map(e=>gl(e))),qr=jr.length,Hr=e=>hl<=e;function Wr({width:e}){let t=`v${ft}`,o=hl+2+gl(t)<=e;return fl(lg,{flexDirection:"column",children:jr.map((n,r)=>ug(pl,{color:u.accent,children:[n,r===jr.length-1&&o&&fl(pl,{color:u.faintForeground,children:` ${t}`})]},n))})}import{Box as ks,Text as ut}from"ink";import{useState as bl}from"react";import oo from"string-width";import{jsx as yt,jsxs as zr}from"react/jsx-runtime";var Gr=2,Ts=` ${Q.crumb} `;function Kr({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+oo(p)+oo(Ts),0),a=s+oo(r)<=t,c=a?s:0,[l,m]=bl(!1),f=qe({isActive:n,onClick:({column:d})=>{d<c&&o()},onHover:({column:d})=>m(d<c),onHoverLeave:()=>m(!1)});return yt(ks,{ref:f,marginBottom:1,children:a?zr(ut,{children:[i.map((d,p)=>zr(ut,{children:[yt(ut,{color:p===0?u.accent:l&&n?u.foreground:u.mutedForeground,children:d}),yt(ut,{color:u.faintForeground,children:Ts})]},p)),yt(ut,{bold:!0,color:u.foreground,children:r})]}):yt(ut,{color:u.mutedForeground,children:we(e.join(Ts),t)})})}var ws=2,Bo=2,no=2;function yl({current:e,width:t,onPick:o,isActive:n}){let r=Math.max(0,No(e)),[i,s]=bl(null),a=Math.max(...tt.map(b=>oo(b.label))),l=(b=>b*a+(b-1)*Bo+ws)(tt.length)>t,m=l?t-no*2:t,f=l?Math.max(1,Math.floor((m+Bo-ws)/(a+Bo))):tt.length,d=Math.min(Math.max(0,r-Math.floor((f-1)/2)),tt.length-f),p=tt.slice(d,d+f),y=[],h=l?no:0;p.forEach((b,T)=>{T>0&&(h+=Bo);let w=oo(b.label)+(b.id===e?ws:0);y.push({id:b.id,from:h,to:h+w}),h+=w});let g=qe({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>=no&&b<h)return;let w=b<no?tt[d-1]:tt[d+f];w!==void 0&&o(w.id)}});return yt(ks,{ref:g,marginBottom:1,children:zr(ut,{wrap:"truncate",children:[l&&yt(ut,{color:u.border,children:d>0?`${Q.prev} `:" ".repeat(no)}),p.map((b,T)=>zr(ut,{children:[T>0&&" ".repeat(Bo),b.id===e?yt(ut,{backgroundColor:u.foreground,color:u.background,bold:!0,children:` ${b.label} `}):yt(ut,{color:n&&b.id===i?u.foreground:u.mutedForeground,children:b.label})]},b.id)),l&&yt(ut,{color:u.border,children:d+f<tt.length?` ${Q.next}`:" ".repeat(no)})]})})}function Sl({hints:e,width:t}){let o=[];for(let n of e){if(oo(Be([...o,n]))>t)break;o.push(n)}return yt(ks,{children:yt(ut,{color:u.faintForeground,children:Be(o)})})}import{Fragment as dg,jsx as ot,jsxs as wl}from"react/jsx-runtime";var xl=3,mg=8;function Uo(e){let{rows:t}=q();return Math.max(1,t-as-xl-e)}function Tl(){let e=D(),{width:t,rows:o}=q(),n=e.current.id,r=e.depth===1&&Ar(n)?n:null,i=Math.max(1,o-as-xl),s=qr+J,a=r!==null&&Hr(t)&&i-Gr-s>=mg;return{tab:r,mark:a,rows:a?Gr+s:Gr}}var ie=()=>Uo(Tl().rows);function Pn({header:e,hints:t,children:o}){let{width:n}=q(),{message:r,dismissToast:i}=D();return wl(Fo,{flexDirection:"column",flexGrow:1,children:[e,ot(Fo,{flexDirection:"column",flexGrow:1,overflow:"hidden",children:ot(Fo,{flexDirection:"column",flexShrink:0,children:o})}),ot(Fo,{height:1,marginTop:1,justifyContent:"flex-end",children:r!==null&&ot(cl,{tone:r.tone,message:r.message,width:n,onDismiss:i})}),ot(Sl,{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}=Tl(),f=Rr(),d=Cr(),p=d?[]:["[] \u5207\u529F\u80FD","q \u9000\u51FA","? \u5E2E\u52A9"],y=d?[]:["? \u5E2E\u52A9"];cn(n??a.pop,{isActive:r});let h=Bc(),g=r&&!i&&!f;return W(b=>{if(l===null||b!=="["&&b!=="]")return;let T=tt[(No(l)+(b==="["?-1:1)+tt.length)%tt.length];T!==void 0&&a.select(T.id)},r&&!i&&!f&&!s),s?ot(Pn,{header:null,hints:i?t:[...t,"Esc \u8FD4\u56DE",...y],children:o}):l!==null?ot(Pn,{header:wl(dg,{children:[m&&ot(Fo,{marginBottom:J,children:ot(Wr,{width:c})}),ot(yl,{current:l,width:c,onPick:b=>{b===l?h():a.select(b)},isActive:g})]}),hints:i?t:[...t,...p],children:o}):ot(Pn,{header:ot(Kr,{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"?ot(nt,{label:t}):e.phase==="error"?ot(An,{message:e.message,hint:e.hint,width:o}):n(e.data)}import{jsx as St,jsxs as vs}from"react/jsx-runtime";function kl({params:e}){let t=D(),{width:o}=q(),n=ie(),{item:r}=e,{busy:i,error:s,run:a}=de();pg((f,d)=>{d.return&&a("\u6B63\u5728\u786E\u8BA4",()=>wr(r.id),{onSuccess:()=>t.pop()})},{isActive:i===null});let c=vo(r.level),l=Ye(c),m=Math.max(3,n-4-(s===null?0:2));return St(K,{trail:["\u7CFB\u7EDF\u516C\u544A","\u672A\u8BFB\u786E\u8BA4"],hints:["\u2191\u2193 \u6EDA\u52A8","Enter \u6211\u77E5\u9053\u4E86"],locked:!0,onEscape:()=>{},children:vs(Vr,{flexDirection:"column",children:[vs(Nn,{wrap:"truncate",children:[St(Nn,{bold:!0,color:u.foreground,children:r.title}),St(Nn,{color:l===void 0?u.mutedForeground:He[l],children:` ${c.label}`}),St(Nn,{color:u.faintForeground,children:` \u53D1\u5E03\u4E8E ${zt(r.publishedAt)}`})]}),St(Vr,{marginTop:1,children:St(un,{lines:to(r.content,o),height:m})}),s!==null&&St(Vr,{marginTop:1,children:St(An,{message:s.message,hint:s.hint,width:o})}),St(Vr,{marginTop:1,children:i!==null?St(nt,{label:i}):vs(Nn,{wrap:"truncate",children:[St(Nn,{color:u.accent,children:`${Q.cursor} `}),St(Nn,{bold:!0,color:u.accent,children:"\u6211\u77E5\u9053\u4E86"})]})})]})})}import{Box as As,Text as Jr}from"ink";import{useState as kg}from"react";import{Box as _s,Text as Jt}from"ink";import{useEffect as vl,useRef as fg,useState as _l}from"react";import Rs from"string-width";import{jsx as mn,jsxs as qo}from"react/jsx-runtime";var Rl=e=>e===void 0?"":typeof e=="string"?e:e.text,Cs=2,gg=6;function hg(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 Es(e,t,o){let n=e.map((c,l)=>Math.max(Rs(c.label),...t.map(m=>Rs(m[l]??"")))),r=n.reduce((c,l)=>c+l,0),i=r+Cs*Math.max(0,e.length-1)-o;if(i<0)return hg(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)>gg).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 bg=(e,t,o)=>t.map((n,r)=>n.align==="right"?ln(e[r]??"",o[r]??0):Le(e[r]??"",o[r]??0)).join(" ".repeat(Cs)),jo=2,yg=2;function Ee({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]=Qe(d?f("cursor"):void 0,()=>0),[h,g]=Qe(f("query"),()=>""),[b,T]=_l(!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]=_l(()=>p>=M?p-M+1:0);vl(()=>{y(B=>Math.min(B,Math.max(0,S.length-1)))},[S.length]),vl(()=>{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),cn(()=>{T(!1),g("")},{isActive:b||w!=="",layer:b?Yn.input:Yn.panel});let E=k?1:0,v=fg(null),A=B=>{if(B<=E)return null;let ne=x+B-E-1;return S[ne]===void 0?null:ne},R=qe({isActive:a,onWheel:_,onClick:({row:B,column:ne})=>{if(k&&B===0){T(!0),v.current?.moveToColumn(ne-yg);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=Es(t,S.map(B=>o(B).map(Rl)),n-jo),H=S.slice(x,x+M);return qo(_s,{ref:R,flexDirection:"column",children:[k&&qo(_s,{children:[mn(Jt,{color:u.accent,children:"/ "}),mn(Mr,{ref:v,value:h,onChange:g,onSubmit:()=>T(!1),isActive:b,placeholder:"\u8F93\u5165\u5173\u952E\u8BCD\u8FC7\u6EE4",width:n-2-Rs(` ${S.length}/${e.length}`)}),mn(Jt,{color:u.faintForeground,children:` ${S.length}/${e.length}`})]}),qo(Jt,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(jo),bg(t.map(B=>B.label),t,N)]}),S.length===0?qo(_s,{flexDirection:"column",children:[mn(Jt,{wrap:"truncate",color:u.mutedForeground,children:`${" ".repeat(jo)}${w===""?c:"\u65E0\u5339\u914D\u7ED3\u679C"}`}),l!==void 0&&w===""&&C>1&&mn(Jt,{wrap:"truncate",color:u.faintForeground,children:`${" ".repeat(jo)}${l}`})]}):H.map((B,ne)=>{let F=x+ne,Z=d&&F===p&&a,Ge=Z?u.accent:a?u.foreground:u.mutedForeground,I=o(B);return qo(Jt,{wrap:"truncate",children:[mn(Jt,{color:u.accent,children:Z?`${Q.cursor} `:" "}),t.map((U,V)=>{let pe=I[V],Oe=Rl(pe),vt=U.align==="right"?ln(Oe,N[V]??0):Le(Oe,N[V]??0),_t=typeof pe=="object"?pe.tone:void 0,$e=!Z&&a&&_t!==void 0?He[_t]:Ge;return mn(Jt,{color:$e,bold:Z,children:V>0?`${" ".repeat(Cs)}${vt}`:vt},U.label)})]},F)}),(x>0||x+M<S.length)&&mn(Jt,{color:u.faintForeground,children:`${" ".repeat(jo)}${x+1}-${Math.min(x+M,S.length)} / ${S.length}`})]})}import{Text as Sg}from"ink";import{useEffect as xg,useState as Tg}from"react";import{jsx as wg}from"react/jsx-runtime";var Cl=100;function dn(e,t,{retain:o}={}){let[n,r]=Qe(o,()=>1),[i,s]=Tg({pages:1,total:0}),a=X([...e,n],()=>t(n,Cl));xg(()=>{a.phase==="ready"&&s({pages:Math.max(1,Math.ceil(a.data.total/Cl)),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 pn({page:e,pages:t,total:o,width:n}){return wg(Sg,{wrap:"truncate",color:u.faintForeground,children:we(Be([`\u7B2C ${e} / ${t} \u9875`,`\u5171 ${o} \u6761`,"\u2190\u2192 \u7FFB\u9875"]),n)})}import{jsx as Yt,jsxs as Ps}from"react/jsx-runtime";function El(){let e=D(),{width:t}=q(),o=ie(),[n,r]=kg({name:"list"}),i=dn([e.revision],(a,c)=>Ac({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 Yt(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:Yt(Y,{state:i.state,loading:"\u6B63\u5728\u8BFB\u53D6\u516C\u544A",width:t,children:a=>{if(n.name==="detail"){let c=vo(n.item.level),l=Ye(c);return Ps(As,{flexDirection:"column",children:[Ps(Jr,{wrap:"truncate",children:[Yt(Jr,{bold:!0,color:u.foreground,children:n.item.title}),Yt(Jr,{color:l===void 0?u.mutedForeground:He[l],children:` ${c.label}`}),Yt(Jr,{color:u.faintForeground,children:` ${Be([`\u53D1\u5E03\u4E8E ${zt(n.item.publishedAt)}`])}`})]}),Yt(As,{marginTop:1,children:Yt(un,{lines:to(n.item.content,t),height:Math.max(3,o-2)})})]})}return Ps(As,{flexDirection:"column",children:[Yt(Ee,{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,Vt(vo(c.level)),zt(c.publishedAt)],onOpen:c=>{r({name:"detail",item:c}),wr(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"}),Yt(pn,{page:i.page,pages:i.pages,total:i.total,width:t})]})}})})}import{Box as Tt,Text as zo}from"ink";import{useState as du}from"react";import Gg from"string-width";var Al=()=>O(Ka,"/auth/me"),Pl=e=>O(ye,"/auth/me",{method:"PATCH",json:e}).then(()=>{}),Nl=e=>O(ye,"/auth/me/password",{method:"POST",json:e}).then(()=>{}),Il=e=>O(ye,"/auth/me/email/code",{method:"POST",json:e}).then(()=>{}),Ll=e=>O(ye,"/auth/me/email",{method:"POST",json:e}).then(()=>{}),Ml=()=>O(Va,"/auth/me/sessions"),Ol=e=>O(ye,`/auth/me/sessions/${e}`,{method:"DELETE"}).then(()=>{}),$l=()=>O(Ya,"/auth/me/security"),Ns=e=>O(Ja,"/auth/me/totp/setup",{method:"POST",json:e}),Dl=e=>O(Gi,"/auth/me/totp/confirm",{method:"POST",json:e}),Bl=e=>O(ye,"/auth/me/totp/disable",{method:"POST",json:e}).then(()=>{}),Fl=e=>O(Gi,"/auth/me/totp/recovery-codes",{method:"POST",json:e}),Ul=(e,t)=>O(ye,`/auth/me/passkeys/${e}`,{method:"PATCH",json:t}).then(()=>{}),jl=e=>O(ye,`/auth/me/passkeys/${e}`,{method:"DELETE"}).then(()=>{});import{Box as Ut,measureElement as Jl,Text as Ae,useInput as eu}from"ink";import{useEffect as Eg,useRef as Yl,useState as ro}from"react";import Os from"string-width";import{Box as vg,Text as fn,useInput as _g}from"ink";import{useRef as ql,useState as Hl}from"react";import Ls from"string-width";import{jsx as Xt,jsxs as Kl}from"react/jsx-runtime";var Rg=e=>e.replace(/\r\n?/g,`
|
|
8
|
-
`).replace(new RegExp("(?!\\n)\\p{Cc}","gu"),"");function
|
|
9
|
-
`){o.push({start:n,end:i,nl:!0}),n=i+1,r=0;continue}let a=
|
|
2
|
+
import{once as Qy}from"events";import{createInterface as Zy}from"readline/promises";import{parseArgs as eS}from"util";var xa={name:"@codeflow-ai/cli",version:"1.24.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.4",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 gt="codeflow",ht=xa.version,Ta="https://codeflow.asia",zn="@codeflow-ai/cli",bo=0,Wn=1,Ii=2,Sn=3,wa=4;import{randomBytes as yp}from"crypto";import{mkdirSync as Ra,readFileSync as Sp,rmSync as Ca,statSync as xp,writeFileSync as Tp}from"fs";import{join as Pa}from"path";import{setTimeout as wp}from"timers/promises";import{z as Pt}from"zod";var $=class extends Error{exitCode;hint;constructor(t,o={}){super(t,{cause:o.cause}),this.name="CliError",this.exitCode=o.exitCode??Wn,this.hint=o.hint}};function ve(e){return e instanceof Error?e.message:String(e)}import{chmodSync as mp,existsSync as dp,mkdirSync as pp,readFileSync as fp,writeFileSync as gp}from"fs";import{dirname as hp}from"path";function Gn(e){return dp(e)?fp(e,"utf8"):null}function Li(e,t,o){pp(hp(e),{recursive:!0,mode:448});try{gp(e,t,{mode:o}),mp(e,o)}catch(n){throw new $(`\u5199\u5165 ${e} \u5931\u8D25\uFF1A${ve(n)}`,{cause:n})}}function rr(e){let t=Gn(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 ir(e,t,o){Li(e,`${JSON.stringify(t,null,2)}
|
|
3
|
+
`,o)}function sr(e,t,o,n){let r=null,i=()=>{if(r)return r;let s=t(),a=Gn(s);if(a===null)return r=e.parse({}),r;let c;try{c=JSON.parse(a)}catch(d){throw new $(`${o} ${s} \u5DF2\u635F\u574F\uFF0C\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u540E${n}`,{cause:d})}let l=e.safeParse(c);if(!l.success)throw new $(`${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),ir(t(),a,384),r=a,a}}}import{homedir as bp}from"os";import{join as Kn}from"path";function Gt(){let e=process.env.XDG_CONFIG_HOME;if(e)return Kn(e,"codeflow");if(process.platform==="win32"){let t=process.env.APPDATA;if(t)return Kn(t,"codeflow")}return Kn(bp(),".config","codeflow")}var ka=()=>Kn(Gt(),"config.json"),va=()=>Kn(Gt(),"credentials.json"),_a=()=>Kn(Gt(),"refresh.lock");var kp=Pt.object({refreshCookie:Pt.string(),accessToken:Pt.string(),accessExpiresAt:Pt.number(),username:Pt.string(),email:Pt.string(),site:Pt.string()}),vp=Pt.object({site:Pt.string(),cookie:Pt.string()}),_p=Pt.object({session:kp.nullable().default(null),device:vp.nullable().default(null)}),Mi=sr(_p,va,"\u672C\u5730\u51ED\u636E","\u91CD\u65B0\u767B\u5F55"),Et=Mi.load,Ea=Mi.reload,Oi=Mi.update;function Aa(){let{session:e}=Et();if(!e)throw new $("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:Sn});return e}var Rp=6e4,Cp=75e3,Pp=120;function Ep(e,t){try{Ra(e)}catch{try{Date.now()-xp(e).mtimeMs>Rp&&Ca(e,{recursive:!0,force:!0})}catch{}return!1}return Tp(Pa(e,"owner"),t),!0}function Ap(e,t){let o;try{o=Sp(Pa(e,"owner"),"utf8")}catch{return}o===t&&Ca(e,{recursive:!0,force:!0})}async function Na(e){let t=_a(),o=yp(16).toString("hex");Ra(Gt(),{recursive:!0,mode:448});let n=Date.now()+Cp;for(;!Ep(t,o);){if(Date.now()>n)throw new $(`\u7B49\u5F85\u5237\u65B0\u9501\u8D85\u65F6\uFF0C\u82E5\u786E\u8BA4\u6CA1\u6709\u5176\u4ED6 ${gt} \u5728\u8FD0\u884C\uFF0C\u8BF7\u5220\u9664 ${t}`);await wp(Pp)}try{return await e()}finally{Ap(t,o)}}function Np(){let e=process.env.CODEFLOW_SITE;if(e)return e;let t=Et().session;return t?t.site:Ta}function Ia(){return{site:Np()}}function xn(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 Pf,rmSync as Ef}from"fs";import{z as je}from"zod";var Ip=["active","disabled"],DS=je.enum(Ip),Lp=["openai","anthropic"],BS=je.enum(Lp),Mp=["openai-chat","openai-responses","anthropic-messages"],La=je.enum(Mp);var Op=["enabled","disabled"],FS=je.enum(Op),yo=["pending","paid","refund_requested","partially_refunded","refunded","failed","expired"],Ma=je.enum(yo),$p=["recharge","subscription"],US=je.enum($p),Dp=["requested","pending","succeeded","failed","rejected","canceled"],Oa=je.enum(Dp),$i=["pending","issued","rejected"],$a=je.enum($i),Bp=["special","general"],Di=je.enum(Bp),Fp=["info","success","warning","error"],Da=je.enum(Fp),Up=["terms","privacy"],jS=je.enum(Up),Bi=["recharge","reserve","consume","reserve_refund","refund","refund_release","reward","admin_adjust"],Ba=je.enum(Bi),jp=["usage_log","order","invitation","admin"],Fa=je.enum(jp),Fi=["first_inviter","first_invitee","subsequent_inviter"],Ua=je.enum(Fi),Ui=["success","error","canceled","anomaly"],ja=je.enum(Ui),ji=["open","replied","closed"],Ha=je.enum(ji),Hi=["billing","technical","account","other"],qa=je.enum(Hi),qi=["low","normal","high"],za=je.enum(qi),Hp=["user","admin"],Wa=je.enum(Hp);import{z as rn}from"zod";var qp=["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","docs_not_configured","docs_source_unavailable","docs_page_not_found"],zp=rn.enum(qp),Ga=rn.object({error:rn.object({code:zp,message:rn.string(),details:rn.unknown().optional(),requestId:rn.string().optional()})}),zS=rn.object({reason:rn.string()});var Ka={internal_error:"\u670D\u52A1\u6682\u65F6\u51FA\u73B0\u95EE\u9898\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",validation_error:"\u63D0\u4EA4\u7684\u5185\u5BB9\u6709\u8BEF\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5",not_found:"\u8BBF\u95EE\u7684\u5185\u5BB9\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u5220\u9664",conflict:"\u5DF2\u5B58\u5728\u76F8\u540C\u7684\u8BB0\u5F55\uFF0C\u8BF7\u52FF\u91CD\u590D\u63D0\u4EA4",model_in_use:"\u8BE5\u6A21\u578B\u4ECD\u88AB\u6E20\u9053\u4F7F\u7528\uFF0C\u8BF7\u5148\u5728\u6E20\u9053\u4E2D\u79FB\u9664\u540E\u518D\u4FEE\u6539\u6216\u5220\u9664\u5B9A\u4EF7",rate_limited:"\u64CD\u4F5C\u8FC7\u4E8E\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",forbidden:"\u6CA1\u6709\u6743\u9650\u6267\u884C\u6B64\u64CD\u4F5C",unauthorized:"\u8BF7\u5148\u767B\u5F55",invalid_credentials:"\u8D26\u53F7\u6216\u5BC6\u7801\u4E0D\u6B63\u786E",password_incorrect:"\u5F53\u524D\u5BC6\u7801\u4E0D\u6B63\u786E",account_disabled:"\u8D26\u6237\u5DF2\u88AB\u7981\u7528\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458",email_already_registered:"\u8BE5\u90AE\u7BB1\u5DF2\u88AB\u6CE8\u518C",username_taken:"\u8BE5\u7528\u6237\u540D\u5DF2\u88AB\u4F7F\u7528",verification_code_invalid:"\u9A8C\u8BC1\u7801\u4E0D\u6B63\u786E",verification_code_expired:"\u9A8C\u8BC1\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u83B7\u53D6",token_expired:"\u767B\u5F55\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",token_reuse_detected:"\u767B\u5F55\u72B6\u6001\u5F02\u5E38\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",token_limit_exceeded:"\u4EE4\u724C\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650\uFF0C\u8BF7\u5148\u5220\u9664\u4E0D\u518D\u4F7F\u7528\u7684\u4EE4\u724C",totp_invalid:"\u52A8\u6001\u9A8C\u8BC1\u7801\u4E0D\u6B63\u786E\uFF0C\u8BF7\u91CD\u8BD5",totp_replayed:"\u8BE5\u9A8C\u8BC1\u7801\u521A\u521A\u5DF2\u88AB\u4F7F\u7528\uFF0C\u8BF7\u7B49\u5F85\u9A8C\u8BC1\u5668\u663E\u793A\u4E0B\u4E00\u4E2A\u9A8C\u8BC1\u7801\u540E\u518D\u8F93\u5165",totp_setup_expired:"\u7ED1\u5B9A\u4F1A\u8BDD\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u5F00\u59CB\u7ED1\u5B9A",totp_not_enabled:"\u5C1A\u672A\u542F\u7528\u4E24\u6B65\u9A8C\u8BC1",login_ticket_invalid:"\u767B\u5F55\u9A8C\u8BC1\u5DF2\u8FC7\u671F\u6216\u5C1D\u8BD5\u6B21\u6570\u8FC7\u591A\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",recovery_code_invalid:"\u6062\u590D\u7801\u4E0D\u6B63\u786E\u6216\u5DF2\u88AB\u4F7F\u7528",passkey_registration_failed:"Passkey \u6CE8\u518C\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5",passkey_verification_failed:"Passkey \u9A8C\u8BC1\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5",passkey_last_remaining:"\u7BA1\u7406\u5458\u81F3\u5C11\u9700\u4FDD\u7559\u4E00\u679A Passkey\uFF0C\u65E0\u6CD5\u5220\u9664",passkey_not_found:"\u8BE5 Passkey \u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u5220\u9664",passkey_origin_not_allowed:"\u5F53\u524D\u8BBF\u95EE\u5730\u5740\u672A\u914D\u7F6E\u4E3A\u7AD9\u70B9\u5730\u5740\uFF0C\u65E0\u6CD5\u4F7F\u7528 Passkey",insufficient_quota:"\u989D\u5EA6\u4E0D\u8DB3\uFF0C\u8BF7\u5145\u503C\u540E\u518D\u8BD5",no_available_channel:"\u4E0A\u6E38\u670D\u52A1\u6682\u4E0D\u53EF\u7528\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",model_not_found:"\u8BE5\u6A21\u578B\u4E0D\u5B58\u5728",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",docs_not_configured:"\u6587\u6863\u4E2D\u5FC3\u672A\u542F\u7528",docs_source_unavailable:"\u6587\u6863\u5185\u5BB9\u83B7\u53D6\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",docs_page_not_found:"\u8BE5\u6587\u6863\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u79FB\u9664"};import{z as ue}from"zod";var Wp=ue.string().trim().min(1),zi=Wp.pipe(ue.url()),Gp=ue.object({name:ue.string().trim().min(1),description:ue.string().trim().min(1),url:zi}),VS=ue.array(Gp),Kp=["string","number","boolean","secret","markdown","money","api-lines","origins"],Vp=ue.enum(Kp),Jp=ue.object({key:ue.string(),type:Vp,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()}),JS=ue.object({key:ue.string(),label:ue.string(),description:ue.string().optional(),fields:ue.array(Jp)}),YS=ue.object({values:ue.record(ue.string(),ue.unknown())}),XS=ue.object({fields:ue.record(ue.string(),ue.string())});function Va(e){return`codeflow-cli/${e.cliVersion} (${e.platform} ${e.release}; ${e.arch}) node/${e.nodeVersion}`}function ar(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 bt}from"zod";var Wi=1e8;var tx=bt.object({id:bt.coerce.number().int().positive()}),nx=bt.object({page:bt.coerce.number().int().min(1).default(1),pageSize:bt.coerce.number().int().min(1).max(100).default(20)});function Tn(e){return bt.object({items:bt.array(e),total:bt.number(),page:bt.number(),pageSize:bt.number()})}var xe=bt.object({ok:bt.literal(!0)});import{z as W}from"zod";var wn=W.email().max(254).toLowerCase(),ct=8,So=W.string().min(ct).max(128),xo=W.string().min(1).max(128),kn=32,Gi=W.string().trim().min(1).max(kn),Ki=W.string().trim().min(1).max(254),Yp=["register","reset_password"],ix=W.object({email:wn,purpose:W.enum(Yp)}),sx=W.object({username:Gi,email:wn,password:So,code:W.string().min(4).max(8),inviteCode:W.string().trim().min(1).max(32).optional()}),ax=W.object({account:Ki,password:xo}),cx=W.object({email:wn,code:W.string().min(4).max(8),password:So}),lx=W.object({oldPassword:xo,newPassword:So}),ux=W.object({email:wn}),mx=W.object({email:wn,code:W.string().min(4).max(8),password:xo}),Ja=W.object({username:W.string(),email:W.string()}),Vn=W.object({accessToken:W.string(),user:Ja}),Ya=W.discriminatedUnion("status",[Vn.extend({status:W.literal("ok")}),W.object({status:W.literal("totp_required"),ticket:W.string()})]),Xa=W.object({user:Ja}),Xp=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()}),Qp=W.object({id:W.number().int(),ip:W.string().nullable(),userAgent:W.string().nullable(),device:Xp.nullable(),loginAt:W.string(),lastActiveAt:W.string(),expiresAt:W.string(),current:W.boolean()}),Qa=W.object({sessions:W.array(Qp)});import{z as me}from"zod";var Jn=me.string().trim().length(6),Zp=me.string().trim().min(10).max(20),cr=me.string().trim().min(1).max(64),lr=me.record(me.string(),me.unknown()),fx=me.object({ticket:me.string().min(1),code:Jn}),gx=me.object({ticket:me.string().min(1),code:Zp}),hx=me.object({code:Jn.optional()}),bx=me.object({code:Jn}),Za=me.object({secret:me.string(),otpauthUri:me.string()}),Vi=me.object({recoveryCodes:me.array(me.string())}),ef=me.object({id:me.number().int(),name:me.string(),createdAt:me.string(),lastUsedAt:me.string().nullable()}),ec=me.object({totp:me.object({enabled:me.boolean(),enabledAt:me.string().nullable(),recoveryCodesRemaining:me.number().int()}),passkeys:me.array(ef)}),yx=me.object({name:cr,response:lr}),Sx=me.object({name:cr}),xx=me.object({response:lr});import{z as Te}from"zod";var _x=Te.object({account:Ki,password:xo}),tf=Te.object({totp:Te.boolean(),passkeys:Te.boolean()}),Rx=Te.discriminatedUnion("status",[Te.object({status:Te.literal("totp_required"),ticket:Te.string()}),Te.object({status:Te.literal("setup_required"),ticket:Te.string(),missing:tf})]),Cx=Te.object({ticket:Te.string().min(1)}),Px=Te.object({ticket:Te.string().min(1),code:Jn}),Ex=Te.object({ticket:Te.string().min(1),name:cr,response:lr}),Ax=Te.object({ticket:Te.string().min(1),code:Jn.optional()}),tc=Te.object({username:Te.string(),email:Te.string()}),Nx=Te.object({accessToken:Te.string(),admin:tc}),Ix=Te.object({admin:tc});import{z as Ji}from"zod";var Dx=Ji.object({siteName:Ji.string().trim().min(1).max(64),siteDescription:Ji.string().trim().max(200).optional(),siteOrigin:zi,username:Gi,email:wn,password:So});import{z as Oe}from"zod";var nc={orderNo:Oe.string(),amountCny:Oe.number().int(),status:Ma,credited:Oe.boolean(),refundedAmountCny:Oe.number().int(),succeededRefundCny:Oe.number().int(),pendingRefundCny:Oe.number().int(),createdAt:Oe.string()},To=Oe.object({...nc,quota:Oe.number(),refundedQuota:Oe.number()}),wo=Oe.object({...nc,planName:Oe.string(),renewal:Oe.boolean(),grantedDurationDays:Oe.number().int()}),oc=Oe.object({id:Oe.number().int(),amountCny:Oe.number().int(),status:Oa,refundTradeNo:Oe.string().nullable(),reason:Oe.string().nullable(),rejectReason:Oe.string().nullable(),createdAt:Oe.string()});function rc(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 ze}from"zod";var ur=ze.object({id:ze.number().int(),title:ze.string(),category:qa,priority:za,status:Ha,createdAt:ze.string(),updatedAt:ze.string()}),ko=25*1024*1024,mr=5,Yi=ze.object({id:ze.number().int(),fileName:ze.string(),fileSize:ze.number().int(),contentType:ze.string(),createdAt:ze.string()}),Xi=ze.object({id:ze.number().int(),authorKind:Wa,content:ze.string(),attachments:ze.array(Yi),createdAt:ze.string()}),ic=ze.object({ticket:ur,messages:ze.array(Xi)});import{z as vo}from"zod";var Qi=vo.object({id:vo.number().int(),title:vo.string(),content:vo.string(),level:Da,publishedAt:vo.string()});import{z as $e}from"zod";var Jx=$e.union([$e.object({ok:$e.literal(!0),status:$e.number().int(),latencyMs:$e.number().int().nonnegative(),body:$e.string()}),$e.object({ok:$e.literal(!1),reason:$e.enum(["http","error_payload"]),status:$e.number().int(),latencyMs:$e.number().int().nonnegative(),body:$e.string()}),$e.object({ok:$e.literal(!1),reason:$e.literal("timeout"),latencyMs:$e.number().int().nonnegative()}),$e.object({ok:$e.literal(!1),reason:$e.literal("network"),detail:$e.string(),latencyMs:$e.number().int().nonnegative()})]);import{z as Ne}from"zod";var Qx=Ne.object({groups:Ne.array(Ne.object({title:Ne.string(),items:Ne.array(Ne.object({slug:Ne.string(),title:Ne.string()}))}))}),Zx=Ne.object({slug:Ne.string(),title:Ne.string(),markdown:Ne.string(),images:Ne.record(Ne.string(),Ne.object({width:Ne.number().int(),height:Ne.number().int()}))}),eT=Ne.object({slug:Ne.string(),title:Ne.string(),anchor:Ne.string().nullable(),snippet:Ne.string()});import{z as de}from"zod";function _e(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`:_e(e)}function Dt(e,t){return e===0&&t!==void 0?t:e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:6})}function vn(e){return(e/1e3).toFixed(2)}function Yn(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 dr(e,t){return`${e}******${t}`}var pr=de.union([de.literal(0),de.number().min(1e-6)]),sc=de.object({inputPricePerMillionTokens:pr,outputPricePerMillionTokens:pr,cachedInputPricePerMillionTokens:pr,cacheWritePricePerMillionTokens:pr}),Zi=de.object({inputPricePerMillionTokens:de.number(),outputPricePerMillionTokens:de.number(),cachedInputPricePerMillionTokens:de.number(),cacheWritePricePerMillionTokens:de.number()});var ac=de.number().int().nonnegative(),nf=de.number().min(1e-4),of={param:de.string().trim().min(1),value:de.string().trim().min(1)},rf=de.discriminatedUnion("kind",[sc.extend({kind:de.literal("price"),inputTokensOver:ac}),de.object({kind:de.literal("multiplier"),...of,multiplier:nf})]),iT=sc.extend({model:de.string().trim().min(1),displayName:de.string().trim().min(1),rules:de.array(rf)}),sf=de.discriminatedUnion("kind",[Zi.extend({kind:de.literal("price"),inputTokensOver:ac}),de.object({kind:de.literal("multiplier"),param:de.string(),value:de.string(),multiplier:de.number()})]),cc=de.array(sf);function af(e){return e.kind==="price"}function lc(e){return e.kind==="multiplier"}function uc(e){return e>=1e6&&e%1e5===0?`${e/1e6}M`:e>=1e3&&e%1e3===0?`${e/1e3}k`:_e(e)}function _o(e){return e===null?"\u57FA\u7840":"\u6269\u5C55"}function es(e){return`> ${uc(e)}`}function mc(e,t){let o=t.filter(af).sort((r,i)=>r.inputTokensOver-i.inputTokensOver),n=o[0];return n===void 0?[{name:_o(null),range:null,price:e}]:[{name:_o(null),range:`\u2264 ${uc(n.inputTokensOver)}`,price:e},...o.map(r=>({name:_o(r.inputTokensOver),range:es(r.inputTokensOver),price:r}))]}var cf=de.object({value:de.string(),multiplier:de.number()}),dc=de.array(cf);function pc(e){return gc(e.map(t=>t.multiplier))}function fc(e,t){return gc([e,...t.map(o=>o.multiplier)])}function gc(e){return Number(e.reduce((t,o)=>t*o,1).toFixed(4))}var hc="Asia/Shanghai",lf="+08:00";function uf(e){return new Date(new Date(e).getTime()+288e5)}function mf(e=Date.now()){let t=uf(e);return{day:t.toISOString().slice(0,10),hour:t.getUTCHours()}}function ts(e=Date.now()){return mf(e).day}function ns(e=ts()){return new Date(`${e}T00:00:00${lf}`)}function an(e,t){let o=new Date(`${e}T00:00:00Z`);return new Date(o.getTime()+t*864e5).toISOString().slice(0,10)}var df=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium",timeZone:hc}),pf=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeZone:hc});function ee(e){return df.format(new Date(e))}function Kt(e){return pf.format(new Date(e))}var ff=[{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 gf(e){return e>=10?Math.round(e).toLocaleString("en-US"):e>=1?e.toFixed(1):e.toFixed(-Math.floor(Math.log10(e)))}function lt(e){return e>=10?Math.round(e).toLocaleString("en-US"):e.toFixed(1)}function bc(e){return e<365?`${lt(e)} \u5929`:`${lt(e/365)} \u5E74`}function hf(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`:`${lt(o/365)} \u5E74`}function bf(e){let t=e/1.2/80/60/8;return t<250?`${lt(t)} \u4E2A\u5DE5\u4F5C\u65E5`:`${lt(t/250)} \u4E2A\u5DE5\u4F5C\u5E74`}function yf(e){let t=e/1.2/30*4;return t<1e3?`${Math.round(t).toLocaleString("en-US")} \u514B`:t<1e6?`${lt(t/1e3)} \u516C\u65A4`:`${lt(t/1e6)} \u5428`}var Sf=[...ff.map(e=>({min:e.tokens/10,max:e.tokens*1e4,suffix:t=>`\u7EA6\u4E3A${e.name}\u7684 ${gf(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 ${hf(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 ${lt(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 ${bc(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 ${bf(e)}`},{min:4500,max:1/0,suffix:e=>`\u82E5\u523B\u6210\u6BCF\u679A 30 \u5B57\u7684\u79E6\u6C49\u7AF9\u7B80\uFF0C\u603B\u91CD\u7EA6 ${yf(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 ${bc(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 ${lt(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 ${lt(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 ${lt(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 ${lt(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 ${lt(e/1.2*.005/40075e3)} \u5708`}];function yc(e){let{tokens:t,scope:o,range:n}=e;if(t<=0)return null;let r=Sf.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 Vt(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown status value: ${t}`);return o}}function cn(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown label value: ${t}`);return o}}var ln=Vt({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"}}),lT=cn({recharge:"\u5145\u503C",subscription:"\u8BA2\u9605"}),fr=Vt({pending:{label:"\u5F85\u5904\u7406",tone:"warning"},issued:{label:"\u5DF2\u5F00\u5177",tone:"success"},rejected:{label:"\u5DF2\u9A73\u56DE",tone:"danger"}}),uT=Vt({enabled:{label:"\u5DF2\u542F\u7528",tone:"success"},disabled:{label:"\u5DF2\u7981\u7528",tone:"neutral"}}),mT=Vt({active:{label:"\u6B63\u5E38",tone:"success"},disabled:{label:"\u7981\u7528",tone:"danger"}}),os=cn({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"}),Sc=cn({usage_log:"\u7528\u91CF",order:"\u8BA2\u5355",invitation:"\u9080\u8BF7",admin:"\u7BA1\u7406\u5458"}),xc=Vt({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"}}),gr=Vt({success:{label:"\u6210\u529F",tone:"success"},error:{label:"\u5931\u8D25",tone:"danger"},canceled:{label:"\u53D6\u6D88",tone:"neutral"},anomaly:{label:"\u5F02\u5E38",tone:"warning"}}),Tc=cn({"openai-chat":"OpenAI Chat","openai-responses":"OpenAI Responses","anthropic-messages":"Anthropic Messages"}),Ro=cn({special:"\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968",general:"\u589E\u503C\u7A0E\u666E\u901A\u53D1\u7968"}),_n=cn({special:"\u4E13\u7968",general:"\u666E\u7968"}),hr=cn({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"}),Co=Vt({info:{label:"\u4FE1\u606F",tone:"neutral"},success:{label:"\u6210\u529F",tone:"success"},warning:{label:"\u8B66\u544A",tone:"warning"},error:{label:"\u91CD\u8981",tone:"danger"}}),rs=Vt({open:{label:"\u5F85\u5904\u7406",tone:"warning"},replied:{label:"\u5DF2\u56DE\u590D",tone:"success"},closed:{label:"\u5DF2\u5173\u95ED",tone:"neutral"}}),br=cn({billing:"\u8BA1\u8D39",technical:"\u6280\u672F",account:"\u8D26\u53F7",other:"\u5176\u4ED6"}),is=Vt({low:{label:"\u8F83\u4F4E",tone:"neutral"},normal:{label:"\u666E\u901A",tone:"neutral"},high:{label:"\u7D27\u6025",tone:"danger"}});function tt(e,t,o){let n=r=>{let i=t(r);return typeof i=="string"?i:i.label};return[{value:"",label:o},...e.map(r=>({value:r,label:n(r)}))]}function be(e){let t=e/100;return`${t<0?"-":""}\xA5${Math.abs(t).toFixed(2)}`}function ss(e){return Math.round(e*100)}function wc(e){return e/100}function kc(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 kc(e,t,2)}function Xn(e,t){return kc(e,t,6)}var yr=10080,Sr=1440;function vc(e){if(e%yr===0){let t=e/yr;return t===1?"\u6BCF\u5468\u9650\u989D":`${t} \u5468\u9650\u989D`}if(e%Sr===0){let t=e/Sr;return t===1?"\u6BCF\u65E5\u9650\u989D":`${t} \u5929\u9650\u989D`}return e%60===0?`${e/60} \u5C0F\u65F6\u9650\u989D`:`${e} \u5206\u949F\u9650\u989D`}function xf(e){if(e%yr===0){let t=e/yr;return t===1?"\u6BCF\u5468":`\u6BCF ${t} \u5468`}if(e%Sr===0){let t=e/Sr;return t===1?"\u6BCF\u5929":`\u6BCF ${t} \u5929`}return e%60===0?`\u6BCF ${e/60} \u5C0F\u65F6`:`\u6BCF ${e} \u5206\u949F`}function _c(e,t){return e.windows.map(o=>`${xf(o.durationMinutes)} ${ce(o.quota,t)}`)}function as(e){return Math.min(100,Math.floor(e.used/e.quota*100))}function cs(e){return e.revokedAt!==null?{label:"\u5DF2\u4F5C\u5E9F",tone:"danger"}:new Date(e.expiresAt).getTime()<=Date.now()?{label:"\u5DF2\u8FC7\u671F",tone:"neutral"}:{label:"\u751F\u6548\u4E2D",tone:"success"}}var ls={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"]},Rc={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 Tf}from"os";var wf=3e4,kf=Va({cliVersion:ht,platform:process.platform,release:Tf(),arch:process.arch,nodeVersion:process.versions.node});async function Cc(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",kf);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??wf),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:wa,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 yt(e,t={}){let o=await Cc(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 Ec(e,t={}){let o=await Cc(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 vf(e,t){let o=Ga.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"?Sn:void 0;return new $(Ka[n]??r,i?{exitCode:i}:{})}function At(e){if(!e.ok)throw vf(e.status,e.data)}var Ic="cf_refresh",Lc="cf_device",Ac=6e4;function Nc(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 Po(e,t){return{refresh:Nc(t,Ic)??e.refresh,device:Nc(t,Lc)??e.device}}function xr(e){let t=[];return e.refresh&&t.push(`${Ic}=${e.refresh}`),e.device&&t.push(`${Lc}=${e.device}`),t.length>0?{cookie:t.join("; ")}:{}}function _f(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 Eo(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:_f(o.accessToken),username:o.user.username,email:o.user.email,site:e};return Oi(r=>{r.session=n,t.device&&(r.device={site:e,cookie:t.device})}),n}function us(e){let{device:t}=Et();return t!==null&&t.site===e?t.cookie:null}async function Mc(e,t,o){let n={refresh:null,device:us(e)},r=await yt(`${e}/api/auth/login`,{json:{account:t,password:o},headers:xr(n)});At(r);let i=Ya.parse(r.data),s=Po(n,r.headers);return i.status==="totp_required"?{status:"totp_required",ticket:i.ticket,jar:s}:{status:"ok",session:Eo(e,s,i)}}async function Oc(e,t,o,n,r){let s=await yt(`${e}/api/auth/${r==="totp"?"login/totp":"login/recovery-code"}`,{json:{ticket:o,code:n},headers:xr(t)});At(s);let a=Vn.parse(s.data);return Eo(e,Po(t,s.headers),a)}function $c(){Oi(e=>{e.session=null})}async function Rf(e){let t={refresh:e.refreshCookie,device:us(e.site)},o=await yt(`${e.site}/api/auth/refresh`,{method:"POST",headers:xr(t)});if(o.status===401||o.status===403)throw $c(),new $("\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",{exitCode:Sn});At(o);let n=Vn.parse(o.data);return Eo(e.site,Po(t,o.headers),n)}async function Ao(e=!1){let t=Aa();return!e&&Date.now()<t.accessExpiresAt-Ac?t:Na(async()=>{let o=Ea().session;if(!o)throw new $("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:Sn});return(o.refreshCookie!==t.refreshCookie||o.accessToken!==t.accessToken)&&Date.now()<o.accessExpiresAt-Ac?o:Rf(o)})}async function Tr(){let e=Et().session;if(!e)return;let t=await yt(`${e.site}/api/auth/logout`,{method:"POST",headers:xr({refresh:e.refreshCookie,device:us(e.site)})});$c(),At(t)}import{spawn as Cf}from"child_process";function No(e,t={}){return new Promise((o,n)=>{let r=Cf("npm",e,{stdio:["ignore","pipe","pipe"],shell:process.platform==="win32"}),i=[],s=[],a=c=>{for(let l of c.toString("utf8").split(`
|
|
4
|
+
`)){let d=l.trimEnd();d!==""&&(s.push(d),s.length>20&&s.shift())}};r.stdout.on("data",c=>{i.push(c.toString("utf8")),a(c)}),r.stderr.on("data",a),r.on("error",c=>n(new $(`\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 Dc(e){let t=[],o=async(n,r)=>{try{await r(),e.done(n)}catch(i){t.push(`${n}\uFF1A${ve(i)}`),e.failed(n)}};return await o("\u9000\u51FA\u767B\u5F55",()=>Tr()),await o("\u5220\u9664\u672C\u5730\u6587\u4EF6",()=>{let n=Gt();Pf(n)&&Ef(n,{recursive:!0,force:!0})}),await o("\u5378\u8F7D\u672C\u7A0B\u5E8F",async()=>{await No(["uninstall","-g",zn])}),t}import{z as Io}from"zod";var Af=Io.object({line:Io.object({name:Io.string(),url:Io.string()}).nullable().default(null),lastUpdateCheckAt:Io.number().nullable().default(null)}),Bc=sr(Af,ka,"\u672C\u5730\u914D\u7F6E","\u91CD\u65B0\u8FD0\u884C"),Rn=Bc.load,wr=Bc.update;var Nf=1440*60*1e3;async function Fc(){let e=(await No(["view",zn,"version"])).trim();if(e==="")throw new $(`npm \u6CA1\u6709\u62A5\u51FA ${zn} \u7684\u7248\u672C`);return e}async function Uc(e,t){return await No(["install","-g",`${zn}@${e}`],{background:t}),e}async function jc(){let e=await Fc();return e===ht?null:await Uc(e,!1)}function If(){let e=Date.now(),t=Rn().lastUpdateCheckAt;return t!==null&&e-t<Nf?!1:(wr(o=>{o.lastUpdateCheckAt=e}),!0)}async function Hc(){if(!If())return null;let e;try{e=await Fc()}catch{return null}return e===ht?null:await Uc(e,!0)}import{Box as Fy,render as Uy,useInput as jy}from"ink";import{useEffect as Sa,useRef as Hy}from"react";async function Nt(e,t,o={}){let n=await yt(t,o);return At(n),e.parse(n.data)}async function O(e,t,o={}){let n=await Ao(),r=s=>yt(`${n.site}/api${t}`,{...o,headers:{...o.headers,authorization:`Bearer ${s}`}}),i=await r(n.accessToken);if(i.status===401){let s=await Ao(!0);i=await r(s.accessToken)}return At(i),e.parse(i.data)}async function kr(e,t={}){let o=await Ao(),n=i=>Ec(`${o.site}/api${e}`,{...t,headers:{...t.headers,authorization:`Bearer ${i}`}}),r=await n(o.accessToken);if(r.status===401){let i=await Ao(!0);r=await n(i.accessToken)}return At(r),r.bytes}function Bt(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 qc=e=>O(Tn(Qi),Bt("/announcements",{...e})),zc=()=>O(Qi.nullable(),"/announcements/unread"),vr=e=>O(xe,`/announcements/${e}/read`,{method:"POST"}).then(()=>{});import{Box as Wc,useWindowSize as Lf}from"ink";import{Children as Mf}from"react";import{jsx as Gc}from"react/jsx-runtime";var Of=1,ms=1,V=1;function j(){let{columns:e,rows:t}=Lf();return{width:Math.max(1,e-Of*2),columns:e,rows:t}}function Kc({height:e,children:t}){return Gc(Wc,{flexDirection:"column",height:e,justifyContent:"space-between",children:Mf.toArray(t).map((o,n)=>Gc(Wc,{flexDirection:"column",flexShrink:0,children:o},n))})}import{useInput as Jc}from"ink";import{createContext as fs,useCallback as _r,useContext as $f,useEffect as gs,useMemo as ds,useRef as Lo,useState as Vc}from"react";import{jsx as ps}from"react/jsx-runtime";var Rr=fs(null),hs=fs(null),Qn={screen:0,panel:10,input:20},bs=fs(null);function Yc({children:e}){let[t,o]=Vc(!1),[n,r]=Vc(!1),i=Lo(0),s=Lo(0),a=Lo([]),c=Lo(0),l=_r(()=>(i.current+=1,o(!0),()=>{i.current-=1,i.current===0&&o(!1)}),[]),d=_r(()=>(s.current+=1,r(!0),()=>{s.current-=1,s.current===0&&r(!1)}),[]),p=_r(g=>{let b={...g,seq:c.current+=1};return a.current.push(b),()=>{a.current=a.current.filter(x=>x!==b)}},[]),m=_r(()=>{a.current.reduce((b,x)=>b===null||x.layer>b.layer||x.layer===b.layer&&x.seq>b.seq?x:b,null)?.handler()},[]);Jc((g,b)=>{b.escape&&m()});let f=ds(()=>({active:t,acquire:l}),[t,l]),S=ds(()=>({locked:n,acquire:d}),[n,d]),y=ds(()=>({push:p,fire:m}),[p,m]);return ps(Rr.Provider,{value:f,children:ps(hs.Provider,{value:S,children:ps(bs.Provider,{value:y,children:e})})})}function Cn(e){let t=$f(e);if(!t)throw new Error("\u952E\u76D8\u94A9\u5B50\u5FC5\u987B\u5728 KeyboardProvider \u5185\u4F7F\u7528");return t}function Cr(e){let{acquire:t}=Cn(Rr);gs(()=>{if(e)return t()},[e,t])}function Xc(e){let{acquire:t}=Cn(hs);gs(()=>{if(e)return t()},[e,t])}function Pr(){return Cn(hs).locked}function Er(){return Cn(Rr).active}function z(e,t=!0){let o=Cn(Rr).active;Jc(e,{isActive:t&&!o})}function Qc(){return Cn(bs).fire}function un(e,{isActive:t=!0,layer:o=Qn.screen}={}){let{push:n}=Cn(bs),r=Lo(e);r.current=e,gs(()=>{if(t)return n({handler:()=>r.current(),layer:o})},[t,o,n])}import{measureElement as Df}from"ink";import{PassThrough as Bf}from"stream";import{createContext as Ff,useCallback as Uf,useContext as jf,useEffect as nl,useRef as Ar}from"react";import{jsx as Xf}from"react/jsx-runtime";var Hf="\x1B[?1000h\x1B[?1003h\x1B[?1006h",qf="\x1B[?1006l\x1B[?1003l\x1B[?1000l",zf=27,Wf=91,Gf=60,Zc=77,el=109,tl=20,Kf=64,Vf=32,Jf=20;function Yf(e){let t=[],o=[],n=0;for(;n<e.length;){let r=e[n];if(r===void 0)break;if(r!==zf){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!==Wf){o.push(r),n+=1;continue}if(s===Zc){if(n+6>e.length)break;n+=6;continue}if(s!==Gf){o.push(r),n+=1;continue}let a=n+3,c;for(;a<e.length&&a-n<tl;){let f=e[a];if(f===Zc||f===el){c=f;break}a+=1}if(c===void 0){if(a-n<tl)break;o.push(r),n+=1;continue}let l=e.subarray(n+3,a).toString("latin1").split(";");if(n=a+1,c===el||l.length!==3)continue;let d=Number(l[0]),p=Number(l[1]),m=Number(l[2]);!Number.isFinite(d)||!Number.isFinite(p)||!Number.isFinite(m)||t.push((d&Kf)!==0?{row:m,column:p,kind:"wheel",delta:(d&1)===0?-1:1}:{row:m,column:p,kind:(d&Vf)!==0?"move":"press"})}return{events:t,clean:Buffer.from(o),pending:e.subarray(n)}}function ol(e,t){let o=new Set,n=new Bf,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 f=Yf(Buffer.concat([r,m]));r=f.pending,f.clean.length>0&&n.write(f.clean);for(let S of f.events)for(let y of o)y(S);r.length>0&&(i=setTimeout(s,Jf))},c=()=>{t.write(qf)},l={SIGHUP:1,SIGINT:2,SIGTERM:15},d=m=>{process.exit(128+(l[m]??0))};e.on("data",a),process.once("exit",c);for(let m of Object.keys(l))process.on(m,d);t.write(Hf);let p=n;return Object.assign(p,{isTTY:!0,setRawMode(m){return e.setRawMode(m),p},ref(){return e.ref(),p},unref(){return e.unref(),p}}),{stdin:p,subscribe(m){return o.add(m),()=>{o.delete(m)}},dispose(){c(),i!==null&&clearTimeout(i),process.off("exit",c);for(let m of Object.keys(l))process.off(m,d);e.off("data",a),o.clear()}}}var rl=Ff(null);function il({subscribe:e,children:t}){let o=Ar(new Set).current,n=Ar(null),r=Uf(i=>(o.add(i),()=>{o.delete(i)}),[o]);return nl(()=>e(i=>{let s=i.row-1,a=i.column-1,c=null;for(let d of o){let p=d.node.current;if(p===null||d.handlers.current.isActive===!1)continue;let m=Df(p);if(s<m.y||s>=m.y+m.height||a<m.x||a>=m.x+m.width)continue;let f=m.width*m.height;(c===null||f<c.area)&&(c={region:d,top:m.y,left:m.x,area:f})}if(i.kind==="move"){let d=c===null?null:c.region;if(n.current!==d){let p=n.current;p!==null&&o.has(p)&&p.handlers.current.onHoverLeave?.(),n.current=d}c!==null&&c.region.handlers.current.onHover?.({row:s-c.top,column:a-c.left});return}if(c===null)return;let l=c.region.handlers.current;i.kind==="wheel"?l.onWheel?.(i.delta):l.onClick?.({row:s-c.top,column:a-c.left})}),[e,o]),Xf(rl.Provider,{value:r,children:t})}function We(e){let t=jf(rl);if(t===null)throw new Error("useMouseRegion \u5FC5\u987B\u5728 MouseProvider \u5185\u4F7F\u7528");let o=Ar(null),n=Ar(e);return n.current=e,nl(()=>t({node:o,handlers:n}),[t]),o}import{useApp as Qf}from"ink";import{createContext as Zf,useCallback as Pn,useContext as eg,useEffect as ys,useRef as Ir,useState as Oo}from"react";var nt=[{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"}],sl="usage",Mo=e=>nt.findIndex(t=>t.id===e),Nr=e=>Mo(e)>=0;import{jsx as ng}from"react/jsx-runtime";var tg=5e3,cl=Zf(null),ll=e=>({id:e,params:void 0}),al=()=>Et().session===null?[{id:"home",params:void 0}]:[ll(sl)];function F(){let e=eg(cl);if(!e)throw new Error("useNav \u5FC5\u987B\u5728 NavProvider \u5185\u4F7F\u7528");return e}function ul({ctx:e,children:t}){let o=Qf(),[n,r]=Oo(al),[i,s]=Oo(0),[a,c]=Oo([]),l=Ir({announcementsChecked:!1,announcementsShown:!1}).current,d=Ir(new WeakMap).current,p=Pn((C,...M)=>{r(U=>[...U,{id:C,params:M[0]}])},[]),m=Pn(()=>{r(C=>C.length>1?C.slice(0,-1):C),s(C=>C+1)},[]),f=Pn(C=>{r([ll(C)]),s(M=>M+1)},[]),S=Pn(()=>{r(al()),s(C=>C+1)},[]),y=Pn(()=>s(C=>C+1),[]),g=Pn((C,M)=>{c(U=>[...U,{tone:C,message:M}])},[]),b=Pn(()=>c(C=>C.slice(1)),[]),x=a[0]??null;ys(()=>{if(x===null)return;let C=setTimeout(b,tg);return()=>clearTimeout(C)},[x,b]);let k=n[n.length-1];if(k===void 0)throw new Error("\u5BFC\u822A\u6808\u4E3A\u7A7A");let h=d.get(k);h===void 0&&(h=new Map,d.set(k,h));let w={ctx:e,current:k,depth:n.length,push:p,pop:m,select:f,home:S,reload:y,toast:g,message:x,dismissToast:b,exit:o.exit,revision:i,gate:l,retained:h};return ng(cl.Provider,{value:w,children:t})}function Ze(e,t){let{retained:o}=F(),[n,r]=Oo(()=>e!==void 0&&o.has(e)?o.get(e):t());return ys(()=>{e!==void 0&&o.set(e,n)},[o,e,n]),[n,r]}function X(e,t){let[o,n]=Oo({phase:"loading"}),r=Ir(t);r.current=t;let i=Ir(0);return ys(()=>{let s=i.current+=1;n({phase:"loading"}),r.current().then(a=>{i.current===s&&n({phase:"ready",data:a})}).catch(a=>{i.current===s&&n({phase:"error",message:ve(a),hint:a instanceof $?a.hint:void 0})})},e),o}import{Box as Yr,Text as Nn,useInput as Lg}from"ink";import{Box as Uo,Text as no}from"ink";import $o from"string-width";var u={background:"#0d0d0d",foreground:"#f3f3f3",mutedForeground:"#949494",faintForeground:"#696969",cursorBackground:"#c8c8c8",border:"#393939",accent:"#37be95",success:"#34d399",warning:"#fbbf24",danger:"#f87171"},Lr=["#242424","#5a4233","#746533","#70924f","#37be95"],Mr=["#37be95","#2d9273","#246e58","#1e5443","#193f33"],Ge={accent:u.accent,success:u.success,warning:u.warning,danger:u.danger},Zn=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Or=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 og=$o(Q.ellipsis),rg=(e,t)=>e+" ".repeat(Math.max(0,t-$o(e))),ig=(e,t)=>" ".repeat(Math.max(0,t-$o(e)))+e;function Re(e,t){if(t<=0)return"";if($o(e)<=t)return e;let o=t-og,n="";for(let r of e){if($o(n+r)>o)break;n+=r}return n+Q.ellipsis}var De=(e,t)=>rg(Re(e,t),t),mn=(e,t)=>ig(Re(e,t),t),Ue=e=>e.filter(t=>typeof t=="string"&&t!=="").join(` ${Q.bullet} `);import{Text as It,useInput as sg}from"ink";import{useImperativeHandle as ag,useRef as ml,useEffect as cg,useState as pl}from"react";import Ss from"string-width";import{jsx as Ft,jsxs as xs}from"react/jsx-runtime";var lg=e=>e.replace(new RegExp("\\p{Cc}","gu"),"");function dl(e,t,o){let n=t,r=0;for(;n>0;){let s=Ss(e[n-1]??"");if(r+s>o)break;r+=s,n-=1}let i=t;for(r+=1;i<e.length;){let s=Ss(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 Do({char:e}){return Ft(It,{backgroundColor:u.cursorBackground,color:u.foreground,children:e})}function $r({value:e,onChange:t,onSubmit:o,placeholder:n,mask:r=!1,isActive:i=!0,width:s=40,ref:a}){let c=[...e],[l,d]=pl(c.length),p=Math.min(l,c.length),m=Math.max(8,s),f=ml(e),S=ml(p);f.current=e,S.current=p,Cr(i);let y=w=>{S.current=w,d(w)},g=(w,C)=>{f.current=w,y(C),t(w)};if(ag(a,()=>({moveToColumn:w=>{let C=[...f.current],M=r?Array.from({length:C.length},()=>"\u2022"):C,T=dl(M,Math.min(S.current,C.length),m).start,N=0;for(;T<C.length;){let _=Ss(M[T]??"");if(N+_>w)break;N+=_,T+=1}y(T)}})),sg((w,C)=>{let M=[...f.current],U=Math.min(S.current,M.length);if(C.return){o(f.current);return}if(C.tab||C.upArrow||C.downArrow)return;if(C.leftArrow){y(Math.max(0,U-1));return}if(C.rightArrow){y(Math.min(M.length,U+1));return}if(C.home){y(0);return}if(C.end){y(M.length);return}if(C.backspace){if(U===0)return;g([...M.slice(0,U-1),...M.slice(U)].join(""),U-1);return}if(C.delete){if(U>=M.length)return;g([...M.slice(0,U),...M.slice(U+1)].join(""),U);return}if(C.ctrl){if(w==="a")y(0);else if(w==="e")y(M.length);else if(w==="k")g(M.slice(0,U).join(""),U);else if(w==="u")g(M.slice(U).join(""),0);else if(w==="w"){let v=U;for(;v>0&&M[v-1]===" ";)v-=1;for(;v>0&&M[v-1]!==" ";)v-=1;g([...M.slice(0,v),...M.slice(U)].join(""),v)}return}if(C.meta||!w)return;let T=w.search(/[\r\n]/),N=lg(T===-1?w:w.slice(0,T)),_=[...M.slice(0,U),N,...M.slice(U)].join("");g(_,U+[...N].length),T!==-1&&o(_)},{isActive:i}),e===""){let w=[...n??""];return i?xs(It,{children:[Ft(Do,{char:w[0]??" "}),Ft(It,{color:u.faintForeground,children:w.slice(1).join("")})]}):Ft(It,{color:u.faintForeground,children:w.join("")})}let b=r?Array.from({length:c.length},()=>"\u2022"):c;if(!i)return Ft(It,{color:u.foreground,children:b.join("")});let{before:x,at:k,after:h}=dl(b,p,m);return xs(It,{children:[Ft(It,{color:u.foreground,children:x}),Ft(Do,{char:k}),Ft(It,{color:u.foreground,children:h})]})}function ot({label:e}){let[t,o]=pl(0);return cg(()=>{let n=setInterval(()=>o(r=>(r+1)%Zn.length),Or);return()=>clearInterval(n)},[]),xs(It,{children:[Ft(It,{color:u.accent,children:Zn[t]}),Ft(It,{color:u.mutedForeground,children:` ${e}`})]})}import{Box as hl,Text as eo}from"ink";import{useEffect as yl,useState as mg}from"react";import bl from"string-width";import{Box as fl,Text as Dr}from"ink";import ug from"string-width";import{jsx as Bo,jsxs as gl}from"react/jsx-runtime";var le=2,ut=1,He=1,mt=ut+He;function Fo({title:e,note:t,width:o}){let n=t===void 0?0:ug(t)+2,r=Math.max(0,o-le-n);return gl(Dr,{wrap:"truncate",children:[Bo(Dr,{color:u.accent,children:`${Q.section} `}),Bo(Dr,{bold:!0,color:u.foreground,children:Re(e,r)}),t!==void 0&&Bo(Dr,{color:u.faintForeground,children:` ${t}`})]})}function te({title:e,note:t,width:o,gap:n=He,children:r}){return gl(fl,{flexDirection:"column",children:[Bo(Fo,{title:e,note:t,width:o}),Bo(fl,{flexDirection:"column",marginTop:n,paddingLeft:le,children:r})]})}import{jsx as Jt,jsxs as xl}from"react/jsx-runtime";var to=e=>!("heading"in e),dg=e=>e.flatMap(t=>!to(t)&&t.heading!==""?[t,{heading:""}]:[t]),Sl=2,Br=2,pg=(e,t)=>t===void 0?e:e>t?Math.max(1,t-1):t;function fg(e,t,o,n){let[r,i]=Ze(n,()=>e.findIndex(d=>to(d)&&d.disabled!==!0));yl(()=>{i(d=>d>=e.length?Math.max(0,e.length-1):d)},[e.length]);let s=d=>{i(p=>{let m=e.length;if(m===0)return p;let f=p;for(let S=0;S<m;S+=1){f=(f+d+m)%m;let y=e[f];if(y!==void 0&&to(y)&&y.disabled!==!0)return f}return p})},a=d=>{let p=e[d];return p!==void 0&&to(p)&&p.disabled!==!0?p:null},c=d=>{a(d)!==null&&i(d)},l=d=>{let p=a(d);p!==null&&(i(d),o(p.value))};return z((d,p)=>{if(p.upArrow||d==="k"){s(-1);return}if(p.downArrow||d==="j"){s(1);return}p.return&&l(r)},t),{index:Math.max(0,r),step:s,pick:l,moveTo:c}}function Ts(e,t){let[o,n]=mg(()=>e>=t?e-t+1:0);return yl(()=>{n(r=>e<r?e:e>=r+t?e-t+1:r)},[e,t]),o}function gg(e,t){let o=e.filter(to),n=Math.max(0,...o.map(s=>bl(s.label))),r=Math.max(0,...o.map(s=>s.badge===void 0?0:bl(s.badge))),i=Sl+n+(r>0?r+Br:0)+Br;return{label:n,badge:r,hint:Math.max(0,t-i)}}function hg({item:e,active:t,metrics:o}){let n=e.disabled===!0,r=n?u.faintForeground:e.labelTone!==void 0?Ge[e.labelTone]:t?u.accent:u.foreground;return xl(eo,{wrap:"truncate",children:[Jt(eo,{color:u.accent,children:t?`${Q.cursor} `:" "}),Jt(eo,{color:r,bold:t,children:De(e.label,o.label)}),o.badge>0&&Jt(eo,{color:e.badgeTone===void 0?u.faintForeground:Ge[e.badgeTone],children:`${" ".repeat(Br)}${De(e.badge??"",o.badge)}`}),e.hint!==void 0&&o.hint>0&&Jt(eo,{color:n||!t?u.faintForeground:u.mutedForeground,children:`${" ".repeat(Br)}${Re(e.hint,o.hint)}`})]})}function bg({items:e,cursor:t,metrics:o,window:n,width:r,isActive:i,onPick:s,onHover:a,onScroll:c}){let l=Ts(t,n),d=e.slice(l,l+n),p=f=>f<d.length?l+f:null,m=We({isActive:i,onWheel:c,onClick:({row:f})=>{let S=p(f);S!==null&&s(S)},onHover:({row:f})=>{let S=p(f);S!==null&&a(S)}});return xl(hl,{ref:m,flexDirection:"column",children:[d.map((f,S)=>{let y=l+S;return to(f)?Jt(hg,{item:f,active:y===t&&i,metrics:o},y):f.heading===""?Jt(hl,{height:1},y):Jt(Fo,{title:f.heading,width:r},y)}),e.length>n&&Jt(eo,{color:u.faintForeground,children:`${" ".repeat(Sl)}${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=dg(e),a=fg(s,r,t,i);return Jt(bg,{items:s,cursor:a.index,metrics:gg(s,o),window:pg(s.length,n),width:o,isActive:r,onPick:a.pick,onHover:a.moveTo,onScroll:a.step})}import{jsx as St,jsxs as Fr}from"react/jsx-runtime";var Tl={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 he({tone:e,title:t,detail:o,width:n}){let r=Tl[e];return Fr(Uo,{flexDirection:"column",children:[Fr(no,{children:[St(no,{color:r.color,children:`${r.glyph} `}),St(no,{color:u.foreground,children:Re(t,n-2)})]}),o!==void 0&&St(no,{color:u.faintForeground,children:` ${Re(o,n-2)}`})]})}function En({message:e,hint:t,width:o}){return St(he,{tone:"fail",title:e,detail:t,width:o})}var yg=2,Sg=2;function wl({tone:e,message:t,width:o,onDismiss:n}){let r=Tl[e],i=We({onClick:n});return Fr(Uo,{ref:i,children:[St(no,{backgroundColor:u.border,color:r.color,wrap:"truncate",children:` ${r.glyph} `}),St(no,{backgroundColor:u.border,color:u.foreground,wrap:"truncate",children:`${Re(t,o-yg-Sg)} `})]})}function Je({title:e,detail:t,confirmLabel:o,onConfirm:n,onCancel:r,width:i,busy:s,error:a}){return Fr(Uo,{flexDirection:"column",children:[St(he,{tone:"warn",title:e,detail:t,width:i}),a!=null&&St(Uo,{marginTop:1,children:St(En,{message:a.message,hint:a.hint,width:i})}),St(Uo,{marginTop:1,children:typeof s=="string"?St(ot,{label:s}):St(ae,{items:[{value:"cancel",label:"\u53D6\u6D88"},{value:"confirm",label:o,labelTone:"danger"}],width:i,onSelect:c=>c==="confirm"?n():r()})})]})}import{Box as xg,Text as Ur,useInput as Tg}from"ink";import{useRef as wg,useState as kg}from"react";import{jsx as jr,jsxs as vg}from"react/jsx-runtime";function dn({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]=kg(n?s:0),l=wg(s);if(s!==l.current){let f=a>=l.current;l.current=s;let S=n&&f?s:Math.min(a,s);S!==a&&c(S)}let d=f=>c(S=>Math.min(Math.max(0,S+f),s));Tg((f,S)=>{S.upArrow?d(-1):S.downArrow?d(1):S.pageUp?d(-i):S.pageDown&&d(i)},{isActive:o&&r}),z(f=>{f==="k"?d(-1):f==="j"&&d(1)},o&&r);let p=We({isActive:o&&r,onWheel:d}),m=e.slice(a,a+i);return vg(xg,{ref:p,flexDirection:"column",children:[m.map((f,S)=>jr(Ur,{wrap:"truncate",children:f.spans.length===0?" ":f.spans.map((y,g)=>jr(Ur,{color:y.color??u.foreground,bold:y.bold===!0,children:y.text},g))},a+S)),Array.from({length:Math.max(0,i-m.length)},(f,S)=>jr(Ur,{children:" "},S)),r&&jr(Ur,{color:u.faintForeground,wrap:"truncate",children:`${a+1}-${Math.min(a+i,e.length)} / ${e.length}`})]})}function Xe(e){return e.tone==="neutral"?void 0:e.tone}function Yt(e){let t=Xe(e);return t===void 0?e.label:{text:e.label,tone:t}}import{useCallback as ws,useRef as _g,useState as kl}from"react";function pe(){let e=F(),[t,o]=kl(null),[n,r]=kl(null),i=_g(0),s=ws(()=>{i.current+=1,o(null),r(null)},[]),a=ws((l,d)=>{r({message:l,hint:d})},[]),c=ws((l,d,p={})=>{let m=i.current+=1;o(l),r(null),d().then(f=>{i.current===m&&(o(null),p.onSuccess?.(f))}).catch(f=>{if(i.current!==m)return;o(null);let S={message:ve(f),hint:f instanceof $?f.hint:void 0};p.failToast===!0?e.toast("fail",S.message):r(S)})},[e]);return{busy:t,error:n,reset:s,fail:a,run:c}}import{Lexer as Rg}from"marked";import Hr from"string-width";var Cg={spans:[]},ks=e=>e===void 0||e.spans.every(t=>t.text.trim()==="");function vl(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 Ut(e,t,o=0){let n=()=>Array.from({length:o},()=>({ch:" "})),r=[],i=[],s=0,a=!0,c=()=>{r.push(vl(i)),a=!1,i=n(),s=o};for(let l of e)for(let d of l.text){if(d===`
|
|
5
|
+
`){c();continue}let p=Hr(d);if(s+p>t&&i.length>(a?0:o)){let m=a?0:o,f=-1;for(let S=i.length-1;S>m;S-=1)if(i[S]?.ch===" "){f=S;break}if(f>m){let S=i.slice(f+1);i=i.slice(0,f),c(),i=[...i,...S],s=i.reduce((y,g)=>y+Hr(g.ch),0)}else c()}i.push({ch:d,color:l.color,bold:l.bold}),s+=p}return(i.length>0||r.length===0)&&r.push(vl(i)),r}function jt(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?jt(n.tokens,t):[{text:n.text,...t}]);break;case"strong":o.push(...jt(n.tokens,{...t,bold:!0}));break;case"em":o.push(...jt(n.tokens,t));break;case"del":o.push(...jt(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=jt(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 _l=2,Rl=e=>e.reduce((t,o)=>t+Hr(o.text),0);function Pg(e,t,o,n){let r=e.map(m=>({spans:jt(m.tokens,{bold:!0,color:u.foreground}),align:m.align})),i=t.map(m=>m.map(f=>({spans:jt(f.tokens,{color:u.foreground}),align:f.align}))),s=n-(e.length+1)-e.length*2;if(s<e.length*_l)return Ut([{text:o,color:u.foreground}],n);let a=e.map(()=>_l);for(let m of[r,...i])m.forEach((f,S)=>{for(let y of Ut(f.spans,Number.MAX_SAFE_INTEGER)){let g=a[S],b=Rl(y.spans);g!==void 0&&b>g&&(a[S]=b)}});let c=a.reduce((m,f)=>m+f,0);for(;c>s;){let m=0,f=0;a.forEach((S,y)=>{S>f&&(m=y,f=S)}),a[m]=f-1,c-=1}let l=m=>({text:m,color:u.faintForeground}),d=(m,f,S)=>({spans:[l(`${m}${a.map(y=>"\u2500".repeat(y+2)).join(f)}${S}`)]}),p=m=>{let f=a.map((g,b)=>{let x=m[b];return{width:g,align:x?.align??null,lines:Ut(x?.spans??[],g)}}),S=f.reduce((g,b)=>Math.max(g,b.lines.length),1),y=[];for(let g=0;g<S;g+=1){let b=[];for(let x of f){let k=x.lines[g]?.spans??[],h=x.width-Rl(k),w=x.align==="right"?h:x.align==="center"?Math.floor(h/2):0;b.push(l("\u2502"),{text:` ${" ".repeat(w)}`}),b.push(...k),b.push({text:`${" ".repeat(h-w)} `})}b.push(l("\u2502")),y.push({spans:b})}return y};return[d("\u250C","\u252C","\u2510"),...p(r),d("\u251C","\u253C","\u2524"),...i.flatMap(p),d("\u2514","\u2534","\u2518")]}function vs(e,t){let o=[],n=()=>{o.length>0&&!ks(o[o.length-1])&&o.push(Cg)};for(let r of e)switch(r.type){case"space":n();break;case"heading":{let i=jt(r.tokens,{bold:!0,color:u.foreground}),s=r.depth<=2?[{text:`${Q.section} `,color:u.accent},...i]:i;o.push(...Ut(s,t,r.depth<=2?2:0)),n();break}case"paragraph":o.push(...Ut(jt(r.tokens,{color:u.foreground}),t)),n();break;case"text":o.push(...Ut("tokens"in r&&r.tokens!==void 0?jt(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(...Ut([{text:` ${i}`,color:u.mutedForeground}],t,2));n();break;case"blockquote":{let i=vs(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} `,d=Hr(l),p=vs(a.tokens,Math.max(4,t-d));p.forEach((m,f)=>{ks(m)&&f===p.length-1||o.push({spans:f===0?[{text:l,color:u.mutedForeground},...m.spans]:[{text:" ".repeat(d)},...m.spans]})})}),n();break}case"hr":o.push({spans:[{text:"\u2500".repeat(Math.max(1,t)),color:u.faintForeground}]}),n();break;case"table":o.push(...Pg(r.header,r.rows,r.raw,t)),n();break;default:o.push(...Ut([{text:r.raw,color:u.foreground}],t))}return o}function oo(e,t){let o=Rg.lex(e,{gfm:!0,breaks:!0}),n=vs(o,Math.max(8,t));for(;n.length>0&&ks(n[n.length-1]);)n.pop();return n}import{Box as Ho}from"ink";import{Box as Eg,Text as Cl}from"ink";import El from"string-width";import{jsx as Pl,jsxs as Ag}from"react/jsx-runtime";var qr=["\u2588\u2580\u2580 \u2588\u2580\u2588 \u2588\u2580\u2584 \u2588\u2580\u2580 \u2588\u2580\u2580 \u2588 \u2588\u2580\u2588 \u2588 \u2588 \u2588","\u2588\u2584\u2584 \u2588\u2584\u2588 \u2588\u2584\u2580 \u2588\u2584\u2584 \u2588\u2580\u2580 \u2588\u2584\u2584 \u2588\u2584\u2588 \u2580\u2584\u2580\u2584\u2580"],Al=Math.max(...qr.map(e=>El(e))),zr=qr.length,Wr=e=>Al<=e;function Gr({width:e}){let t=`v${ht}`,o=Al+2+El(t)<=e;return Pl(Eg,{flexDirection:"column",children:qr.map((n,r)=>Ag(Cl,{color:u.accent,children:[n,r===qr.length-1&&o&&Pl(Cl,{color:u.faintForeground,children:` ${t}`})]},n))})}import{Box as Cs,Text as dt}from"ink";import{useState as Nl}from"react";import io from"string-width";import{jsx as xt,jsxs as Kr}from"react/jsx-runtime";var Vr=2,_s=` ${Q.crumb} `;function Jr({trail:e,width:t,onBack:o,isActive:n}){let r=e[e.length-1]??"",i=e.slice(0,-1),s=i.reduce((m,f)=>m+io(f)+io(_s),0),a=s+io(r)<=t,c=a?s:0,[l,d]=Nl(!1),p=We({isActive:n,onClick:({column:m})=>{m<c&&o()},onHover:({column:m})=>d(m<c),onHoverLeave:()=>d(!1)});return xt(Cs,{ref:p,marginBottom:1,children:a?Kr(dt,{children:[i.map((m,f)=>Kr(dt,{children:[xt(dt,{color:f===0?u.accent:l&&n?u.foreground:u.mutedForeground,children:m}),xt(dt,{color:u.faintForeground,children:_s})]},f)),xt(dt,{bold:!0,color:u.foreground,children:r})]}):xt(dt,{color:u.mutedForeground,children:Re(e.join(_s),t)})})}var Rs=2,jo=2,ro=2;function Il({current:e,width:t,onPick:o,isActive:n}){let r=Math.max(0,Mo(e)),[i,s]=Nl(null),a=Math.max(...nt.map(b=>io(b.label))),l=(b=>b*a+(b-1)*jo+Rs)(nt.length)>t,d=l?t-ro*2:t,p=l?Math.max(1,Math.floor((d+jo-Rs)/(a+jo))):nt.length,m=Math.min(Math.max(0,r-Math.floor((p-1)/2)),nt.length-p),f=nt.slice(m,m+p),S=[],y=l?ro:0;f.forEach((b,x)=>{x>0&&(y+=jo);let k=io(b.label)+(b.id===e?Rs:0);S.push({id:b.id,from:y,to:y+k}),y+=k});let g=We({isActive:n,onHover:({column:b})=>{let x=S.find(k=>b>=k.from&&b<k.to);s(x?.id??null)},onHoverLeave:()=>s(null),onClick:({column:b})=>{let x=S.find(h=>b>=h.from&&b<h.to);if(x!==void 0){o(x.id);return}if(!l||b>=ro&&b<y)return;let k=b<ro?nt[m-1]:nt[m+p];k!==void 0&&o(k.id)}});return xt(Cs,{ref:g,marginBottom:1,children:Kr(dt,{wrap:"truncate",children:[l&&xt(dt,{color:u.border,children:m>0?`${Q.prev} `:" ".repeat(ro)}),f.map((b,x)=>Kr(dt,{children:[x>0&&" ".repeat(jo),b.id===e?xt(dt,{backgroundColor:u.foreground,color:u.background,bold:!0,children:` ${b.label} `}):xt(dt,{color:n&&b.id===i?u.foreground:u.mutedForeground,children:b.label})]},b.id)),l&&xt(dt,{color:u.border,children:m+p<nt.length?` ${Q.next}`:" ".repeat(ro)})]})})}function Ll({hints:e,width:t}){let o=[];for(let n of e){if(io(Ue([...o,n]))>t)break;o.push(n)}return xt(Cs,{children:xt(dt,{color:u.faintForeground,children:Ue(o)})})}import{Fragment as Ig,jsx as rt,jsxs as $l}from"react/jsx-runtime";var Ml=3,Ng=8;function qo(e){let{rows:t}=j();return Math.max(1,t-ms-Ml-e)}function Ol(){let e=F(),{width:t,rows:o}=j(),n=e.current.id,r=e.depth===1&&Nr(n)?n:null,i=Math.max(1,o-ms-Ml),s=zr+V,a=r!==null&&Wr(t)&&i-Vr-s>=Ng;return{tab:r,mark:a,rows:a?Vr+s:Vr}}var oe=()=>qo(Ol().rows);function An({header:e,hints:t,children:o}){let{width:n}=j(),{message:r,dismissToast:i}=F();return $l(Ho,{flexDirection:"column",flexGrow:1,children:[e,rt(Ho,{flexDirection:"column",flexGrow:1,overflow:"hidden",children:rt(Ho,{flexDirection:"column",flexShrink:0,children:o})}),rt(Ho,{height:1,marginTop:1,justifyContent:"flex-end",children:r!==null&&rt(wl,{tone:r.tone,message:r.message,width:n,onDismiss:i})}),rt(Ll,{hints:t,width:n})]})}function J({trail:e,hints:t=[],children:o,onEscape:n,isActive:r=!0,locked:i=!1,bleed:s=!1}){let a=F(),{width:c}=j(),{tab:l,mark:d}=Ol(),p=Pr(),m=Er(),f=m?[]:["[] \u5207\u529F\u80FD","q \u9000\u51FA","? \u5E2E\u52A9"],S=m?[]:["? \u5E2E\u52A9"];un(n??a.pop,{isActive:r});let y=Qc(),g=r&&!i&&!p;return z(b=>{if(l===null||b!=="["&&b!=="]")return;let x=nt[(Mo(l)+(b==="["?-1:1)+nt.length)%nt.length];x!==void 0&&a.select(x.id)},r&&!i&&!p&&!s),s?rt(An,{header:null,hints:i?t:[...t,"Esc \u8FD4\u56DE",...S],children:o}):l!==null?rt(An,{header:$l(Ig,{children:[d&&rt(Ho,{marginBottom:V,children:rt(Gr,{width:c})}),rt(Il,{current:l,width:c,onPick:b=>{b===l?y():a.select(b)},isActive:g})]}),hints:i?t:[...t,...f],children:o}):rt(An,{header:rt(Jr,{trail:["CodeFlow",...e??[]],width:c,onBack:y,isActive:g}),hints:i?t:[...t,"Esc \u8FD4\u56DE",...S],children:o})}function Y({state:e,loading:t,width:o,children:n}){return e.phase==="loading"?rt(ot,{label:t}):e.phase==="error"?rt(En,{message:e.message,hint:e.hint,width:o}):n(e.data)}import{jsx as Tt,jsxs as Ps}from"react/jsx-runtime";function Dl({params:e}){let t=F(),{width:o}=j(),n=oe(),{item:r}=e,{busy:i,error:s,run:a}=pe();Lg((p,m)=>{m.return&&a("\u6B63\u5728\u786E\u8BA4",()=>vr(r.id),{onSuccess:()=>t.pop()})},{isActive:i===null});let c=Co(r.level),l=Xe(c),d=Math.max(3,n-4-(s===null?0:2));return Tt(J,{trail:["\u7CFB\u7EDF\u516C\u544A","\u672A\u8BFB\u786E\u8BA4"],hints:["\u2191\u2193 \u6EDA\u52A8","Enter \u6211\u77E5\u9053\u4E86"],locked:!0,onEscape:()=>{},children:Ps(Yr,{flexDirection:"column",children:[Ps(Nn,{wrap:"truncate",children:[Tt(Nn,{bold:!0,color:u.foreground,children:r.title}),Tt(Nn,{color:l===void 0?u.mutedForeground:Ge[l],children:` ${c.label}`}),Tt(Nn,{color:u.faintForeground,children:` \u53D1\u5E03\u4E8E ${Kt(r.publishedAt)}`})]}),Tt(Yr,{marginTop:1,children:Tt(dn,{lines:oo(r.content,o),height:d})}),s!==null&&Tt(Yr,{marginTop:1,children:Tt(En,{message:s.message,hint:s.hint,width:o})}),Tt(Yr,{marginTop:1,children:i!==null?Tt(ot,{label:i}):Ps(Nn,{wrap:"truncate",children:[Tt(Nn,{color:u.accent,children:`${Q.cursor} `}),Tt(Nn,{bold:!0,color:u.accent,children:"\u6211\u77E5\u9053\u4E86"})]})})]})})}import{Box as Ls,Text as Xr}from"ink";import{useState as qg}from"react";import{Box as Es,Text as Xt}from"ink";import{useEffect as Bl,useRef as Mg,useState as Fl}from"react";import As from"string-width";import{jsx as pn,jsxs as Wo}from"react/jsx-runtime";var Ul=e=>e===void 0?"":typeof e=="string"?e:e.text,Ns=2,Og=6;function $g(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 Is(e,t,o){let n=e.map((c,l)=>Math.max(As(c.label),...t.map(d=>As(d[l]??"")))),r=n.reduce((c,l)=>c+l,0),i=r+Ns*Math.max(0,e.length-1)-o;if(i<0)return $g(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)>Og).sort((l,d)=>(n[d]??0)-(n[l]??0))[0];if(c===void 0)break;n[c]=(n[c]??0)-1,i-=1}return n}var Dg=(e,t,o)=>t.map((n,r)=>n.align==="right"?mn(e[r]??"",o[r]??0):De(e[r]??"",o[r]??0)).join(" ".repeat(Ns)),zo=2,Bg=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:d}){let p=D=>d===void 0?void 0:`${d}:${D}`,m=i!==void 0,[f,S]=Ze(m?p("cursor"):void 0,()=>0),[y,g]=Ze(p("query"),()=>""),[b,x]=Fl(!1),k=y.trim().toLowerCase(),h=k===""||s===void 0?e:e.filter(D=>s(D).toLowerCase().includes(k)),w=b||k!=="",C=Math.max(1,r-1-(w?1:0)),M=h.length>C?Math.max(1,C-1):C,U=Math.max(0,h.length-M),[T,N]=Fl(()=>f>=M?f-M+1:0);Bl(()=>{S(D=>Math.min(D,Math.max(0,h.length-1)))},[h.length]),Bl(()=>{N(D=>m?f<D?f:f>=D+M?f-M+1:D:Math.min(D,U))},[f,M,U,m]);let _=D=>{if(!m){N(Z=>Math.min(Math.max(0,Z+D),U));return}h.length!==0&&S(Z=>(Z+D+h.length)%h.length)};z((D,Z)=>{if(Z.upArrow||D==="k"){_(-1);return}if(Z.downArrow||D==="j"){_(1);return}if(Z.return){let H=h[f];H!==void 0&&i?.(H,f);return}s!==void 0&&D.startsWith("/")&&(x(!0),D.length>1&&g(D.slice(1)))},a&&!b),un(()=>{x(!1),g("")},{isActive:b||k!=="",layer:b?Qn.input:Qn.panel});let v=w?1:0,P=Mg(null),I=D=>{if(D<=v)return null;let Z=T+D-v-1;return h[Z]===void 0?null:Z},R=We({isActive:a,onWheel:_,onClick:({row:D,column:Z})=>{if(w&&D===0){x(!0),P.current?.moveToColumn(Z-Bg);return}if(i===void 0)return;let H=I(D);if(H===null)return;let re=h[H];re!==void 0&&(S(H),i(re,H))},onHover:m?({row:D})=>{let Z=I(D);Z!==null&&S(Z)}:void 0}),A=Is(t,h.map(D=>o(D).map(Ul)),n-zo),q=h.slice(T,T+M);return Wo(Es,{ref:R,flexDirection:"column",children:[w&&Wo(Es,{children:[pn(Xt,{color:u.accent,children:"/ "}),pn($r,{ref:P,value:y,onChange:g,onSubmit:()=>x(!1),isActive:b,placeholder:"\u8F93\u5165\u5173\u952E\u8BCD\u8FC7\u6EE4",width:n-2-As(` ${h.length}/${e.length}`)}),pn(Xt,{color:u.faintForeground,children:` ${h.length}/${e.length}`})]}),Wo(Xt,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(zo),Dg(t.map(D=>D.label),t,A)]}),h.length===0?Wo(Es,{flexDirection:"column",children:[pn(Xt,{wrap:"truncate",color:u.mutedForeground,children:`${" ".repeat(zo)}${k===""?c:"\u65E0\u5339\u914D\u7ED3\u679C"}`}),l!==void 0&&k===""&&C>1&&pn(Xt,{wrap:"truncate",color:u.faintForeground,children:`${" ".repeat(zo)}${l}`})]}):q.map((D,Z)=>{let H=T+Z,re=m&&H===f&&a,ke=re?u.accent:a?u.foreground:u.mutedForeground,E=o(D);return Wo(Xt,{wrap:"truncate",children:[pn(Xt,{color:u.accent,children:re?`${Q.cursor} `:" "}),t.map((B,K)=>{let fe=E[K],Be=Ul(fe),Rt=B.align==="right"?mn(Be,A[K]??0):De(Be,A[K]??0),Ct=typeof fe=="object"?fe.tone:void 0,Fe=!re&&a&&Ct!==void 0?Ge[Ct]:ke;return pn(Xt,{color:Fe,bold:re,children:K>0?`${" ".repeat(Ns)}${Rt}`:Rt},B.label)})]},H)}),(T>0||T+M<h.length)&&pn(Xt,{color:u.faintForeground,children:`${" ".repeat(zo)}${T+1}-${Math.min(T+M,h.length)} / ${h.length}`})]})}import{Text as Fg}from"ink";import{useEffect as Ug,useState as jg}from"react";import{jsx as Hg}from"react/jsx-runtime";var jl=100;function fn(e,t,{retain:o}={}){let[n,r]=Ze(o,()=>1),[i,s]=jg({pages:1,total:0}),a=X([...e,n],()=>t(n,jl));Ug(()=>{a.phase==="ready"&&s({pages:Math.max(1,Math.ceil(a.data.total/jl)),total:a.data.total})},[a]);let c=d=>{r(p=>Math.min(Math.max(1,p+d),i.pages))},l=()=>r(1);return{state:a,page:n,pages:i.pages,total:i.total,go:c,reset:l}}function gn({page:e,pages:t,total:o,width:n}){return Hg(Fg,{wrap:"truncate",color:u.faintForeground,children:Re(Ue([`\u7B2C ${e} / ${t} \u9875`,`\u5171 ${o} \u6761`,"\u2190\u2192 \u7FFB\u9875"]),n)})}import{jsx as Qt,jsxs as Ms}from"react/jsx-runtime";function Hl(){let e=F(),{width:t}=j(),o=oe(),[n,r]=qg({name:"list"}),i=fn([e.revision],(a,c)=>qc({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 Qt(J,{hints:n.name==="list"?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","r \u5237\u65B0"]:["\u2191\u2193 \u6EDA\u52A8","Esc \u8FD4\u56DE"],onEscape:s,children:Qt(Y,{state:i.state,loading:"\u6B63\u5728\u8BFB\u53D6\u516C\u544A",width:t,children:a=>{if(n.name==="detail"){let c=Co(n.item.level),l=Xe(c);return Ms(Ls,{flexDirection:"column",children:[Ms(Xr,{wrap:"truncate",children:[Qt(Xr,{bold:!0,color:u.foreground,children:n.item.title}),Qt(Xr,{color:l===void 0?u.mutedForeground:Ge[l],children:` ${c.label}`}),Qt(Xr,{color:u.faintForeground,children:` ${Ue([`\u53D1\u5E03\u4E8E ${Kt(n.item.publishedAt)}`])}`})]}),Qt(Ls,{marginTop:1,children:Qt(dn,{lines:oo(n.item.content,t),height:Math.max(3,o-2)})})]})}return Ms(Ls,{flexDirection:"column",children:[Qt(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,Yt(Co(c.level)),Kt(c.publishedAt)],onOpen:c=>{r({name:"detail",item:c}),vr(c.id).catch(()=>e.toast("warn","\u5DF2\u8BFB\u786E\u8BA4\u53D1\u9001\u5931\u8D25"))},emptyLabel:"\u6682\u65E0\u516C\u544A",emptyDescription:"\u5E73\u53F0\u6709\u65B0\u901A\u77E5\u65F6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),Qt(gn,{page:i.page,pages:i.pages,total:i.total,width:t})]})}})})}import{Box as kt,Text as Vo}from"ink";import{useState as Ru}from"react";import dh from"string-width";var ql=()=>O(Xa,"/auth/me"),zl=e=>O(xe,"/auth/me",{method:"PATCH",json:e}).then(()=>{}),Wl=e=>O(xe,"/auth/me/password",{method:"POST",json:e}).then(()=>{}),Gl=e=>O(xe,"/auth/me/email/code",{method:"POST",json:e}).then(()=>{}),Kl=e=>O(xe,"/auth/me/email",{method:"POST",json:e}).then(()=>{}),Vl=()=>O(Qa,"/auth/me/sessions"),Jl=e=>O(xe,`/auth/me/sessions/${e}`,{method:"DELETE"}).then(()=>{}),Yl=()=>O(ec,"/auth/me/security"),Os=e=>O(Za,"/auth/me/totp/setup",{method:"POST",json:e}),Xl=e=>O(Vi,"/auth/me/totp/confirm",{method:"POST",json:e}),Ql=e=>O(xe,"/auth/me/totp/disable",{method:"POST",json:e}).then(()=>{}),Zl=e=>O(Vi,"/auth/me/totp/recovery-codes",{method:"POST",json:e}),eu=(e,t)=>O(xe,`/auth/me/passkeys/${e}`,{method:"PATCH",json:t}).then(()=>{}),tu=e=>O(xe,`/auth/me/passkeys/${e}`,{method:"DELETE"}).then(()=>{});import{Box as Ht,measureElement as lu,Text as Ie,useInput as fu}from"ink";import{useEffect as Vg,useRef as uu,useState as so}from"react";import Fs from"string-width";import{Box as zg,Text as hn,useInput as Wg}from"ink";import{useRef as nu,useState as ou}from"react";import Ds from"string-width";import{jsx as Zt,jsxs as au}from"react/jsx-runtime";var Gg=e=>e.replace(/\r\n?/g,`
|
|
8
|
+
`).replace(new RegExp("(?!\\n)\\p{Cc}","gu"),"");function ru(e,t){let o=[],n=0,r=0;for(let i=0;i<e.length;i+=1){let s=e[i]??"";if(s===`
|
|
9
|
+
`){o.push({start:n,end:i,nl:!0}),n=i+1,r=0;continue}let a=Ds(s);r+a>t&&i>n&&(o.push({start:n,end:i,nl:!1}),n=i,r=0),r+=a}return o.push({start:n,end:e.length,nl:!1}),o}function iu(e,t){for(let o=0;o<e.length;o+=1){let n=e[o];if(n!==void 0&&(n.nl?t<=n.end:t<n.end))return o}return e.length-1}function su(e,t,o){let n=0;for(let r=t.start;r<t.end;r+=1){let i=Ds(e[r]??"");if(n+i>o)return r;n+=i}return t.end}var Kg=(e,t,o)=>e.slice(t.start,o).reduce((n,r)=>n+Ds(r),0);function $s(e,t){let o=t;for(;o>0&&e[o-1]!==`
|
|
10
10
|
`;)o-=1;let n=t;for(;n<e.length&&e[n]!==`
|
|
11
|
-
`;)n+=1;return{start:o,end:n}}function
|
|
12
|
-
`);return}if(!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(Is(v,A).start);return}if(E.end){T(Is(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=Is(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=Wl(l,b),M=zl(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(Xt(fn,{children:" "},E));continue}let A=l.slice(v.start,v.end).join("");if(!o||E!==M){x.push(Xt(fn,{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(Kl(fn,{wrap:"truncate",children:[Xt(fn,{color:u.foreground,children:R}),Xt(Mo,{char:N}),Xt(fn,{color:u.foreground,children:H})]},E))}if(e===""&&i!==void 0){let _=[...i];x[0]=o?Kl(fn,{wrap:"truncate",children:[Xt(Mo,{char:_[0]??" "}),Xt(fn,{color:u.faintForeground,children:_.slice(1).join("")})]},"placeholder"):Xt(fn,{wrap:"truncate",color:u.faintForeground,children:i},"placeholder")}let P=qe({onWheel:_=>{S(_)},onClick:({row:_,column:E})=>{c?.();let v=C[j+_];T(v===void 0?l.length:Gl(l,v,E))}});return Xt(vg,{ref:P,flexDirection:"column",children:x})}import{Fragment as Zl,jsx as fe,jsxs as xt}from"react/jsx-runtime";var Ag=e=>Object.fromEntries(e.map(t=>[t.name,"initial"in t?t.initial??"":""])),Xl="\u9009\u586B",Pg=(e,t)=>e.kind!=="text"&&e.kind!=="textarea"?!1:typeof e.optional=="function"?e.optional(t):e.optional===!0,Ng=(e,t)=>{let o=typeof e.hint=="function"?e.hint(t[e.name]??""):e.hint;return Pg(e,t)?o===void 0?Xl:`${Xl} \xB7 ${o}`:o},Ig=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},Lg=6e4,Mg=4,Ms=4,Og=2,Yr=(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]=ro(()=>Ag(t)),[f,d]=ro(0),[p,y]=ro({}),[h,g]=ro(null),[,b]=ro(0),T=s===!0,w=Ig(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());Eg(()=>{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(Oe=>Oe.value===l[I.name]),pe=I.options[(V+U+I.options.length)%I.options.length];pe!==void 0&&m(Oe=>({...Oe,[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(Oe=>({...Oe,[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(Oe=>({...Oe,[U.name]:{phase:"sending"}})),U.send(V).then(()=>y(Oe=>({...Oe,[U.name]:{phase:"cooldown",email:V,until:Date.now()+Lg}}))).catch(Oe=>y(vt=>({...vt,[U.name]:{phase:"error",message:Te(Oe)}})))))};eu((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}),cn(r,{isActive:!T,layer:Yn.panel});let v=Math.max(0,...t.map(I=>Os(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=Yl(new Map).current,B=Yl(new Map).current,ne=2+v+Ms,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 Oe=pe.options.find(_t=>_t.value===l[pe.name]),vt=we(Oe?.label??"\u2014",R);U>=ne-Og&&U<ne?P(pe,-1):U>=ne+Os(vt)&&P(pe,1);return}U>=ne&&B.get(V.index)?.moveToColumn(U-ne)}},Z=(I,U)=>{if(I===null)return null;let V=Jl(I),pe=null;for(let[Oe,vt]of H){if(vt===null)continue;let _t=Jl(vt),$e=_t.y-V.y;U<$e||U>=$e+_t.height||(pe===null||_t.height<pe.box.height)&&(pe={index:Oe,box:_t})}return pe===null?null:{...pe,frameX:V.x}},Ge=qe({isActive:!T,onClick:({row:I,column:U})=>{let V=Z(Ge.current,I);V!==null&&F(V.index,U-(V.box.x-V.frameX))},onHover:({row:I})=>g(Z(Ge.current,I)?.index??null),onHoverLeave:()=>g(null)});return xt(Ut,{ref:Ge,flexDirection:"column",children:[fe($o,{title:e,width:i}),xt(Ut,{flexDirection:"column",marginTop:Fe,paddingLeft:le,children:[c!=null&&fe(Ut,{marginBottom:1,children:fe(An,{message:c.message,hint:c.hint,width:A})}),t.map((I,U)=>{let V=f===N("field",U)&&!T,pe=Ng(I,l),Oe=I.kind==="select"?I.options.find($e=>$e.value===l[I.name]):void 0;if(I.kind==="textarea")return xt(Ut,{flexDirection:"column",ref:$e=>{H.set(N("field",U),$e)},children:[xt(Ae,{children:[fe(Ae,{color:u.accent,children:V?`${Q.cursor} `:" "}),fe(Ae,{color:Yr(V,h===N("field",U)),bold:V,children:I.label})]}),fe(Ut,{paddingLeft:2,children:fe(Vl,{value:l[I.name]??"",onChange:$e=>m(Ai=>({...Ai,[I.name]:$e})),isActive:V,width:A-2,rows:I.rows??Mg,placeholder:I.placeholder,maxLength:I.maxLength,onEdge:$e=>x($e==="up"?-1:1),onFocusRequest:()=>d(N("field",U))})}),V&&pe!==void 0&&fe(Ae,{color:u.faintForeground,children:` ${we(pe,A-2)}`})]},I.name);let vt=I.kind==="code"&&f===N("send",U)&&!T,_t=p[I.name];return xt(Ut,{flexDirection:"column",ref:$e=>{H.set(N("field",U),$e)},children:[xt(Ae,{children:[fe(Ae,{color:u.accent,children:V?`${Q.cursor} `:" "}),fe(Ae,{color:Yr(V,h===N("field",U)),bold:V,children:Le(I.label,v)}),I.kind==="select"?xt(Zl,{children:[fe(Ae,{color:V?u.accent:u.border,children:` ${Q.prev} `}),fe(Ae,{color:u.foreground,children:we(Oe?.label??"\u2014",R)}),fe(Ae,{color:V?u.accent:u.border,children:` ${Q.next}`})]}):xt(Zl,{children:[fe(Ae,{children:" ".repeat(Ms)}),fe(Mr,{ref:$e=>{B.set(U,$e)},value:l[I.name]??"",onChange:$e=>m(Ai=>({...Ai,[I.name]:$e})),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(Ae,{color:u.faintForeground,children:`${" ".repeat(2+v+Ms)}${we(pe,R)}`}),I.kind==="code"&&fe($g,{active:vt,state:_t,email:(l[I.emailField]??"").trim(),indent:ne,width:R,hovered:h===N("send",U),nodeRef:$e=>{H.set(N("send",U),$e)}})]},I.name)}),fe(Ut,{marginTop:1,ref:I=>{H.set(N("submit"),I)},children:T?fe(nt,{label:a}):xt(Ae,{children:[fe(Ae,{color:u.accent,children:S?.type==="submit"?`${Q.cursor} `:" "}),fe(Ae,{color:Yr(S?.type==="submit",h===N("submit")),bold:S?.type==="submit",children:o})]})})]})]})}function $g({active:e,state:t,email:o,indent:n,width:r,hovered:i,nodeRef:s}){if(t?.phase==="sending")return fe(Ut,{paddingLeft:n,children:fe(nt,{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 xt(Ut,{ref:s,flexDirection:"column",paddingLeft:n-2,children:[xt(Ae,{children:[fe(Ae,{color:u.accent,children:e?`${Q.cursor} `:" "}),fe(Ae,{color:a>0?u.faintForeground:Yr(e,i),bold:e&&a===0,children:c})]}),t?.phase==="error"&&fe(Ae,{color:u.danger,children:` ${we(t.message,r)}`})]})}var Dg=2,Ql=2;function tu({options:e,value:t,onChange:o}){let n=e.findIndex(m=>m.value===t),r=Cr();eu((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+=Ql);let d=Os(m.label)+Dg;i.push({value:m.value,from:s,to:s+d}),s+=d});let[a,c]=ro(null),l=qe({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(Ut,{ref:l,children:fe(Ae,{wrap:"truncate",children:e.map((m,f)=>{let d=m.value===t;return xt(Ae,{children:[f>0&&" ".repeat(Ql),fe(Ae,{backgroundColor:d?u.foreground:u.border,color:d?u.background:m.value===a?u.foreground:u.mutedForeground,bold:d,children:` ${m.label} `})]},m.value)})})})}import{Box as Bs,Text as nu}from"ink";import Bg from"qrcode";import{jsx as Ho,jsxs as Wg}from"react/jsx-runtime";var Fg="#000000",Ug="#ffffff",$s=2,ru=2,Fs=1,ou,Ds;function iu(e){if(e===ou&&Ds!==void 0)return Ds;let t=Bg.create(e,{errorCorrectionLevel:"L"}),o=t.modules.size,n=t.modules.data,r=o+$s*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+$s];c!==void 0&&(c[a+$s]=n[s*o+a]===1)}return ou=e,Ds=i,i}function jg(e){let t=iu(e).length;return{columns:t*ru,rows:t}}function Xr(e,t,o,n){let r=jg(e),i=t.rows-r.rows-Fs;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+Fs+o.rows+n.rows}}}function qg(e,t){let o=[],n=0;for(let r=1;r<=e.length;r+=1)r<e.length&&e[r]===e[n]||(o.push(Ho(nu,{backgroundColor:e[n]??!1?Fg:Ug,children:" ".repeat((r-n)*ru)},n)),n=r);return Ho(nu,{children:o},t)}function Hg({value:e}){return Ho(Bs,{flexDirection:"column",flexShrink:0,children:iu(e).map((t,o)=>qg(t,o))})}function Qr({value:e,aside:t}){return Wg(Bs,{flexDirection:"column",flexShrink:0,children:[Ho(Hg,{value:e}),Ho(Bs,{marginTop:Fs,flexDirection:"column",children:t})]})}import{Box as Zr,Text as rt}from"ink";import su from"string-width";import{jsx as it,jsxs as Wo}from"react/jsx-runtime";var ei=2,Us=4,au=e=>" ".repeat(e),js=13,cu=4,lu=(e,t,o)=>Math.max(1,Math.min(e,o,Math.floor((t+ei)/(js+ei)))),Qt=(e,t,o=cu)=>Math.ceil(e/lu(e,t,o))*2;function st({tiles:e,width:t,maxPerRow:o=cu}){let n=lu(e.length,t,o),r=Math.floor((t-ei*(n-1))/n),i=[];for(let s=0;s<e.length;s+=n)i.push(e.slice(s,s+n));return it(Zr,{flexDirection:"column",children:i.map((s,a)=>it(Zr,{flexDirection:"column",children:["label","value"].map(c=>it(rt,{wrap:"truncate",children:s.map((l,m)=>Wo(rt,{children:[m>0&&au(ei),it(rt,{color:c==="label"?u.mutedForeground:u.foreground,bold:c==="value",children:Le(l[c],r)})]},l.label))},c))},a))})}function uu({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 Wo(rt,{children:[it(rt,{color:i,children:Q.barFilled.repeat(r)}),it(rt,{color:u.border,children:Q.barEmpty.repeat(o-r)})]})}function zg({items:e,width:t}){let o=Math.max(0,...e.map(([r])=>su(r))),n=Math.max(0,t-o-3);return it(Zr,{flexDirection:"column",children:e.map(([r,i])=>Wo(rt,{wrap:"truncate",children:[it(rt,{color:u.mutedForeground,children:Le(r,o)})," ",it(rt,{color:u.foreground,children:we(i,n)})]},r))})}var mu=(e,t)=>Math.floor((t-Us)/2)<js*2?e:Math.ceil(e/2);function Pe({items:e,width:t}){let o=Math.floor((t-Us)/2);if(o<js*2)return it(zg,{items:e,width:t});let n=Math.max(0,...e.map(([a])=>su(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?it(rt,{children:" ".repeat(o)}):Wo(rt,{children:[it(rt,{color:u.mutedForeground,children:Le(a[0],n)})," ",it(rt,{color:u.foreground,children:Le(a[1],r)})]});return it(Zr,{flexDirection:"column",children:i.map((a,c)=>Wo(rt,{wrap:"truncate",children:[s(a[0]),au(Us),s(a[1])]},c))})}import{Fragment as Qg,jsx as se,jsxs as gn}from"react/jsx-runtime";var Kg={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"},pu="\u5BC6\u94A5 ",Vg=10,Jg={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"}},Yg=2+J;function Xg({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(gn(zo,{wrap:"truncate",color:u.accent,children:[Le(e[r]??"",Math.min(o,t)),e[r+1]??""]},r));return se(Tt,{flexDirection:"column",children:n})}function fu(){let e=D(),{width:t,columns:o,rows:n}=q(),r=ie(),[i,s]=du({name:"menu"}),[a,c]=du(!1),{busy:l,error:m,reset:f,fail:d,run:p}=de(),y=X([e.revision],async()=>{let[w,S,k]=await Promise.all([Al(),$l(),Ml()]);return{user:w.user,security:S,sessions:k.sessions}});W(w=>{i.name==="menu"&&l===null&&w==="r"&&e.reload()}),Dc(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",()=>Ns({code:S}),{onSuccess:k=>s({name:"enroll",setup:k})}):w==="regenerate"?p("\u6B63\u5728\u751F\u6210\u6062\u590D\u7801",()=>Fl({code:S}),{onSuccess:({recoveryCodes:k})=>b(k,"\u6062\u590D\u7801\u5DF2\u66F4\u65B0")}):p("\u6B63\u5728\u505C\u7528",()=>Bl({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>wn){d(`\u8BF7\u8F93\u5165 1 \u5230 ${wn} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}p("\u6B63\u5728\u4FDD\u5B58",()=>Pl({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=>Il({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",()=>Ll({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 ${at} \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<at){d(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${at} \u4F4D`);return}p("\u6B63\u5728\u4FDD\u5B58",()=>Nl({oldPassword:P,newPassword:_}),{onSuccess:()=>g("\u5BC6\u7801\u5DF2\u4FEE\u6539")})}});if(i.name==="confirm-logout")return se(Ke,{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",()=>Sr(),{onSuccess:()=>{e.toast("ok","\u5DF2\u9000\u51FA\u767B\u5F55"),e.home()}}),onCancel:h});if(i.name==="code"){let x=Jg[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)=>gn(Qg,{children:[E&&se(zo,{color:u.mutedForeground,children:"\u4F7F\u7528 Google Authenticator \u7B49\u9A8C\u8BC1\u5668 App \u626B\u7801\u6DFB\u52A0"}),gn(zo,{children:[se(zo,{color:u.mutedForeground,children:pu}),se(zo,{color:u.accent,children:i.setup.secret})]}),se(Tt,{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",()=>Dl({code:A}),{onSuccess:({recoveryCodes:R})=>b(R,"\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u7ED1\u5B9A")})}})})]}),P=Xr(i.setup.otpauthUri,{width:t,rows:r},{columns:Gg(pu)+i.setup.secret.length,rows:Vg},{columns:o-t,rows:n-r});return P.fits?se(Qr,{value:i.setup.otpauthUri,aside:x(P.asideWidth,!0)}):gn(Tt,{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 gn(Tt,{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(Tt,{marginTop:1,children:se(Xg,{codes:i.codes,width:t})}),se(Tt,{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",()=>Ul(i.item.id,{name:P}),{onSuccess:()=>g("\u5DF2\u4FDD\u5B58")})}});if(i.name==="passkey-delete")return se(Ke,{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",()=>jl(i.item.id),{onSuccess:()=>g("\u5DF2\u5220\u9664")}),onCancel:h});if(i.name==="passkey"){let x=i.item;return se(Tt,{flexDirection:"column",children:gn(re,{title:`Passkey ${x.name}`,width:t,children:[se(Pe,{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(Tt,{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(Ke,{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",()=>Ol(i.item.id),{onSuccess:()=>g("\u5DF2\u9000\u51FA\u8BE5\u8BBE\u5907")}),onCancel:h});if(i.name==="session"){let x=i.item;return gn(Tt,{flexDirection:"column",children:[se(re,{title:sr(x.device),note:x.current?"\u5F53\u524D\u8BBE\u5907":void 0,width:t,children:se(Pe,{width:t-le,items:[["\u8BBE\u5907\u7C7B\u578B",x.device?.type!=null?Kg[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(Tt,{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?`${sr(x.device)}\uFF08\u5F53\u524D\u8BBE\u5907\uFF09`:sr(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 gn(Tt,{flexDirection:"column",children:[se(Pe,{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(Tt,{marginTop:J,children:se(ae,{width:t,height:Math.max(3,r-Yg),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",()=>Ns({}),{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 ai,Text as ci,useInput as mh}from"ink";import{useRef as Cu,useState as io}from"react";import dh from"string-width";import{z as Ve}from"zod";var Zg=Ve.object({siteName:Ve.string(),siteDescription:Ve.string(),apiLines:Ha,quotaPerUsd:Ve.number().int().positive(),ticketAutoCloseMinutes:Ve.number(),docsEnabled:Ve.boolean(),legal:Ve.object({termsConfigured:Ve.boolean(),privacyConfigured:Ve.boolean()}),invitation:Ve.object({firstInviterPercent:Ve.number(),firstInviteePercent:Ve.number()}),initialized:Ve.boolean()});function ve(e,t){return At(Zg,`${e}/api/site-config`,{...t===void 0?{}:{timeoutMs:t}})}var eh=Ve.object({title:Ve.string(),content:Ve.string(),configured:Ve.boolean()});function gu(e,t){return At(eh,`${e}/api/agreements/${t}`)}var hu=12e4,bu=e=>O(xn(lr),$t("/tickets",{...e})),yu=e=>O(lr,"/tickets",{method:"POST",json:e}),qs=e=>O(tc,`/tickets/${e}`),Su=(e,t,o)=>O(Ji,`/tickets/${e}/messages`,{method:"POST",json:{content:t,attachmentIds:o}}),xu=e=>O(Vi,$t("/tickets/attachments",{filename:e.fileName,contentType:e.contentType}),{method:"POST",body:e.bytes,headers:{"content-type":"application/octet-stream"},timeoutMs:hu}),Tu=e=>O(ye,`/tickets/attachments/${e}`,{method:"DELETE"}).then(()=>{}),wu=(e,t)=>Tr(`/tickets/${e}/attachments/${t}`,{timeoutMs:hu}),ku=e=>O(ye,`/tickets/${e}/close`,{method:"POST"}).then(()=>{}),vu=e=>O(ye,`/tickets/${e}/reopen`,{method:"POST"}).then(()=>{});import{existsSync as ti,readFileSync as th,statSync as _u,writeFileSync as nh}from"fs";import{homedir as Hs}from"os";import wt from"path";var oh={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".avif":"image/avif"};function rh(e){return e.split(`
|
|
13
|
-
`).map(t=>t.trim()).filter(t=>t!=="").map(t=>t.startsWith("~/")?wt.join(Hs(),t.slice(2)):t)}function ih(e){if(!ti(e))throw new $(`${e} \u4E0D\u5B58\u5728`);let t=_u(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>To)throw new $(`${e} \u8D85\u8FC7\u5355\u4E2A\u9644\u4EF6\u5927\u5C0F\u4E0A\u9650 ${Jn(To)}`);let o;try{o=th(e)}catch(r){throw new $(`${e} \u8BFB\u53D6\u5931\u8D25\uFF1A${Te(r)}`,{cause:r})}let n=wt.basename(e);return{fileName:n,contentType:oh[wt.extname(n).toLowerCase()]??"application/octet-stream",bytes:o}}function ni(e){let t=rh(e);if(t.length>ur)throw new $("\u9644\u4EF6\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650");return t.map(ih)}async function oi(e,t){let o=[];try{for(let n of e)o.push((await xu(n)).id);return await t(o)}catch(n){for(let r of o)await Tu(r).catch(()=>{});throw n}}function sh(e,t){let o=wt.basename(t),n=wt.extname(o),r=o.slice(0,o.length-n.length),i=wt.join(e,o);for(let s=1;ti(i);s+=1)i=wt.join(e,`${r}-${s}${n}`);return i}function ah(e,t){let o=e.trim();if(o==="")return{dir:process.cwd(),fileName:t};if(o==="~")return{dir:Hs(),fileName:t};let n=o.startsWith("~/")||o.startsWith(`~${wt.sep}`)?wt.join(Hs(),o.slice(2)):o;return o.endsWith("/")||o.endsWith(wt.sep)||ti(n)&&_u(n).isDirectory()?{dir:n,fileName:t}:{dir:wt.dirname(n),fileName:wt.basename(n)}}function Ru(e,t,o){let n=ah(e,t);if(!ti(n.dir))throw new $(`${n.dir} \u76EE\u5F55\u4E0D\u5B58\u5728`);let r=sh(n.dir,n.fileName);try{nh(r,o)}catch(i){throw new $(`\u5199\u5165 ${r} \u5931\u8D25\uFF1A${Te(i)}`,{cause:i})}return r}import{jsx as ch}from"react/jsx-runtime";function ri({title:e,width:t,fileName:o,download:n,onCancel:r,onSaved:i}){let{busy:s,error:a,run:c}=de();return ch(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 Ru(l.path??"",o,m)},{onSuccess:i})}})}import{useEffect as lh,useRef as uh}from"react";function ii(e,t,o=!0){let n=uh(t);n.current=t,lh(()=>{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 si={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 ${ur} \u4E2A\uFF0C\u5355\u4E2A\u4E0D\u8D85\u8FC7 ${To/1024/1024}MB`,optional:!0};import{jsx as mt,jsxs as Ws}from"react/jsx-runtime";var ph=5e3,fh=11,gh=3,Eu=1;function hh(e,t){let o=[],n=r=>{let i=r.spans.reduce((a,c)=>a+dh(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===""?[]:Bt([{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:` (${Jn(m.fileSize)})`,color:u.mutedForeground}]}));s?o.push(n(a),...c.map(n),...l.map(n)):o.push(a,...c,...l)}),o}function Au({params:e}){let t=D(),{width:o}=q(),n=ie(),[r,i]=io("main"),[s,a]=io(!1),[c,l]=io(null),[m,f]=io(null),[d,p]=io(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([qs(e.id),ve(t.ctx.site)]);return{detail:A,site:R}}),[S,k]=io(null),C=Cu(0),M=Cu(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;ii(ph,async()=>{if(x===null||y!==null)return;let A=C.current,R=await qs(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")))}),mh((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",()=>oi(R,N=>Su(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 mt(K,{trail:["\u5DE5\u5355\u652F\u6301",x?.ticket.title??"\u5DE5\u5355\u8BE6\u60C5"],hints:v,onEscape:_,children:mt(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 mt(Ke,{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",()=>ku(e.id),{onSuccess:()=>{i("main"),t.reload(),t.toast("ok","\u5DF2\u5173\u95ED")}}),onCancel:_});if(r==="attachments")return m!==null?mt(ri,{title:`\u4FDD\u5B58\u9644\u4EF6 \u2014 ${m.fileName}`,width:o,fileName:m.fileName,download:()=>wu(e.id,m.id),onCancel:()=>f(null),onSaved:F=>{f(null),l(F),t.toast("ok","\u9644\u4EF6\u5DF2\u4FDD\u5B58")}}):Ws(ai,{flexDirection:"column",children:[mt(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 ${Jn(Z.fileSize)} \xB7 ${ee(F.createdAt)}`})))],onSelect:F=>{l(null),f(F)}}),c!==null&&mt(ci,{wrap:"truncate",color:u.faintForeground,children:`\u5DF2\u4FDD\u5B58\u5230 ${c}`})]});let H=A.ticketAutoCloseMinutes>0?Eu:0,B=N?gh:s?fh:Eu,ne=Math.max(3,n-H-B-J);return Ws(ai,{flexDirection:"column",children:[H>0&&mt(ci,{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`}),mt(un,{lines:hh(x.messages,o),height:ne,isActive:!s&&y===null,pinBottom:!0}),mt(ai,{marginTop:1,flexDirection:"column",children:N?Ws(ai,{flexDirection:"column",children:[mt(ci,{color:u.mutedForeground,children:"\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u5982\u9700\u7EE7\u7EED\u6C9F\u901A\u53EF\u91CD\u65B0\u6253\u5F00"}),mt(ae,{width:o,isActive:y===null,items:[{value:"reopen",label:"\u91CD\u65B0\u6253\u5F00"}],onSelect:()=>T("\u6B63\u5728\u91CD\u65B0\u6253\u5F00",()=>vu(e.id),{onSuccess:()=>{t.reload(),t.toast("ok","\u5DF2\u91CD\u65B0\u6253\u5F00")}})})]}):s?mt(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},si],onCancel:()=>a(!1),onSubmit:F=>{let Z=(F.content??"").trim(),Ge;try{Ge=ni(F.attachments??"")}catch(I){b(Te(I));return}if(Z===""&&Ge.length===0){b("\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9\u6216\u9644\u4EF6\u8DEF\u5F84");return}E(Z,Ge)}},d):mt(ci,{color:u.faintForeground,children:"\u6309 Tab \u64B0\u5199\u56DE\u590D"})})]})}})})}import{Box as bh}from"ink";import{useState as yh}from"react";import{jsx as In,jsxs as Th}from"react/jsx-runtime";var Sh=et(Fi,es,"\u5168\u90E8\u72B6\u6001"),xh={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"},zs={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:xh};function Pu(){let e=D(),{width:t}=q(),o=ie(),[n,r]=yh({name:"list"}),[i,s]=Qe("status",()=>""),{busy:a,error:c,reset:l,fail:m,run:f}=de(),d=dn([e.revision,i],(h,g)=>bu({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 In(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"?In(G,{title:"\u7B5B\u9009\u5DE5\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:Sh,initial:i}],onCancel:y,onSubmit:h=>{s(h.status??""),d.reset(),r({name:"list"})}}):n.name==="create-category"?In(ae,{width:t,height:o,items:[{heading:"\u5206\u7C7B"},...Ui.map(h=>({value:h,label:fr(h),hint:zs[h].title}))],onSelect:h=>r({name:"create",category:h})}):n.name==="create"?In(G,{title:`\u65B0\u5EFA\u5DE5\u5355 \u2014 ${fr(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:ji.map(h=>({value:h,label:ts(h).label})),initial:"normal"},{kind:"text",name:"title",label:"\u6807\u9898",placeholder:zs[n.category].title},{kind:"textarea",name:"content",label:"\u95EE\u9898\u63CF\u8FF0",rows:5,maxLength:5e3,placeholder:zs[n.category].content},si],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=ni(h.attachments??"")}catch(w){m(Te(w));return}f("\u6B63\u5728\u63D0\u4EA4\u5DE5\u5355",()=>oi(T,w=>yu({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")}})}}):In(Y,{state:d.state,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:t,children:h=>Th(bh,{flexDirection:"column",children:[In(Ee,{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,Vt(ts(g.priority)),fr(g.category),ee(g.updatedAt),Vt(es(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}),In(pn,{page:d.page,pages:d.pages,total:d.total,width:t})]})})})}import{Box as wh}from"ink";import{jsx as Go}from"react/jsx-runtime";function Nu({params:e}){let t=D(),{width:o}=q(),n=ie(),r=X([e.type,t.revision],()=>gu(t.ctx.site,e.type));return Go(K,{trail:["\u6CD5\u5F8B\u6761\u6B3E",e.type==="terms"?"\u7528\u6237\u534F\u8BAE":"\u9690\u79C1\u653F\u7B56"],hints:["\u2191\u2193 \u6EDA\u52A8"],children:Go(Y,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6761\u6B3E",width:o,children:i=>i.configured?Go(wh,{flexDirection:"column",children:Go(un,{lines:to(i.content,o),height:n})}):Go(ge,{tone:"info",width:o,title:"\u8BE5\u6761\u6B3E\u5C1A\u672A\u914D\u7F6E"})})})}async function Iu(e,t){await At(ye,`${e}/api/auth/send-code`,{json:t})}async function Lu(e,t){let o=await ht(`${e}/api/auth/register`,{json:t});Et(o);let n=Gn.parse(o.data);return Ro(e,_o({refresh:null,device:null},o.headers),n)}async function Mu(e,t){await At(ye,`${e}/api/auth/forgot-password`,{json:t})}async function Ou(e,t){await At(ye,`${e}/api/auth/reset-password`,{json:t})}import{jsx as $u}from"react/jsx-runtime";function Du(){let e=D(),{width:t}=q(),{busy:o,error:n,fail:r,run:i}=de();return $u(K,{trail:["\u627E\u56DE\u5BC6\u7801"],isActive:o===null,children:$u(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=>Mu(e.ctx.site,{email:s})},{kind:"text",name:"password",label:"\u65B0\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${at} \u4F4D`,hint:"\u91CD\u7F6E\u540E\u6240\u6709\u8BBE\u5907\u90FD\u9700\u91CD\u65B0\u767B\u5F55"}],onCancel:()=>e.pop(),onSubmit:s=>{let a=(s.email??"").trim(),c=(s.code??"").trim(),l=s.password??"";if(a===""||c===""){r("\u8BF7\u586B\u5199\u90AE\u7BB1\u4E0E\u9A8C\u8BC1\u7801");return}if(l.length<at){r(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${at} \u4F4D`);return}i("\u6B63\u5728\u91CD\u7F6E",()=>Ou(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 Ks,Text as vh}from"ink";import{useState as Fu}from"react";import{Box as Bu}from"ink";import{jsx as Gs,jsxs as kh}from"react/jsx-runtime";var li=e=>e.termsConfigured||e.privacyConfigured;function ui({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 kh(Bu,{flexDirection:"column",children:[Gs(ge,{tone:"info",width:t,title:`\u7EE7\u7EED\u524D\u8BF7\u9605\u8BFB\u5E76\u540C\u610F${r.join("\u4E0E")}`}),Gs(Bu,{marginTop:1,children:Gs(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 hn,jsxs as Uu}from"react/jsx-runtime";function ju(){let e=D(),{width:t}=q(),[o,n]=Fu({name:"credentials"}),[r,i]=Fu(!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",()=>xc(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",()=>Tc(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 Uu(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"&&hn(Y,{state:f,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:g=>li(g.legal)&&!r?hn(ui,{legal:g.legal,width:t,onAgree:()=>i(!0)}):Uu(Ks,{flexDirection:"column",children:[hn(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)}}),hn(Ks,{marginTop:1,children:hn(vh,{color:u.faintForeground,children:"Passkey \u767B\u5F55\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"})})]})}),o.name==="factor"&&hn(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"&&hn(Ks,{flexDirection:"column",children:hn(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 _h}from"react";import{jsx as mi}from"react/jsx-runtime";function qu(){let e=D(),{width:t}=q(),[o,n]=_h(!1),{busy:r,error:i,fail:s,run:a}=de(),c=X([e.revision],()=>ve(e.ctx.site));return mi(K,{trail:["\u6CE8\u518C\u8D26\u53F7"],isActive:r===null,children:mi(Y,{state:c,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:l=>li(l.legal)&&!o?mi(ui,{legal:l.legal,width:t,onAgree:()=>n(!0)}):mi(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=>Iu(e.ctx.site,{email:m,purpose:"register"})},{kind:"text",name:"password",label:"\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${at} \u4F4D`},{kind:"text",name:"invite",label:"\u9080\u8BF7\u7801",placeholder:"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801",optional:!0}],onCancel:()=>e.pop(),onSubmit:m=>{let f=(m.username??"").trim(),d=(m.email??"").trim(),p=(m.code??"").trim(),y=m.password??"",h=(m.invite??"").trim();if(f===""||f.length>wn){s(`\u8BF7\u8F93\u5165 1 \u5230 ${wn} \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<at){s(`\u5BC6\u7801\u81F3\u5C11 ${at} \u4F4D`);return}a("\u6B63\u5728\u6CE8\u518C",()=>Lu(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 Mn}from"ink";import{useEffect as jh,useRef as qh,useState as Qs}from"react";import{z as L}from"zod";var Rh=L.object({balance:L.number(),today:L.object({requests:L.number(),tokens:L.number(),cost:L.number()})}),Hu=()=>O(Rh,"/dashboard/summary"),Wu=["all","30d","7d"],Ch=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()}),Vs=e=>O(Ch,$t("/dashboard/stats",{range:e})),Eh=L.object({id:L.number().int(),requestId:L.string(),tokenName:L.string(),protocol:Ea,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:$a,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()}),zu=e=>O(xn(Eh),$t("/logs",{...e})),Ah=L.object({quotaCost:L.number(),rpm:L.number(),tpm:L.number(),concurrency:L.number()}),Gu=e=>O(Ah,$t("/logs/stats",{...e})),Ph=L.object({id:L.number().int(),type:La,amount:L.number(),balanceAfter:L.number(),refType:Ma,refId:L.string().nullable(),createdAt:L.string()}),Ku=e=>O(xn(Ph),$t("/quota-ledger",{...e}));import{Box as Nh,Text as It}from"ink";import Ko from"string-width";import{Fragment as Ju,jsx as Lt,jsxs as Js}from"react/jsx-runtime";var Ln=1,Ih=4,Lh=1,so=8,Mh=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587"],Vu=e=>`${Number(e.slice(5,7))}\u6708${Number(e.slice(8,10))}\u65E5`;function Yu({data:e,order:t,width:o,rows:n}){let r=n-Lh,i=[];for(let P=e.start;P<=e.end;P=on(P,1))i.push(P);let s=Math.min(Ih,Math.floor((o+Ln)/i.length)-Ln);s<1&&(s=1,i=i.slice(-Math.floor((o+Ln)/(1+Ln))));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,Ir.length).map((P,_)=>[P,_])),m=Ir.length,f=P=>Ir[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*so,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(so,A-B*so);if(ne<=0)break;let F=new Map;for(let I=B*so;I<B*so+ne;I+=1){let U=R[I];U!==void 0&&F.set(U,(F.get(U)??0)+1)}let Z=null,Ge=0;for(let[I,U]of F)U>Ge&&(Z=I,Ge=U);if(Z===null)break;E[B]={color:Z,glyph:ne===so?null:Mh[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,Ln);let R=v[P]??null;R===null?E(null,null,s):E(R.color,R.glyph,s)}),_},w=i.length*(s+Ln)-Ln,S=Vu(a),k=Vu(c),C=h>0?`\u5355\u65E5\u5CF0\u503C ${an(h)}`:"",M=w-Ko(S)-Ko(k),j=C!==""&&M>=Ko(C)+4,x=j?Math.floor((M-Ko(C))/2):M;return Js(Nh,{flexDirection:"column",children:[Array.from({length:r},(P,_)=>{let E=r-1-_;return Lt(It,{wrap:"truncate",children:T(E).map((v,A)=>v.color===null?Lt(It,{children:" ".repeat(v.width)},A):v.glyph===null?Lt(It,{backgroundColor:v.color,children:" ".repeat(v.width)},A):Lt(It,{color:v.color,children:v.glyph.repeat(v.width)},A))},E)}),Lt(It,{wrap:"truncate",children:M<2?Lt(It,{color:u.faintForeground,children:we(S,w)}):Js(Ju,{children:[Lt(It,{color:u.faintForeground,children:S}),Lt(It,{children:" ".repeat(x)}),j&&Js(Ju,{children:[Lt(It,{color:u.mutedForeground,children:C}),Lt(It,{children:" ".repeat(M-Ko(C)-x)})]}),Lt(It,{color:u.faintForeground,children:k})]})})]})}import{Box as Xu,Text as qt}from"ink";import Oh from"string-width";import{jsx as jt,jsxs as Ys}from"react/jsx-runtime";var di=3,Zt=2,Xs=10,$h=8,Qu=e=>Math.floor((e-di)/Zt),Zu=e=>Qu(e)>=$h;function Dh(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=on(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 Bh(e,t){let o=t*Zt,n="",r=0,i="";for(;r<o;){let s=r%Zt===0?e[r/Zt*7]:void 0;if(s!==void 0){let a=s.day.slice(0,7);if(a!==i){i=a;let c=`${Number(s.day.slice(5,7))}\u6708`,l=Oh(c);if(r+l<=o){n+=c,r+=l;continue}}}n+=" ",r+=1}return n}var Fh={1:"\u4E00",3:"\u4E09",5:"\u4E94"};function Uh({cells:e,day:t,weeks:o}){return Ys(qt,{wrap:"truncate",children:[jt(qt,{color:u.faintForeground,children:Le(Fh[t]??"",di)}),Array.from({length:o},(n,r)=>{let i=e[r*7+t];return i===void 0?jt(qt,{children:" ".repeat(Zt)},r):jt(qt,{backgroundColor:Nr[i.level],children:" ".repeat(Zt)},r)})]})}function em({data:e,funFact:t,width:o}){let n=Dh(e),r=Math.ceil(n.length/7),i=Math.min(r,Qu(o)),s=n.slice((r-i)*7),a=3+Nr.length*Zt+3,c=Math.max(0,di+i*Zt-a-2);return Ys(Xu,{flexDirection:"column",children:[jt(qt,{wrap:"truncate",color:u.faintForeground,children:" ".repeat(di)+Bh(s,i)}),Array.from({length:7},(l,m)=>jt(Uh,{cells:s,day:m,weeks:i},m)),jt(Xu,{marginTop:1,children:Ys(qt,{wrap:"truncate",children:[jt(qt,{color:u.mutedForeground,children:Le(t??"",c)})," ",jt(qt,{color:u.faintForeground,children:"\u5C11 "}),Nr.map(l=>jt(qt,{backgroundColor:l,children:" ".repeat(Zt)},l)),jt(qt,{color:u.faintForeground,children:" \u591A"})]})})]})}import{jsx as We,jsxs as nm}from"react/jsx-runtime";var Hh={all:"\u5168\u90E8","30d":"30 \u5929","7d":"7 \u5929"},Wh=1,pi=4,tm=5,zh=9;function Gh(e){let t=-1,o=0;return e.forEach((n,r)=>{n>o&&(o=n,t=r)}),t<0?"\u2014":`${t} \u70B9`}function om(){let e=D(),{width:t}=q(),o=ie(),[n,r]=Qs("all"),[i,s]=Qs("heatmap"),[a,c]=Qs(null),l=qh(null),m=X([n,e.revision],async()=>{let f=l.current;if(f!==null&&f.revision===e.revision){let h=await Vs(n);return{summary:f.summary,stats:h,site:f.site}}let[d,p,y]=await Promise.all([Hu(),Vs(n),ve(e.ctx.site)]);return l.current={revision:e.revision,summary:d,site:y},{summary:d,stats:p,site:y}});return jh(()=>{m.phase==="ready"&&c(rc({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")}),We(K,{hints:["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u5207\u6362\u533A\u95F4","t \u5207\u6362\u56FE\u8868","/ \u8FC7\u6EE4","r \u5237\u65B0"],children:We(Mn,{flexDirection:"column",children:We(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:Ce(f.today.requests)},{label:"\u4ECA\u65E5 Token",value:Ce(f.today.tokens)},{label:"\u4ECA\u65E5\u6D88\u8017",value:ce(f.today.cost,p.quotaPerUsd)}],h=[{label:"\u8BF7\u6C42\u6570",value:Ce(d.totals.requests)},{label:"Token \u603B\u91CF",value:an(d.totals.tokens)},{label:"\u6D88\u8017",value:ce(d.totals.cost,p.quotaPerUsd)},{label:"\u6D3B\u8DC3\u5929\u6570",value:Ce(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:Gh(d.hourly)},{label:"\u5E38\u7528\u6A21\u578B",value:d.models[0]?.displayName??"\u2014"}],g=t-le,b=_=>lt+_+Qt(y.length,g)+J+lt+_+Wh+_+Qt(h.length,g)+J+lt+_,T=o-b(Fe)>=pi?Fe:0,w=o-b(T),S=J+lt+T+tm,k=i==="chart"&&d.chart.points.length>0&&w>=S+pi,C=i==="heatmap"&&Zu(g)&&w-(J+Xs)>=pi,M=C?J+Xs:0,j=k?Math.min(zh,tm+Math.floor((w-S-pi)/2)):0,x=w-M-(k?J+lt+T+j:0),P=_=>`${(d.totals.tokens>0?_/d.totals.tokens*100:0).toFixed(1)}%`;return nm(Mn,{flexDirection:"column",children:[We(re,{title:"\u6982\u89C8",width:t,gap:T,children:We(st,{width:g,tiles:y})}),We(Mn,{marginTop:1,flexDirection:"column",children:nm(re,{title:"\u533A\u95F4\u7EDF\u8BA1",width:t,gap:T,children:[We(tu,{options:Wu.map(_=>({value:_,label:Hh[_]})),value:n,onChange:r}),We(Mn,{marginTop:T,children:We(st,{width:g,tiles:h})}),C&&We(Mn,{marginTop:1,flexDirection:"column",children:We(em,{data:d.heatmap,funFact:a,width:g})})]})}),k&&We(Mn,{marginTop:1,flexDirection:"column",children:We(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:We(Yu,{data:d.chart,order:d.models.map(_=>_.model),width:g,rows:j})})}),We(Mn,{marginTop:1,flexDirection:"column",children:We(re,{title:"\u6A21\u578B\u7528\u91CF",width:t,gap:T,children:d.models.length===0?We(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"}):We(Ee,{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,an(_.tokens),an(_.inTokens),an(_.outTokens),P(_.tokens)],searchOf:_=>_.displayName})})})]})}})})})}import{Box as ao,Text as ea}from"ink";import{useState as sm}from"react";import{z as Je}from"zod";var Kh=Je.object({id:Je.number().int(),name:Je.string(),description:Je.string(),multiplier:Je.coerce.number()}),fi=()=>O(Je.array(Kh),"/groups"),Zs=Je.object({id:Je.number().int(),name:Je.string(),keyPrefix:Je.string(),keySuffix:Je.string(),groupId:Je.number().int().nullable(),groupName:Je.string().nullable(),usedQuota:Je.number(),quotaLimit:Je.number().nullable()}),gi=()=>O(Je.array(Zs),"/tokens"),rm=e=>O(Zs.extend({token:Je.string()}),"/tokens",{method:"POST",json:e}),hi=(e,t)=>O(Zs,`/tokens/${e}`,{method:"PATCH",json:t}),im=e=>O(ye,`/tokens/${e}`,{method:"DELETE"}).then(()=>{});import{jsx as ze,jsxs as bi}from"react/jsx-runtime";var am={model:"",requestId:"",token:"",group:"",status:"",range:"today",since:"",until:""},cm=/^\d{4}-\d{2}-\d{2}$/;function Vh(e){let t=Xi();return e.range==="today"?{since:t,until:t}:e.range==="7d"?{since:on(t,-6),until:t}:e.range==="30d"?{since:on(t,-29),until:t}:e.range==="custom"?{...e.since===""?{}:{since:e.since},...e.until===""?{}:{until:e.until}}:{}}function lm(e){let t=Vh(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:Qi(t.since).toISOString()},...t.until===void 0?{}:{until:Qi(on(t.until,1)).toISOString()}}}var Jh=et(Bi,dr,"\u5168\u90E8\u72B6\u6001"),Yh=[{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 Xh({log:e,quotaPerUsd:t,width:o}){let n=o-le,r=dr(e.status),i=Ye(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",Ce(e.cachedTokens)]),e.cacheWrite5mTokens>0&&a.push(["\u7F13\u5B58\u5199 5m",Ce(e.cacheWrite5mTokens)]),e.cacheWrite1hTokens>0&&a.push(["\u7F13\u5B58\u5199 1h",Ce(e.cacheWrite1hTokens)]),e.firstByteMs!==null&&a.push(["\u9996\u5B57\u8282",`${_n(e.firstByteMs)} s`]);let c=[["\u8BF7\u6C42 ID",e.requestId],["\u4EE4\u724C",e.tokenName],["\u5206\u7EC4",e.groupName],["\u534F\u8BAE",ac(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 bi(re,{title:e.modelDisplayName,note:ee(e.createdAt),width:o,children:[bi(ea,{wrap:"truncate",children:[ze(ea,{color:i===void 0?u.mutedForeground:He[i],children:r.label}),ze(ea,{color:u.faintForeground,children:` ${Be([e.stream?"\u6D41\u5F0F":"",e.model])}`})]}),ze(ao,{marginTop:1,children:ze(st,{width:n,tiles:[{label:"\u8F93\u5165 Token",value:Ce(e.promptTokens)},{label:"\u8F93\u51FA Token",value:Ce(e.completionTokens)},{label:"\u6D88\u8017",value:Vn(e.quotaCost,t)},{label:"\u603B\u8017\u65F6",value:`${_n(e.latencyMs)} s`}]})}),s!==null&&ze(ao,{marginTop:1,children:ze(ge,{tone:"warn",width:n,title:s})}),ze(ao,{marginTop:1,children:ze(Pe,{width:n,items:[...a,...c]})})]})}function um(){let e=D(),{width:t}=q(),o=ie(),[n,r]=sm({name:"list"}),[i,s]=sm(am),{error:a,fail:c,reset:l}=de(),m=X([e.revision],async()=>{let[g,b,T]=await Promise.all([fi(),gi(),ve(e.ctx.site)]);return{groups:g,tokens:b,site:T}}),f=dn([e.revision,JSON.stringify(i)],(g,b)=>zu({page:g,pageSize:b,...lm(i)}),{retain:"page"}),d=X([e.revision,JSON.stringify(i)],()=>Gu(lm(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(am);return ze(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:ze(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 ze(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:Jh,initial:i.status},{kind:"select",name:"range",label:"\u65F6\u95F4\u8303\u56F4",options:Yh,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!==""&&!cm.test(C)||M!==""&&!cm.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 ze(Xh,{log:n.log,quotaPerUsd:T.quotaPerUsd,width:t});let w=Qt(4,t);return bi(ao,{flexDirection:"column",children:[ze(ao,{height:w+1,flexDirection:"column",overflow:"hidden",children:ze(Y,{state:d,loading:"\u6B63\u5728\u7EDF\u8BA1\u7B5B\u9009\u7ED3\u679C",width:t,children:S=>ze(st,{width:t,tiles:[{label:"\u6D88\u8017",value:ce(S.quotaCost,T.quotaPerUsd)},{label:"RPM",value:Ce(S.rpm)},{label:"TPM",value:Ce(S.tpm)},{label:"\u5E76\u53D1",value:Ce(S.concurrency)}]})})}),ze(Y,{state:f.state,loading:"\u6B63\u5728\u8BFB\u53D6\u4F7F\u7528\u65E5\u5FD7",width:t,children:S=>bi(ao,{flexDirection:"column",children:[ze(Ee,{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,Ce(k.promptTokens),Ce(k.completionTokens),Vn(k.quotaCost,T.quotaPerUsd),Vt(dr(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"}),ze(pn,{page:f.page,pages:f.pages,total:f.total,width:t})]})})]})}})})}import{Box as Vo,Text as bn}from"ink";import{useState as nb}from"react";import{z as te}from"zod";var Qh=te.object({id:te.number().int(),model:te.string(),displayName:te.string(),inputPricePerMillionTokens:te.string(),outputPricePerMillionTokens:te.string(),cachedInputPricePerMillionTokens:te.string(),cacheWritePricePerMillionTokens:te.string()}),Zh=te.object({quotaPerUsd:te.number().int().positive(),cnyPerUsd:te.number(),minTopupCny:te.number(),models:te.array(Qh)});function yi(e){return At(Zh,`${e}/api/pricing`)}var eb=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 mm(e,t){return At(eb,`${e}/api/pricing/${t}`)}var tb=te.object({data:te.array(te.object({id:te.string()}))});async function dm(e,t,o){return(await At(tb,`${e}/v1/models`,{headers:{authorization:`Bearer ${t}`},...o===void 0?{}:{timeoutMs:o}})).data.map(r=>r.id)}import{jsx as Me,jsxs as Jo}from"react/jsx-runtime";var ob=4,rb="\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",ib=1,sb=1+Fe,ab=e=>e.requests===0?u.border:e.errors===0?u.success:e.errors/e.requests>=.5?u.danger:u.warning;function cb({minutes:e,width:t}){let o=e.slice(Math.max(0,e.length-t)),n=[];for(let r of o){let i=ab(r),s=n[n.length-1];s!==void 0&&s.color===i?s.count+=1:n.push({color:i,count:1})}return Me(bn,{wrap:"truncate",children:n.map((r,i)=>Me(bn,{color:r.color,children:Q.barFilled.repeat(r.count)},i))})}function lb({price:e,width:t,contentRows:o}){let n=D(),r=X([e.id,n.revision],()=>mm(n.ctx.site,e.id)),i=(s,a)=>vn(String(Number(s)*a),"-");return Me(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:Ce(c.requests)},{label:"\u5EF6\u8FDF P50",value:c.latencyP50Ms!==null?`${_n(c.latencyP50Ms)} s`:"\u2014"},{label:"\u9996\u5B57\u8282 P50",value:c.firstByteP50Ms!==null?`${_n(c.firstByteP50Ms)} s`:"\u2014"}],m=sb+Nt+Qt(l.length,a,2)+J+Nt+ib,f=s.heartbeat.groups.length,d=o-m-ob-J-Nt,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+Nt+p*2+(p<f?1:0):0,h=Math.max(1,o-m-y);return Jo(Vo,{flexDirection:"column",children:[Me(Vo,{marginBottom:Fe,children:Jo(bn,{wrap:"truncate",children:[Me(bn,{bold:!0,color:u.foreground,children:e.displayName}),Me(bn,{color:u.faintForeground,children:` ${e.model}`})]})}),Me(re,{title:"\u8FD1 24 \u5C0F\u65F6",note:"\u5168\u90E8\u5206\u7EC4\u7684\u7EFC\u5408\u8C03\u7528\u7EDF\u8BA1",width:t,children:Me(st,{width:a,tiles:l,maxPerRow:2})}),p>0&&Me(Vo,{marginTop:1,flexDirection:"column",children:Jo(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=>Jo(Vo,{flexDirection:"column",children:[Me(bn,{wrap:"truncate",color:u.foreground,children:g.name}),Me(cb,{minutes:g.minutes,width:a})]},g.id)),p<f&&Me(bn,{color:u.faintForeground,children:`\u5176\u4F59 ${f-p} \u4E2A\u5206\u7EC4\u672A\u663E\u793A`})]})}),Me(Vo,{marginTop:1,flexDirection:"column",children:Jo(re,{title:"\u5206\u7EC4\u4EF7\u683C",width:t,children:[Me(bn,{wrap:"truncate",color:u.mutedForeground,children:rb}),s.groups.length===0?Me(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"}):Me(Ee,{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 pm(){let e=D(),{width:t}=q(),o=ie(),[n,r]=nb({name:"list"}),i=X([e.revision],async()=>(await yi(e.ctx.site)).models);W(a=>{a==="r"&&e.reload()});let s=()=>{n.name==="list"?e.pop():r({name:"list"})};return Me(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:Me(Y,{state:i,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u5B9A\u4EF7",width:t,children:a=>a.length===0?Me(ge,{tone:"info",width:t,title:"\u6682\u65E0\u6A21\u578B"}):n.name==="detail"?Me(lb,{price:n.price,width:t,contentRows:o}):Me(Ee,{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,vn(c.inputPricePerMillionTokens,"-"),vn(c.outputPricePerMillionTokens,"-"),vn(c.cachedInputPricePerMillionTokens,"-"),vn(c.cacheWritePricePerMillionTokens,"-")],searchOf:c=>`${c.displayName} ${c.model}`,onOpen:c=>r({name:"detail",price:c}),emptyLabel:"\u65E0\u5339\u914D\u7ED3\u679C"})})})}import{Box as On,Text as Mm}from"ink";import{useState as Ti}from"react";function fm(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 gm(e,t){let o=await ve(e.site);return dm(fm(Rn(),o).url,t)}async function hm(e,t,o,n){let r=await ve(e.site),i=fm(Rn(),r).url;t.apply({siteName:r.siteName,baseUrl:t.relayUrl(i),apiKey:o,model:t.requiresModel?n??null:null},t.resolveDir())}import{homedir as wm}from"os";import{join as xi,resolve as ub}from"path";function Si(e,t){let o=e[t];return typeof o!="object"||o===null||Array.isArray(o)?null:o}function Yo(e,t){let o={...or(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&&Si(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?{}:{...Si(o,i)??{}};c[s]=r,o[i]=c}rr(e,o,384)}function bm(e,t){let o=or(e);if(o===null)return null;let n=t.length===1?o[t[0]]:Si(o,t[0])?.[t[1]];return typeof n=="string"?n:null}function ym(e,t){let o=or(e);if(o===null)return!1;if(t.length===1)return t[0]in o;let n=Si(o,t[0]);return n!==null&&t[1]in n}var Sm=["env","ANTHROPIC_BASE_URL"],mb=["env","ANTHROPIC_AUTH_TOKEN"],xm=["hasCompletedOnboarding"],ta=e=>xi(e.dir,"settings.json"),Tm=e=>e.custom?xi(e.dir,".claude.json"):xi(wm(),".claude.json"),km={id:"claude-code",label:"Claude Code",requiresModel:!1,resolveDir(){let e=process.env.CLAUDE_CONFIG_DIR;return e?{dir:ub(e),custom:!0}:{dir:xi(wm(),".claude"),custom:!1}},relayUrl:e=>e,configPaths:e=>[ta(e),Tm(e)],read(e){return{baseUrl:bm(ta(e),Sm),model:null}},apply(e,t){Yo(ta(t),[[Sm,e.baseUrl],[mb,e.apiKey]]);let o=Tm(t);ym(o,xm)||Yo(o,[[xm,!0]])}};import{homedir as db}from"os";import{join as ia,resolve as pb}from"path";import{parse as fb,patch as gb}from"@decimalturn/toml-patch";import{parse as hb}from"smol-toml";var bb=["OPENAI_API_KEY"],vm="model_provider",na="model",oa=e=>ia(e.dir,"config.toml"),_m=e=>ia(e.dir,"auth.json");function ra(e,t){try{return hb(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 yb(e,t){let o=oa(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=Wn(o)??"";n!==""&&ra(n,o);let r=e.siteName.toLowerCase(),i=fb(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[vm]=r,i[na]=e.model;let a=gb(n,i,{inlineTableStart:2}),c=ra(a,o);if(c[vm]!==r||c[na]!==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`);Ni(o,a,384)}var Rm={id:"codex",label:"Codex",requiresModel:!0,resolveDir(){let e=process.env.CODEX_HOME;return e?{dir:pb(e),custom:!0}:{dir:ia(db(),".codex"),custom:!1}},relayUrl:e=>`${e}/v1`,configPaths:e=>[oa(e),_m(e)],read(e){let t=oa(e),o=Wn(t),n=o===null?null:ra(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?.[na])}},apply(e,t){yb(e,t),Yo(_m(t),[[bb,e.apiKey]])}};var Cm=[km,Rm];var Sb=6e3,xb=2,Em=e=>ht(`${e.url}/api/site-config`,{timeoutMs:Sb});async function Tb(e){try{await Em(e);let t=Number.POSITIVE_INFINITY;for(let o=0;o<xb;o+=1){let n=Date.now();await Em(e),t=Math.min(t,Date.now()-n)}return{line:e,latencyMs:t}}catch{return{line:e,latencyMs:null}}}async function Am(e){let t=[];for(let o of e)t.push(await Tb(o));return t}import{jsx as xe,jsxs as co}from"react/jsx-runtime";var wb=10,kb=3,Pm=4,Om=e=>1+Math.max(1,Math.min(e,Pm))+(e>Pm?1:0);function Nm(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 Im=e=>e.map(t=>({value:String(t.id),label:`${t.name} \xD7${t.multiplier}`})),Lm=(e,t)=>{let o=e.find(n=>String(n.id)===t);return o===void 0?void 0:`${o.description}\uFF08\u8BA1\u8D39\u500D\u7387 \xD7${o.multiplier}\uFF09`};function vb({lines:e,measured:t,effective:o,docsUrl:n,width:r,isActive:i,onPick:s}){let a=c=>{if(t===null)return"\u6D4B\u91CF\u4E2D";let l=t.find(m=>m.line.url===c.url);return l===void 0||l.latencyMs===null?"\u4E0D\u53EF\u8FBE":`${l.latencyMs} ms`};return co(re,{title:"API \u63A5\u5165\u5730\u5740",note:o===void 0?void 0:`\u5F53\u524D ${o.name}`,width:r,children:[xe(Ee,{retain:"lines",items:e,width:r-le,height:Om(e.length),isActive:i,columns:[{label:"\u7EBF\u8DEF"},{label:"\u5EF6\u8FDF",align:"right"},{label:"\u8BF4\u660E",shrink:!0},{label:"\u72B6\u6001"}],row:c=>[c.name,a(c),c.description,o?.url===c.url?"\u4F7F\u7528\u4E2D":""],searchOf:c=>`${c.name} ${c.url}`,onOpen:s,emptyLabel:"\u7AD9\u70B9\u672A\u914D\u7F6E\u63A5\u5165\u7EBF\u8DEF\uFF0C\u8BF7\u8054\u7CFB\u7AD9\u70B9\u7BA1\u7406\u5458\u6DFB\u52A0"}),n!==null&&co(Mm,{wrap:"truncate",color:u.faintForeground,children:["\u63A5\u5165\u6587\u6863 ",n]})]})}function $m(){let e=D(),{width:t}=q(),o=ie(),[n,r]=Ti({name:"list"}),[i,s]=Ti(!1),[a,c]=Ti(()=>Rn().line),[l,m]=Ti(0),{busy:f,error:d,reset:p,fail:y,run:h}=de(),g=X([e.revision],async()=>{let[R,N,H]=await Promise.all([gi(),fi(),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("|")],()=>Am(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=>{xr(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",()=>rm({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",()=>im(R.id),{onSuccess:()=>k("\u4EE4\u724C\u5DF2\u5220\u9664")})},x=(R,N)=>{h("\u6B63\u5728\u8BFB\u53D6\u5BA2\u6237\u7AEF\u914D\u7F6E",async()=>Cm.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",()=>hm(e.ctx,R,N,H),{failToast:!0,onSuccess:()=>{r({name:"list"}),e.toast("ok",Be([`\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 gm(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"?xe(K,{hints:A(),onEscape:v,children:co(On,{flexDirection:"column",children:[f!==null&&xe(nt,{label:f}),n.name==="created"&&!w&&co(On,{flexDirection:"column",children:[xe(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"}),xe(On,{marginTop:1,children:xe(Mm,{color:u.accent,children:n.secret})}),xe(On,{marginTop:1,children:xe(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&&xe(re,{title:"\u5199\u5165\u914D\u7F6E",note:n.token.name,width:t,children:xe(ae,{width:t-le,height:o-Nt,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&&xe(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)}})]})}):xe(K,{hints:A(),onEscape:v,children:xe(Y,{state:g,loading:"\u6B63\u5728\u8BFB\u53D6\u4EE4\u724C",width:t,children:({tokens:R,groups:N,site:H})=>{let B=J+Nt+Om(H.apiLines.length)+(H.docsEnabled?1:0),ne=Math.max(kb,o-(n.name==="list"?B:wb));return co(On,{flexDirection:"column",children:[xe(On,{flexDirection:"column",marginBottom:J,children:xe(Ee,{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),br(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")&&xe(nt,{label:f}),n.name==="list"&&xe(vb,{lines:H.apiLines,measured:T.phase==="ready"?T.data:null,effective:a??H.apiLines[0],docsUrl:H.docsEnabled?`${e.ctx.site}/docs`:null,width:t,isActive:S&&i,onPick:C}),n.name==="actions"&&!w&&co(re,{title:n.token.name,width:t,children:[xe(Pe,{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",br(n.token.keyPrefix,n.token.keySuffix)]]}),xe(On,{marginTop:1,children:xe(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"&&xe(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:Im(N),initial:String(N[0]?.id??""),hint:F=>Lm(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 Ge=N.find(U=>String(U.id)===F.group);if(Ge===void 0){y("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}let I=Nm(F.limit??"",H.quotaPerUsd);if(I==="invalid"){y("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}M(Z,Ge.id,I)}}),n.name==="rename"&&xe(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",()=>hi(n.token.id,{name:Z}),{onSuccess:()=>k("\u5DF2\u4FDD\u5B58")})}}),n.name==="regroup"&&xe(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:Im(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=>Lm(N,F)}],onCancel:v,onSubmit:F=>{let Z=N.find(Ge=>String(Ge.id)===F.group);if(Z===void 0){y("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}h("\u6B63\u5728\u4FDD\u5B58",()=>hi(n.token.id,{groupId:Z.id}),{onSuccess:()=>k("\u5DF2\u4FDD\u5B58")})}}),n.name==="relimit"&&xe(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=Nm(F.limit??"",H.quotaPerUsd);if(Z==="invalid"){y("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}h("\u6B63\u5728\u4FDD\u5B58",()=>hi(n.token.id,{quotaLimit:Z}),{onSuccess:()=>k("\u5DF2\u4FDD\u5B58")})}}),n.name==="confirm-delete"&&!w&&xe(Ke,{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 sa}from"ink";import{jsx as Mt,jsxs as _b}from"react/jsx-runtime";var Dm=[["\u2191\u2193 / k j","\u79FB\u52A8\u5149\u6807\u3001\u6EDA\u52A8\u5185\u5BB9"],["\u2190\u2192","\u5207\u6362\u5206\u6BB5\u3001\u7FFB\u9875\u3001\u6539\u53D6\u503C"],["[ ]","\u5207\u6362\u9876\u680F\u4E0A\u7684\u529F\u80FD"],["Enter","\u6253\u5F00\u3001\u786E\u8BA4\u3001\u63D0\u4EA4"],["Tab","\u8868\u5355\u4E0B\u4E00\u9879\u3001\u8FDB\u5165\u56DE\u590D\u6846"],["Esc","\u9000\u56DE\u4E0A\u4E00\u5C42"],["r","\u5237\u65B0\u5F53\u524D\u6570\u636E"],["n","\u65B0\u5EFA"],["f","\u7B5B\u9009\u5217\u8868"],["/","\u8FC7\u6EE4\u5217\u8868"],["Space / a","\u591A\u9009\u52FE\u9009\u3001\u5168\u9009"],["?","\u8FD9\u5F20\u8868"],["q","\u8FD4\u56DE\u4E0A\u5C42\uFF0C\u529F\u80FD\u5C4F\u4E0A\u9000\u51FA"],["Ctrl+C","\u9000\u51FA"]],Bm=[["\u70B9\u51FB / \u6EDA\u8F6E","\u9009\u4E2D\u6253\u5F00\u3001\u6EDA\u52A8"],["Option / Alt \u62D6\u9009","\u590D\u5236\u6587\u672C"]],Fm=[["\u2190\u2192 Home End","\u79FB\u52A8\u5149\u6807"],["Ctrl+A / Ctrl+E","\u884C\u9996\u3001\u884C\u5C3E"],["Ctrl+W","\u5220\u9664\u524D\u4E00\u4E2A\u8BCD"],["Ctrl+U / Ctrl+K","\u5220\u5230\u884C\u9996\u3001\u884C\u5C3E"]];function Um({width:e,height:t}){let o=e-le,n=[["\u7248\u672C",`${pt} v${ft}`],["\u672C\u5730\u5B58\u50A8",Wt()]],r=[Dm,Bm,Fm,n],s=(a=>r.reduce((c,l)=>c+lt+a+mu(l.length,o),J*(r.length-1)))(Fe)<=t?Fe:0;return _b(Lc,{height:t,children:[Mt(re,{title:"\u901A\u7528",width:e,gap:s,children:Mt(Pe,{items:Dm,width:o})}),Mt(sa,{marginTop:J,flexDirection:"column",children:Mt(re,{title:"\u9F20\u6807",width:e,gap:s,children:Mt(Pe,{items:Bm,width:o})})}),Mt(sa,{marginTop:J,flexDirection:"column",children:Mt(re,{title:"\u6587\u672C\u8F93\u5165",width:e,gap:s,children:Mt(Pe,{items:Fm,width:o})})}),Mt(sa,{marginTop:J,flexDirection:"column",children:Mt(re,{title:"\u5173\u4E8E",width:e,gap:s,children:Mt(Pe,{items:n,width:o})})})]})}import{jsx as aa}from"react/jsx-runtime";function jm(){let e=D(),{width:t}=q(),o=ie();return cn(e.pop),aa(Pn,{header:aa(Kr,{trail:["CodeFlow","\u952E\u4F4D\u5E2E\u52A9"],width:t,onBack:e.pop,isActive:!0}),hints:["Esc \u8FD4\u56DE"],children:aa(Um,{width:t,height:o})})}import{Box as qm,Text as Rb}from"ink";import{jsx as Xo,jsxs as Cb}from"react/jsx-runtime";var Hm=[{value:"login",label:"\u767B\u5F55\u8D26\u53F7",hint:"\u4F7F\u7528\u7528\u6237\u540D\u6216\u90AE\u7BB1\u7EE7\u7EED"},{value:"register",label:"\u6CE8\u518C\u8D26\u53F7",hint:"\u521B\u5EFA\u8D26\u53F7\u5F00\u59CB\u4F7F\u7528"},{value:"forgot",label:"\u627E\u56DE\u5BC6\u7801",hint:"\u901A\u8FC7\u90AE\u7BB1\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u65B0\u5BC6\u7801"}];function Wm(){let e=D(),{width:t}=q(),o=Uo(0),n=J+1+J+Hm.length,r=Hr(t)&&o-qr>=n;return Cb(Pn,{header:r?Xo(Wr,{width:t}):null,hints:["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","? \u5E2E\u52A9","q \u9000\u51FA"],children:[Xo(qm,{marginTop:1,children:Xo(Rb,{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"})}),Xo(qm,{marginTop:1,children:Xo(ae,{items:Hm,width:t,retain:"menu",onSelect:i=>e.push(i)})})]})}import{Box as wi,Text as $n}from"ink";import{useState as Gm}from"react";import{z as Xe}from"zod";var Eb=Xe.object({inviteCode:Xe.string(),invitedCount:Xe.number(),totalReward:Xe.number(),rewards:Xe.object({firstInviterPercent:Xe.number(),firstInviteePercent:Xe.number(),subsequentInviterPercent:Xe.number()}),items:Xe.array(Xe.object({id:Xe.number().int(),rewardType:Oa,rewardQuota:Xe.number(),rewardQuotaReversed:Xe.number(),inviterUsername:Xe.string(),inviteeUsername:Xe.string(),createdAt:Xe.string()}))}),zm=()=>O(Eb,"/invite");import{jsx as Ze,jsxs as ki}from"react/jsx-runtime";var Ab=et(Di,pr,"\u5168\u90E8\u7C7B\u578B"),Km=3;function Pb(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 Vm(){let e=D(),{width:t}=q(),o=ie(),[n,r]=Gm("main"),[i,s]=Gm(""),a=X([e.revision],async()=>{let[l,m]=await Promise.all([zm(),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 Ze(K,{hints:n==="main"?["\u2191\u2193 \u6EDA\u52A8","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:c,children:Ze(Y,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u9080\u8BF7\u4FE1\u606F",width:t,children:({invite:l,site:m})=>{if(n==="filter")return Ze(G,{title:"\u7B5B\u9009\u5956\u52B1\u8BB0\u5F55",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"type",label:"\u7C7B\u578B",options:Ab,initial:i}],onCancel:c,onSubmit:b=>{s(b.type??""),r("main")}});let f=t-le,d=Pb(l.rewards),p=i===""?l.items:l.items.filter(b=>b.rewardType===i),y=b=>Qt(2,t)+J+lt+b+2+J+lt+b+d.length+J+lt+b,h=o-y(Fe)>=Km?Fe:0,g=Math.max(Km,o-y(h));return ki(wi,{flexDirection:"column",children:[Ze(st,{width:t,tiles:[{label:"\u5DF2\u9080\u8BF7\u4EBA\u6570",value:Ce(l.invitedCount)},{label:"\u7D2F\u8BA1\u5956\u52B1\u989D\u5EA6",value:ce(l.totalReward,m.quotaPerUsd)}]}),Ze(wi,{marginTop:1,flexDirection:"column",children:ki(re,{title:"\u6211\u7684\u9080\u8BF7",width:t,gap:h,children:[ki($n,{wrap:"truncate",children:[Ze($n,{color:u.mutedForeground,children:"\u6211\u7684\u9080\u8BF7\u7801 "}),Ze($n,{color:u.accent,children:l.inviteCode})]}),ki($n,{wrap:"truncate",children:[Ze($n,{color:u.mutedForeground,children:"\u9080\u8BF7\u94FE\u63A5 "}),Ze($n,{color:u.accent,children:`${e.ctx.site}/register?invite=${l.inviteCode}`})]})]})}),Ze(wi,{marginTop:1,flexDirection:"column",children:Ze(re,{title:"\u5956\u52B1\u89C4\u5219",width:t,gap:h,children:d.map((b,T)=>Ze($n,{wrap:"truncate",color:u.mutedForeground,children:b},T))})}),Ze(wi,{marginTop:1,flexDirection:"column",children:Ze(re,{title:"\u9080\u8BF7\u5956\u52B1\u8BB0\u5F55",note:i===""?void 0:pr(i),width:t,gap:h,children:Ze(Ee,{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,pr(b.rewardType),Be([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 sd}from"react";import{z as be}from"zod";var Nb=12e4,Ib=be.object({id:be.number().int(),orderNo:be.string(),amountCny:be.number().int()}),Jm=()=>O(be.array(Ib),"/invoices/eligible-orders"),ca=be.object({id:be.number().int(),type:Oi,title:be.string(),taxId:be.string().nullable(),invoiceNo:be.string().nullable(),remark:be.string().nullable(),amountCny:be.number().int(),status:Na,rejectReason:be.string().nullable(),rejectedAt:be.string().nullable(),issuedAt:be.string().nullable(),createdAt:be.string()}),Lb=ca.extend({hasFile:be.boolean(),orders:be.array(be.object({orderNo:be.string(),amountCny:be.number().int()}))}),Ym=()=>O(be.array(ca),"/invoices"),Xm=e=>O(Lb,`/invoices/${e}`),Qm=e=>O(ca,"/invoices",{method:"POST",json:e}),Zm=e=>Tr(`/invoices/${e}/file`,{timeoutMs:Nb}),la=be.object({id:be.number().int(),type:Oi,title:be.string(),taxId:be.string().nullable()}),vi=()=>O(be.array(la),"/invoices/profiles"),ed=e=>O(la,"/invoices/profiles",{method:"POST",json:e}),td=(e,t)=>O(la,`/invoices/profiles/${e}`,{method:"PATCH",json:t}),nd=e=>O(ye,`/invoices/profiles/${e}`,{method:"DELETE"}).then(()=>{});import{Box as Mb,Text as Dn,useInput as Ob}from"ink";import{useEffect as $b,useState as Db}from"react";import{jsx as Qo,jsxs as ua}from"react/jsx-runtime";var Bb="[x]",Fb="[ ]",od=4,_i=2,rd=2;function id({items:e,columns:t,row:o,selected:n,onToggle:r,onToggleAll:i,onSubmit:s,width:a,height:c,emptyLabel:l}){let[m,f]=Db(0),d=Math.max(1,c-1),p=e.length>d?Math.max(1,d-1):d;$b(()=>{f(S=>Math.min(S,Math.max(0,e.length-1)))},[e.length]);let y=bs(m,p),h=S=>{e.length!==0&&f(k=>(k+S+e.length)%e.length)};Ob((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=qe({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=Es(t,e.map(S=>o(S)),a-_i-od),w=e.slice(y,y+p);return ua(Mb,{ref:b,flexDirection:"column",children:[ua(Dn,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(_i+od),t.map((S,k)=>S.align==="right"?ln(S.label,T[k]??0):Le(S.label,T[k]??0)).join(" ".repeat(rd))]}),e.length===0?Qo(Dn,{color:u.faintForeground,children:`${" ".repeat(_i)}${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 ua(Dn,{wrap:"truncate",children:[Qo(Dn,{color:u.accent,children:M?`${Q.cursor} `:" "}),Qo(Dn,{color:j?u.accent:x,bold:M,children:`${j?Bb:Fb} `}),t.map((_,E)=>{let v=_.align==="right"?ln(P[E]??"",T[E]??0):Le(P[E]??"",T[E]??0);return Qo(Dn,{color:x,bold:M,children:E>0?`${" ".repeat(rd)}${v}`:v},_.label)})]},C)}),(y>0||y+p<e.length)&&Qo(Dn,{color:u.faintForeground,children:`${" ".repeat(_i)}${y+1}-${Math.min(y+p,e.length)} / ${e.length}`})]})}import{jsx as lo}from"react/jsx-runtime";function ad(){let e=D(),{width:t}=q(),o=ie(),[n,r]=sd({name:"pick"}),[i,s]=sd(new Set),{busy:a,error:c,reset:l,run:m}=de(),f=X([e.revision],async()=>{let[y,h]=await Promise.all([Jm(),vi()]);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",()=>Qm({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 lo(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:lo(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?lo(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"}):lo(id,{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:`${kn(b.type)} \xB7 ${b.title}`,hint:b.taxId??void 0}))];return lo(ae,{items:g,width:t,height:o,onSelect:b=>r({name:"remark",profile:b})})}return lo(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 ma}from"ink";import{useState as Ub}from"react";function cd(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 ld=e=>[{kind:"select",name:"type",label:"\u7C7B\u578B",options:[{value:"general",label:ko("general")},{value:"special",label:ko("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 en,jsxs as ud}from"react/jsx-runtime";var jb=8,qb=3;function md(){let e=D(),{width:t}=q(),o=ie(),[n,r]=Ub({name:"list"}),{busy:i,error:s,reset:a,fail:c,run:l}=de(),m=X([e.revision],vi),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 en(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:en(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(qb,o-jb);return ud(ma,{flexDirection:"column",children:[en(ma,{marginBottom:n.name==="list"?0:1,children:en(Ee,{retain:"list",items:y,width:t,height:h,isActive:d,columns:[{label:"\u7C7B\u578B"},{label:"\u62AC\u5934",shrink:!0},{label:"\u7A0E\u53F7"}],row:g=>[kn(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&&ud(re,{title:n.profile.title,width:t,children:[en(Pe,{width:t-le,items:[["\u7C7B\u578B",ko(n.profile.type)],["\u7A0E\u53F7",n.profile.taxId??"\u2014"]]}),en(ma,{marginTop:1,children:en(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")&&en(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:ld(n.name==="edit"?n.profile:null),onCancel:p,onSubmit:g=>{let b=cd(g,c);if(b===null)return;let T=n.name==="edit"?()=>td(n.profile.id,b):()=>ed(b);l("\u6B63\u5728\u4FDD\u5B58",T,{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u4FDD\u5B58")}})}}),n.name==="confirm-delete"&&en(Ke,{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",()=>nd(n.profile.id),{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u5220\u9664")}}),onCancel:p})]})}})})}import{Box as Zo,Text as uo}from"ink";import{useState as da}from"react";import{jsx as Ue,jsxs as dd}from"react/jsx-runtime";var Hb=et(Mi,mr,"\u5168\u90E8\u72B6\u6001");function Wb({id:e,width:t}){let o=D(),n=X([e,o.revision],()=>Xm(e)),r=t-le,[i,s]=da(null),[a,c]=da(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))}),Ue(Y,{state:n,loading:"\u6B63\u5728\u8BFB\u53D6\u53D1\u7968\u8BE6\u60C5",width:t,children:m=>{if(a!==null)return Ue(ri,{title:"\u4FDD\u5B58\u53D1\u7968\u6587\u4EF6",width:t,fileName:`\u53D1\u7968-${a}.pdf`,download:()=>Zm(m.id),onCancel:()=>c(null),onSaved:y=>{c(null),s(y),o.toast("ok","\u53D1\u7968\u5DF2\u4FDD\u5B58")}});let f=mr(m.status),d=Ye(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 dd(re,{title:m.title,note:zt(m.createdAt),width:t,children:[dd(uo,{wrap:"truncate",children:[Ue(uo,{color:u.mutedForeground,children:kn(m.type)}),Ue(uo,{color:d===void 0?u.mutedForeground:He[d],children:` ${f.label}`})]}),Ue(Zo,{marginTop:1,children:Ue(st,{width:r,maxPerRow:2,tiles:[{label:"\u91D1\u989D",value:he(m.amountCny)},{label:"\u5173\u8054\u8BA2\u5355",value:`${m.orders.length} \u7B14`}]})}),Ue(Zo,{marginTop:1,children:Ue(Pe,{width:r,items:p})}),Ue(Zo,{marginTop:1,flexDirection:"column",children:m.orders.map(y=>Ue(uo,{wrap:"truncate",color:u.faintForeground,children:Be([y.orderNo,he(y.amountCny)])},y.orderNo))}),m.hasFile&&i===null&&Ue(Zo,{marginTop:1,children:Ue(uo,{wrap:"truncate",color:u.faintForeground,children:"\u6309 d \u4E0B\u8F7D\u53D1\u7968\u6587\u4EF6"})}),i!==null&&Ue(Zo,{marginTop:1,children:Ue(uo,{wrap:"truncate",color:u.faintForeground,children:`\u5DF2\u4FDD\u5B58\u5230 ${i}`})})]})}})}function pd(){let e=D(),{width:t}=q(),o=ie(),[n,r]=da({name:"list"}),[i,s]=Qe("status",()=>""),a=X([e.revision],Ym);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 Ue(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:Ue(Y,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u5F00\u7968\u8BB0\u5F55",width:t,children:l=>{if(n.name==="filter")return Ue(G,{title:"\u7B5B\u9009\u53D1\u7968",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:Hb,initial:i}],onCancel:c,onSubmit:f=>{s(f.status??""),r({name:"list"})}});if(n.name==="detail")return Ue(Wb,{id:n.id,width:t});let m=i===""?l:l.filter(f=>f.status===i);return Ue(Ee,{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=>[zt(f.createdAt),f.title,kn(f.type),he(f.amountCny),Vt(mr(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 zb}from"ink";import{useState as fd}from"react";import{jsx as mo,jsxs as Kb}from"react/jsx-runtime";var Gb=et($i,Zi,"\u5168\u90E8\u7C7B\u578B");function gd(){let e=D(),{width:t}=q(),o=ie(),[n,r]=fd("list"),[i,s]=fd(""),a=X([e.revision],()=>ve(e.ctx.site)),c=dn([e.revision,i],(f,d)=>Ku({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 mo(K,{hints:l?["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:m,children:mo(Y,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:f=>n==="filter"?mo(G,{title:"\u7B5B\u9009\u6D41\u6C34",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"type",label:"\u7C7B\u578B",options:Gb,initial:i}],onCancel:m,onSubmit:d=>{s(d.type??""),c.reset(),r("list")}}):mo(Y,{state:c.state,loading:"\u6B63\u5728\u8BFB\u53D6\u989D\u5EA6\u6D41\u6C34",width:t,children:d=>Kb(zb,{flexDirection:"column",children:[mo(Ee,{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=Vn(p.amount,f.quotaPerUsd);return[ee(p.createdAt),Zi(p.type),{text:p.amount>=0?`+${y}`:y,tone:p.amount>=0?"success":"danger"},ce(p.balanceAfter,f.quotaPerUsd),Be([ic(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}),mo(pn,{page:c.page,pages:c.pages,total:c.total,width:t})]})})})})}import{Box as wd}from"ink";import{useState as Vb}from"react";import{z as pa}from"zod";var er={recharge:"/recharge",subscription:"/subscriptions"};function hd(e){return e==="recharge"?So:xo}var Ri=(e,t)=>O(hd(e),`${er[e]}/orders/${t}`),bd=(e,t)=>O(pa.object({order:hd(e),qrCode:pa.string()}),`${er[e]}/orders/${t}/pay`,{method:"POST"}),yd=(e,t)=>O(pa.array(Za),`${er[e]}/orders/${t}/refunds`),Sd=(e,t,o)=>O(ye,`${er[e]}/orders/${t}/refund-request`,{method:"POST",json:{reason:o}}).then(()=>{}),xd=(e,t)=>O(ye,`${er[e]}/orders/${t}/refund-request/cancel`,{method:"POST"}).then(()=>{});import{Box as Ci,Text as Ht}from"ink";import{jsx as kt,jsxs as tr}from"react/jsx-runtime";function Td({order:e,refunds:t,quotaPerUsd:o,width:n}){let r=n-le,i=sn(e.status),s=Ye(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)]),tr(re,{title:e.kind==="recharge"?"\u5145\u503C":e.planName,note:e.orderNo,width:n,children:[tr(Ht,{wrap:"truncate",children:[kt(Ht,{color:s===void 0?u.mutedForeground:He[s],children:i.label}),e.kind==="subscription"&&kt(Ht,{color:u.faintForeground,children:` ${e.renewal?"\u7EED\u8D39":"\u65B0\u8D2D"}`})]}),kt(Ci,{marginTop:1,children:kt(st,{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`}]})}),kt(Ci,{marginTop:1,children:kt(Pe,{width:r,items:a})}),t!==null&&tr(Ci,{marginTop:1,flexDirection:"column",children:[kt(Ht,{color:u.mutedForeground,children:"\u9000\u6B3E\u8BB0\u5F55"}),t.length===0?kt(Ht,{color:u.faintForeground,children:"\u6682\u65E0\u9000\u6B3E\u8BB0\u5F55"}):t.map(c=>{let l=sc(c.status),m=Ye(l);return tr(Ci,{flexDirection:"column",children:[tr(Ht,{wrap:"truncate",children:[kt(Ht,{color:u.foreground,children:he(c.amountCny)}),kt(Ht,{color:m===void 0?u.mutedForeground:He[m],children:` ${l.label}`}),kt(Ht,{color:u.faintForeground,children:` ${ee(c.createdAt)}`})]}),(c.reason!==null||c.rejectReason!==null||c.refundTradeNo!==null)&&kt(Ht,{wrap:"truncate",color:u.faintForeground,children:` ${Be([c.reason??"",c.rejectReason===null?"":`\u9A73\u56DE\uFF1A${c.rejectReason}`,c.refundTradeNo??""])}`})]},c.id)})]})]})}import{jsx as Bn,jsxs as Yb}from"react/jsx-runtime";var Jb=new Set(["pending","expired","failed"]);function Ei(e){let t=sn(e.status);return e.pendingRefundCny>0?{badge:`${t.label}\uFF08\u5F85\u786E\u8BA4 ${he(e.pendingRefundCny)}\uFF09`,badgeTone:"warning"}:{badge:t.label,badgeTone:Ye(t)}}function po(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 kd({params:e}){let t=D(),{width:o}=q(),[n,r]=Vb("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([Ri(e.kind,e.orderNo),ve(t.ctx.site)]),b=Jb.has(h.status)?null:await yd(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",()=>bd(e.kind,e.orderNo),{onSuccess:({order:g,qrCode:b})=>{t.push("pay",po({kind:e.kind,...g},b,h.quotaPerUsd))}})},p=h=>{l("\u6B63\u5728\u63D0\u4EA4\u9000\u6B3E\u7533\u8BF7",()=>Sd(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",()=>xd(e.kind,e.orderNo),{onSuccess:()=>{r("main"),t.reload(),t.toast("ok","\u5DF2\u64A4\u9500\u9000\u6B3E\u7533\u8BF7")}})};return Bn(K,{trail:["\u8BA2\u5355\u8BE6\u60C5"],hints:n==="main"?["\u2191\u2193 \u79FB\u52A8","Enter \u6267\u884C","r \u5237\u65B0"]:[],onEscape:f,children:Bn(Y,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u5355",width:o,children:({order:h,refunds:g,site:b})=>{if(n==="refund")return Bn(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:[...is[e.kind].map(w=>({value:w,label:w})),{value:"other",label:"\u5176\u4ED6"}],initial:is[e.kind][0],hint:dc[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 Bn(Ke,{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"}),ec(h)&&T.push({value:"refund",label:"\u7533\u8BF7\u9000\u6B3E",labelTone:"danger"}),Yb(wd,{flexDirection:"column",children:[Bn(Td,{order:h,refunds:g,quotaPerUsd:b.quotaPerUsd,width:o}),T.length>0&&i===null&&Bn(wd,{marginTop:1,children:Bn(ae,{width:o,items:T,retain:"menu",onSelect:w=>{a(),w==="pay"?d(b):r(w==="refund"?"refund":"confirm-cancel")}})})]})}})})}import{useRef as ty,useState as Pd}from"react";import{spawn as Xb}from"child_process";var Qb={darwin:[{command:"pbcopy",args:[]}],win32:[{command:"clip",args:[]}],linux:[{command:"wl-copy",args:[]},{command:"xclip",args:["-selection","clipboard"]},{command:"xsel",args:["--clipboard","--input"]}]};function Zb(e,t){return new Promise((o,n)=>{let r=Xb(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 vd(e){let t=Qb[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 Zb(o,e))return;throw new $("\u672A\u627E\u5230\u53EF\u7528\u7684\u526A\u8D34\u677F\u547D\u4EE4")}import{Box as _d,Text as Fn}from"ink";import{Fragment as ey,jsx as dt,jsxs as Rd}from"react/jsx-runtime";var Cd={columns:20,rows:2};function Ed(e,t,o){return Xr(e,t,Cd,o)}function Ad({phase:e,qrCode:t,amountCny:o,summary:n,paidNote:r,expiredNote:i,pollError:s,width:a,layout:c}){let l=s===null?dt(nt,{label:"\u7B49\u5F85\u652F\u4ED8\u5230\u8D26\u2026"}):dt(Fn,{wrap:"truncate",color:He.warning,children:`\u67E5\u8BE2\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u8BD5\uFF1A${s}`});if(e==="paid")return dt(ge,{tone:"ok",width:a,title:"\u652F\u4ED8\u6210\u529F\uFF01",detail:r});if(e==="expired")return dt(ge,{tone:"warn",width:a,title:"\u8BA2\u5355\u5DF2\u8D85\u65F6",detail:i});if(!c.fits)return Rd(_d,{flexDirection:"column",children:[dt(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`}),dt(Fn,{color:u.accent,children:t}),dt(_d,{marginTop:1,children:dt(Fn,{bold:!0,color:u.foreground,children:he(o)})}),l]});let m=c.asideRows-Cd.rows,f=m>=1,d=m>=2,p=m>=2+n.length;return dt(Qr,{value:t,aside:Rd(ey,{children:[d&&dt(Fn,{bold:!0,color:u.foreground,children:"\u626B\u7801\u652F\u4ED8"}),dt(Fn,{bold:!0,color:u.foreground,children:he(o)}),f&&dt(Fn,{color:u.mutedForeground,children:"\u8BF7\u4F7F\u7528\u652F\u4ED8\u5B9D\u626B\u4E00\u626B\u5B8C\u6210\u652F\u4ED8"}),p&&n.map((y,h)=>dt(Fn,{wrap:"truncate",color:u.mutedForeground,children:y},h)),l]})})}import{jsx as Nd}from"react/jsx-runtime";var ny=5,oy=2e3;function Id({params:e}){let t=D(),{width:o,columns:n,rows:r}=q(),i=Uo(0),[s,a]=Pd("waiting"),[c,l]=Pd(null),m=ty(0);ii(oy,async()=>{let p;try{p=await Ri(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>=ny&&a("expired");return}m.current=0},s==="waiting"),W(p=>{p!=="c"||s!=="waiting"||vd(e.qrCode).then(()=>t.toast("ok","\u5DF2\u590D\u5236"),()=>t.toast("fail","\u590D\u5236\u5931\u8D25\uFF0C\u53EF\u7528 Option / Alt \u62D6\u9009\u590D\u5236"))});let f=Ed(e.qrCode,{width:o,rows:i},{columns:n-o,rows:r-i}),d=s==="waiting"&&f.fits;return Nd(K,{trail:["\u626B\u7801\u652F\u4ED8"],bleed:d,hints:s==="waiting"?["c \u590D\u5236\u94FE\u63A5"]:[],children:Nd(Ad,{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 sy}from"react";import{z as Ot}from"zod";var ry=Ot.object({id:Ot.number().int(),name:Ot.string(),originalCny:Ot.number().int(),discountPercent:Ot.number().int(),payCny:Ot.number().int(),quota:Ot.number()}),Ld=()=>O(Ot.array(ry),"/recharge-packages"),iy=Ot.object({order:So,qrCode:Ot.string()}),Md=e=>O(iy,"/recharge/orders",{method:"POST",json:e}),Od=()=>O(Ot.array(So),"/recharge/orders");import{jsx as fo}from"react/jsx-runtime";var ay=et(ho,sn,"\u5168\u90E8\u72B6\u6001");function cy(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 $d(){let e=D(),{width:t}=q(),o=ie(),[n,r]=sy({name:"menu"}),[i,s]=Qe("status",()=>""),{busy:a,error:c,reset:l,fail:m,run:f}=de(),d=X([e.revision],async()=>{let[h,g,b]=await Promise.all([Ld(),yi(e.ctx.site),Od()]);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",()=>Md(h),{onSuccess:({order:b,qrCode:T})=>{r({name:"menu"}),e.push("pay",po({kind:"recharge",...b},T,g))}})};return fo(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:fo(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 fo(Ke,{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 fo(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=ns(k);if(!Number.isFinite(k)||C<ns(g.minTopupCny)||C>Hi){m(`\u8BF7\u8F93\u5165 ${g.minTopupCny} \u5230 ${cc(Hi)} \u5143\u4E4B\u95F4\u7684\u91D1\u989D`);return}y({amountCny:C},g.quotaPerUsd)}});if(n.name==="filter")return fo(G,{title:"\u7B5B\u9009\u5145\u503C\u8BB0\u5F55",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:ay,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:cy(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),...Ei(S),hint:`${ee(S.createdAt)} \xB7 \u5230\u8D26\u989D\u5EA6 ${ce(S.quota,g.quotaPerUsd)}`}))];return fo(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 tn,Text as nr}from"ink";import{useState as dy}from"react";import py from"string-width";import{z as oe}from"zod";var ly=oe.object({windowId:oe.number().int(),durationMinutes:oe.number().int(),quota:oe.number(),used:oe.number(),resetAt:oe.string()}),uy=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(ly)}))}),Dd=()=>O(uy,"/subscriptions"),my=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()}))}),Bd=()=>O(oe.array(my),"/subscription-plans"),Fd=oe.object({order:xo,qrCode:oe.string()}),Ud=e=>O(Fd,"/subscriptions/orders",{method:"POST",json:e}),jd=e=>O(Fd,`/subscriptions/${e}/renew`,{method:"POST"}),qd=()=>O(oe.array(xo),"/subscriptions/orders"),Hd=e=>O(oe.object({fallbackToBalance:oe.boolean()}),"/subscriptions/preference",{method:"PUT",json:e});import{jsx as _e,jsxs as Un}from"react/jsx-runtime";var fy=et(ho,sn,"\u5168\u90E8\u72B6\u6001"),gy=3;function hy({win:e,quotaPerUsd:t,width:o}){let n=os(e),r=uc(e.durationMinutes),i=`\u5DF2\u7528 ${n}% ${Q.bullet} ${ce(e.used,t)} / ${ce(e.quota,t)}`;return Un(tn,{flexDirection:"column",children:[Un(nr,{wrap:"truncate",children:[_e(nr,{color:u.foreground,children:r}),_e(nr,{color:n>=100?u.danger:u.mutedForeground,children:ln(i,Math.max(0,o-py(r)))})]}),_e(uu,{used:e.used,total:e.quota,width:o}),_e(nr,{wrap:"truncate",color:u.faintForeground,children:`\u5C06\u4E8E ${ee(e.resetAt)} \u91CD\u7F6E`})]})}function by(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(os))}% \xB7 ${t}`}function yy(e){let t=e.windows.length*4;return J+Nt+2+t+(e.renewable?J+1:0)}function Sy(e){let t=e.description!==null&&e.description!==""?1+Fe:0,o=Math.ceil((1+e.windows.length)/2);return J+Nt+t+o+J+1}function Wd(){let e=D(),{width:t}=q(),o=ie(),[n,r]=dy({name:"menu"}),[i,s]=Qe("status",()=>""),{busy:a,error:c,reset:l,run:m}=de(),f=X([e.revision],async()=>{let[g,b,T,w]=await Promise.all([Dd(),Bd(),qd(),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",()=>Hd({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",()=>jd(g.id),{onSuccess:({order:T,qrCode:w})=>{r({name:"menu"}),e.push("pay",po({kind:"subscription",...T},w,b.quotaPerUsd))}})},h=(g,b)=>{m("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>Ud({planId:g.id}),{onSuccess:({order:T,qrCode:w})=>{r({name:"menu"}),e.push("pay",po({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:fy,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(Ke,{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(Ke,{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=rs(v);return{value:{kind:"sub",id:v.id},label:v.planName,badge:A.label,badgeTone:Ye(A),hint:by(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":""}`,...Ei(v),hint:`${ee(v.createdAt)} \xB7 ${he(v.amountCny)}`}))],x=n.name==="sub"&&S!==void 0?yy(S):n.name==="plan"&&k!==void 0?Sy(k):0,P=x===0?o:o-x>=gy?o-x:0,_=t-le,E=n.name==="menu"&&a===null;return Un(tn,{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&&Un(tn,{marginTop:P>0?J:0,flexDirection:"column",children:[Un(re,{title:S.planName,note:S.revokedAt!==null?`${ee(S.revokedAt)} \u4F5C\u5E9F`:`${ee(S.expiresAt)} \u5230\u671F`,width:t,children:[_e(Pe,{width:_,items:[["\u72B6\u6001",rs(S).label],["\u8986\u76D6\u5206\u7EC4",S.groupNames.join("\u3001")],["\u751F\u6548\u65F6\u95F4",ee(S.startsAt)]]}),_e(tn,{marginTop:1,flexDirection:"column",children:S.windows.map((v,A)=>_e(tn,{marginTop:A===0?0:1,flexDirection:"column",children:_e(hy,{win:v,quotaPerUsd:w.quotaPerUsd,width:_})},v.windowId))})]}),S.renewable&&a===null&&_e(tn,{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&&Un(tn,{marginTop:P>0?J:0,flexDirection:"column",children:[Un(re,{title:k.name,note:`${he(k.priceCny)} / ${k.durationDays} \u5929`,width:t,children:[C!==""&&_e(nr,{wrap:"truncate",color:u.mutedForeground,children:C}),_e(tn,{marginTop:C===""?0:Fe,children:_e(Pe,{width:_,items:[["\u8986\u76D6\u5206\u7EC4",k.groupNames.join("\u3001")],...mc(k,w.quotaPerUsd).map((v,A)=>[A===0?"\u7528\u91CF\u7A97\u53E3":"",v])]})})]}),a===null&&_e(tn,{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 zd={home:{render:()=>ke(Wm,{})},help:{render:()=>ke(jm,{})},login:{render:()=>ke(ju,{})},register:{render:()=>ke(qu,{})},forgot:{render:()=>ke(Du,{})},agreement:{render:e=>ke(Nu,{params:e})},tokens:{render:()=>ke($m,{})},logs:{render:()=>ke(um,{})},usage:{render:()=>ke(om,{})},ledger:{render:()=>ke(gd,{})},subscription:{render:()=>ke(Wd,{})},models:{render:()=>ke(pm,{})},recharge:{render:()=>ke($d,{})},order:{render:e=>ke(kd,{params:e})},pay:{render:e=>ke(Id,{params:e})},invoices:{render:()=>ke(pd,{})},"invoice-apply":{render:()=>ke(ad,{})},"invoice-profiles":{render:()=>ke(md,{})},invite:{render:()=>ke(Vm,{})},tickets:{render:()=>ke(Pu,{})},ticket:{render:e=>ke(Au,{params:e})},announcements:{render:()=>ke(El,{})},"announce-gate":{render:e=>ke(kl,{params:e}),lockNav:!0},profile:{render:()=>ke(fu,{})}};function Gd(e){return zd[e].lockNav===!0}function Kd(e){let t=zd[e.id].render;return t(e.params)}import{jsx as jn,jsxs as Iy}from"react/jsx-runtime";function vy(){let e=D(),{rows:t}=q(),o=Rr(),n=Gd(e.current.id)||o,r=e.depth===1&&Ar(e.current.id)&&Ct().session===null;return fa(()=>{r&&e.home()}),wy((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())}),jn(xy,{flexDirection:"column",height:Math.max(1,t),paddingX:1,paddingTop:1,overflow:"hidden",children:Kd(e.current)})}function _y(){let e=D(),t=X([e.revision],async()=>{if(e.gate.announcementsChecked||Ct().session===null)return null;let o;try{o=await Pc()}catch{return null}return e.gate.announcementsChecked=!0,o});return fa(()=>{t.phase!=="ready"||t.data===null||e.gate.announcementsShown||(e.gate.announcementsShown=!0,e.push("announce-gate",{item:t.data}))}),null}function Ry(){let e=D(),t=ky(!1);return fa(()=>{t.current||(t.current=!0,Ec().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 Cy({ctx:e,mouse:t}){return jn(zc,{subscribe:t.subscribe,children:jn($c,{children:Iy(Yc,{ctx:e,children:[jn(Ry,{}),jn(_y,{}),jn(vy,{})]})})})}var Ey="\x1B[2J\x1B[3J\x1B[H",Ay="\x1B[H\x1B[J",Py="\x1B[3J";function Ny(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(Ey).join(Ay).split(Py).join("");return t.write(s,...i)}}})}async function Vd(e){let t=Hc(process.stdin,process.stdout);try{await Ty(jn(Cy,{ctx:e,mouse:t}),{exitOnCtrlC:!0,alternateScreen:!0,stdin:t.stdin,stdout:Ny(process.stdout)}).waitUntilExit()}finally{t.dispose()}}var $y=`${pt} v${ft} \u2014 CodeFlow \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF
|
|
11
|
+
`;)n+=1;return{start:o,end:n}}function cu({value:e,onChange:t,isActive:o,width:n,rows:r,placeholder:i,maxLength:s,onEdge:a,onFocusRequest:c}){let l=[...e],[d,p]=ou(l.length),m=Math.min(d,l.length),[f,S]=ou(0),y=nu(e),g=nu(m);y.current=e,g.current=m,Cr(o);let b=Math.max(4,n),x=_=>{g.current=_,p(_)},k=(_,v)=>{y.current=_,x(v),t(_)},h=_=>{let v=[...y.current],P=Math.min(g.current,v.length),I=ru(v,b),R=iu(I,P),A=I[R],q=I[R+_];return A===void 0||q===void 0?!1:(x(su(v,q,Kg(v,A,P))),!0)},w=(_,v,P)=>{let I=Gg(P);if(s!==void 0){let R=s-_.length;if(R<=0)return;I=[...I].slice(0,R).join("")}I!==""&&k([..._.slice(0,v),I,..._.slice(v)].join(""),v+[...I].length)};Wg((_,v)=>{let P=[...y.current],I=Math.min(g.current,P.length);if(v.return){w(P,I,`
|
|
12
|
+
`);return}if(!v.tab){if(v.upArrow||v.downArrow){let R=v.upArrow?-1:1;h(R)||a?.(v.upArrow?"up":"down");return}if(v.leftArrow){x(Math.max(0,I-1));return}if(v.rightArrow){x(Math.min(P.length,I+1));return}if(v.home){x($s(P,I).start);return}if(v.end){x($s(P,I).end);return}if(v.backspace){if(I===0)return;k([...P.slice(0,I-1),...P.slice(I)].join(""),I-1);return}if(v.delete){if(I>=P.length)return;k([...P.slice(0,I),...P.slice(I+1)].join(""),I);return}if(v.ctrl){let R=$s(P,I);if(_==="a")x(R.start);else if(_==="e")x(R.end);else if(_==="k")k([...P.slice(0,I),...P.slice(R.end)].join(""),I);else if(_==="u")k([...P.slice(0,R.start),...P.slice(I)].join(""),R.start);else if(_==="w"){let A=I;for(;A>R.start&&P[A-1]===" ";)A-=1;for(;A>R.start&&P[A-1]!==" ";)A-=1;k([...P.slice(0,A),...P.slice(I)].join(""),A)}return}v.meta||!_||w(P,I,_)}},{isActive:o});let C=ru(l,b),M=iu(C,m),U=Math.min(f,Math.max(0,C.length-r));M<U&&(U=M),M>U+r-1&&(U=M-r+1),U!==f&&S(U);let T=[];for(let _=0;_<r;_+=1){let v=U+_,P=C[v];if(P===void 0){T.push(Zt(hn,{children:" "},v));continue}let I=l.slice(P.start,P.end).join("");if(!o||v!==M){T.push(Zt(hn,{wrap:"truncate",color:u.foreground,children:I===""?" ":I},v));continue}let R=l.slice(P.start,m).join(""),A=m<P.end?l[m]??" ":" ",q=m<P.end?l.slice(m+1,P.end).join(""):"";T.push(au(hn,{wrap:"truncate",children:[Zt(hn,{color:u.foreground,children:R}),Zt(Do,{char:A}),Zt(hn,{color:u.foreground,children:q})]},v))}if(e===""&&i!==void 0){let _=[...i];T[0]=o?au(hn,{wrap:"truncate",children:[Zt(Do,{char:_[0]??" "}),Zt(hn,{color:u.faintForeground,children:_.slice(1).join("")})]},"placeholder"):Zt(hn,{wrap:"truncate",color:u.faintForeground,children:i},"placeholder")}let N=We({onWheel:_=>{h(_)},onClick:({row:_,column:v})=>{c?.();let P=C[U+_];x(P===void 0?l.length:su(l,P,v))}});return Zt(zg,{ref:N,flexDirection:"column",children:T})}import{Fragment as pu,jsx as ge,jsxs as wt}from"react/jsx-runtime";var Jg=e=>Object.fromEntries(e.map(t=>[t.name,"initial"in t?t.initial??"":""])),mu="\u9009\u586B",Yg=(e,t)=>e.kind!=="text"&&e.kind!=="textarea"?!1:typeof e.optional=="function"?e.optional(t):e.optional===!0,Xg=(e,t)=>{let o=typeof e.hint=="function"?e.hint(t[e.name]??""):e.hint;return Yg(e,t)?o===void 0?mu:`${mu} \xB7 ${o}`:o},Qg=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},Zg=6e4,eh=4,Bs=4,th=2,Qr=(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,d]=so(()=>Jg(t)),[p,m]=so(0),[f,S]=so({}),[y,g]=so(null),[,b]=so(0),x=s===!0,k=Qg(t),h=k[Math.min(p,k.length-1)],w=h!==void 0&&h.type!=="submit"?t[h.index]:void 0,C=h?.type==="field"&&(w?.kind==="text"||w?.kind==="code"),M=h?.type==="field"&&w?.kind==="textarea",U=Object.values(f).some(E=>E.phase==="cooldown"&&E.until>Date.now());Vg(()=>{if(!U)return;let E=setInterval(()=>b(B=>B+1),1e3);return()=>clearInterval(E)},[U]);let T=E=>m(B=>(B+E+k.length)%k.length),N=(E,B)=>{if(E.options.length===0)return;let K=E.options.findIndex(Be=>Be.value===l[E.name]),fe=E.options[(K+B+E.options.length)%E.options.length];fe!==void 0&&d(Be=>({...Be,[E.name]:fe.value}))},_=E=>{h?.type!=="field"||w?.kind!=="select"||N(w,E)},v=E=>{let B=t[E];if(B===void 0||B.kind!=="code")return;let K=(l[B.emailField]??"").trim();if(K===""){S(Be=>({...Be,[B.name]:{phase:"error",message:"\u8BF7\u5148\u586B\u5199\u90AE\u7BB1"}}));return}let fe=f[B.name];fe?.phase!=="sending"&&(fe?.phase==="cooldown"&&fe.email===K&&fe.until>Date.now()||(S(Be=>({...Be,[B.name]:{phase:"sending"}})),B.send(K).then(()=>S(Be=>({...Be,[B.name]:{phase:"cooldown",email:K,until:Date.now()+Zg}}))).catch(Be=>S(Rt=>({...Rt,[B.name]:{phase:"error",message:ve(Be)}})))))};fu((E,B)=>{if(B.tab){T(B.shift?-1:1);return}if(!M){if(B.upArrow){T(-1);return}if(B.downArrow){T(1);return}if(!C){if(B.leftArrow){_(-1);return}if(B.rightArrow){_(1);return}B.return&&(h?.type==="submit"?n(l):h?.type==="send"?v(h.index):T(1))}}},{isActive:!x}),un(r,{isActive:!x,layer:Qn.panel});let P=Math.max(0,...t.map(E=>Fs(E.label))),I=i-le,R=Math.max(8,I-P-8),A=(E,B)=>k.findIndex(K=>K.type===E&&(K.type==="submit"||K.index===B)),q=uu(new Map).current,D=uu(new Map).current,Z=2+P+Bs,H=(E,B)=>{let K=k[E];if(K===void 0)return;if(m(E),K.type==="submit"){n(l);return}if(K.type==="send"){v(K.index);return}let fe=t[K.index];if(fe!==void 0){if(fe.kind==="select"){let Be=fe.options.find(Ct=>Ct.value===l[fe.name]),Rt=Re(Be?.label??"\u2014",R);B>=Z-th&&B<Z?N(fe,-1):B>=Z+Fs(Rt)&&N(fe,1);return}B>=Z&&D.get(K.index)?.moveToColumn(B-Z)}},re=(E,B)=>{if(E===null)return null;let K=lu(E),fe=null;for(let[Be,Rt]of q){if(Rt===null)continue;let Ct=lu(Rt),Fe=Ct.y-K.y;B<Fe||B>=Fe+Ct.height||(fe===null||Ct.height<fe.box.height)&&(fe={index:Be,box:Ct})}return fe===null?null:{...fe,frameX:K.x}},ke=We({isActive:!x,onClick:({row:E,column:B})=>{let K=re(ke.current,E);K!==null&&H(K.index,B-(K.box.x-K.frameX))},onHover:({row:E})=>g(re(ke.current,E)?.index??null),onHoverLeave:()=>g(null)});return wt(Ht,{ref:ke,flexDirection:"column",children:[ge(Fo,{title:e,width:i}),wt(Ht,{flexDirection:"column",marginTop:He,paddingLeft:le,children:[c!=null&&ge(Ht,{marginBottom:1,children:ge(En,{message:c.message,hint:c.hint,width:I})}),t.map((E,B)=>{let K=p===A("field",B)&&!x,fe=Xg(E,l),Be=E.kind==="select"?E.options.find(Fe=>Fe.value===l[E.name]):void 0;if(E.kind==="textarea")return wt(Ht,{flexDirection:"column",ref:Fe=>{q.set(A("field",B),Fe)},children:[wt(Ie,{children:[ge(Ie,{color:u.accent,children:K?`${Q.cursor} `:" "}),ge(Ie,{color:Qr(K,y===A("field",B)),bold:K,children:E.label})]}),ge(Ht,{paddingLeft:2,children:ge(cu,{value:l[E.name]??"",onChange:Fe=>d(Ni=>({...Ni,[E.name]:Fe})),isActive:K,width:I-2,rows:E.rows??eh,placeholder:E.placeholder,maxLength:E.maxLength,onEdge:Fe=>T(Fe==="up"?-1:1),onFocusRequest:()=>m(A("field",B))})}),K&&fe!==void 0&&ge(Ie,{color:u.faintForeground,children:` ${Re(fe,I-2)}`})]},E.name);let Rt=E.kind==="code"&&p===A("send",B)&&!x,Ct=f[E.name];return wt(Ht,{flexDirection:"column",ref:Fe=>{q.set(A("field",B),Fe)},children:[wt(Ie,{children:[ge(Ie,{color:u.accent,children:K?`${Q.cursor} `:" "}),ge(Ie,{color:Qr(K,y===A("field",B)),bold:K,children:De(E.label,P)}),E.kind==="select"?wt(pu,{children:[ge(Ie,{color:K?u.accent:u.border,children:` ${Q.prev} `}),ge(Ie,{color:u.foreground,children:Re(Be?.label??"\u2014",R)}),ge(Ie,{color:K?u.accent:u.border,children:` ${Q.next}`})]}):wt(pu,{children:[ge(Ie,{children:" ".repeat(Bs)}),ge($r,{ref:Fe=>{D.set(B,Fe)},value:l[E.name]??"",onChange:Fe=>d(Ni=>({...Ni,[E.name]:Fe})),onSubmit:()=>T(1),isActive:K,placeholder:E.kind==="text"||E.kind==="code"?E.placeholder:void 0,mask:E.kind==="text"?E.mask:void 0,width:R})]})]}),K&&fe!==void 0&&ge(Ie,{color:u.faintForeground,children:`${" ".repeat(2+P+Bs)}${Re(fe,R)}`}),E.kind==="code"&&ge(nh,{active:Rt,state:Ct,email:(l[E.emailField]??"").trim(),indent:Z,width:R,hovered:y===A("send",B),nodeRef:Fe=>{q.set(A("send",B),Fe)}})]},E.name)}),ge(Ht,{marginTop:1,ref:E=>{q.set(A("submit"),E)},children:x?ge(ot,{label:a}):wt(Ie,{children:[ge(Ie,{color:u.accent,children:h?.type==="submit"?`${Q.cursor} `:" "}),ge(Ie,{color:Qr(h?.type==="submit",y===A("submit")),bold:h?.type==="submit",children:o})]})})]})]})}function nh({active:e,state:t,email:o,indent:n,width:r,hovered:i,nodeRef:s}){if(t?.phase==="sending")return ge(Ht,{paddingLeft:n,children:ge(ot,{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 wt(Ht,{ref:s,flexDirection:"column",paddingLeft:n-2,children:[wt(Ie,{children:[ge(Ie,{color:u.accent,children:e?`${Q.cursor} `:" "}),ge(Ie,{color:a>0?u.faintForeground:Qr(e,i),bold:e&&a===0,children:c})]}),t?.phase==="error"&&ge(Ie,{color:u.danger,children:` ${Re(t.message,r)}`})]})}var oh=2,du=2;function gu({options:e,value:t,onChange:o}){let n=e.findIndex(d=>d.value===t),r=Er();fu((d,p)=>{if(!p.leftArrow&&!p.rightArrow)return;let m=p.leftArrow?-1:1,f=e[(n+m+e.length)%e.length];f!==void 0&&o(f.value)},{isActive:!r});let i=[],s=0;e.forEach((d,p)=>{p>0&&(s+=du);let m=Fs(d.label)+oh;i.push({value:d.value,from:s,to:s+m}),s+=m});let[a,c]=so(null),l=We({onClick:({column:d})=>{let p=i.find(m=>d>=m.from&&d<m.to);p!==void 0&&o(p.value)},onHover:({column:d})=>{let p=i.find(m=>d>=m.from&&d<m.to);c(p?.value??null)},onHoverLeave:()=>c(null)});return ge(Ht,{ref:l,children:ge(Ie,{wrap:"truncate",children:e.map((d,p)=>{let m=d.value===t;return wt(Ie,{children:[p>0&&" ".repeat(du),ge(Ie,{backgroundColor:m?u.foreground:u.border,color:m?u.background:d.value===a?u.foreground:u.mutedForeground,bold:m,children:` ${d.label} `})]},d.value)})})})}import{Box as Hs,Text as hu}from"ink";import rh from"qrcode";import{jsx as Go,jsxs as uh}from"react/jsx-runtime";var ih="#000000",sh="#ffffff",Us=2,yu=2,qs=1,bu,js;function Su(e){if(e===bu&&js!==void 0)return js;let t=rh.create(e,{errorCorrectionLevel:"L"}),o=t.modules.size,n=t.modules.data,r=o+Us*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+Us];c!==void 0&&(c[a+Us]=n[s*o+a]===1)}return bu=e,js=i,i}function ah(e){let t=Su(e).length;return{columns:t*yu,rows:t}}function Zr(e,t,o,n){let r=ah(e),i=t.rows-r.rows-qs;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+qs+o.rows+n.rows}}}function ch(e,t){let o=[],n=0;for(let r=1;r<=e.length;r+=1)r<e.length&&e[r]===e[n]||(o.push(Go(hu,{backgroundColor:e[n]??!1?ih:sh,children:" ".repeat((r-n)*yu)},n)),n=r);return Go(hu,{children:o},t)}function lh({value:e}){return Go(Hs,{flexDirection:"column",flexShrink:0,children:Su(e).map((t,o)=>ch(t,o))})}function ei({value:e,aside:t}){return uh(Hs,{flexDirection:"column",flexShrink:0,children:[Go(lh,{value:e}),Go(Hs,{marginTop:qs,flexDirection:"column",children:t})]})}import{Box as ti,Text as it}from"ink";import xu from"string-width";import{jsx as st,jsxs as Ko}from"react/jsx-runtime";var ni=2,zs=4,Tu=e=>" ".repeat(e),Ws=13,wu=4,ku=(e,t,o)=>Math.max(1,Math.min(e,o,Math.floor((t+ni)/(Ws+ni)))),en=(e,t,o=wu)=>Math.ceil(e/ku(e,t,o))*2;function at({tiles:e,width:t,maxPerRow:o=wu}){let n=ku(e.length,t,o),r=Math.floor((t-ni*(n-1))/n),i=[];for(let s=0;s<e.length;s+=n)i.push(e.slice(s,s+n));return st(ti,{flexDirection:"column",children:i.map((s,a)=>st(ti,{flexDirection:"column",children:["label","value"].map(c=>st(it,{wrap:"truncate",children:s.map((l,d)=>Ko(it,{children:[d>0&&Tu(ni),st(it,{color:c==="label"?u.mutedForeground:u.foreground,bold:c==="value",children:De(l[c],r)})]},l.label))},c))},a))})}function vu({used:e,total:t,width:o=20}){let n=t<=0?1:Math.min(1,e/t),r=Math.round(n*o),i=n>=1?u.danger:n>=.8?u.warning:u.foreground;return Ko(it,{children:[st(it,{color:i,children:Q.barFilled.repeat(r)}),st(it,{color:u.border,children:Q.barEmpty.repeat(o-r)})]})}function mh({items:e,width:t}){let o=Math.max(0,...e.map(([r])=>xu(r))),n=Math.max(0,t-o-3);return st(ti,{flexDirection:"column",children:e.map(([r,i])=>Ko(it,{wrap:"truncate",children:[st(it,{color:u.mutedForeground,children:De(r,o)})," ",st(it,{color:u.foreground,children:Re(i,n)})]},r))})}var _u=(e,t)=>Math.floor((t-zs)/2)<Ws*2?e:Math.ceil(e/2);function Le({items:e,width:t}){let o=Math.floor((t-zs)/2);if(o<Ws*2)return st(mh,{items:e,width:t});let n=Math.max(0,...e.map(([a])=>xu(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?st(it,{children:" ".repeat(o)}):Ko(it,{children:[st(it,{color:u.mutedForeground,children:De(a[0],n)})," ",st(it,{color:u.foreground,children:De(a[1],r)})]});return st(ti,{flexDirection:"column",children:i.map((a,c)=>Ko(it,{wrap:"truncate",children:[s(a[0]),Tu(zs),s(a[1])]},c))})}import{Fragment as yh,jsx as ie,jsxs as bn}from"react/jsx-runtime";var ph={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"},Cu="\u5BC6\u94A5 ",fh=10,gh={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"}},hh=2+V;function bh({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(bn(Vo,{wrap:"truncate",color:u.accent,children:[De(e[r]??"",Math.min(o,t)),e[r+1]??""]},r));return ie(kt,{flexDirection:"column",children:n})}function Pu(){let e=F(),{width:t,columns:o,rows:n}=j(),r=oe(),[i,s]=Ru({name:"menu"}),[a,c]=Ru(!1),{busy:l,error:d,reset:p,fail:m,run:f}=pe(),S=X([e.revision],async()=>{let[k,h,w]=await Promise.all([ql(),Yl(),Vl()]);return{user:k.user,security:h,sessions:w.sessions}});z(k=>{i.name==="menu"&&l===null&&k==="r"&&e.reload()}),Xc(i.name==="codes");let y=()=>{if(i.name!=="codes"){if(i.name==="menu"){e.pop();return}p(),i.name==="passkey-rename"||i.name==="passkey-delete"?s({name:"passkey",item:i.item}):i.name==="confirm-revoke"?s({name:"session",item:i.item}):s({name:"menu"})}},g=k=>{s({name:"menu"}),e.reload(),e.toast("ok",k)},b=(k,h)=>{c(!1),s({name:"codes",codes:k,message:h})},x=(k,h)=>{k==="rebind"?f("\u6B63\u5728\u751F\u6210\u65B0\u5BC6\u94A5",()=>Os({code:h}),{onSuccess:w=>s({name:"enroll",setup:w})}):k==="regenerate"?f("\u6B63\u5728\u751F\u6210\u6062\u590D\u7801",()=>Zl({code:h}),{onSuccess:({recoveryCodes:w})=>b(w,"\u6062\u590D\u7801\u5DF2\u66F4\u65B0")}):f("\u6B63\u5728\u505C\u7528",()=>Ql({code:h}),{onSuccess:()=>g("\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u505C\u7528")})};return ie(J,{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:y,children:ie(Y,{state:S,loading:"\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u4FE1\u606F",width:t,children:({user:k,security:h,sessions:w})=>{if(i.name==="rename")return ie(G,{title:"\u4FEE\u6539\u7528\u6237\u540D",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:d,fields:[{kind:"text",name:"username",label:"\u7528\u6237\u540D",initial:k.username,placeholder:"\u8BF7\u8F93\u5165\u65B0\u7528\u6237\u540D"}],onCancel:y,onSubmit:T=>{let N=(T.username??"").trim();if(N===""||N.length>kn){m(`\u8BF7\u8F93\u5165 1 \u5230 ${kn} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}f("\u6B63\u5728\u4FDD\u5B58",()=>zl({username:N}),{onSuccess:()=>g("\u5DF2\u4FDD\u5B58")})}});if(i.name==="email")return ie(G,{title:"\u4FEE\u6539\u90AE\u7BB1",width:t,submitLabel:"\u786E\u8BA4\u4FEE\u6539",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:d,fields:[{kind:"text",name:"email",label:"\u65B0\u90AE\u7BB1",placeholder:"\u7528\u4E8E\u767B\u5F55\u4E0E\u63A5\u6536\u901A\u77E5\u7684\u65B0\u90AE\u7BB1"},{kind:"code",name:"code",label:"\u9A8C\u8BC1\u7801",emailField:"email",send:T=>Gl({email:T})},{kind:"text",name:"password",label:"\u5F53\u524D\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801",hint:"\u4FEE\u6539\u540E\u7ACB\u5373\u4EE5\u65B0\u90AE\u7BB1\u767B\u5F55\u548C\u63A5\u6536\u901A\u77E5\uFF0C\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55"}],onCancel:y,onSubmit:T=>{let N=(T.email??"").trim(),_=(T.code??"").trim(),v=T.password??"";if(N===""||_===""||v===""){m("\u8BF7\u586B\u5199\u65B0\u90AE\u7BB1\u3001\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801");return}f("\u6B63\u5728\u4FDD\u5B58",()=>Kl({email:N,code:_,password:v}),{onSuccess:()=>g("\u90AE\u7BB1\u5DF2\u4FEE\u6539")})}});if(i.name==="password")return ie(G,{title:"\u4FEE\u6539\u5BC6\u7801",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:d,fields:[{kind:"text",name:"old",label:"\u5F53\u524D\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801"},{kind:"text",name:"next",label:"\u65B0\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u65B0\u5BC6\u7801",hint:`\u81F3\u5C11 ${ct} \u4F4D\uFF0C\u4FDD\u5B58\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55`}],onCancel:y,onSubmit:T=>{let N=T.old??"",_=T.next??"";if(N===""){m("\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801");return}if(_.length<ct){m(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${ct} \u4F4D`);return}f("\u6B63\u5728\u4FDD\u5B58",()=>Wl({oldPassword:N,newPassword:_}),{onSuccess:()=>g("\u5BC6\u7801\u5DF2\u4FEE\u6539")})}});if(i.name==="confirm-logout")return ie(Je,{width:t,title:"\u786E\u8BA4\u9000\u51FA\u767B\u5F55\uFF1F",detail:"\u9000\u51FA\u540E\u9700\u91CD\u65B0\u767B\u5F55\u624D\u80FD\u7BA1\u7406\u8D26\u6237",confirmLabel:"\u9000\u51FA\u767B\u5F55",busy:l,error:d,onConfirm:()=>f("\u6B63\u5728\u9000\u51FA",()=>Tr(),{onSuccess:()=>{e.toast("ok","\u5DF2\u9000\u51FA\u767B\u5F55"),e.home()}}),onCancel:y});if(i.name==="code"){let T=gh[i.intent];return ie(G,{title:T.title,width:t,submitLabel:T.submit,busy:l!==null,busyLabel:l??"\u6B63\u5728\u5904\u7406",error:d,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",placeholder:"\u9A8C\u8BC1\u5668\u663E\u793A\u7684 6 \u4F4D\u6570\u5B57",hint:T.hint}],onCancel:y,onSubmit:N=>{let _=(N.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 T=(_,v)=>bn(yh,{children:[v&&ie(Vo,{color:u.mutedForeground,children:"\u4F7F\u7528 Google Authenticator \u7B49\u9A8C\u8BC1\u5668 App \u626B\u7801\u6DFB\u52A0"}),bn(Vo,{children:[ie(Vo,{color:u.mutedForeground,children:Cu}),ie(Vo,{color:u.accent,children:i.setup.secret})]}),ie(kt,{marginTop:1,children:ie(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:d,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801"}],onCancel:y,onSubmit:P=>{let I=(P.code??"").trim();if(I===""){m("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}f("\u6B63\u5728\u7ED1\u5B9A",()=>Xl({code:I}),{onSuccess:({recoveryCodes:R})=>b(R,"\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u7ED1\u5B9A")})}})})]}),N=Zr(i.setup.otpauthUri,{width:t,rows:r},{columns:dh(Cu)+i.setup.secret.length,rows:fh},{columns:o-t,rows:n-r});return N.fits?ie(ei,{value:i.setup.otpauthUri,aside:T(N.asideWidth,!0)}):bn(kt,{flexDirection:"column",children:[ie(he,{tone:"info",width:t,title:"\u7EC8\u7AEF\u5C3A\u5BF8\u4E0D\u8DB3\uFF0C\u6539\u4E3A\u624B\u52A8\u5F55\u5165",detail:"\u5728\u9A8C\u8BC1\u5668\u4E2D\u9009\u62E9\u624B\u52A8\u8F93\u5165\uFF0C\u586B\u5165\u4E0B\u65B9\u5BC6\u94A5"}),T(t,!1)]})}if(i.name==="codes")return bn(kt,{flexDirection:"column",children:[ie(he,{tone:"warn",width:t,title:"\u6062\u590D\u7801\u4EC5\u6B64\u4E00\u6B21\u5C55\u793A\uFF0C\u8BF7\u7ACB\u5373\u4FDD\u5B58\u5230\u5B89\u5168\u7684\u4F4D\u7F6E",detail:"\u6BCF\u679A\u6062\u590D\u7801\u53EA\u80FD\u4F7F\u7528\u4E00\u6B21\uFF0C\u53EF\u5728\u9A8C\u8BC1\u5668\u4E0D\u53EF\u7528\u65F6\u4EE3\u66FF\u52A8\u6001\u9A8C\u8BC1\u7801\u767B\u5F55"}),ie(kt,{marginTop:1,children:ie(bh,{codes:i.codes,width:t})}),ie(kt,{marginTop:1,children:ie(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:T=>{if(T==="ack"){c(_=>!_);return}let N=i.message;s({name:"menu"}),e.reload(),e.toast("ok",N)}})})]});if(i.name==="passkey-add")return ie(he,{tone:"info",width:t,title:`\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00 ${e.ctx.site} \u7684\u300C\u4E2A\u4EBA\u4E2D\u5FC3\u300D\u5B8C\u6210\u6DFB\u52A0`,detail:"\u6DFB\u52A0\u4E0E\u4F7F\u7528 Passkey \u4F9D\u8D56\u6D4F\u89C8\u5668\u7684 WebAuthn \u80FD\u529B\uFF0C\u7EC8\u7AEF\u65E0\u6CD5\u5B8C\u6210"});if(i.name==="passkey-rename")return ie(G,{title:`\u91CD\u547D\u540D Passkey ${i.item.name}`,width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:d,fields:[{kind:"text",name:"name",label:"\u540D\u79F0",initial:i.item.name,placeholder:"\u6807\u8BB0\u6240\u5728\u8BBE\u5907\uFF0C\u5982 MacBook \u6307\u7EB9"}],onCancel:y,onSubmit:T=>{let N=(T.name??"").trim();if(N===""){m("\u8BF7\u8F93\u5165\u540D\u79F0");return}f("\u6B63\u5728\u4FDD\u5B58",()=>eu(i.item.id,{name:N}),{onSuccess:()=>g("\u5DF2\u4FDD\u5B58")})}});if(i.name==="passkey-delete")return ie(Je,{width:t,title:`\u786E\u8BA4\u5220\u9664 Passkey\u300C${i.item.name}\u300D\uFF1F`,detail:"\u5220\u9664\u540E\u65E0\u6CD5\u518D\u7528\u5B83\u767B\u5F55",confirmLabel:"\u5220\u9664",busy:l,error:d,onConfirm:()=>f("\u6B63\u5728\u5220\u9664",()=>tu(i.item.id),{onSuccess:()=>g("\u5DF2\u5220\u9664")}),onCancel:y});if(i.name==="passkey"){let T=i.item;return ie(kt,{flexDirection:"column",children:bn(te,{title:`Passkey ${T.name}`,width:t,children:[ie(Le,{width:t-le,items:[["\u540D\u79F0",T.name],["\u6DFB\u52A0\u65F6\u95F4",ee(T.createdAt)],["\u6700\u8FD1\u4F7F\u7528",T.lastUsedAt===null?"\u2014":ee(T.lastUsedAt)]]}),ie(kt,{marginTop:1,children:ie(ae,{width:t-le,items:[{value:"rename",label:"\u91CD\u547D\u540D"},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:N=>{p(),s(N==="rename"?{name:"passkey-rename",item:T}:{name:"passkey-delete",item:T})}})})]})})}if(i.name==="confirm-revoke")return ie(Je,{width:t,title:"\u786E\u8BA4\u9000\u51FA\u8BE5\u8BBE\u5907\u7684\u767B\u5F55\uFF1F",confirmLabel:"\u9000\u51FA",busy:l,error:d,onConfirm:()=>f("\u6B63\u5728\u9000\u51FA\u8BE5\u8BBE\u5907",()=>Jl(i.item.id),{onSuccess:()=>g("\u5DF2\u9000\u51FA\u8BE5\u8BBE\u5907")}),onCancel:y});if(i.name==="session"){let T=i.item;return bn(kt,{flexDirection:"column",children:[ie(te,{title:ar(T.device),note:T.current?"\u5F53\u524D\u8BBE\u5907":void 0,width:t,children:ie(Le,{width:t-le,items:[["\u8BBE\u5907\u7C7B\u578B",T.device?.type!=null?ph[T.device.type]??T.device.type:"\u684C\u9762\u8BBE\u5907"],["\u5BA2\u6237\u7AEF",T.device?.client!=null?`${T.device.client} ${T.device.clientVersion??""}`.trim():"\u2014"],["\u64CD\u4F5C\u7CFB\u7EDF",T.device?.os!=null?`${T.device.os} ${T.device.osVersion??""}`.trim():"\u2014"],["\u8BBE\u5907\u578B\u53F7",T.device?.model!=null?`${T.device.vendor??""} ${T.device.model}`.trim():"\u2014"],["IP \u5730\u5740",T.ip??"\u2014"],["\u767B\u5F55\u65F6\u95F4",ee(T.loginAt)],["\u6700\u540E\u6D3B\u8DC3",ee(T.lastActiveAt)],["\u767B\u5F55\u6709\u6548\u671F\u81F3",ee(T.expiresAt)],["\u5BA2\u6237\u7AEF\u6807\u8BC6",T.userAgent??"\u2014"]]})}),!T.current&&l===null&&ie(kt,{marginTop:1,children:ie(ae,{width:t,items:[{value:"revoke",label:"\u9000\u51FA\u8BE5\u8BBE\u5907",labelTone:"danger"}],onSelect:()=>{p(),s({name:"confirm-revoke",item:T})}})})]})}let C=h.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",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"},...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"},...h.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}]:[],...h.passkeys.map(T=>({value:{kind:"passkey",item:T},label:T.name,hint:`\u6700\u8FD1\u4F7F\u7528 ${T.lastUsedAt===null?"\u2014":ee(T.lastUsedAt)}`})),{value:{kind:"add-passkey"},label:"\u6DFB\u52A0 Passkey",hint:"\u9700\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"},{heading:""},{heading:"\u767B\u5F55\u8BBE\u5907"},...w.map(T=>({value:{kind:"session",item:T},label:T.current?`${ar(T.device)}\uFF08\u5F53\u524D\u8BBE\u5907\uFF09`:ar(T.device),...T.current?{labelTone:"accent"}:{},hint:`${T.ip??"\u2014"} \xB7 \u6700\u540E\u6D3B\u8DC3 ${ee(T.lastActiveAt)}`})),{heading:""},{value:{kind:"logout"},label:"\u9000\u51FA\u767B\u5F55",labelTone:"danger"}];return bn(kt,{flexDirection:"column",children:[ie(Le,{width:t,items:[["\u7528\u6237\u540D",k.username],["\u90AE\u7BB1",k.email],["\u4E24\u6B65\u9A8C\u8BC1",C.enabled?`\u5DF2\u542F\u7528\uFF08\u542F\u7528\u4E8E ${C.enabledAt===null?"\u2014":ee(C.enabledAt)}\uFF09`:"\u672A\u542F\u7528"],["\u6062\u590D\u7801",M]]}),ie(kt,{marginTop:V,children:ie(ae,{width:t,height:Math.max(3,r-hh),isActive:l===null,items:U,retain:"menu",onSelect:T=>{p(),T.kind==="rename"?s({name:"rename"}):T.kind==="email"?s({name:"email"}):T.kind==="password"?s({name:"password"}):T.kind==="logout"?s({name:"confirm-logout"}):T.kind==="enable"?f("\u6B63\u5728\u751F\u6210\u5BC6\u94A5",()=>Os({}),{onSuccess:N=>s({name:"enroll",setup:N})}):T.kind==="code"?s({name:"code",intent:T.intent}):T.kind==="add-passkey"?s({name:"passkey-add"}):T.kind==="passkey"?s({name:"passkey",item:T.item}):T.kind==="session"&&s({name:"session",item:T.item})}})})]})}})})}import{Box as li,Text as ui,useInput as Nh}from"ink";import{useRef as ju,useState as ao}from"react";import Ih from"string-width";import{z as Me}from"zod";var Sh=Me.object({siteName:Me.string(),siteDescription:Me.string(),apiLines:Me.array(Me.object({name:Me.string(),description:Me.string(),url:Me.string()})),quotaPerUsd:Me.number(),ticketAutoCloseMinutes:Me.number(),docsEnabled:Me.boolean(),legal:Me.object({termsConfigured:Me.boolean(),privacyConfigured:Me.boolean()}),invitation:Me.object({firstInviterPercent:Me.number(),firstInviteePercent:Me.number()}),initialized:Me.boolean()});function Ee(e,t){return Nt(Sh,`${e}/api/site-config`,{...t===void 0?{}:{timeoutMs:t}})}var xh=Me.object({title:Me.string(),content:Me.string(),configured:Me.boolean()});function Eu(e,t){return Nt(xh,`${e}/api/agreements/${t}`)}var Au=12e4,Nu=e=>O(Tn(ur),Bt("/tickets",{...e})),Iu=e=>O(ur,"/tickets",{method:"POST",json:e}),Gs=e=>O(ic,`/tickets/${e}`),Lu=(e,t,o)=>O(Xi,`/tickets/${e}/messages`,{method:"POST",json:{content:t,attachmentIds:o}}),Mu=e=>O(Yi,Bt("/tickets/attachments",{filename:e.fileName,contentType:e.contentType}),{method:"POST",body:e.bytes,headers:{"content-type":"application/octet-stream"},timeoutMs:Au}),Ou=e=>O(xe,`/tickets/attachments/${e}`,{method:"DELETE"}).then(()=>{}),$u=(e,t)=>kr(`/tickets/${e}/attachments/${t}`,{timeoutMs:Au}),Du=e=>O(xe,`/tickets/${e}/close`,{method:"POST"}).then(()=>{}),Bu=e=>O(xe,`/tickets/${e}/reopen`,{method:"POST"}).then(()=>{});import{existsSync as oi,readFileSync as Th,statSync as Fu,writeFileSync as wh}from"fs";import{homedir as Ks}from"os";import vt from"path";var kh={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".avif":"image/avif"};function vh(e){return e.split(`
|
|
13
|
+
`).map(t=>t.trim()).filter(t=>t!=="").map(t=>t.startsWith("~/")?vt.join(Ks(),t.slice(2)):t)}function _h(e){if(!oi(e))throw new $(`${e} \u4E0D\u5B58\u5728`);let t=Fu(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>ko)throw new $(`${e} \u8D85\u8FC7\u5355\u4E2A\u9644\u4EF6\u5927\u5C0F\u4E0A\u9650 ${Yn(ko)}`);let o;try{o=Th(e)}catch(r){throw new $(`${e} \u8BFB\u53D6\u5931\u8D25\uFF1A${ve(r)}`,{cause:r})}let n=vt.basename(e);return{fileName:n,contentType:kh[vt.extname(n).toLowerCase()]??"application/octet-stream",bytes:o}}function ri(e){let t=vh(e);if(t.length>mr)throw new $("\u9644\u4EF6\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650");return t.map(_h)}async function ii(e,t){let o=[];try{for(let n of e)o.push((await Mu(n)).id);return await t(o)}catch(n){for(let r of o)await Ou(r).catch(()=>{});throw n}}function Rh(e,t){let o=vt.basename(t),n=vt.extname(o),r=o.slice(0,o.length-n.length),i=vt.join(e,o);for(let s=1;oi(i);s+=1)i=vt.join(e,`${r}-${s}${n}`);return i}function Ch(e,t){let o=e.trim();if(o==="")return{dir:process.cwd(),fileName:t};if(o==="~")return{dir:Ks(),fileName:t};let n=o.startsWith("~/")||o.startsWith(`~${vt.sep}`)?vt.join(Ks(),o.slice(2)):o;return o.endsWith("/")||o.endsWith(vt.sep)||oi(n)&&Fu(n).isDirectory()?{dir:n,fileName:t}:{dir:vt.dirname(n),fileName:vt.basename(n)}}function Uu(e,t,o){let n=Ch(e,t);if(!oi(n.dir))throw new $(`${n.dir} \u76EE\u5F55\u4E0D\u5B58\u5728`);let r=Rh(n.dir,n.fileName);try{wh(r,o)}catch(i){throw new $(`\u5199\u5165 ${r} \u5931\u8D25\uFF1A${ve(i)}`,{cause:i})}return r}import{jsx as Ph}from"react/jsx-runtime";function si({title:e,width:t,fileName:o,download:n,onCancel:r,onSaved:i}){let{busy:s,error:a,run:c}=pe();return Ph(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 d=await n();return Uu(l.path??"",o,d)},{onSuccess:i})}})}import{useEffect as Eh,useRef as Ah}from"react";function ai(e,t,o=!0){let n=Ah(t);n.current=t,Eh(()=>{if(!o)return;let r=!1,i=setInterval(()=>{r||(r=!0,n.current().catch(()=>{}).finally(()=>{r=!1}))},e);return()=>clearInterval(i)},[e,o])}var ci={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 ${mr} \u4E2A\uFF0C\u5355\u4E2A\u4E0D\u8D85\u8FC7 ${ko/1024/1024}MB`,optional:!0};import{jsx as pt,jsxs as Vs}from"react/jsx-runtime";var Lh=5e3,Mh=11,Oh=3,Hu=1;function $h(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===""?[]:Ut([{text:r.content,color:u.foreground}],Math.max(8,t-4)),l=r.attachments.map(d=>({spans:[{text:"[\u9644\u4EF6] ",color:u.faintForeground},{text:d.fileName,color:u.foreground},{text:` (${Yn(d.fileSize)})`,color:u.mutedForeground}]}));s?o.push(n(a),...c.map(n),...l.map(n)):o.push(a,...c,...l)}),o}function qu({params:e}){let t=F(),{width:o}=j(),n=oe(),[r,i]=ao("main"),[s,a]=ao(!1),[c,l]=ao(null),[d,p]=ao(null),[m,f]=ao(0),{busy:S,error:y,reset:g,fail:b,run:x}=pe(),k=X([e.id,t.revision],async()=>{let[I,R]=await Promise.all([Gs(e.id),Ee(t.ctx.site)]);return{detail:I,site:R}}),[h,w]=ao(null),C=ju(0),M=ju(t.revision);M.current!==t.revision&&(M.current=t.revision,C.current+=1,h!==null&&w(null));let U=k.phase==="ready"?k.data:null,T=h??U?.detail??null;ai(Lh,async()=>{if(T===null||S!==null)return;let I=C.current,R=await Gs(e.id);I===C.current&&(R.ticket.updatedAt!==T.ticket.updatedAt||R.messages.length!==T.messages.length)&&w(R)},r==="main"&&U!==null);let N=T?.messages.some(I=>I.attachments.length>0)??!1;z(I=>{r!=="main"||s||S!==null||(I==="r"?t.reload():I==="x"&&T!==null&&T.ticket.status!=="closed"?(g(),i("confirm-close")):I==="a"&&N&&(g(),l(null),p(null),i("attachments")))}),Nh((I,R)=>{R.tab&&r==="main"&&!s&&T?.ticket.status!=="closed"&&a(!0)},{isActive:r==="main"&&!s&&S===null});let _=()=>{if(r!=="main"){g(),i("main");return}if(s){a(!1);return}t.pop()},v=(I,R)=>{x("\u6B63\u5728\u53D1\u9001",()=>ii(R,A=>Lu(e.id,I,A)),{onSuccess:()=>{a(!1),f(A=>A+1),t.reload(),t.toast("ok","\u5DF2\u53D1\u9001")}})},P=r==="main"&&!s?["\u2191\u2193 \u6EDA\u52A8",...T?.ticket.status==="closed"?[]:["Tab \u56DE\u590D"],...N?["a \u9644\u4EF6"]:[],...T?.ticket.status==="closed"?[]:["x \u5173\u95ED\u5DE5\u5355"],"r \u5237\u65B0"]:[];return pt(J,{trail:["\u5DE5\u5355\u652F\u6301",T?.ticket.title??"\u5DE5\u5355\u8BE6\u60C5"],hints:P,onEscape:_,children:pt(Y,{state:k,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:o,children:({site:I,detail:R})=>{let A=h??R,q=A.ticket,D=q.status==="closed";if(r==="confirm-close")return pt(Je,{width:o,title:"\u5173\u95ED\u5DE5\u5355",detail:`\u786E\u5B9A\u5173\u95ED\u5DE5\u5355\u300C${q.title}\u300D\u5417\uFF1F\u5173\u95ED\u540E\u53EF\u91CD\u65B0\u6253\u5F00`,confirmLabel:"\u5173\u95ED\u5DE5\u5355",busy:S,error:y,onConfirm:()=>x("\u6B63\u5728\u5173\u95ED",()=>Du(e.id),{onSuccess:()=>{i("main"),t.reload(),t.toast("ok","\u5DF2\u5173\u95ED")}}),onCancel:_});if(r==="attachments")return d!==null?pt(si,{title:`\u4FDD\u5B58\u9644\u4EF6 \u2014 ${d.fileName}`,width:o,fileName:d.fileName,download:()=>$u(e.id,d.id),onCancel:()=>p(null),onSaved:ke=>{p(null),l(ke),t.toast("ok","\u9644\u4EF6\u5DF2\u4FDD\u5B58")}}):Vs(li,{flexDirection:"column",children:[pt(ae,{width:o,height:Math.max(3,n-1),isActive:S===null,items:[{heading:"\u9644\u4EF6"},...A.messages.flatMap(ke=>ke.attachments.map(E=>({value:E,label:E.fileName,hint:`${ke.authorKind==="user"?"\u6211":"\u7BA1\u7406\u5458"} \xB7 ${Yn(E.fileSize)} \xB7 ${ee(ke.createdAt)}`})))],onSelect:ke=>{l(null),p(ke)}}),c!==null&&pt(ui,{wrap:"truncate",color:u.faintForeground,children:`\u5DF2\u4FDD\u5B58\u5230 ${c}`})]});let Z=I.ticketAutoCloseMinutes>0?Hu:0,H=D?Oh:s?Mh:Hu,re=Math.max(3,n-Z-H-V);return Vs(li,{flexDirection:"column",children:[Z>0&&pt(ui,{wrap:"truncate",color:u.faintForeground,children:`\u7BA1\u7406\u5458\u56DE\u590D\u540E\u8D85\u8FC7 ${I.ticketAutoCloseMinutes} \u5206\u949F\u672A\u56DE\u5E94\uFF0C\u5DE5\u5355\u5C06\u81EA\u52A8\u5173\u95ED\uFF1B\u5DF2\u5173\u95ED\u7684\u5DE5\u5355\u53EF\u968F\u65F6\u91CD\u65B0\u6253\u5F00`}),pt(dn,{lines:$h(A.messages,o),height:re,isActive:!s&&S===null,pinBottom:!0}),pt(li,{marginTop:1,flexDirection:"column",children:D?Vs(li,{flexDirection:"column",children:[pt(ui,{color:u.mutedForeground,children:"\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u5982\u9700\u7EE7\u7EED\u6C9F\u901A\u53EF\u91CD\u65B0\u6253\u5F00"}),pt(ae,{width:o,isActive:S===null,items:[{value:"reopen",label:"\u91CD\u65B0\u6253\u5F00"}],onSelect:()=>x("\u6B63\u5728\u91CD\u65B0\u6253\u5F00",()=>Bu(e.id),{onSuccess:()=>{t.reload(),t.toast("ok","\u5DF2\u91CD\u65B0\u6253\u5F00")}})})]}):s?pt(G,{title:"\u56DE\u590D\u5DE5\u5355",width:o,submitLabel:"\u53D1\u9001\u56DE\u590D",busy:S!==null,busyLabel:S??"\u6B63\u5728\u53D1\u9001",error:y,fields:[{kind:"textarea",name:"content",label:"\u56DE\u590D\u5185\u5BB9",rows:3,maxLength:5e3,placeholder:"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9",optional:!0},ci],onCancel:()=>a(!1),onSubmit:ke=>{let E=(ke.content??"").trim(),B;try{B=ri(ke.attachments??"")}catch(K){b(ve(K));return}if(E===""&&B.length===0){b("\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9\u6216\u9644\u4EF6\u8DEF\u5F84");return}v(E,B)}},m):pt(ui,{color:u.faintForeground,children:"\u6309 Tab \u64B0\u5199\u56DE\u590D"})})]})}})})}import{Box as Dh}from"ink";import{useState as Bh}from"react";import{jsx as In,jsxs as jh}from"react/jsx-runtime";var Fh=tt(ji,rs,"\u5168\u90E8\u72B6\u6001"),Uh={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:Uh};function zu(){let e=F(),{width:t}=j(),o=oe(),[n,r]=Bh({name:"list"}),[i,s]=Ze("status",()=>""),{busy:a,error:c,reset:l,fail:d,run:p}=pe(),m=fn([e.revision,i],(y,g)=>Nu({page:y,pageSize:g,...i===""?{}:{status:i}}),{retain:"page"}),f=n.name==="list";z((y,g)=>{f&&(y==="r"?e.reload():y==="f"?r({name:"filter"}):y==="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 In(J,{hints:f?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","n \u65B0\u5EFA","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:S,children:n.name==="filter"?In(G,{title:"\u7B5B\u9009\u5DE5\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:Fh,initial:i}],onCancel:S,onSubmit:y=>{s(y.status??""),m.reset(),r({name:"list"})}}):n.name==="create-category"?In(ae,{width:t,height:o,items:[{heading:"\u5206\u7C7B"},...Hi.map(y=>({value:y,label:br(y),hint:Js[y].title}))],onSelect:y=>r({name:"create",category:y})}):n.name==="create"?In(G,{title:`\u65B0\u5EFA\u5DE5\u5355 \u2014 ${br(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:qi.map(y=>({value:y,label:is(y).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},ci],onCancel:S,onSubmit:y=>{let g=(y.title??"").trim(),b=(y.content??"").trim();if(g===""){d("\u8BF7\u586B\u5199\u6807\u9898");return}if(b===""){d("\u8BF7\u586B\u5199\u95EE\u9898\u63CF\u8FF0");return}let x;try{x=ri(y.attachments??"")}catch(k){d(ve(k));return}p("\u6B63\u5728\u63D0\u4EA4\u5DE5\u5355",()=>ii(x,k=>Iu({title:g,category:n.category,priority:y.priority??"normal",content:b,attachmentIds:k})),{onSuccess:k=>{r({name:"list"}),m.reset(),e.reload(),e.push("ticket",{id:k.id}),e.toast("ok","\u5DE5\u5355\u5DF2\u63D0\u4EA4")}})}}):In(Y,{state:m.state,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:t,children:y=>jh(Dh,{flexDirection:"column",children:[In(Ce,{retain:"list",items:y.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,Yt(is(g.priority)),br(g.category),ee(g.updatedAt),Yt(rs(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}),In(gn,{page:m.page,pages:m.pages,total:m.total,width:t})]})})})}import{Box as Hh}from"ink";import{jsx as Jo}from"react/jsx-runtime";function Wu({params:e}){let t=F(),{width:o}=j(),n=oe(),r=X([e.type,t.revision],()=>Eu(t.ctx.site,e.type));return Jo(J,{trail:["\u6CD5\u5F8B\u6761\u6B3E",e.type==="terms"?"\u7528\u6237\u534F\u8BAE":"\u9690\u79C1\u653F\u7B56"],hints:["\u2191\u2193 \u6EDA\u52A8"],children:Jo(Y,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6761\u6B3E",width:o,children:i=>i.configured?Jo(Hh,{flexDirection:"column",children:Jo(dn,{lines:oo(i.content,o),height:n})}):Jo(he,{tone:"info",width:o,title:"\u8BE5\u6761\u6B3E\u5C1A\u672A\u914D\u7F6E"})})})}async function Gu(e,t){await Nt(xe,`${e}/api/auth/send-code`,{json:t})}async function Ku(e,t){let o=await yt(`${e}/api/auth/register`,{json:t});At(o);let n=Vn.parse(o.data);return Eo(e,Po({refresh:null,device:null},o.headers),n)}async function Vu(e,t){await Nt(xe,`${e}/api/auth/forgot-password`,{json:t})}async function Ju(e,t){await Nt(xe,`${e}/api/auth/reset-password`,{json:t})}import{jsx as Yu}from"react/jsx-runtime";function Xu(){let e=F(),{width:t}=j(),{busy:o,error:n,fail:r,run:i}=pe();return Yu(J,{trail:["\u627E\u56DE\u5BC6\u7801"],isActive:o===null,children:Yu(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=>Vu(e.ctx.site,{email:s})},{kind:"text",name:"password",label:"\u65B0\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${ct} \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<ct){r(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${ct} \u4F4D`);return}i("\u6B63\u5728\u91CD\u7F6E",()=>Ju(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 Xs,Text as zh}from"ink";import{useState as Zu}from"react";import{Box as Qu}from"ink";import{jsx as Ys,jsxs as qh}from"react/jsx-runtime";var mi=e=>e.termsConfigured||e.privacyConfigured;function di({legal:e,width:t,onAgree:o}){let n=F(),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 qh(Qu,{flexDirection:"column",children:[Ys(he,{tone:"info",width:t,title:`\u7EE7\u7EED\u524D\u8BF7\u9605\u8BFB\u5E76\u540C\u610F${r.join("\u4E0E")}`}),Ys(Qu,{marginTop:1,children:Ys(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 yn,jsxs as em}from"react/jsx-runtime";function tm(){let e=F(),{width:t}=j(),[o,n]=Zu({name:"credentials"}),[r,i]=Zu(!1),{busy:s,error:a,reset:c,fail:l,run:d}=pe(),p=X([e.revision],()=>Ee(e.ctx.site)),m=g=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u5DF2\u767B\u5F55\uFF1A${g}`),e.home()},f=(g,b)=>{d("\u6B63\u5728\u9A8C\u8BC1",()=>Mc(e.ctx.site,g,b),{onSuccess:x=>{if(x.status==="totp_required"){n({name:"factor",ticket:x.ticket,jar:x.jar});return}m(x.session.username)}})},S=(g,b)=>{d("\u6B63\u5728\u9A8C\u8BC1",()=>Oc(e.ctx.site,g.jar,g.ticket,b,g.kind),{onSuccess:x=>m(x.username)})},y=()=>{o.name==="credentials"?e.pop():(c(),n({name:"credentials"}))};return em(J,{trail:o.name==="credentials"?["\u767B\u5F55\u8D26\u53F7"]:["\u767B\u5F55\u8D26\u53F7","\u4E24\u6B65\u9A8C\u8BC1"],onEscape:y,isActive:s===null,children:[o.name==="credentials"&&yn(Y,{state:p,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:g=>mi(g.legal)&&!r?yn(di,{legal:g.legal,width:t,onAgree:()=>i(!0)}):em(Xs,{flexDirection:"column",children:[yn(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:y,onSubmit:b=>{let x=(b.account??"").trim(),k=b.password??"";if(x===""||k===""){l("\u8BF7\u586B\u5199\u8D26\u53F7\u4E0E\u5BC6\u7801");return}f(x,k)}}),yn(Xs,{marginTop:1,children:yn(zh,{color:u.faintForeground,children:"Passkey \u767B\u5F55\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"})})]})}),o.name==="factor"&&yn(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"&&yn(Xs,{flexDirection:"column",children:yn(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:y,onSubmit:g=>{let b=(g.code??"").trim();if(b===""){l("\u8BF7\u586B\u5199\u9A8C\u8BC1\u7801");return}S(o,b)}})})]})}import{useState as Wh}from"react";import{jsx as pi}from"react/jsx-runtime";function nm(){let e=F(),{width:t}=j(),[o,n]=Wh(!1),{busy:r,error:i,fail:s,run:a}=pe(),c=X([e.revision],()=>Ee(e.ctx.site));return pi(J,{trail:["\u6CE8\u518C\u8D26\u53F7"],isActive:r===null,children:pi(Y,{state:c,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:l=>mi(l.legal)&&!o?pi(di,{legal:l.legal,width:t,onAgree:()=>n(!0)}):pi(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:d=>Gu(e.ctx.site,{email:d,purpose:"register"})},{kind:"text",name:"password",label:"\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${ct} \u4F4D`},{kind:"text",name:"invite",label:"\u9080\u8BF7\u7801",placeholder:"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801",optional:!0}],onCancel:()=>e.pop(),onSubmit:d=>{let p=(d.username??"").trim(),m=(d.email??"").trim(),f=(d.code??"").trim(),S=d.password??"",y=(d.invite??"").trim();if(p===""||p.length>kn){s(`\u8BF7\u8F93\u5165 1 \u5230 ${kn} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}if(m===""||f===""){s("\u8BF7\u586B\u5199\u90AE\u7BB1\u4E0E\u9A8C\u8BC1\u7801");return}if(S.length<ct){s(`\u5BC6\u7801\u81F3\u5C11 ${ct} \u4F4D`);return}a("\u6B63\u5728\u6CE8\u518C",()=>Ku(e.ctx.site,{username:p,email:m,password:S,code:f,...y===""?{}:{inviteCode:y}}),{onSuccess:g=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u6CE8\u518C\u6210\u529F\uFF1A${g.username}`),e.home()}})}})})})}import{Box as Mn}from"ink";import{useEffect as ab,useRef as cb,useState as na}from"react";import{z as L}from"zod";var Gh=L.object({balance:L.number(),today:L.object({requests:L.number(),tokens:L.number(),cost:L.number()})}),om=()=>O(Gh,"/dashboard/summary"),rm=["all","30d","7d"],Kh=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()}),Qs=e=>O(Kh,Bt("/dashboard/stats",{range:e})),Vh=L.object({id:L.number().int(),requestId:L.string(),tokenName:L.string(),protocol:La,model:L.string(),modelDisplayName:L.string(),groupName:L.string(),promptTokens:L.number(),completionTokens:L.number(),cachedTokens:L.number(),cacheWriteTokens:L.number(),cacheWrite1hTokens:L.number(),totalTokens:L.number(),quotaCost:L.number(),subscriptionPlanName:L.string().nullable(),multiplier:L.number(),tierOver:L.number().int().nullable(),paramMultipliers:dc,status:ja,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()}),im=e=>O(Tn(Vh),Bt("/logs",{...e})),Jh=L.object({quotaCost:L.number(),rpm:L.number(),tpm:L.number(),concurrency:L.number()}),sm=e=>O(Jh,Bt("/logs/stats",{...e})),Yh=L.object({id:L.number().int(),type:Ba,amount:L.number(),balanceAfter:L.number(),refType:Fa,refId:L.string().nullable(),createdAt:L.string()}),am=e=>O(Tn(Yh),Bt("/quota-ledger",{...e}));import{Box as Xh,Text as Lt}from"ink";import Yo from"string-width";import{Fragment as lm,jsx as Mt,jsxs as Zs}from"react/jsx-runtime";var Ln=1,Qh=4,Zh=1,co=8,eb=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587"],cm=e=>`${Number(e.slice(5,7))}\u6708${Number(e.slice(8,10))}\u65E5`;function um({data:e,order:t,width:o,rows:n}){let r=n-Zh,i=[];for(let N=e.start;N<=e.end;N=an(N,1))i.push(N);let s=Math.min(Qh,Math.floor((o+Ln)/i.length)-Ln);s<1&&(s=1,i=i.slice(-Math.floor((o+Ln)/(1+Ln))));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,Mr.length).map((N,_)=>[N,_])),d=Mr.length,p=N=>Mr[N]??u.faintForeground,m=new Map(i.map((N,_)=>[N,_])),f=i.map(()=>Array.from({length:d+1},()=>0));for(let N of e.points){let _=m.get(N.day);if(_===void 0)continue;let v=f[_];if(v===void 0)continue;let P=l.get(N.model)??d;v[P]=(v[P]??0)+N.tokens}let S=f.map(N=>N.reduce((_,v)=>_+v,0)),y=Math.max(0,...S),g=r*co,b=f.map((N,_)=>{let v=Array.from({length:r},()=>null),P=S[_]??0;if(P<=0)return v;let I=Math.max(1,Math.round(P/y*g)),R=[],A=0,q=0;N.forEach((D,Z)=>{A+=D;let H=Math.round(A/P*I);for(let re=q;re<H;re+=1)R[re]=p(Z);q=H});for(let D=0;D<r;D+=1){let Z=Math.min(co,I-D*co);if(Z<=0)break;let H=new Map;for(let E=D*co;E<D*co+Z;E+=1){let B=R[E];B!==void 0&&H.set(B,(H.get(B)??0)+1)}let re=null,ke=0;for(let[E,B]of H)B>ke&&(re=E,ke=B);if(re===null)break;v[D]={color:re,glyph:Z===co?null:eb[Z-1]??null}}return v}),x=N=>{let _=[],v=(P,I,R)=>{let A=_[_.length-1];A!==void 0&&A.color===P&&A.glyph===I?A.width+=R:_.push({color:P,glyph:I,width:R})};return b.forEach((P,I)=>{I>0&&v(null,null,Ln);let R=P[N]??null;R===null?v(null,null,s):v(R.color,R.glyph,s)}),_},k=i.length*(s+Ln)-Ln,h=cm(a),w=cm(c),C=y>0?`\u5355\u65E5\u5CF0\u503C ${sn(y)}`:"",M=k-Yo(h)-Yo(w),U=C!==""&&M>=Yo(C)+4,T=U?Math.floor((M-Yo(C))/2):M;return Zs(Xh,{flexDirection:"column",children:[Array.from({length:r},(N,_)=>{let v=r-1-_;return Mt(Lt,{wrap:"truncate",children:x(v).map((P,I)=>P.color===null?Mt(Lt,{children:" ".repeat(P.width)},I):P.glyph===null?Mt(Lt,{backgroundColor:P.color,children:" ".repeat(P.width)},I):Mt(Lt,{color:P.color,children:P.glyph.repeat(P.width)},I))},v)}),Mt(Lt,{wrap:"truncate",children:M<2?Mt(Lt,{color:u.faintForeground,children:Re(h,k)}):Zs(lm,{children:[Mt(Lt,{color:u.faintForeground,children:h}),Mt(Lt,{children:" ".repeat(T)}),U&&Zs(lm,{children:[Mt(Lt,{color:u.mutedForeground,children:C}),Mt(Lt,{children:" ".repeat(M-Yo(C)-T)})]}),Mt(Lt,{color:u.faintForeground,children:w})]})})]})}import{Box as mm,Text as zt}from"ink";import tb from"string-width";import{jsx as qt,jsxs as ea}from"react/jsx-runtime";var fi=3,tn=2,ta=10,nb=8,dm=e=>Math.floor((e-fi)/tn),pm=e=>dm(e)>=nb;function ob(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=an(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 rb(e,t){let o=t*tn,n="",r=0,i="";for(;r<o;){let s=r%tn===0?e[r/tn*7]:void 0;if(s!==void 0){let a=s.day.slice(0,7);if(a!==i){i=a;let c=`${Number(s.day.slice(5,7))}\u6708`,l=tb(c);if(r+l<=o){n+=c,r+=l;continue}}}n+=" ",r+=1}return n}var ib={1:"\u4E00",3:"\u4E09",5:"\u4E94"};function sb({cells:e,day:t,weeks:o}){return ea(zt,{wrap:"truncate",children:[qt(zt,{color:u.faintForeground,children:De(ib[t]??"",fi)}),Array.from({length:o},(n,r)=>{let i=e[r*7+t];return i===void 0?qt(zt,{children:" ".repeat(tn)},r):qt(zt,{backgroundColor:Lr[i.level],children:" ".repeat(tn)},r)})]})}function fm({data:e,funFact:t,width:o}){let n=ob(e),r=Math.ceil(n.length/7),i=Math.min(r,dm(o)),s=n.slice((r-i)*7),a=3+Lr.length*tn+3,c=Math.max(0,fi+i*tn-a-2);return ea(mm,{flexDirection:"column",children:[qt(zt,{wrap:"truncate",color:u.faintForeground,children:" ".repeat(fi)+rb(s,i)}),Array.from({length:7},(l,d)=>qt(sb,{cells:s,day:d,weeks:i},d)),qt(mm,{marginTop:1,children:ea(zt,{wrap:"truncate",children:[qt(zt,{color:u.mutedForeground,children:De(t??"",c)})," ",qt(zt,{color:u.faintForeground,children:"\u5C11 "}),Lr.map(l=>qt(zt,{backgroundColor:l,children:" ".repeat(tn)},l)),qt(zt,{color:u.faintForeground,children:" \u591A"})]})})]})}import{jsx as Ke,jsxs as hm}from"react/jsx-runtime";var lb={all:"\u5168\u90E8","30d":"30 \u5929","7d":"7 \u5929"},ub=1,gi=4,gm=5,mb=9;function db(e){let t=-1,o=0;return e.forEach((n,r)=>{n>o&&(o=n,t=r)}),t<0?"\u2014":`${t} \u70B9`}function bm(){let e=F(),{width:t}=j(),o=oe(),[n,r]=na("all"),[i,s]=na("heatmap"),[a,c]=na(null),l=cb(null),d=X([n,e.revision],async()=>{let p=l.current;if(p!==null&&p.revision===e.revision){let y=await Qs(n);return{summary:p.summary,stats:y,site:p.site}}let[m,f,S]=await Promise.all([om(),Qs(n),Ee(e.ctx.site)]);return l.current={revision:e.revision,summary:m,site:S},{summary:m,stats:f,site:S}});return ab(()=>{d.phase==="ready"&&c(yc({tokens:d.data.stats.totals.tokens,scope:"user",range:n}))},[d,n]),z(p=>{p==="r"&&e.reload(),p==="t"&&s(m=>m==="heatmap"?"chart":"heatmap")}),Ke(J,{hints:["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u5207\u6362\u533A\u95F4","t \u5207\u6362\u56FE\u8868","/ \u8FC7\u6EE4","r \u5237\u65B0"],children:Ke(Mn,{flexDirection:"column",children:Ke(Y,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u7528\u91CF",width:t,children:({summary:p,stats:m,site:f})=>{let S=[{label:"\u8D26\u6237\u4F59\u989D",value:ce(p.balance,f.quotaPerUsd)},{label:"\u4ECA\u65E5\u8BF7\u6C42",value:_e(p.today.requests)},{label:"\u4ECA\u65E5 Token",value:_e(p.today.tokens)},{label:"\u4ECA\u65E5\u6D88\u8017",value:ce(p.today.cost,f.quotaPerUsd)}],y=[{label:"\u8BF7\u6C42\u6570",value:_e(m.totals.requests)},{label:"Token \u603B\u91CF",value:sn(m.totals.tokens)},{label:"\u6D88\u8017",value:ce(m.totals.cost,f.quotaPerUsd)},{label:"\u6D3B\u8DC3\u5929\u6570",value:_e(m.activeDays)},{label:"\u5F53\u524D\u8FDE\u7EED",value:`${m.currentStreak} \u5929`},{label:"\u6700\u957F\u8FDE\u7EED",value:`${m.longestStreak} \u5929`},{label:"\u9AD8\u5CF0\u65F6\u6BB5",value:db(m.hourly)},{label:"\u5E38\u7528\u6A21\u578B",value:m.models[0]?.displayName??"\u2014"}],g=t-le,b=_=>ut+_+en(S.length,g)+V+ut+_+ub+_+en(y.length,g)+V+ut+_,x=o-b(He)>=gi?He:0,k=o-b(x),h=V+ut+x+gm,w=i==="chart"&&m.chart.points.length>0&&k>=h+gi,C=i==="heatmap"&&pm(g)&&k-(V+ta)>=gi,M=C?V+ta:0,U=w?Math.min(mb,gm+Math.floor((k-h-gi)/2)):0,T=k-M-(w?V+ut+x+U:0),N=_=>`${(m.totals.tokens>0?_/m.totals.tokens*100:0).toFixed(1)}%`;return hm(Mn,{flexDirection:"column",children:[Ke(te,{title:"\u6982\u89C8",width:t,gap:x,children:Ke(at,{width:g,tiles:S})}),Ke(Mn,{marginTop:1,flexDirection:"column",children:hm(te,{title:"\u533A\u95F4\u7EDF\u8BA1",width:t,gap:x,children:[Ke(gu,{options:rm.map(_=>({value:_,label:lb[_]})),value:n,onChange:r}),Ke(Mn,{marginTop:x,children:Ke(at,{width:g,tiles:y})}),C&&Ke(Mn,{marginTop:1,flexDirection:"column",children:Ke(fm,{data:m.heatmap,funFact:a,width:g})})]})}),w&&Ke(Mn,{marginTop:1,flexDirection:"column",children:Ke(te,{title:"\u7528\u91CF\u8D8B\u52BF",note:"\u67F1\u8272\u7531\u4EAE\u81F3\u6697\u5BF9\u5E94\u7528\u91CF\u524D\u4E94\u7684\u6A21\u578B\uFF0C\u7070\u8272\u4E3A\u5176\u4ED6",width:t,gap:x,children:Ke(um,{data:m.chart,order:m.models.map(_=>_.model),width:g,rows:U})})}),Ke(Mn,{marginTop:1,flexDirection:"column",children:Ke(te,{title:"\u6A21\u578B\u7528\u91CF",width:t,gap:x,children:m.models.length===0?Ke(he,{tone:"info",width:g,title:"\u6682\u65E0\u7528\u91CF\u6570\u636E",detail:"\u8C03\u7528 API \u540E\u8FD9\u91CC\u4F1A\u663E\u793A\u5404\u6A21\u578B\u7684\u6BCF\u65E5 Token \u7528\u91CF"}):Ke(Ce,{retain:"list",items:m.models,width:g,height:T,columns:[{label:"\u6A21\u578B",shrink:!0},{label:"\u603B Token",align:"right"},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u5360\u6BD4",align:"right"}],row:_=>[_.displayName,sn(_.tokens),sn(_.inTokens),sn(_.outTokens),N(_.tokens)],searchOf:_=>_.displayName})})})]})}})})})}import{Box as lo,Text as ra}from"ink";import{useState as xm}from"react";import{z as Ye}from"zod";var pb=Ye.object({id:Ye.number().int(),name:Ye.string(),description:Ye.string(),multiplier:Ye.number()}),hi=()=>O(Ye.array(pb),"/groups"),oa=Ye.object({id:Ye.number().int(),name:Ye.string(),keyPrefix:Ye.string(),keySuffix:Ye.string(),groupId:Ye.number().int().nullable(),groupName:Ye.string().nullable(),usedQuota:Ye.number(),quotaLimit:Ye.number().nullable()}),bi=()=>O(Ye.array(oa),"/tokens"),ym=e=>O(oa.extend({token:Ye.string()}),"/tokens",{method:"POST",json:e}),yi=(e,t)=>O(oa,`/tokens/${e}`,{method:"PATCH",json:t}),Sm=e=>O(xe,`/tokens/${e}`,{method:"DELETE"}).then(()=>{});import{jsx as Ve,jsxs as Si}from"react/jsx-runtime";var Tm={model:"",requestId:"",token:"",group:"",status:"",range:"today",since:"",until:""},wm=/^\d{4}-\d{2}-\d{2}$/;function fb(e){let t=ts();return e.range==="today"?{since:t,until:t}:e.range==="7d"?{since:an(t,-6),until:t}:e.range==="30d"?{since:an(t,-29),until:t}:e.range==="custom"?{...e.since===""?{}:{since:e.since},...e.until===""?{}:{until:e.until}}:{}}function km(e){let t=fb(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:ns(t.since).toISOString()},...t.until===void 0?{}:{until:ns(an(t.until,1)).toISOString()}}}var gb=tt(Ui,gr,"\u5168\u90E8\u72B6\u6001"),hb=[{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 bb({log:e,quotaPerUsd:t,width:o}){let n=o-le,r=gr(e.status),i=Xe(r),s=e.status!=="anomaly"?null:e.totalTokens>0?"\u672C\u6B21\u8C03\u7528\u672A\u8FD4\u56DE\u7528\u91CF\u6570\u636E\uFF0C\u8D39\u7528\u6309\u8BF7\u6C42\u4E0E\u54CD\u5E94\u7684\u6587\u672C\u91CF\u4F30\u7B97":"\u672C\u6B21\u8C03\u7528\u672A\u8FD4\u56DE\u7528\u91CF\u6570\u636E\u4E14\u65E0\u6CD5\u4F30\u7B97\uFF0C\u672A\u8BA1\u8D39",a=[];e.cachedTokens>0&&a.push(["\u7F13\u5B58\u8BFB",_e(e.cachedTokens)]),e.cacheWriteTokens>0&&a.push(["\u7F13\u5B58\u5199",_e(e.cacheWriteTokens)]),e.cacheWrite1hTokens>0&&a.push(["\u7F13\u5B58\u5199 1h",_e(e.cacheWrite1hTokens)]),e.firstByteMs!==null&&a.push(["\u9996\u5B57\u8282",`${vn(e.firstByteMs)} s`]),e.tierOver!==null&&a.push(["\u8F93\u5165\u957F\u5EA6",es(e.tierOver)]),e.paramMultipliers.length>0&&a.push(["\u547D\u4E2D\u53C2\u6570",Ue(e.paramMultipliers.map(l=>`${l.value} \xD7${l.multiplier}`))]);let c=[["\u8BF7\u6C42 ID",e.requestId],["\u4EE4\u724C",e.tokenName],["\u5206\u7EC4",e.groupName],...e.ip===null?[]:[["\u8BF7\u6C42 IP",e.ip]],["\u534F\u8BAE",Tc(e.protocol)],["\u8BA1\u8D39\u6765\u6E90",e.subscriptionPlanName!==null?`\u8BA2\u9605 \xB7 ${e.subscriptionPlanName}`:"\u4F59\u989D"],["HTTP \u72B6\u6001",String(e.httpStatus)],...e.stopReason===null?[]:[["\u7ED3\u675F\u539F\u56E0",e.stopReason]]];return Si(te,{title:e.modelDisplayName,note:ee(e.createdAt),width:o,children:[Si(ra,{wrap:"truncate",children:[Ve(ra,{color:i===void 0?u.mutedForeground:Ge[i],children:r.label}),Ve(ra,{color:u.faintForeground,children:` ${Ue([e.stream?"\u6D41\u5F0F":"",e.model])}`})]}),Ve(lo,{marginTop:1,children:Ve(at,{width:n,tiles:[{label:"\u8F93\u5165 Token",value:_e(e.promptTokens)},{label:"\u8F93\u51FA Token",value:_e(e.completionTokens)},{label:"\u6D88\u8017",value:Xn(e.quotaCost,t)},{label:"\u603B\u8017\u65F6",value:`${vn(e.latencyMs)} s`},{label:"\u6863\u4F4D",value:_o(e.tierOver)},{label:"\u5206\u7EC4\u500D\u7387",value:`\xD7${e.multiplier}`},{label:"\u53C2\u6570\u500D\u7387",value:`\xD7${pc(e.paramMultipliers)}`},{label:"\u603B\u500D\u7387",value:`\xD7${fc(e.multiplier,e.paramMultipliers)}`}]})}),s!==null&&Ve(lo,{marginTop:1,children:Ve(he,{tone:"warn",width:n,title:s})}),Ve(lo,{marginTop:1,children:Ve(Le,{width:n,items:[...a,...c]})})]})}function vm(){let e=F(),{width:t}=j(),o=oe(),[n,r]=xm({name:"list"}),[i,s]=xm(Tm),{error:a,fail:c,reset:l}=pe(),d=X([e.revision],async()=>{let[g,b,x]=await Promise.all([hi(),bi(),Ee(e.ctx.site)]);return{groups:g,tokens:b,site:x}}),p=fn([e.revision,JSON.stringify(i)],(g,b)=>im({page:g,pageSize:b,...km(i)}),{retain:"page"}),m=X([e.revision,JSON.stringify(i)],()=>sm(km(i))),f=n.name==="list";z((g,b)=>{f&&(g==="r"?e.reload():g==="f"?(l(),r({name:"filter"})):b.leftArrow?p.go(-1):b.rightArrow&&p.go(1))});let S=()=>{n.name==="list"?e.pop():(l(),r({name:"list"}))},y=JSON.stringify(i)!==JSON.stringify(Tm);return Ve(J,{hints:f?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:S,children:Ve(Y,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u7B5B\u9009\u9009\u9879",width:t,children:({groups:g,tokens:b,site:x})=>{if(n.name==="filter")return Ve(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(h=>h.name))].map(h=>({value:h,label:h}))],initial:i.token},{kind:"select",name:"group",label:"\u5206\u7EC4",options:[{value:"",label:"\u5168\u90E8\u5206\u7EC4"},...g.map(h=>({value:h.name,label:h.name}))],initial:i.group},{kind:"select",name:"status",label:"\u72B6\u6001",options:gb,initial:i.status},{kind:"select",name:"range",label:"\u65F6\u95F4\u8303\u56F4",options:hb,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:h=>{let w=h.range??"",C=(h.since??"").trim(),M=(h.until??"").trim();if(w==="custom"&&(C!==""&&!wm.test(C)||M!==""&&!wm.test(M))){c("\u65E5\u671F\u683C\u5F0F\u5E94\u4E3A YYYY-MM-DD");return}s({model:h.model??"",requestId:h.requestId??"",token:h.token??"",group:h.group??"",status:h.status??"",range:w,since:C,until:M}),p.reset(),r({name:"list"})}});if(n.name==="detail")return Ve(bb,{log:n.log,quotaPerUsd:x.quotaPerUsd,width:t});let k=en(4,t);return Si(lo,{flexDirection:"column",children:[Ve(lo,{height:k+1,flexDirection:"column",overflow:"hidden",children:Ve(Y,{state:m,loading:"\u6B63\u5728\u7EDF\u8BA1\u7B5B\u9009\u7ED3\u679C",width:t,children:h=>Ve(at,{width:t,tiles:[{label:"\u6D88\u8017",value:ce(h.quotaCost,x.quotaPerUsd)},{label:"RPM",value:_e(h.rpm)},{label:"TPM",value:_e(h.tpm)},{label:"\u5E76\u53D1",value:_e(h.concurrency)}]})})}),Ve(Y,{state:p.state,loading:"\u6B63\u5728\u8BFB\u53D6\u4F7F\u7528\u65E5\u5FD7",width:t,children:h=>Si(lo,{flexDirection:"column",children:[Ve(Ce,{retain:"list",items:h.items,width:t,height:Math.max(3,o-2-k),columns:[{label:"\u65F6\u95F4"},{label:"\u6A21\u578B",shrink:!0},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u6D88\u8017",align:"right"},{label:"\u72B6\u6001",align:"right"}],row:w=>[ee(w.createdAt),w.modelDisplayName,_e(w.promptTokens),_e(w.completionTokens),Xn(w.quotaCost,x.quotaPerUsd),Yt(gr(w.status))],onOpen:w=>r({name:"detail",log:w}),emptyLabel:y?"\u65E0\u5339\u914D\u7ED3\u679C":"\u6682\u65E0\u8C03\u7528\u8BB0\u5F55",emptyDescription:y?void 0:"\u901A\u8FC7\u4EE4\u724C\u8C03\u7528 API \u540E\uFF0C\u660E\u7EC6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),Ve(gn,{page:p.page,pages:p.pages,total:p.total,width:t})]})})]})}})})}import{Box as On,Text as $n}from"ink";import{useState as wb}from"react";import{z as se}from"zod";var yb=Zi.extend({id:se.number().int(),model:se.string(),displayName:se.string(),rules:cc}),Sb=se.object({quotaPerUsd:se.number(),cnyPerUsd:se.number(),minTopupCny:se.number(),models:se.array(yb)});function xi(e){return Nt(Sb,`${e}/api/pricing`)}var xb=se.object({cnyPerUsd:se.number(),groups:se.array(se.object({id:se.number().int(),name:se.string(),description:se.string(),multiplier:se.number()})),stats:se.object({requests:se.number(),errors:se.number(),latencyP50Ms:se.number().nullable(),firstByteP50Ms:se.number().nullable()}),heartbeat:se.object({bucketStartMs:se.number(),groups:se.array(se.object({id:se.number().int(),name:se.string(),minutes:se.array(se.object({requests:se.number(),errors:se.number()}))}))})});function _m(e,t){return Nt(xb,`${e}/api/pricing/${t}`)}var Tb=se.object({data:se.array(se.object({id:se.string()}))});async function Rm(e,t,o){return(await Nt(Tb,`${e}/v1/models`,{headers:{authorization:`Bearer ${t}`},...o===void 0?{}:{timeoutMs:o}})).data.map(r=>r.id)}import{jsx as ye,jsxs as Ti}from"react/jsx-runtime";var kb=4,vb=1+He,_b=e=>e.requests===0?u.border:e.errors===0?u.success:e.errors/e.requests>=.5?u.danger:u.warning;function Rb({minutes:e,width:t}){let o=e.slice(Math.max(0,e.length-t)),n=[];for(let r of o){let i=_b(r),s=n[n.length-1];s!==void 0&&s.color===i?s.count+=1:n.push({color:i,count:1})}return ye($n,{wrap:"truncate",children:n.map((r,i)=>ye($n,{color:r.color,children:Q.barFilled.repeat(r.count)},i))})}function Cb({price:e,width:t,contentRows:o}){let n=F(),r=X([e.id,n.revision],()=>_m(n.ctx.site,e.id)),i=mc(e,e.rules),s=i.length>1,a=e.rules.filter(lc),c=t-le,l=1+i.length,d=1+a.length;return ye(Y,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u8BE6\u60C5",width:t,children:p=>{let m=p.stats,f=[{label:"\u53EF\u7528\u7387",value:m.requests>0?`${((m.requests-m.errors)/m.requests*100).toFixed(1)}%`:"\u2014"},{label:"\u8C03\u7528\u6B21\u6570",value:_e(m.requests)},{label:"\u5EF6\u8FDF P50",value:m.latencyP50Ms!==null?`${vn(m.latencyP50Ms)} s`:"\u2014"},{label:"\u9996\u5B57\u8282 P50",value:m.firstByteP50Ms!==null?`${vn(m.firstByteP50Ms)} s`:"\u2014"}],S=a.length>0?V+mt+d:0,y=vb+mt+en(f.length,c,2)+V+mt+l+S+V+mt,g=p.heartbeat.groups.length,b=o-y-kb-V-mt,x=Math.max(0,Math.floor(b/2));x<g&&(x=Math.max(0,Math.floor((b-1)/2))),x=Math.min(g,x);let k=x>0?V+mt+x*2+(x<g?1:0):0,h=Math.max(1,o-y-k);return Ti(On,{flexDirection:"column",children:[ye(On,{marginBottom:He,children:Ti($n,{wrap:"truncate",children:[ye($n,{bold:!0,color:u.foreground,children:e.displayName}),ye($n,{color:u.faintForeground,children:` ${e.model}`})]})}),ye(te,{title:"\u8FD1 24 \u5C0F\u65F6",note:"\u5168\u90E8\u5206\u7EC4\u7684\u7EFC\u5408\u8C03\u7528\u7EDF\u8BA1",width:t,children:ye(at,{width:c,tiles:f,maxPerRow:2})}),x>0&&ye(On,{marginTop:1,flexDirection:"column",children:Ti(te,{title:"\u53EF\u7528\u6027",note:"\u6700\u8FD1\u4E00\u6BB5\u65F6\u95F4\u5404\u5206\u7EC4\u7684\u8C03\u7528\u5065\u5EB7\u72B6\u51B5",width:t,children:[p.heartbeat.groups.slice(0,x).map(w=>Ti(On,{flexDirection:"column",children:[ye($n,{wrap:"truncate",color:u.foreground,children:w.name}),ye(Rb,{minutes:w.minutes,width:c})]},w.id)),x<g&&ye($n,{color:u.faintForeground,children:`\u5176\u4F59 ${g-x} \u4E2A\u5206\u7EC4\u672A\u663E\u793A`})]})}),ye(On,{marginTop:1,flexDirection:"column",children:ye(te,{title:"\u6A21\u578B\u4EF7\u683C",note:"\u6BCF\u767E\u4E07 Token \u7684\u7F8E\u5143\u6807\u4EF7",width:t,children:ye(Ce,{items:i,width:c,height:l,columns:[{label:"\u6863\u4F4D"},...s?[{label:"\u8F93\u5165\u957F\u5EA6"}]:[],{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u7F13\u5B58\u8BFB\u53D6",align:"right"},{label:"\u7F13\u5B58\u5199\u5165",align:"right"}],row:w=>[w.name,...w.range===null?[]:[w.range],Dt(w.price.inputPricePerMillionTokens,"-"),Dt(w.price.outputPricePerMillionTokens,"-"),Dt(w.price.cachedInputPricePerMillionTokens,"-"),Dt(w.price.cacheWritePricePerMillionTokens,"-")]})})}),a.length>0&&ye(On,{marginTop:1,flexDirection:"column",children:ye(te,{title:"\u8BF7\u6C42\u53C2\u6570\u500D\u7387",note:"\u547D\u4E2D\u65F6\u6574\u7B14\u8D39\u7528\u4E58\u4EE5\u500D\u7387\uFF0C\u591A\u6761\u547D\u4E2D\u4F9D\u6B21\u76F8\u4E58",width:t,children:ye(Ce,{items:a,width:c,height:d,columns:[{label:"\u53C2\u6570\u540D",shrink:!0},{label:"\u53C2\u6570\u503C",shrink:!0},{label:"\u500D\u7387",align:"right"}],row:w=>[w.param,w.value,`\xD7${w.multiplier}`]})})}),ye(On,{marginTop:1,flexDirection:"column",children:ye(te,{title:"\u5206\u7EC4\u4EF7\u683C",note:"\u500D\u7387\u968F\u4EE4\u724C\u6240\u5C5E\u5206\u7EC4\u800C\u5B9A\uFF0C\u5355\u4EF7\u4E3A 1 \u7F8E\u5143\u6807\u4EF7\u7528\u91CF\u7684\u4EBA\u6C11\u5E01\u4EF7\u683C",width:t,children:p.groups.length===0?ye(he,{tone:"info",width:c,title:"\u6682\u65E0\u53EF\u7528\u5206\u7EC4",detail:"\u5F53\u524D\u6CA1\u6709\u542F\u7528\u7684\u6E20\u9053\u63D0\u4F9B\u8BE5\u6A21\u578B"}):ye(Ce,{items:p.groups,width:c,height:h,columns:[{label:"\u5206\u7EC4",shrink:!0},{label:"\u8BF4\u660E",shrink:!0},{label:"\u500D\u7387",align:"right"},{label:"\u5355\u4EF7",align:"right"}],row:w=>[w.name,w.description,`\xD7${w.multiplier}`,`\xA5${(p.cnyPerUsd*w.multiplier).toFixed(2)}`]})})})]})}})}function Cm(){let e=F(),{width:t}=j(),o=oe(),[n,r]=wb({name:"list"}),i=X([e.revision],async()=>(await xi(e.ctx.site)).models);z(a=>{a==="r"&&e.reload()});let s=()=>{n.name==="list"?e.pop():r({name:"list"})};return ye(J,{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:ye(Y,{state:i,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u5B9A\u4EF7",width:t,children:a=>a.length===0?ye(he,{tone:"info",width:t,title:"\u6682\u65E0\u6A21\u578B"}):n.name==="detail"?ye(Cb,{price:n.price,width:t,contentRows:o}):ye(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,Dt(c.inputPricePerMillionTokens,"-"),Dt(c.outputPricePerMillionTokens,"-"),Dt(c.cachedInputPricePerMillionTokens,"-"),Dt(c.cacheWritePricePerMillionTokens,"-")],searchOf:c=>`${c.displayName} ${c.model}`,onOpen:c=>r({name:"detail",price:c}),emptyLabel:"\u65E0\u5339\u914D\u7ED3\u679C"})})})}import{Box as Dn,Text as Vm}from"ink";import{useState as ki}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 Em(e,t){let o=await Ee(e.site);return Rm(Pm(Rn(),o).url,t)}async function Am(e,t,o,n){let r=await Ee(e.site),i=Pm(Rn(),r).url;t.apply({siteName:r.siteName,baseUrl:t.relayUrl(i),apiKey:o,model:t.requiresModel?n??null:null},t.resolveDir())}import{homedir as $m}from"os";import{join as wi,resolve as Pb}from"path";function ia(e,t){let o=e[t];return typeof o!="object"||o===null||Array.isArray(o)?null:o}function Xo(e,t){let o={...rr(e)??{}};for(let[n,r]of t){if(n.length===1){o[n[0]]=r;continue}let[i,s]=n,a=o[i]===void 0?{}:ia(o,i);if(a===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};c[s]=r,o[i]=c}ir(e,o,384)}function Nm(e,t){let o=rr(e);if(o===null)return null;let n=t.length===1?o[t[0]]:ia(o,t[0])?.[t[1]];return typeof n=="string"?n:null}function Im(e,t){let o=rr(e);if(o===null)return!1;if(t.length===1)return t[0]in o;let n=ia(o,t[0]);return n!==null&&t[1]in n}var Lm=["env","ANTHROPIC_BASE_URL"],Eb=["env","ANTHROPIC_AUTH_TOKEN"],Mm=["hasCompletedOnboarding"],sa=e=>wi(e.dir,"settings.json"),Om=e=>e.custom?wi(e.dir,".claude.json"):wi($m(),".claude.json"),Dm={id:"claude-code",label:"Claude Code",requiresModel:!1,resolveDir(){let e=process.env.CLAUDE_CONFIG_DIR;return e?{dir:Pb(e),custom:!0}:{dir:wi($m(),".claude"),custom:!1}},relayUrl:e=>e,configPaths:e=>[sa(e),Om(e)],read(e){return{baseUrl:Nm(sa(e),Lm),model:null}},apply(e,t){Xo(sa(t),[[Lm,e.baseUrl],[Eb,e.apiKey]]);let o=Om(t);Im(o,Mm)||Xo(o,[[Mm,!0]])}};import{homedir as Ab}from"os";import{join as ua,resolve as Nb}from"path";import{parse as Ib,patch as Lb}from"@decimalturn/toml-patch";import{parse as Mb}from"smol-toml";var Ob=["OPENAI_API_KEY"],Bm="model_provider",aa="model",ca=e=>ua(e.dir,"config.toml"),Fm=e=>ua(e.dir,"auth.json");function la(e,t){try{return Mb(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 $b(e,t){let o=ca(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=Gn(o)??"";n!==""&&la(n,o);let r=e.siteName.toLowerCase(),i=Ib(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[Bm]=r,i[aa]=e.model;let a=Lb(n,i,{inlineTableStart:2}),c=la(a,o);if(c[Bm]!==r||c[aa]!==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`);Li(o,a,384)}var Um={id:"codex",label:"Codex",requiresModel:!0,resolveDir(){let e=process.env.CODEX_HOME;return e?{dir:Nb(e),custom:!0}:{dir:ua(Ab(),".codex"),custom:!1}},relayUrl:e=>`${e}/v1`,configPaths:e=>[ca(e),Fm(e)],read(e){let t=ca(e),o=Gn(t),n=o===null?null:la(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?.[aa])}},apply(e,t){$b(e,t),Xo(Fm(t),[[Ob,e.apiKey]])}};var jm=[Dm,Um];var Db=6e3,Bb=2,Hm=e=>yt(`${e.url}/api/site-config`,{timeoutMs:Db});async function Fb(e){try{await Hm(e);let t=Number.POSITIVE_INFINITY;for(let o=0;o<Bb;o+=1){let n=Date.now();await Hm(e),t=Math.min(t,Date.now()-n)}return{line:e,latencyMs:t}}catch{return{line:e,latencyMs:null}}}async function qm(e){let t=[];for(let o of e)t.push(await Fb(o));return t}import{jsx as we,jsxs as uo}from"react/jsx-runtime";var Ub=10,jb=3,zm=4,Jm=e=>1+Math.max(1,Math.min(e,zm))+(e>zm?1:0);function Wm(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 Gm=e=>e.map(t=>({value:String(t.id),label:`${t.name} \xD7${t.multiplier}`})),Km=(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 Hb({lines:e,measured:t,effective:o,docsUrl:n,width:r,isActive:i,onPick:s}){let a=c=>{if(t===null)return"\u6D4B\u91CF\u4E2D";let l=t.find(d=>d.line.url===c.url);return l===void 0||l.latencyMs===null?"\u4E0D\u53EF\u8FBE":`${l.latencyMs} ms`};return uo(te,{title:"API \u63A5\u5165\u5730\u5740",note:o===void 0?void 0:`\u5F53\u524D ${o.name}`,width:r,children:[we(Ce,{retain:"lines",items:e,width:r-le,height:Jm(e.length),isActive:i,columns:[{label:"\u7EBF\u8DEF"},{label:"\u5EF6\u8FDF",align:"right"},{label:"\u8BF4\u660E",shrink:!0},{label:"\u72B6\u6001"}],row:c=>[c.name,a(c),c.description,o?.url===c.url?"\u4F7F\u7528\u4E2D":""],searchOf:c=>`${c.name} ${c.url}`,onOpen:s,emptyLabel:"\u7AD9\u70B9\u672A\u914D\u7F6E\u63A5\u5165\u7EBF\u8DEF\uFF0C\u8BF7\u8054\u7CFB\u7AD9\u70B9\u7BA1\u7406\u5458\u6DFB\u52A0"}),n!==null&&uo(Vm,{wrap:"truncate",color:u.faintForeground,children:["\u63A5\u5165\u6587\u6863 ",n]})]})}function Ym(){let e=F(),{width:t}=j(),o=oe(),[n,r]=ki({name:"list"}),[i,s]=ki(!1),[a,c]=ki(()=>Rn().line),[l,d]=ki(0),{busy:p,error:m,reset:f,fail:S,run:y}=pe(),g=X([e.revision],async()=>{let[R,A,q]=await Promise.all([bi(),hi(),Ee(e.ctx.site)]);return{tokens:R,groups:A,site:q}}),b=g.phase==="ready"?g.data.site.apiLines:[],x=X([l,b.map(R=>R.url).join("|")],()=>qm(b)),k=p!==null,h=n.name==="list"&&!k,w=R=>{r({name:"list"}),e.reload(),e.toast("ok",R)};z(R=>{if(R==="r"){d(A=>A+1),e.reload();return}i||(R==="n"?r({name:"create"}):R==="l"&&b.length>0&&s(!0))},h);let C=R=>{wr(A=>{A.line={name:R.name,url:R.url}}),c({name:R.name,url:R.url}),s(!1),e.toast("ok",`\u5DF2\u9009\u7528\u7EBF\u8DEF ${R.name}\uFF0C\u65B0\u5EFA\u4EE4\u724C\u5E76\u5199\u5165\u914D\u7F6E\u540E\u751F\u6548`)},M=(R,A,q)=>{y("\u6B63\u5728\u521B\u5EFA\u4EE4\u724C",()=>ym({name:R,groupId:A,quotaLimit:q}),{onSuccess:D=>{e.reload(),r({name:"created",token:D,secret:D.token})}})},U=R=>{y("\u6B63\u5728\u5220\u9664\u4EE4\u724C",()=>Sm(R.id),{onSuccess:()=>w("\u4EE4\u724C\u5DF2\u5220\u9664")})},T=(R,A)=>{y("\u6B63\u5728\u8BFB\u53D6\u5BA2\u6237\u7AEF\u914D\u7F6E",async()=>jm.map(q=>{let D=q.resolveDir(),Z=q.read(D);return{client:q,configured:Z.baseUrl!==null,paths:q.configPaths(D),model:Z.model}}),{failToast:!0,onSuccess:q=>r({name:"apply-pick",token:R,secret:A,targets:q})})},N=(R,A,q)=>{y("\u6B63\u5728\u5199\u5165",()=>Am(e.ctx,R,A,q),{failToast:!0,onSuccess:()=>{r({name:"list"}),e.toast("ok",Ue([`\u5DF2\u5199\u5165 ${R.label}`,q]))}})},_=(R,A)=>{let q=R.targets.find(D=>D.client.id===A);if(q!==void 0){if(!q.client.requiresModel){N(q.client,R.secret);return}y("\u6B63\u5728\u8BFB\u53D6\u53EF\u8DEF\u7531\u7684\u6A21\u578B",async()=>{let D=await Em(e.ctx,R.secret);if(D.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 D},{failToast:!0,onSuccess:D=>r({name:"apply-model",token:R.token,secret:R.secret,targets:R.targets,needs:q,models:D})})}},v=(R,A)=>{f(),r(R==="rename"?{name:"rename",token:A}:R==="regroup"?{name:"regroup",token:A}:R==="relimit"?{name:"relimit",token:A}:{name:"confirm-delete",token:A})},P=()=>{if(n.name==="list"){i?s(!1):e.pop();return}if(f(),n.name==="apply-pick"){r({name:"created",token:n.token,secret:n.secret});return}if(n.name==="apply-model"){r({name:"apply-pick",token:n.token,secret:n.secret,targets:n.targets});return}r({name:"list"})},I=()=>n.name!=="list"?["Esc \u8FD4\u56DE"]:i?["\u2191\u2193 \u79FB\u52A8","Enter \u9009\u7528","/ \u8FC7\u6EE4","r \u5237\u65B0","Esc \u8FD4\u56DE"]:["\u2191\u2193 \u79FB\u52A8","Enter \u64CD\u4F5C","n \u65B0\u5EFA","l \u63A5\u5165\u5730\u5740","/ \u8FC7\u6EE4","r \u5237\u65B0"];return n.name==="created"||n.name==="apply-pick"||n.name==="apply-model"?we(J,{hints:I(),onEscape:P,children:uo(Dn,{flexDirection:"column",children:[p!==null&&we(ot,{label:p}),n.name==="created"&&!k&&uo(Dn,{flexDirection:"column",children:[we(he,{tone:"ok",width:t,title:"\u4EE4\u724C\u5DF2\u521B\u5EFA",detail:"\u8BF7\u7ACB\u5373\u590D\u5236\u5E76\u59A5\u5584\u4FDD\u5B58\u3002\u51FA\u4E8E\u5B89\u5168\u8003\u8651\uFF0C\u5B8C\u6574\u4EE4\u724C\u53EA\u663E\u793A\u8FD9\u4E00\u6B21\uFF0C\u5173\u95ED\u540E\u5C06\u65E0\u6CD5\u518D\u6B21\u67E5\u770B\u3002"}),we(Dn,{marginTop:1,children:we(Vm,{color:u.accent,children:n.secret})}),we(Dn,{marginTop:1,children:we(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"}):T(n.token,n.secret)}})})]}),n.name==="apply-pick"&&!k&&we(te,{title:"\u5199\u5165\u914D\u7F6E",note:n.token.name,width:t,children:we(ae,{width:t-le,height:o-mt,retain:"apply",items:n.targets.map(R=>({value:R.client.id,label:R.client.label,badge:R.configured?"\u5DF2\u914D\u7F6E":"\u672A\u914D\u7F6E",badgeTone:R.configured?"accent":void 0,hint:R.paths.join(" ")})),onSelect:R=>_(n,R)})}),n.name==="apply-model"&&!k&&we(G,{title:`${n.needs.client.label} \u9ED8\u8BA4\u6A21\u578B`,width:t,submitLabel:"\u5199\u5165",error:m,fields:[{kind:"select",name:"model",label:"\u6A21\u578B",options:n.models.map(R=>({value:R,label:R})),initial:n.needs.model!==null&&n.models.includes(n.needs.model)?n.needs.model:n.models[0],hint:`${n.needs.client.label} \u7684\u914D\u7F6E\u91CC\u5FC5\u987B\u5199\u6B7B\u4E00\u4E2A\u6A21\u578B`}],onCancel:P,onSubmit:R=>{let A=R.model;if(A===void 0||A===""){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u6A21\u578B");return}N(n.needs.client,n.secret,A)}})]})}):we(J,{hints:I(),onEscape:P,children:we(Y,{state:g,loading:"\u6B63\u5728\u8BFB\u53D6\u4EE4\u724C",width:t,children:({tokens:R,groups:A,site:q})=>{let D=V+mt+Jm(q.apiLines.length)+(q.docsEnabled?1:0),Z=Math.max(jb,o-(n.name==="list"?D:Ub));return uo(Dn,{flexDirection:"column",children:[we(Dn,{flexDirection:"column",marginBottom:V,children:we(Ce,{retain:"list",items:R,width:t,height:Z,isActive:h&&!i,columns:[{label:"\u540D\u79F0",shrink:!0},{label:"\u5206\u7EC4"},{label:"\u5DF2\u6D88\u8D39",align:"right"},{label:"\u8D39\u7528\u9650\u5236",align:"right"},{label:"\u5BC6\u94A5"}],row:H=>{let re=ce(H.usedQuota,q.quotaPerUsd);return[H.name,H.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664",H.quotaLimit!==null&&H.usedQuota>=H.quotaLimit?{text:re,tone:"danger"}:re,H.quotaLimit===null?"\u4E0D\u9650":ce(H.quotaLimit,q.quotaPerUsd),dr(H.keyPrefix,H.keySuffix)]},searchOf:H=>`${H.name} ${H.groupName??""}`,onOpen:H=>r({name:"actions",token:H}),emptyLabel:"\u6682\u65E0\u4EE4\u724C",emptyDescription:"\u521B\u5EFA\u4E00\u4E2A\u4EE4\u724C\u5373\u53EF\u5F00\u59CB\u8C03\u7528\u4E2D\u8F6C API"})}),p!==null&&(n.name==="list"||n.name==="actions"||n.name==="confirm-delete")&&we(ot,{label:p}),n.name==="list"&&we(Hb,{lines:q.apiLines,measured:x.phase==="ready"?x.data:null,effective:a??q.apiLines[0],docsUrl:q.docsEnabled?`${e.ctx.site}/docs`:null,width:t,isActive:h&&i,onPick:C}),n.name==="actions"&&!k&&uo(te,{title:n.token.name,width:t,children:[we(Le,{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",dr(n.token.keyPrefix,n.token.keySuffix)]]}),we(Dn,{marginTop:1,children:we(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:H=>v(H,n.token)})})]}),n.name==="create"&&we(G,{title:"\u521B\u5EFA\u4EE4\u724C",width:t,submitLabel:"\u521B\u5EFA",error:m,busy:k,busyLabel:"\u6B63\u5728\u521B\u5EFA\u4EE4\u724C",fields:[{kind:"text",name:"name",label:"\u540D\u79F0",placeholder:"\u8BF7\u8F93\u5165\u4EE4\u724C\u540D\u79F0"},{kind:"select",name:"group",label:"\u5206\u7EC4",options:Gm(A),initial:String(A[0]?.id??""),hint:H=>Km(A,H)},{kind:"text",name:"limit",label:"\u8D39\u7528\u9650\u5236",placeholder:"\u7F8E\u5143\u91D1\u989D\uFF0C\u7559\u7A7A\u5219\u4E0D\u9650\u5236",hint:"\u7D2F\u8BA1\u6D88\u8D39\u8FBE\u5230\u8D39\u7528\u4E0A\u9650\u540E\uFF0C\u8BE5\u4EE4\u724C\u7684\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD",optional:!0}],onCancel:P,onSubmit:H=>{let re=(H.name??"").trim();if(re===""){S("\u8BF7\u586B\u5199\u4EE4\u724C\u540D\u79F0");return}let ke=A.find(B=>String(B.id)===H.group);if(ke===void 0){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}let E=Wm(H.limit??"",q.quotaPerUsd);if(E==="invalid"){S("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}M(re,ke.id,E)}}),n.name==="rename"&&we(G,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:m,busy:k,busyLabel:"\u6B63\u5728\u4FDD\u5B58",fields:[{kind:"text",name:"name",label:"\u540D\u79F0",initial:n.token.name,placeholder:"\u8BF7\u8F93\u5165\u4EE4\u724C\u540D\u79F0"}],onCancel:P,onSubmit:H=>{let re=(H.name??"").trim();if(re===""){S("\u8BF7\u586B\u5199\u4EE4\u724C\u540D\u79F0");return}y("\u6B63\u5728\u4FDD\u5B58",()=>yi(n.token.id,{name:re}),{onSuccess:()=>w("\u5DF2\u4FDD\u5B58")})}}),n.name==="regroup"&&we(G,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:m,busy:k,busyLabel:"\u6B63\u5728\u4FDD\u5B58",fields:[{kind:"select",name:"group",label:"\u5206\u7EC4",options:Gm(A),initial:String(n.token.groupId??A[0]?.id??""),hint:n.token.groupId===null?"\u6240\u5C5E\u5206\u7EC4\u5DF2\u88AB\u5220\u9664\uFF0C\u8BE5\u4EE4\u724C\u7684\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u5206\u7EC4":H=>Km(A,H)}],onCancel:P,onSubmit:H=>{let re=A.find(ke=>String(ke.id)===H.group);if(re===void 0){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}y("\u6B63\u5728\u4FDD\u5B58",()=>yi(n.token.id,{groupId:re.id}),{onSuccess:()=>w("\u5DF2\u4FDD\u5B58")})}}),n.name==="relimit"&&we(G,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:m,busy:k,busyLabel:"\u6B63\u5728\u4FDD\u5B58",fields:[{kind:"text",name:"limit",label:"\u8D39\u7528\u9650\u5236",initial:n.token.quotaLimit===null?"":String(Math.round(n.token.quotaLimit/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:P,onSubmit:H=>{let re=Wm(H.limit??"",q.quotaPerUsd);if(re==="invalid"){S("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}y("\u6B63\u5728\u4FDD\u5B58",()=>yi(n.token.id,{quotaLimit:re}),{onSuccess:()=>w("\u5DF2\u4FDD\u5B58")})}}),n.name==="confirm-delete"&&!k&&we(Je,{width:t,title:"\u5220\u9664\u4EE4\u724C",detail:`\u5220\u9664\u300C${n.token.name}\u300D\u540E\u8BE5\u4EE4\u724C\u7ACB\u5373\u5931\u6548\uFF0C\u4F7F\u7528\u5B83\u7684\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD`,confirmLabel:"\u5220\u9664",error:m,onConfirm:()=>U(n.token),onCancel:P})]})}})})}import{Box as ma}from"ink";import{jsx as Ot,jsxs as qb}from"react/jsx-runtime";var Xm=[["\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"]],Qm=[["\u70B9\u51FB / \u6EDA\u8F6E","\u9009\u4E2D\u6253\u5F00\u3001\u6EDA\u52A8"],["Option / Alt \u62D6\u9009","\u590D\u5236\u6587\u672C"]],Zm=[["\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 ed({width:e,height:t}){let o=e-le,n=[["\u7248\u672C",`${gt} v${ht}`],["\u672C\u5730\u5B58\u50A8",Gt()]],r=[Xm,Qm,Zm,n],s=(a=>r.reduce((c,l)=>c+ut+a+_u(l.length,o),V*(r.length-1)))(He)<=t?He:0;return qb(Kc,{height:t,children:[Ot(te,{title:"\u901A\u7528",width:e,gap:s,children:Ot(Le,{items:Xm,width:o})}),Ot(ma,{marginTop:V,flexDirection:"column",children:Ot(te,{title:"\u9F20\u6807",width:e,gap:s,children:Ot(Le,{items:Qm,width:o})})}),Ot(ma,{marginTop:V,flexDirection:"column",children:Ot(te,{title:"\u6587\u672C\u8F93\u5165",width:e,gap:s,children:Ot(Le,{items:Zm,width:o})})}),Ot(ma,{marginTop:V,flexDirection:"column",children:Ot(te,{title:"\u5173\u4E8E",width:e,gap:s,children:Ot(Le,{items:n,width:o})})})]})}import{jsx as da}from"react/jsx-runtime";function td(){let e=F(),{width:t}=j(),o=oe();return un(e.pop),da(An,{header:da(Jr,{trail:["CodeFlow","\u952E\u4F4D\u5E2E\u52A9"],width:t,onBack:e.pop,isActive:!0}),hints:["Esc \u8FD4\u56DE"],children:da(ed,{width:t,height:o})})}import{Box as nd,Text as zb}from"ink";import{jsx as Qo,jsxs as Wb}from"react/jsx-runtime";var od=[{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 rd(){let e=F(),{width:t}=j(),o=qo(0),n=V+1+V+od.length,r=Wr(t)&&o-zr>=n;return Wb(An,{header:r?Qo(Gr,{width:t}):null,hints:["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","? \u5E2E\u52A9","q \u9000\u51FA"],children:[Qo(nd,{marginTop:1,children:Qo(zb,{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"})}),Qo(nd,{marginTop:1,children:Qo(ae,{items:od,width:t,retain:"menu",onSelect:i=>e.push(i)})})]})}import{Box as vi,Text as Bn}from"ink";import{useState as sd}from"react";import{z as Qe}from"zod";var Gb=Qe.object({inviteCode:Qe.string(),invitedCount:Qe.number(),totalReward:Qe.number(),rewards:Qe.object({firstInviterPercent:Qe.number(),firstInviteePercent:Qe.number(),subsequentInviterPercent:Qe.number()}),items:Qe.array(Qe.object({id:Qe.number().int(),rewardType:Ua,rewardQuota:Qe.number(),rewardQuotaReversed:Qe.number(),inviterUsername:Qe.string(),inviteeUsername:Qe.string(),createdAt:Qe.string()}))}),id=()=>O(Gb,"/invite");import{jsx as et,jsxs as _i}from"react/jsx-runtime";var Kb=tt(Fi,hr,"\u5168\u90E8\u7C7B\u578B"),ad=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 cd(){let e=F(),{width:t}=j(),o=oe(),[n,r]=sd("main"),[i,s]=sd(""),a=X([e.revision],async()=>{let[l,d]=await Promise.all([id(),Ee(e.ctx.site)]);return{invite:l,site:d}});z(l=>{n==="main"&&(l==="r"?e.reload():l==="f"&&r("filter"))});let c=()=>{n==="main"?e.pop():r("main")};return et(J,{hints:n==="main"?["\u2191\u2193 \u6EDA\u52A8","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:c,children:et(Y,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u9080\u8BF7\u4FE1\u606F",width:t,children:({invite:l,site:d})=>{if(n==="filter")return et(G,{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:b=>{s(b.type??""),r("main")}});let p=t-le,m=Vb(l.rewards),f=i===""?l.items:l.items.filter(b=>b.rewardType===i),S=b=>en(2,t)+V+ut+b+2+V+ut+b+m.length+V+ut+b,y=o-S(He)>=ad?He:0,g=Math.max(ad,o-S(y));return _i(vi,{flexDirection:"column",children:[et(at,{width:t,tiles:[{label:"\u5DF2\u9080\u8BF7\u4EBA\u6570",value:_e(l.invitedCount)},{label:"\u7D2F\u8BA1\u5956\u52B1\u989D\u5EA6",value:ce(l.totalReward,d.quotaPerUsd)}]}),et(vi,{marginTop:1,flexDirection:"column",children:_i(te,{title:"\u6211\u7684\u9080\u8BF7",width:t,gap:y,children:[_i(Bn,{wrap:"truncate",children:[et(Bn,{color:u.mutedForeground,children:"\u6211\u7684\u9080\u8BF7\u7801 "}),et(Bn,{color:u.accent,children:l.inviteCode})]}),_i(Bn,{wrap:"truncate",children:[et(Bn,{color:u.mutedForeground,children:"\u9080\u8BF7\u94FE\u63A5 "}),et(Bn,{color:u.accent,children:`${e.ctx.site}/register?invite=${l.inviteCode}`})]})]})}),et(vi,{marginTop:1,flexDirection:"column",children:et(te,{title:"\u5956\u52B1\u89C4\u5219",width:t,gap:y,children:m.map((b,x)=>et(Bn,{wrap:"truncate",color:u.mutedForeground,children:b},x))})}),et(vi,{marginTop:1,flexDirection:"column",children:et(te,{title:"\u9080\u8BF7\u5956\u52B1\u8BB0\u5F55",note:i===""?void 0:hr(i),width:t,gap:y,children:et(Ce,{retain:"list",items:f,width:p,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 x=b.rewardQuota-b.rewardQuotaReversed,k=b.rewardQuotaReversed>0?`\u9000\u6B3E\u51B2\u51CF -${ce(b.rewardQuotaReversed,d.quotaPerUsd)}`:"";return[ee(b.createdAt),b.rewardType==="first_invitee"?b.inviterUsername:b.inviteeUsername,hr(b.rewardType),Ue([ce(x,d.quotaPerUsd),k])]},emptyLabel:i===""?"\u6682\u65E0\u5956\u52B1\u8BB0\u5F55":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u597D\u53CB\u901A\u8FC7\u4F60\u7684\u9080\u8BF7\u7801\u6CE8\u518C\u5E76\u5B8C\u6210\u5145\u503C\u540E\uFF0C\u5956\u52B1\u4F1A\u663E\u793A\u5728\u8FD9\u91CC":void 0})})})]})}})})}import{useState as xd}from"react";import{z as Se}from"zod";var Jb=12e4,Yb=Se.object({id:Se.number().int(),orderNo:Se.string(),amountCny:Se.number().int()}),ld=()=>O(Se.array(Yb),"/invoices/eligible-orders"),pa=Se.object({id:Se.number().int(),type:Di,title:Se.string(),taxId:Se.string().nullable(),invoiceNo:Se.string().nullable(),remark:Se.string().nullable(),amountCny:Se.number().int(),status:$a,rejectReason:Se.string().nullable(),rejectedAt:Se.string().nullable(),issuedAt:Se.string().nullable(),createdAt:Se.string()}),Xb=pa.extend({hasFile:Se.boolean(),orders:Se.array(Se.object({orderNo:Se.string(),amountCny:Se.number().int()}))}),ud=()=>O(Se.array(pa),"/invoices"),md=e=>O(Xb,`/invoices/${e}`),dd=e=>O(pa,"/invoices",{method:"POST",json:e}),pd=e=>kr(`/invoices/${e}/file`,{timeoutMs:Jb}),fa=Se.object({id:Se.number().int(),type:Di,title:Se.string(),taxId:Se.string().nullable()}),Ri=()=>O(Se.array(fa),"/invoices/profiles"),fd=e=>O(fa,"/invoices/profiles",{method:"POST",json:e}),gd=(e,t)=>O(fa,`/invoices/profiles/${e}`,{method:"PATCH",json:t}),hd=e=>O(xe,`/invoices/profiles/${e}`,{method:"DELETE"}).then(()=>{});import{Box as Qb,Text as Fn,useInput as Zb}from"ink";import{useEffect as ey,useState as ty}from"react";import{jsx as Zo,jsxs as ga}from"react/jsx-runtime";var ny="[x]",oy="[ ]",bd=4,Ci=2,yd=2;function Sd({items:e,columns:t,row:o,selected:n,onToggle:r,onToggleAll:i,onSubmit:s,width:a,height:c,emptyLabel:l}){let[d,p]=ty(0),m=Math.max(1,c-1),f=e.length>m?Math.max(1,m-1):m;ey(()=>{p(h=>Math.min(h,Math.max(0,e.length-1)))},[e.length]);let S=Ts(d,f),y=h=>{e.length!==0&&p(w=>(w+h+e.length)%e.length)};Zb((h,w)=>{if(w.upArrow){y(-1);return}if(w.downArrow){y(1);return}if(w.return){s();return}h===" "&&e.length>0&&r(d)}),z(h=>{if(h==="k"){y(-1);return}if(h==="j"){y(1);return}h==="a"&&i()});let g=h=>{let w=S+h-1;return w>=0&&w<e.length?w:null},b=We({onWheel:y,onClick:({row:h})=>{let w=g(h);w!==null&&(p(w),r(w))},onHover:({row:h})=>{let w=g(h);w!==null&&p(w)}}),x=Is(t,e.map(h=>o(h)),a-Ci-bd),k=e.slice(S,S+f);return ga(Qb,{ref:b,flexDirection:"column",children:[ga(Fn,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(Ci+bd),t.map((h,w)=>h.align==="right"?mn(h.label,x[w]??0):De(h.label,x[w]??0)).join(" ".repeat(yd))]}),e.length===0?Zo(Fn,{color:u.faintForeground,children:`${" ".repeat(Ci)}${l}`}):k.map((h,w)=>{let C=S+w,M=C===d,U=n.has(C),T=M?u.accent:u.foreground,N=o(h);return ga(Fn,{wrap:"truncate",children:[Zo(Fn,{color:u.accent,children:M?`${Q.cursor} `:" "}),Zo(Fn,{color:U?u.accent:T,bold:M,children:`${U?ny:oy} `}),t.map((_,v)=>{let P=_.align==="right"?mn(N[v]??"",x[v]??0):De(N[v]??"",x[v]??0);return Zo(Fn,{color:T,bold:M,children:v>0?`${" ".repeat(yd)}${P}`:P},_.label)})]},C)}),(S>0||S+f<e.length)&&Zo(Fn,{color:u.faintForeground,children:`${" ".repeat(Ci)}${S+1}-${Math.min(S+f,e.length)} / ${e.length}`})]})}import{jsx as mo}from"react/jsx-runtime";function Td(){let e=F(),{width:t}=j(),o=oe(),[n,r]=xd({name:"pick"}),[i,s]=xd(new Set),{busy:a,error:c,reset:l,run:d}=pe(),p=X([e.revision],async()=>{let[S,y]=await Promise.all([ld(),Ri()]);return{orders:S,profiles:y}});z(S=>{n.name==="pick"&&S==="r"&&e.reload()});let m=()=>{n.name==="pick"?e.pop():n.name==="preset"?r({name:"pick"}):(l(),r({name:"preset"}))},f=(S,y,g)=>{let b=(g.remark??"").trim(),x=S.filter(k=>i.has(k.id)).map(k=>k.id);d("\u6B63\u5728\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7",()=>dd({orderIds:x,type:y.type,title:y.title,taxId:y.taxId,remark:b===""?null:b}),{onSuccess:()=>{e.toast("ok","\u5DF2\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7"),e.pop()}})};return mo(J,{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:m,children:mo(Y,{state:p,loading:"\u6B63\u5728\u8BFB\u53D6\u53EF\u5F00\u7968\u8BA2\u5355",width:t,children:({orders:S,profiles:y})=>{if(n.name==="pick")return S.length===0?mo(he,{tone:"info",width:t,title:"\u6682\u65E0\u53EF\u5F00\u7968\u8BA2\u5355",detail:"\u5B8C\u6210\u5145\u503C\u5E76\u652F\u4ED8\u540E\uFF0C\u8BA2\u5355\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}):mo(Sd,{items:S,width:t,height:o,columns:[{label:"\u8BA2\u5355\u53F7",shrink:!0},{label:"\u91D1\u989D",align:"right"}],row:g=>[g.orderNo,be(g.amountCny)],selected:new Set(S.flatMap((g,b)=>i.has(g.id)?[b]:[])),onToggle:g=>{let b=S[g]?.id;b!==void 0&&s(x=>{let k=new Set(x);return k.has(b)?k.delete(b):k.add(b),k})},onToggleAll:()=>s(g=>S.every(b=>g.has(b.id))?new Set:new Set(S.map(b=>b.id))),onSubmit:()=>{if(!S.some(g=>i.has(g.id))){e.toast("warn","\u8BF7\u5148\u52FE\u9009\u8981\u5F00\u7968\u7684\u8BA2\u5355");return}if(y.length===0){e.toast("warn","\u6682\u65E0\u5E38\u7528\u5F00\u7968\u4FE1\u606F\uFF0C\u8FD4\u56DE\u540E\u6309 p \u65B0\u589E");return}r({name:"preset"})},emptyLabel:"\u6682\u65E0\u53EF\u5F00\u7968\u8BA2\u5355"});if(n.name==="preset"){let g=[{heading:"\u5E38\u7528\u4FE1\u606F"},...y.map(b=>({value:b,label:`${_n(b.type)} \xB7 ${b.title}`,hint:b.taxId??void 0}))];return mo(ae,{items:g,width:t,height:o,onSelect:b=>r({name:"remark",profile:b})})}return mo(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:m,onSubmit:g=>f(S,n.profile,g)})}})})}import{Box as ha}from"ink";import{useState as ry}from"react";function wd(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 kd=e=>[{kind:"select",name:"type",label:"\u7C7B\u578B",options:[{value:"general",label:Ro("general")},{value:"special",label:Ro("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 nn,jsxs as vd}from"react/jsx-runtime";var iy=8,sy=3;function _d(){let e=F(),{width:t}=j(),o=oe(),[n,r]=ry({name:"list"}),{busy:i,error:s,reset:a,fail:c,run:l}=pe(),d=X([e.revision],Ri),p=i!==null,m=n.name==="list"&&!p;z(S=>{S==="r"?e.reload():S==="n"&&r({name:"create"})},m);let f=()=>{n.name==="list"?e.pop():(a(),r({name:"list"}))};return nn(J,{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:f,children:nn(Y,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u5E38\u7528\u5F00\u7968\u4FE1\u606F",width:t,children:S=>{let y=n.name==="list"?o:Math.max(sy,o-iy);return vd(ha,{flexDirection:"column",children:[nn(ha,{marginBottom:n.name==="list"?0:1,children:nn(Ce,{retain:"list",items:S,width:t,height:y,isActive:m,columns:[{label:"\u7C7B\u578B"},{label:"\u62AC\u5934",shrink:!0},{label:"\u7A0E\u53F7"}],row:g=>[_n(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"&&!p&&vd(te,{title:n.profile.title,width:t,children:[nn(Le,{width:t-le,items:[["\u7C7B\u578B",Ro(n.profile.type)],["\u7A0E\u53F7",n.profile.taxId??"\u2014"]]}),nn(ha,{marginTop:1,children:nn(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")&&nn(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:p,busyLabel:i??"\u6B63\u5728\u4FDD\u5B58",error:s,fields:kd(n.name==="edit"?n.profile:null),onCancel:f,onSubmit:g=>{let b=wd(g,c);if(b===null)return;let x=n.name==="edit"?()=>gd(n.profile.id,b):()=>fd(b);l("\u6B63\u5728\u4FDD\u5B58",x,{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u4FDD\u5B58")}})}}),n.name==="confirm-delete"&&nn(Je,{width:t,title:"\u5220\u9664\u5E38\u7528\u5F00\u7968\u4FE1\u606F",detail:`\u786E\u8BA4\u5220\u9664\u300C${n.profile.title}\u300D\uFF1F`,confirmLabel:"\u5220\u9664",busy:i,error:s,onConfirm:()=>l("\u6B63\u5728\u5220\u9664",()=>hd(n.profile.id),{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u5220\u9664")}}),onCancel:f})]})}})})}import{Box as er,Text as po}from"ink";import{useState as ba}from"react";import{jsx as qe,jsxs as Rd}from"react/jsx-runtime";var ay=tt($i,fr,"\u5168\u90E8\u72B6\u6001");function cy({id:e,width:t}){let o=F(),n=X([e,o.revision],()=>md(e)),r=t-le,[i,s]=ba(null),[a,c]=ba(null),l=n.phase==="ready"?n.data:null;return z(d=>{if(d!=="d"||l===null||a!==null)return;let p=l.invoiceNo;!l.hasFile||p===null||(s(null),c(p))}),qe(Y,{state:n,loading:"\u6B63\u5728\u8BFB\u53D6\u53D1\u7968\u8BE6\u60C5",width:t,children:d=>{if(a!==null)return qe(si,{title:"\u4FDD\u5B58\u53D1\u7968\u6587\u4EF6",width:t,fileName:`\u53D1\u7968-${a}.pdf`,download:()=>pd(d.id),onCancel:()=>c(null),onSaved:S=>{c(null),s(S),o.toast("ok","\u53D1\u7968\u5DF2\u4FDD\u5B58")}});let p=fr(d.status),m=Xe(p),f=[["\u62AC\u5934",d.title],...d.taxId===null?[]:[["\u7A0E\u53F7",d.taxId]],...d.invoiceNo===null?[]:[["\u53D1\u7968\u53F7\u7801",d.invoiceNo]],...d.remark===null?[]:[["\u5907\u6CE8",d.remark]],["\u7533\u8BF7\u65F6\u95F4",ee(d.createdAt)],...d.rejectReason===null?[]:[["\u9A73\u56DE\u539F\u56E0",d.rejectReason]],...d.rejectedAt===null?[]:[["\u9A73\u56DE\u65F6\u95F4",ee(d.rejectedAt)]],...d.issuedAt===null?[]:[["\u5F00\u7968\u65F6\u95F4",ee(d.issuedAt)]]];return Rd(te,{title:d.title,note:Kt(d.createdAt),width:t,children:[Rd(po,{wrap:"truncate",children:[qe(po,{color:u.mutedForeground,children:_n(d.type)}),qe(po,{color:m===void 0?u.mutedForeground:Ge[m],children:` ${p.label}`})]}),qe(er,{marginTop:1,children:qe(at,{width:r,maxPerRow:2,tiles:[{label:"\u91D1\u989D",value:be(d.amountCny)},{label:"\u5173\u8054\u8BA2\u5355",value:`${d.orders.length} \u7B14`}]})}),qe(er,{marginTop:1,children:qe(Le,{width:r,items:f})}),qe(er,{marginTop:1,flexDirection:"column",children:d.orders.map(S=>qe(po,{wrap:"truncate",color:u.faintForeground,children:Ue([S.orderNo,be(S.amountCny)])},S.orderNo))}),d.hasFile&&i===null&&qe(er,{marginTop:1,children:qe(po,{wrap:"truncate",color:u.faintForeground,children:"\u6309 d \u4E0B\u8F7D\u53D1\u7968\u6587\u4EF6"})}),i!==null&&qe(er,{marginTop:1,children:qe(po,{wrap:"truncate",color:u.faintForeground,children:`\u5DF2\u4FDD\u5B58\u5230 ${i}`})})]})}})}function Cd(){let e=F(),{width:t}=j(),o=oe(),[n,r]=ba({name:"list"}),[i,s]=Ze("status",()=>""),a=X([e.revision],ud);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 qe(J,{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:qe(Y,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u5F00\u7968\u8BB0\u5F55",width:t,children:l=>{if(n.name==="filter")return qe(G,{title:"\u7B5B\u9009\u53D1\u7968",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:ay,initial:i}],onCancel:c,onSubmit:p=>{s(p.status??""),r({name:"list"})}});if(n.name==="detail")return qe(cy,{id:n.id,width:t});let d=i===""?l:l.filter(p=>p.status===i);return qe(Ce,{retain:"list",items:d,width:t,height:o,columns:[{label:"\u65F6\u95F4"},{label:"\u62AC\u5934",shrink:!0},{label:"\u7C7B\u578B"},{label:"\u91D1\u989D",align:"right"},{label:"\u72B6\u6001",align:"right"}],row:p=>[Kt(p.createdAt),p.title,_n(p.type),be(p.amountCny),Yt(fr(p.status))],searchOf:p=>p.title,onOpen:p=>r({name:"detail",id:p.id}),emptyLabel:i===""?"\u6682\u65E0\u5F00\u7968\u8BB0\u5F55":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u6309 n \u4E3A\u5DF2\u4ED8\u6B3E\u8BA2\u5355\u7533\u8BF7\u5F00\u7968":void 0})}})})}import{Box as ly}from"ink";import{useState as Pd}from"react";import{jsx as fo,jsxs as my}from"react/jsx-runtime";var uy=tt(Bi,os,"\u5168\u90E8\u7C7B\u578B");function Ed(){let e=F(),{width:t}=j(),o=oe(),[n,r]=Pd("list"),[i,s]=Pd(""),a=X([e.revision],()=>Ee(e.ctx.site)),c=fn([e.revision,i],(p,m)=>am({page:p,pageSize:m,...i===""?{}:{type:i}}),{retain:"page"}),l=n==="list";z((p,m)=>{l&&(p==="r"?e.reload():p==="f"?r("filter"):m.leftArrow?c.go(-1):m.rightArrow&&c.go(1))});let d=()=>{n==="list"?e.pop():r("list")};return fo(J,{hints:l?["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:d,children:fo(Y,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:p=>n==="filter"?fo(G,{title:"\u7B5B\u9009\u6D41\u6C34",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"type",label:"\u7C7B\u578B",options:uy,initial:i}],onCancel:d,onSubmit:m=>{s(m.type??""),c.reset(),r("list")}}):fo(Y,{state:c.state,loading:"\u6B63\u5728\u8BFB\u53D6\u989D\u5EA6\u6D41\u6C34",width:t,children:m=>my(ly,{flexDirection:"column",children:[fo(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:f=>{let S=Xn(f.amount,p.quotaPerUsd);return[ee(f.createdAt),os(f.type),{text:f.amount>=0?`+${S}`:S,tone:f.amount>=0?"success":"danger"},ce(f.balanceAfter,p.quotaPerUsd),Ue([Sc(f.refType),f.refId??""])]},emptyLabel:i===""?"\u6682\u65E0\u989D\u5EA6\u6D41\u6C34":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u5145\u503C\u6216\u6D88\u8017\u540E\uFF0C\u6BCF\u7B14\u53D8\u52A8\u4F1A\u8BB0\u5F55\u5728\u8FD9\u91CC":void 0}),fo(gn,{page:c.page,pages:c.pages,total:c.total,width:t})]})})})})}import{Box as $d}from"ink";import{useState as dy}from"react";import{z as ya}from"zod";var tr={recharge:"/recharge",subscription:"/subscriptions"};function Ad(e){return e==="recharge"?To:wo}var Pi=(e,t)=>O(Ad(e),`${tr[e]}/orders/${t}`),Nd=(e,t)=>O(ya.object({order:Ad(e),qrCode:ya.string()}),`${tr[e]}/orders/${t}/pay`,{method:"POST"}),Id=(e,t)=>O(ya.array(oc),`${tr[e]}/orders/${t}/refunds`),Ld=(e,t,o)=>O(xe,`${tr[e]}/orders/${t}/refund-request`,{method:"POST",json:{reason:o}}).then(()=>{}),Md=(e,t)=>O(xe,`${tr[e]}/orders/${t}/refund-request/cancel`,{method:"POST"}).then(()=>{});import{Box as Ei,Text as Wt}from"ink";import{jsx as _t,jsxs as nr}from"react/jsx-runtime";function Od({order:e,refunds:t,quotaPerUsd:o,width:n}){let r=n-le,i=ln(e.status),s=Xe(i),a=[["\u521B\u5EFA\u65F6\u95F4",ee(e.createdAt)]];return e.succeededRefundCny>0&&a.push(["\u5DF2\u9000\u91D1\u989D",be(e.succeededRefundCny)]),e.kind==="recharge"&&e.refundedQuota>0&&a.push(["\u6263\u56DE\u989D\u5EA6",ce(e.refundedQuota,o)]),e.pendingRefundCny>0&&a.push(["\u5F85\u786E\u8BA4\u9000\u6B3E",be(e.pendingRefundCny)]),nr(te,{title:e.kind==="recharge"?"\u5145\u503C":e.planName,note:e.orderNo,width:n,children:[nr(Wt,{wrap:"truncate",children:[_t(Wt,{color:s===void 0?u.mutedForeground:Ge[s],children:i.label}),e.kind==="subscription"&&_t(Wt,{color:u.faintForeground,children:` ${e.renewal?"\u7EED\u8D39":"\u65B0\u8D2D"}`})]}),_t(Ei,{marginTop:1,children:_t(at,{width:r,maxPerRow:2,tiles:e.kind==="recharge"?[{label:"\u91D1\u989D",value:be(e.amountCny)},{label:"\u5230\u8D26\u989D\u5EA6",value:ce(e.quota,o)}]:[{label:"\u91D1\u989D",value:be(e.amountCny)},{label:"\u8BA2\u9605\u65F6\u957F",value:`${e.grantedDurationDays} \u5929`}]})}),_t(Ei,{marginTop:1,children:_t(Le,{width:r,items:a})}),t!==null&&nr(Ei,{marginTop:1,flexDirection:"column",children:[_t(Wt,{color:u.mutedForeground,children:"\u9000\u6B3E\u8BB0\u5F55"}),t.length===0?_t(Wt,{color:u.faintForeground,children:"\u6682\u65E0\u9000\u6B3E\u8BB0\u5F55"}):t.map(c=>{let l=xc(c.status),d=Xe(l);return nr(Ei,{flexDirection:"column",children:[nr(Wt,{wrap:"truncate",children:[_t(Wt,{color:u.foreground,children:be(c.amountCny)}),_t(Wt,{color:d===void 0?u.mutedForeground:Ge[d],children:` ${l.label}`}),_t(Wt,{color:u.faintForeground,children:` ${ee(c.createdAt)}`})]}),(c.reason!==null||c.rejectReason!==null||c.refundTradeNo!==null)&&_t(Wt,{wrap:"truncate",color:u.faintForeground,children:` ${Ue([c.reason??"",c.rejectReason===null?"":`\u9A73\u56DE\uFF1A${c.rejectReason}`,c.refundTradeNo??""])}`})]},c.id)})]})]})}import{jsx as Un,jsxs as fy}from"react/jsx-runtime";var py=new Set(["pending","expired","failed"]);function Ai(e){let t=ln(e.status);return e.pendingRefundCny>0?{badge:`${t.label}\uFF08\u5F85\u786E\u8BA4 ${be(e.pendingRefundCny)}\uFF09`,badgeTone:"warning"}:{badge:t.label,badgeTone:Xe(t)}}function go(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 Dd({params:e}){let t=F(),{width:o}=j(),[n,r]=dy("main"),{busy:i,error:s,reset:a,fail:c,run:l}=pe(),d=X([e.kind,e.orderNo,t.revision],async()=>{let[y,g]=await Promise.all([Pi(e.kind,e.orderNo),Ee(t.ctx.site)]),b=py.has(y.status)?null:await Id(e.kind,e.orderNo);return{order:{kind:e.kind,...y},refunds:b,site:g}});z(y=>{n==="main"&&i===null&&y==="r"&&t.reload()});let p=()=>{n==="main"?t.pop():(a(),r("main"))},m=y=>{l("\u6B63\u5728\u62C9\u8D77\u652F\u4ED8",()=>Nd(e.kind,e.orderNo),{onSuccess:({order:g,qrCode:b})=>{t.push("pay",go({kind:e.kind,...g},b,y.quotaPerUsd))}})},f=y=>{l("\u6B63\u5728\u63D0\u4EA4\u9000\u6B3E\u7533\u8BF7",()=>Ld(e.kind,e.orderNo,y),{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",()=>Md(e.kind,e.orderNo),{onSuccess:()=>{r("main"),t.reload(),t.toast("ok","\u5DF2\u64A4\u9500\u9000\u6B3E\u7533\u8BF7")}})};return Un(J,{trail:["\u8BA2\u5355\u8BE6\u60C5"],hints:n==="main"?["\u2191\u2193 \u79FB\u52A8","Enter \u6267\u884C","r \u5237\u65B0"]:[],onEscape:p,children:Un(Y,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u5355",width:o,children:({order:y,refunds:g,site:b})=>{if(n==="refund")return Un(G,{title:`\u7533\u8BF7\u9000\u6B3E \u2014 ${y.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:[...ls[e.kind].map(k=>({value:k,label:k})),{value:"other",label:"\u5176\u4ED6"}],initial:ls[e.kind][0],hint:Rc[e.kind]},{kind:"textarea",name:"custom",label:"\u5177\u4F53\u8BF4\u660E",rows:3,maxLength:256,placeholder:"\u8BF4\u660E\u7533\u8BF7\u9000\u6B3E\u7684\u539F\u56E0",hint:"\u4EC5\u9000\u6B3E\u539F\u56E0\u9009\u300C\u5176\u4ED6\u300D\u65F6\u5FC5\u586B"}],onCancel:p,onSubmit:k=>{let h=k.reason??"",w=h==="other"?(k.custom??"").trim():h;if(w===""){c("\u8BF7\u586B\u5199\u5177\u4F53\u8BF4\u660E");return}f(w)}});if(n==="confirm-cancel")return Un(Je,{width:o,title:"\u64A4\u9500\u9000\u6B3E\u7533\u8BF7",detail:`\u786E\u8BA4\u64A4\u9500\u8BA2\u5355 ${y.orderNo} \u7684\u9000\u6B3E\u7533\u8BF7\uFF1F${y.kind==="recharge"?"\u6536\u56DE\u7684\u989D\u5EA6":"\u51BB\u7ED3\u7684\u8BA2\u9605\u65F6\u957F"}\u5C06\u7ACB\u5373\u6062\u590D`,confirmLabel:"\u64A4\u9500\u7533\u8BF7",busy:i,error:s,onConfirm:S,onCancel:p});let x=[];return y.status==="pending"&&x.push({value:"pay",label:"\u7EE7\u7EED\u652F\u4ED8",hint:"\u91CD\u65B0\u62C9\u8D77\u652F\u4ED8\u5B9D\u4E8C\u7EF4\u7801"}),y.status==="refund_requested"&&x.push({value:"cancel-refund",label:"\u64A4\u9500\u7533\u8BF7",hint:"\u9000\u6B3E\u5C1A\u672A\u5BA1\u6838\uFF0C\u53EF\u64A4\u56DE"}),rc(y)&&x.push({value:"refund",label:"\u7533\u8BF7\u9000\u6B3E",labelTone:"danger"}),fy($d,{flexDirection:"column",children:[Un(Od,{order:y,refunds:g,quotaPerUsd:b.quotaPerUsd,width:o}),x.length>0&&i===null&&Un($d,{marginTop:1,children:Un(ae,{width:o,items:x,retain:"menu",onSelect:k=>{a(),k==="pay"?m(b):r(k==="refund"?"refund":"confirm-cancel")}})})]})}})})}import{useRef as Sy,useState as zd}from"react";import{spawn as gy}from"child_process";var hy={darwin:[{command:"pbcopy",args:[]}],win32:[{command:"clip",args:[]}],linux:[{command:"wl-copy",args:[]},{command:"xclip",args:["-selection","clipboard"]},{command:"xsel",args:["--clipboard","--input"]}]};function by(e,t){return new Promise((o,n)=>{let r=gy(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 Bd(e){let t=hy[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 by(o,e))return;throw new $("\u672A\u627E\u5230\u53EF\u7528\u7684\u526A\u8D34\u677F\u547D\u4EE4")}import{Box as Fd,Text as jn}from"ink";import{Fragment as yy,jsx as ft,jsxs as Ud}from"react/jsx-runtime";var jd={columns:20,rows:2};function Hd(e,t,o){return Zr(e,t,jd,o)}function qd({phase:e,qrCode:t,amountCny:o,summary:n,paidNote:r,expiredNote:i,pollError:s,width:a,layout:c}){let l=s===null?ft(ot,{label:"\u7B49\u5F85\u652F\u4ED8\u5230\u8D26\u2026"}):ft(jn,{wrap:"truncate",color:Ge.warning,children:`\u67E5\u8BE2\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u8BD5\uFF1A${s}`});if(e==="paid")return ft(he,{tone:"ok",width:a,title:"\u652F\u4ED8\u6210\u529F\uFF01",detail:r});if(e==="expired")return ft(he,{tone:"warn",width:a,title:"\u8BA2\u5355\u5DF2\u8D85\u65F6",detail:i});if(!c.fits)return Ud(Fd,{flexDirection:"column",children:[ft(he,{tone:"warn",width:a,title:"\u7EC8\u7AEF\u5C3A\u5BF8\u4E0D\u8DB3\uFF0C\u65E0\u6CD5\u7ED8\u5236\u4E8C\u7EF4\u7801",detail:`\u653E\u5927\u5230 ${c.target.columns} \xD7 ${c.target.rows} \u53EF\u663E\u793A\u4E8C\u7EF4\u7801\uFF0C\u6216\u6309 c \u590D\u5236\u4ED8\u6B3E\u94FE\u63A5`}),ft(jn,{color:u.accent,children:t}),ft(Fd,{marginTop:1,children:ft(jn,{bold:!0,color:u.foreground,children:be(o)})}),l]});let d=c.asideRows-jd.rows,p=d>=1,m=d>=2,f=d>=2+n.length;return ft(ei,{value:t,aside:Ud(yy,{children:[m&&ft(jn,{bold:!0,color:u.foreground,children:"\u626B\u7801\u652F\u4ED8"}),ft(jn,{bold:!0,color:u.foreground,children:be(o)}),p&&ft(jn,{color:u.mutedForeground,children:"\u8BF7\u4F7F\u7528\u652F\u4ED8\u5B9D\u626B\u4E00\u626B\u5B8C\u6210\u652F\u4ED8"}),f&&n.map((S,y)=>ft(jn,{wrap:"truncate",color:u.mutedForeground,children:S},y)),l]})})}import{jsx as Wd}from"react/jsx-runtime";var xy=5,Ty=2e3;function Gd({params:e}){let t=F(),{width:o,columns:n,rows:r}=j(),i=qo(0),[s,a]=zd("waiting"),[c,l]=zd(null),d=Sy(0);ai(Ty,async()=>{let f;try{f=await Pi(e.kind,e.orderNo)}catch(S){l(ve(S));return}if(l(null),f.status==="paid"||f.credited){a("paid"),t.toast("ok",e.paidMessage);return}if(f.status==="expired"||f.status==="failed"){d.current+=1,d.current>=xy&&a("expired");return}d.current=0},s==="waiting"),z(f=>{f!=="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 p=Hd(e.qrCode,{width:o,rows:i},{columns:n-o,rows:r-i}),m=s==="waiting"&&p.fits;return Wd(J,{trail:["\u626B\u7801\u652F\u4ED8"],bleed:m,hints:s==="waiting"?["c \u590D\u5236\u94FE\u63A5"]:[],children:Wd(qd,{phase:s,qrCode:e.qrCode,amountCny:e.amountCny,summary:e.summary,paidNote:e.paidNote,expiredNote:e.expiredNote,pollError:c,width:o,layout:p})})}import{useState as vy}from"react";import{z as $t}from"zod";var wy=$t.object({id:$t.number().int(),name:$t.string(),originalCny:$t.number().int(),discountPercent:$t.number().int(),payCny:$t.number().int(),quota:$t.number()}),Kd=()=>O($t.array(wy),"/recharge-packages"),ky=$t.object({order:To,qrCode:$t.string()}),Vd=e=>O(ky,"/recharge/orders",{method:"POST",json:e}),Jd=()=>O($t.array(To),"/recharge/orders");import{jsx as ho}from"react/jsx-runtime";var _y=tt(yo,ln,"\u5168\u90E8\u72B6\u6001");function Ry(e,t){let o=e.discountPercent<100?`\uFF08\u539F\u4EF7 ${be(e.originalCny)} \xB7 ${e.discountPercent/10} \u6298\uFF09`:"";return`${be(e.payCny)}${o} \xB7 \u5230\u8D26\u989D\u5EA6 ${ce(e.quota,t)}`}function Yd(){let e=F(),{width:t}=j(),o=oe(),[n,r]=vy({name:"menu"}),[i,s]=Ze("status",()=>""),{busy:a,error:c,reset:l,fail:d,run:p}=pe(),m=X([e.revision],async()=>{let[y,g,b]=await Promise.all([Kd(),xi(e.ctx.site),Jd()]);return{packages:y,pricing:g,orders:b}});z(y=>{n.name==="menu"&&(y==="r"?e.reload():y==="f"&&r({name:"filter"}))});let f=()=>{n.name==="menu"?e.pop():(l(),r({name:"menu"}))},S=(y,g)=>{p("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>Vd(y),{onSuccess:({order:b,qrCode:x})=>{r({name:"menu"}),e.push("pay",go({kind:"recharge",...b},x,g))}})};return ho(J,{hints:n.name==="menu"?["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","f \u7B5B\u9009\u8BB0\u5F55","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:f,children:ho(Y,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u5145\u503C\u5957\u9910",width:t,children:({packages:y,pricing:g,orders:b})=>{if(n.name==="confirm")return ho(Je,{width:t,title:`\u786E\u8BA4\u5145\u503C ${be(n.pkg.payCny)}\uFF1F`,confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>S({packageId:n.pkg.id},g.quotaPerUsd),onCancel:f});if(n.name==="custom")return ho(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:f,onSubmit:h=>{let w=Number((h.yuan??"").trim()),C=ss(w);if(!Number.isFinite(w)||C<ss(g.minTopupCny)||C>Wi){d(`\u8BF7\u8F93\u5165 ${g.minTopupCny} \u5230 ${wc(Wi)} \u5143\u4E4B\u95F4\u7684\u91D1\u989D`);return}S({amountCny:C},g.quotaPerUsd)}});if(n.name==="filter")return ho(G,{title:"\u7B5B\u9009\u5145\u503C\u8BB0\u5F55",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:_y,initial:i}],onCancel:f,onSubmit:h=>{s(h.status??""),r({name:"menu"})}});let x=i===""?b:b.filter(h=>h.status===i),k=[{heading:"\u5145\u503C\u5957\u9910"},...y.map(h=>({value:{kind:"pkg",pkg:h},label:h.name,hint:Ry(h,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(h=>({value:{kind:"order",orderNo:h.orderNo},label:be(h.amountCny),...Ai(h),hint:`${ee(h.createdAt)} \xB7 \u5230\u8D26\u989D\u5EA6 ${ce(h.quota,g.quotaPerUsd)}`}))];return ho(ae,{items:k,width:t,height:o,retain:"menu",onSelect:h=>{l(),h.kind==="custom"?r({name:"custom"}):h.kind==="order"?e.push("order",{kind:"recharge",orderNo:h.orderNo}):h.kind==="pkg"&&r({name:"confirm",pkg:h.pkg})}})}})})}import{Box as on,Text as or}from"ink";import{useState as Ay}from"react";import Ny from"string-width";import{z as ne}from"zod";var Cy=ne.object({windowId:ne.number().int(),durationMinutes:ne.number().int(),quota:ne.number(),used:ne.number(),resetAt:ne.string()}),Py=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(Cy)}))}),Xd=()=>O(Py,"/subscriptions"),Ey=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()}))}),Qd=()=>O(ne.array(Ey),"/subscription-plans"),Zd=ne.object({order:wo,qrCode:ne.string()}),ep=e=>O(Zd,"/subscriptions/orders",{method:"POST",json:e}),tp=e=>O(Zd,`/subscriptions/${e}/renew`,{method:"POST"}),np=()=>O(ne.array(wo),"/subscriptions/orders"),op=e=>O(ne.object({fallbackToBalance:ne.boolean()}),"/subscriptions/preference",{method:"PUT",json:e});import{jsx as Ae,jsxs as Hn}from"react/jsx-runtime";var Iy=tt(yo,ln,"\u5168\u90E8\u72B6\u6001");function Ly(e,t,o){if(e.name==="sub"||e.name==="confirm-renew"){let n=t.find(r=>r.id===e.id);return n===void 0?{kind:"missing-sub"}:{kind:"sub",sub:n,confirm:e.name==="confirm-renew"}}if(e.name==="plan"||e.name==="confirm-buy"){let n=o.find(r=>r.id===e.id);return n===void 0?{kind:"missing-plan"}:{kind:"plan",plan:n,confirm:e.name==="confirm-buy"}}return{kind:"none"}}var My=3;function Oy({win:e,quotaPerUsd:t,width:o}){let n=as(e),r=vc(e.durationMinutes),i=`\u5DF2\u7528 ${n}% ${Q.bullet} ${ce(e.used,t)} / ${ce(e.quota,t)}`;return Hn(on,{flexDirection:"column",children:[Hn(or,{wrap:"truncate",children:[Ae(or,{color:u.foreground,children:r}),Ae(or,{color:n>=100?u.danger:u.mutedForeground,children:mn(i,Math.max(0,o-Ny(r)))})]}),Ae(vu,{used:e.used,total:e.quota,width:o}),Ae(or,{wrap:"truncate",color:u.faintForeground,children:`\u5C06\u4E8E ${ee(e.resetAt)} \u91CD\u7F6E`})]})}function $y(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(as))}% \xB7 ${t}`}function Dy(e){let t=e.windows.length*4;return V+mt+2+t+(e.renewable?V+1:0)}function By(e){let t=e.description!==null&&e.description!==""?1+He:0,o=Math.ceil((1+e.windows.length)/2);return V+mt+t+o+V+1}function rp(){let e=F(),{width:t}=j(),o=oe(),[n,r]=Ay({name:"menu"}),[i,s]=Ze("status",()=>""),{busy:a,error:c,reset:l,run:d}=pe(),p=X([e.revision],async()=>{let[g,b,x,k]=await Promise.all([Xd(),Qd(),np(),Ee(e.ctx.site)]);return{mine:g,plans:b,orders:x,site:k}});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"})},f=g=>{d("\u6B63\u5728\u4FDD\u5B58\u504F\u597D",()=>op({fallbackToBalance:!g}),{failToast:!0,onSuccess:()=>{e.reload(),e.toast("ok","\u504F\u597D\u5DF2\u4FDD\u5B58")}})},S=(g,b)=>{d("\u6B63\u5728\u521B\u5EFA\u7EED\u8D39\u8BA2\u5355",()=>tp(g.id),{onSuccess:({order:x,qrCode:k})=>{r({name:"menu"}),e.push("pay",go({kind:"subscription",...x},k,b.quotaPerUsd))}})},y=(g,b)=>{d("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>ep({planId:g.id}),{onSuccess:({order:x,qrCode:k})=>{r({name:"menu"}),e.push("pay",go({kind:"subscription",...x},k,b.quotaPerUsd))}})};return Ae(J,{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:Ae(Y,{state:p,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u9605",width:t,children:({mine:g,plans:b,orders:x,site:k})=>{if(n.name==="filter")return Ae(G,{title:"\u7B5B\u9009\u8BA2\u9605\u8BA2\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:Iy,initial:i}],onCancel:m,onSubmit:v=>{s(v.status??""),r({name:"menu"})}});let h=Ly(n,g.subscriptions,b);if(h.kind==="missing-sub")return Ae(he,{tone:"warn",width:t,title:"\u8BA2\u9605\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u79FB\u9664",detail:"\u6309 Esc \u8FD4\u56DE"});if(h.kind==="missing-plan")return Ae(he,{tone:"warn",width:t,title:"\u5957\u9910\u4E0D\u5B58\u5728\u6216\u5DF2\u4E0B\u67B6",detail:"\u6309 Esc \u8FD4\u56DE"});if(h.kind==="sub"&&h.confirm)return Ae(Je,{width:t,title:`\u786E\u8BA4\u7EED\u8D39\u300C${h.sub.planName}\u300D\uFF1F`,detail:"\u5C06\u6309\u5957\u9910\u5F53\u524D\u4EF7\u683C\u4E0E\u65F6\u957F\u5728\u5230\u671F\u65F6\u95F4\u4E0A\u987A\u5EF6",confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>S(h.sub,k),onCancel:m});if(h.kind==="plan"&&h.confirm)return Ae(Je,{width:t,title:`\u786E\u8BA4\u8BA2\u9605\u300C${h.plan.name}\u300D\uFF08${be(h.plan.priceCny)} / ${h.plan.durationDays} \u5929\uFF09\uFF1F`,confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>y(h.plan,k),onCancel:m});let w=h.kind==="plan"?h.plan.description:"",C=i===""?x:x.filter(v=>v.status===i),M=[{heading:"\u6211\u7684\u8BA2\u9605"},...g.subscriptions.length===0?[{value:{kind:"none"},label:"\u6682\u65E0\u8BA2\u9605",hint:"\u8BA2\u9605\u4E0B\u65B9\u5957\u9910\u540E\uFF0C\u8986\u76D6\u8303\u56F4\u5185\u7684\u8C03\u7528\u5C06\u4F18\u5148\u4F7F\u7528\u8BA2\u9605\u989D\u5EA6",disabled:!0}]:g.subscriptions.map(v=>{let P=cs(v);return{value:{kind:"sub",id:v.id},label:v.planName,badge:P.label,badgeTone:Xe(P),hint:$y(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:`${be(v.priceCny)} / ${v.durationDays} \u5929 \xB7 ${v.groupNames.join("\u3001")}`})),{heading:""},{heading:"\u8BA2\u9605\u8BA2\u5355"},...C.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}]:C.map(v=>({value:{kind:"order",orderNo:v.orderNo},label:`${v.planName}${v.renewal?"\uFF08\u7EED\u8D39\uFF09":""}`,...Ai(v),hint:`${ee(v.createdAt)} \xB7 ${be(v.amountCny)}`}))],U=h.kind==="sub"?Dy(h.sub):h.kind==="plan"?By(h.plan):0,T=U===0?o:o-U>=My?o-U:0,N=t-le,_=n.name==="menu"&&a===null;return Hn(on,{flexDirection:"column",children:[T>0&&Ae(ae,{items:M,width:t,height:T,isActive:_,retain:"menu",onSelect:v=>{l(),v.kind==="fallback"?f(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})}}),h.kind==="sub"&&Hn(on,{marginTop:T>0?V:0,flexDirection:"column",children:[Hn(te,{title:h.sub.planName,note:h.sub.revokedAt!==null?`${ee(h.sub.revokedAt)} \u4F5C\u5E9F`:`${ee(h.sub.expiresAt)} \u5230\u671F`,width:t,children:[Ae(Le,{width:N,items:[["\u72B6\u6001",cs(h.sub).label],["\u8986\u76D6\u5206\u7EC4",h.sub.groupNames.join("\u3001")],["\u751F\u6548\u65F6\u95F4",ee(h.sub.startsAt)]]}),Ae(on,{marginTop:1,flexDirection:"column",children:h.sub.windows.map((v,P)=>Ae(on,{marginTop:P===0?0:1,flexDirection:"column",children:Ae(Oy,{win:v,quotaPerUsd:k.quotaPerUsd,width:N})},v.windowId))})]}),h.sub.renewable&&a===null&&Ae(on,{marginTop:V,children:Ae(ae,{width:t,items:[{value:"renew",label:"\u7EED\u8D39"}],onSelect:()=>r({name:"confirm-renew",id:h.sub.id})})})]}),h.kind==="plan"&&Hn(on,{marginTop:T>0?V:0,flexDirection:"column",children:[Hn(te,{title:h.plan.name,note:`${be(h.plan.priceCny)} / ${h.plan.durationDays} \u5929`,width:t,children:[w!==""&&Ae(or,{wrap:"truncate",color:u.mutedForeground,children:w}),Ae(on,{marginTop:w===""?0:He,children:Ae(Le,{width:N,items:[["\u8986\u76D6\u5206\u7EC4",h.plan.groupNames.join("\u3001")],..._c(h.plan,k.quotaPerUsd).map((v,P)=>[P===0?"\u7528\u91CF\u7A97\u53E3":"",v])]})})]}),a===null&&Ae(on,{marginTop:V,children:Ae(ae,{width:t,items:[{value:"subscribe",label:h.plan.enabled?"\u8BA2\u9605":"\u5DF2\u505C\u552E",disabled:!h.plan.enabled}],onSelect:()=>r({name:"confirm-buy",id:h.plan.id})})})]})]})}})})}import{jsx as Pe}from"react/jsx-runtime";var ip={home:{render:()=>Pe(rd,{})},help:{render:()=>Pe(td,{})},login:{render:()=>Pe(tm,{})},register:{render:()=>Pe(nm,{})},forgot:{render:()=>Pe(Xu,{})},agreement:{render:e=>Pe(Wu,{params:e})},tokens:{render:()=>Pe(Ym,{})},logs:{render:()=>Pe(vm,{})},usage:{render:()=>Pe(bm,{})},ledger:{render:()=>Pe(Ed,{})},subscription:{render:()=>Pe(rp,{})},models:{render:()=>Pe(Cm,{})},recharge:{render:()=>Pe(Yd,{})},order:{render:e=>Pe(Dd,{params:e})},pay:{render:e=>Pe(Gd,{params:e})},invoices:{render:()=>Pe(Cd,{})},"invoice-apply":{render:()=>Pe(Td,{})},"invoice-profiles":{render:()=>Pe(_d,{})},invite:{render:()=>Pe(cd,{})},tickets:{render:()=>Pe(zu,{})},ticket:{render:e=>Pe(qu,{params:e})},announcements:{render:()=>Pe(Hl,{})},"announce-gate":{render:e=>Pe(Dl,{params:e}),lockNav:!0},profile:{render:()=>Pe(Pu,{})}};function sp(e){return ip[e].lockNav===!0}function ap(e){let t=ip[e.id].render;return t(e.params)}import{jsx as qn,jsxs as Xy}from"react/jsx-runtime";function qy(){let e=F(),{rows:t}=j(),o=Pr(),n=sp(e.current.id)||o,r=e.depth===1&&Nr(e.current.id)&&Et().session===null;return Sa(()=>{r&&e.home()}),jy((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())}),qn(Fy,{flexDirection:"column",height:Math.max(1,t),paddingX:1,paddingTop:1,overflow:"hidden",children:ap(e.current)})}function zy(){let e=F(),t=X([e.revision],async()=>{if(e.gate.announcementsChecked||Et().session===null)return null;let o;try{o=await zc()}catch{return null}return e.gate.announcementsChecked=!0,o});return Sa(()=>{t.phase!=="ready"||t.data===null||e.gate.announcementsShown||(e.gate.announcementsShown=!0,e.push("announce-gate",{item:t.data}))}),null}function Wy(){let e=F(),t=Hy(!1);return Sa(()=>{t.current||(t.current=!0,Hc().then(o=>{o!==null&&e.toast("ok",`\u5DF2\u66F4\u65B0\u5230 v${o}\uFF0C\u91CD\u542F\u540E\u751F\u6548`)}).catch(o=>e.toast("fail",`\u81EA\u52A8\u66F4\u65B0\u5931\u8D25\uFF1A${ve(o)}`)))}),null}function Gy({ctx:e,mouse:t}){return qn(il,{subscribe:t.subscribe,children:qn(Yc,{children:Xy(ul,{ctx:e,children:[qn(Wy,{}),qn(zy,{}),qn(qy,{})]})})})}var Ky="\x1B[2J\x1B[3J\x1B[H",Vy="\x1B[H\x1B[J",Jy="\x1B[3J";function Yy(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(Ky).join(Vy).split(Jy).join("");return t.write(s,...i)}}})}async function cp(e){let t=ol(process.stdin,process.stdout);try{await Uy(qn(Gy,{ctx:e,mouse:t}),{exitOnCtrlC:!0,alternateScreen:!0,stdin:t.stdin,stdout:Yy(process.stdout)}).waitUntilExit()}finally{t.dispose()}}var tS=`${gt} v${ht} \u2014 CodeFlow \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF
|
|
14
14
|
|
|
15
15
|
\u7528\u6CD5
|
|
16
|
-
${
|
|
17
|
-
${
|
|
18
|
-
${
|
|
19
|
-
${
|
|
20
|
-
`;async function
|
|
16
|
+
${gt} \u8FDB\u5165\u4EA4\u4E92\u754C\u9762
|
|
17
|
+
${gt} help \u67E5\u770B\u672C\u8BF4\u660E
|
|
18
|
+
${gt} update \u68C0\u67E5\u5E76\u5B89\u88C5\u65B0\u7248\u672C
|
|
19
|
+
${gt} uninstall \u9000\u51FA\u767B\u5F55\u3001\u5220\u9664\u672C\u5730\u6587\u4EF6\u5E76\u5378\u8F7D\u672C\u7A0B\u5E8F
|
|
20
|
+
`;async function nS(){let e;try{({positionals:e}=eS({args:process.argv.slice(2),allowPositionals:!0,options:{}}))}catch(o){throw new $(ve(o),{hint:`\u8FD0\u884C ${gt} help \u67E5\u770B\u7528\u6CD5`,exitCode:Ii})}let[t]=e;if(t==="help")return process.stdout.write(tS),bo;if(t==="update")return oS();if(t==="uninstall")return iS();if(t!==void 0)throw new $(`\u672A\u77E5\u547D\u4EE4 ${t}\uFF0C\u8FD0\u884C ${gt} help \u67E5\u770B\u7528\u6CD5`,{exitCode:Ii});return aS(),await cp(Ia()),bo}async function oS(){let e=process.stdout,t=rS(e,"\u6B63\u5728\u68C0\u67E5\u65B0\u7248\u672C"),o;try{o=await jc()}finally{t()}let n=xn(e,u.accent,"\u2714");return e.write(o===null?`${n} \u5DF2\u662F\u6700\u65B0\u7248\u672C v${ht}
|
|
21
21
|
`:`${n} \u5DF2\u66F4\u65B0\u5230 v${o}
|
|
22
|
-
`),
|
|
23
|
-
`),()=>{};let o=
|
|
24
|
-
`),!await
|
|
25
|
-
`),
|
|
26
|
-
`),failed:o=>e.write(`${
|
|
22
|
+
`),bo}function rS(e,t){if(!e.isTTY)return e.write(`${t}
|
|
23
|
+
`),()=>{};let o=xn(e,u.mutedForeground,t),n=0,r=()=>{let s=Zn[n%Zn.length]??"";n+=1,e.write(`\r\x1B[2K${xn(e,u.accent,s)} ${o}`)};r();let i=setInterval(r,Or);return()=>{clearInterval(i),e.write("\r\x1B[2K")}}async function iS(){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 sS("\u8F93\u5165 y \u786E\u8BA4\u5378\u8F7D\uFF1A"))return e.write(`\u5DF2\u53D6\u6D88
|
|
25
|
+
`),Wn;let t=await Dc({done:o=>e.write(`${xn(e,u.accent,"\u2714")} ${o}
|
|
26
|
+
`),failed:o=>e.write(`${xn(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
|
-
`),
|
|
28
|
+
`),bo;e.write(`\u4EE5\u4E0B\u9879\u76EE\u672A\u80FD\u6E05\u7406\uFF1A
|
|
29
29
|
`);for(let o of t)e.write(` ${o}
|
|
30
|
-
`);return
|
|
31
|
-
`),e instanceof $&&e.hint&&process.stderr.write(` ${
|
|
32
|
-
`),process.exitCode=e instanceof $?e.exitCode:
|
|
30
|
+
`);return Wn}async function sS(e){let t=Zy({input:process.stdin,output:process.stdout});t.once("SIGINT",()=>t.close());let o=await Promise.race([t.question(e),Qy(t,"close").then(()=>"")]);return t.close(),o.trim().toLowerCase()==="y"}function aS(){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new $("\u4EA4\u4E92\u754C\u9762\u9700\u8981\u5728\u7EC8\u7AEF\u4E2D\u76F4\u63A5\u8FD0\u884C")}var lp=(e,t)=>xn(process.stderr,e,t);try{process.exitCode=await nS()}catch(e){process.stderr.write(`${lp(u.danger,"\u2718")} ${ve(e)}
|
|
31
|
+
`),e instanceof $&&e.hint&&process.stderr.write(` ${lp(u.faintForeground,e.hint)}
|
|
32
|
+
`),process.exitCode=e instanceof $?e.exitCode:Wn}
|