@codeflow-ai/cli 1.25.0 → 1.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +5 -5
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{once as hx}from"events";import{createInterface as bx}from"readline/promises";import{parseArgs as yx}from"util";var Da={name:"@codeflow-ai/cli",version:"1.25.
|
|
3
|
-
`,o)}function hr(e,t,o,n){let r=null,i=()=>{if(r)return r;let s=t(),a=ct(s);if(a===null)return r=e.parse({}),r;let c;try{c=JSON.parse(a)}catch(m){throw new O(`${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(`${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),Ua(t(),a,384),r=a,a}}}import{homedir as df}from"os";import{join as Zn}from"path";function Vt(){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(df(),".config","codeflow")}var ja=()=>Zn(Vt(),"config.json"),Ha=()=>Zn(Vt(),"credentials.json"),qa=()=>Zn(Vt(),"refresh.lock");var yf=Et.object({refreshCookie:Et.string(),accessToken:Et.string(),accessExpiresAt:Et.number(),username:Et.string(),email:Et.string(),site:Et.string()}),Sf=Et.object({site:Et.string(),cookie:Et.string()}),xf=Et.object({session:yf.nullable().default(null),device:Sf.nullable().default(null)}),Yi=hr(xf,Ha,"\u672C\u5730\u51ED\u636E","\u91CD\u65B0\u767B\u5F55"),At=Yi.load,Ka=Yi.reload,Xi=Yi.update;function Va(){let{session:e}=At();if(!e)throw new O("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:Rn});return e}var Tf=6e4,wf=75e3,kf=120;function vf(e,t){try{Wa(e)}catch{try{Date.now()-gf(e).mtimeMs>Tf&&za(e,{recursive:!0,force:!0})}catch{}return!1}return hf(Ga(e,"owner"),t),!0}function _f(e,t){let o;try{o=ff(Ga(e,"owner"),"utf8")}catch{return}o===t&&za(e,{recursive:!0,force:!0})}async function Ja(e){let t=qa(),o=pf(16).toString("hex");Wa(Vt(),{recursive:!0,mode:448});let n=Date.now()+wf;for(;!vf(t,o);){if(Date.now()>n)throw new O(`\u7B49\u5F85\u5237\u65B0\u9501\u8D85\u65F6\uFF0C\u82E5\u786E\u8BA4\u6CA1\u6709\u5176\u4ED6 ${bt} \u5728\u8FD0\u884C\uFF0C\u8BF7\u5220\u9664 ${t}`);await bf(kf)}try{return await e()}finally{_f(t,o)}}function Rf(){let e=process.env.CODEFLOW_SITE;if(e)return e;let t=At().session;return t?t.site:Ba}function Ya(){return{site:Rf()}}function Pn(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 _g,rmSync as Rg}from"fs";import{z as Be}from"zod";var Pf=["active","disabled"],tT=Be.enum(Pf),Cf=["openai","anthropic"],Xa=Be.enum(Cf),Ef=["openai-chat","openai-responses","anthropic-messages"],Qa=Be.enum(Ef);var Af=["enabled","disabled"],nT=Be.enum(Af),Po=["pending","paid","refund_requested","partially_refunded","refunded","failed","expired"],Za=Be.enum(Po),If=["recharge","subscription"],oT=Be.enum(If),Nf=["requested","pending","succeeded","failed","rejected","canceled"],ec=Be.enum(Nf),Qi=["pending","issued","rejected"],tc=Be.enum(Qi),Mf=["special","general"],Zi=Be.enum(Mf),Lf=["info","success","warning","error"],nc=Be.enum(Lf),Of=["terms","privacy"],rT=Be.enum(Of),es=["recharge","reserve","consume","reserve_refund","refund","refund_release","reward","admin_adjust"],oc=Be.enum(es),$f=["usage_log","order","invitation","admin"],rc=Be.enum($f),ts=["first_inviter","first_invitee","subsequent_inviter"],ic=Be.enum(ts),ns=["success","error","canceled","anomaly"],sc=Be.enum(ns),os=["open","replied","closed"],ac=Be.enum(os),rs=["billing","technical","account","other"],cc=Be.enum(rs),is=["low","normal","high"],lc=Be.enum(is),Df=["user","admin"],uc=Be.enum(Df),Bf=["none","minor","major","critical"],mc=Be.enum(Bf);import{z as dn}from"zod";var Ff=["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","provider_status_unavailable"],Uf=dn.enum(Ff),dc=dn.object({error:dn.object({code:Uf,message:dn.string(),details:dn.unknown().optional(),requestId:dn.string().optional()})}),aT=dn.object({reason:dn.string()});var pc={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",provider_status_unavailable:"\u5B98\u65B9\u670D\u52A1\u72B6\u6001\u6682\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5"};import{z as ue}from"zod";var jf=ue.string().trim().min(1),ss=jf.pipe(ue.url()),Hf=ue.object({name:ue.string().trim().min(1),description:ue.string().trim().min(1),url:ss}),mT=ue.array(Hf),qf=["string","number","boolean","secret","markdown","money","api-lines","origins"],Wf=ue.enum(qf),zf=ue.object({key:ue.string(),type:Wf,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()}),dT=ue.object({key:ue.string(),label:ue.string(),description:ue.string().optional(),fields:ue.array(zf)}),pT=ue.object({values:ue.record(ue.string(),ue.unknown())}),fT=ue.object({fields:ue.record(ue.string(),ue.string())});function fc(e){return`codeflow-cli/${e.cliVersion} (${e.platform} ${e.release}; ${e.arch}) node/${e.nodeVersion}`}function br(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 Jt}from"zod";var as=1e8;var yT=Jt.object({id:Jt.coerce.number().int().positive()}),gc=100,ST=Jt.object({page:Jt.coerce.number().int().min(1)});function Cn(e){return Jt.object({items:Jt.array(e),total:Jt.number()})}var pe=Jt.object({ok:Jt.literal(!0)});import{z as Y}from"zod";var En=Y.email().max(254).toLowerCase(),lt=8,Co=Y.string().min(lt).max(128),Eo=Y.string().min(1).max(128),An=32,cs=Y.string().trim().min(1).max(An),ls=Y.string().trim().min(1).max(254),wT=Y.object({email:En}),kT=Y.object({username:cs,email:En,password:Co,code:Y.string().min(4).max(8),inviteCode:Y.string().trim().min(1).max(32).optional()}),vT=Y.object({account:ls,password:Eo}),_T=Y.object({email:En,code:Y.string().min(4).max(8),password:Co}),RT=Y.object({oldPassword:Eo,newPassword:Co}),PT=Y.object({email:En}),CT=Y.object({email:En,code:Y.string().min(4).max(8),password:Eo}),hc=Y.object({username:Y.string(),email:Y.string()}),eo=Y.object({accessToken:Y.string(),user:hc}),bc=Y.discriminatedUnion("status",[eo.extend({status:Y.literal("ok")}),Y.object({status:Y.literal("totp_required"),ticket:Y.string()})]),yc=Y.object({user:hc}),Gf=Y.object({client:Y.string().nullable(),clientVersion:Y.string().nullable(),os:Y.string().nullable(),osVersion:Y.string().nullable(),type:Y.string().nullable(),vendor:Y.string().nullable(),model:Y.string().nullable()}),Kf=Y.object({id:Y.number().int(),ip:Y.string().nullable(),userAgent:Y.string().nullable(),device:Gf.nullable(),loginAt:Y.string(),lastActiveAt:Y.string(),expiresAt:Y.string(),current:Y.boolean()}),Sc=Y.object({sessions:Y.array(Kf)});import{z as me}from"zod";var to=me.string().trim().length(6),Vf=me.string().trim().min(10).max(20),yr=me.string().trim().min(1).max(64),Sr=me.record(me.string(),me.unknown()),IT=me.object({ticket:me.string().min(1),code:to}),NT=me.object({ticket:me.string().min(1),code:Vf}),MT=me.object({code:to.optional()}),LT=me.object({code:to}),xc=me.object({secret:me.string(),otpauthUri:me.string()}),us=me.object({recoveryCodes:me.array(me.string())}),Jf=me.object({id:me.number().int(),name:me.string(),createdAt:me.string(),lastUsedAt:me.string().nullable()}),Tc=me.object({totp:me.object({enabled:me.boolean(),enabledAt:me.string().nullable(),recoveryCodesRemaining:me.number().int()}),passkeys:me.array(Jf)}),OT=me.object({name:yr,response:Sr}),$T=me.object({name:yr}),DT=me.object({response:Sr});import{z as we}from"zod";var HT=we.object({account:ls,password:Eo}),Yf=we.object({totp:we.boolean(),passkeys:we.boolean()}),qT=we.discriminatedUnion("status",[we.object({status:we.literal("totp_required"),ticket:we.string()}),we.object({status:we.literal("setup_required"),ticket:we.string(),missing:Yf})]),WT=we.object({ticket:we.string().min(1)}),zT=we.object({ticket:we.string().min(1),code:to}),GT=we.object({ticket:we.string().min(1),name:yr,response:Sr}),KT=we.object({ticket:we.string().min(1),code:to.optional()}),wc=we.object({username:we.string(),email:we.string()}),VT=we.object({accessToken:we.string(),admin:wc}),JT=we.object({admin:wc});import{z as ms}from"zod";var ew=ms.object({siteName:ms.string().trim().min(1).max(64),siteDescription:ms.string().trim().max(200).optional(),siteOrigin:ss,username:cs,email:En,password:Co});import{z as ke}from"zod";var kc={orderNo:ke.string(),amountCny:ke.number().int(),status:Za,credited:ke.boolean(),refundedAmountCny:ke.number().int(),succeededRefundCny:ke.number().int(),pendingRefundCny:ke.number().int(),createdAt:ke.string()},Ao=ke.object({...kc,quota:ke.number(),refundedQuota:ke.number()}),Io=ke.object({...kc,planName:ke.string(),renewal:ke.boolean(),grantedDurationDays:ke.number().int()}),xr=ke.object({order:Ao.pick({orderNo:!0,amountCny:!0,quota:!0}),qrCode:ke.string()}),No=ke.object({order:Io.pick({orderNo:!0,amountCny:!0,planName:!0,grantedDurationDays:!0}),qrCode:ke.string()}),vc=ke.object({id:ke.number().int(),amountCny:ke.number().int(),status:ec,refundTradeNo:ke.string().nullable(),reason:ke.string().nullable(),rejectReason:ke.string().nullable(),createdAt:ke.string()});function _c(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 Ke}from"zod";var Tr=Ke.object({id:Ke.number().int(),title:Ke.string(),category:cc,priority:lc,status:ac,createdAt:Ke.string(),updatedAt:Ke.string()}),Rc=Tr.pick({id:!0}),Mo=25*1024*1024,wr=5,Pc=Ke.object({id:Ke.number().int(),fileName:Ke.string(),fileSize:Ke.number().int(),contentType:Ke.string()}),Cc=Pc.pick({id:!0,fileSize:!0}),Xf=Ke.object({id:Ke.number().int(),authorKind:uc,content:Ke.string(),attachments:Ke.array(Pc),createdAt:Ke.string()}),Ec=Ke.object({ticket:Tr,messages:Ke.array(Xf)});import{z as Lo}from"zod";var ds=Lo.object({id:Lo.number().int(),title:Lo.string(),content:Lo.string(),level:nc,publishedAt:Lo.string()});import{z as je}from"zod";var dw=je.union([je.object({ok:je.literal(!0),latencyMs:je.number().int().nonnegative()}),je.object({ok:je.literal(!1),reason:je.enum(["http","error_payload"]),status:je.number().int(),latencyMs:je.number().int().nonnegative(),body:je.string()}),je.object({ok:je.literal(!1),reason:je.literal("timeout"),latencyMs:je.number().int().nonnegative()}),je.object({ok:je.literal(!1),reason:je.literal("network"),detail:je.string(),latencyMs:je.number().int().nonnegative()})]);import{z as Le}from"zod";var gw=Le.object({groups:Le.array(Le.object({title:Le.string(),items:Le.array(Le.object({slug:Le.string(),title:Le.string()}))}))}),hw=Le.object({title:Le.string(),markdown:Le.string(),images:Le.record(Le.string(),Le.object({width:Le.number().int(),height:Le.number().int()}))}),bw=Le.object({slug:Le.string(),title:Le.string(),anchor:Le.string().nullable(),snippet:Le.string()});import{z as de}from"zod";function Te(e){return e.toLocaleString("en-US")}function pn(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`:Te(e)}function Dt(e,t){return e===0&&t!==void 0?t:e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:6})}function In(e){return(e/1e3).toFixed(2)}function no(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 kr(e,t){return`${e}******${t}`}var vr=de.union([de.literal(0),de.number().min(1e-6)]),Ac=de.object({inputPricePerMillionTokens:vr,outputPricePerMillionTokens:vr,cachedInputPricePerMillionTokens:vr,cacheWritePricePerMillionTokens:vr}),ps=de.object({inputPricePerMillionTokens:de.number(),outputPricePerMillionTokens:de.number(),cachedInputPricePerMillionTokens:de.number(),cacheWritePricePerMillionTokens:de.number()});var Ic=de.number().int().nonnegative(),Qf=de.number().min(1e-4),Zf={param:de.string().trim().min(1),value:de.string().trim().min(1)},eg=de.discriminatedUnion("kind",[Ac.extend({kind:de.literal("price"),inputTokensOver:Ic}),de.object({kind:de.literal("multiplier"),...Zf,multiplier:Qf})]),ww=Ac.extend({model:de.string().trim().min(1),displayName:de.string().trim().min(1),rules:de.array(eg)}),tg=de.discriminatedUnion("kind",[ps.extend({kind:de.literal("price"),inputTokensOver:Ic}),de.object({kind:de.literal("multiplier"),param:de.string(),value:de.string(),multiplier:de.number()})]),Nc=de.array(tg);function ng(e){return e.kind==="price"}function Mc(e){return e.kind==="multiplier"}function Lc(e){return e>=1e6&&e%1e5===0?`${e/1e6}M`:e>=1e3&&e%1e3===0?`${e/1e3}k`:Te(e)}function Oo(e){return e===null?"\u57FA\u7840":"\u6269\u5C55"}function fs(e){return`> ${Lc(e)}`}function Oc(e,t){let o=t.filter(ng).sort((r,i)=>r.inputTokensOver-i.inputTokensOver),n=o[0];return n===void 0?[{name:Oo(null),range:null,price:e}]:[{name:Oo(null),range:`\u2264 ${Lc(n.inputTokensOver)}`,price:e},...o.map(r=>({name:Oo(r.inputTokensOver),range:fs(r.inputTokensOver),price:r}))]}var og=de.object({value:de.string(),multiplier:de.number()}),$c=de.array(og);function Dc(e){return Fc(e.map(t=>t.multiplier))}function Bc(e,t){return Fc([e,...t.map(o=>o.multiplier)])}function Fc(e){return Number(e.reduce((t,o)=>t*o,1).toFixed(4))}import{z as Nn}from"zod";var rg=Nn.object({provider:Xa,pageUrl:Nn.string(),indicator:mc,incidents:Nn.array(Nn.object({title:Nn.string()}))}),Uc=Nn.object({providers:Nn.array(rg)}),ig={minor:{label:"\u90E8\u5206\u964D\u7EA7",tone:"warning"},major:{label:"\u90E8\u5206\u4E2D\u65AD",tone:"danger"},critical:{label:"\u4E25\u91CD\u4E2D\u65AD",tone:"danger"}};function jc(e){return e.filter(t=>t.indicator!=="none"||t.incidents.length>0)}function Hc(e){return e.indicator==="none"?{label:"\u4E8B\u4EF6\u5904\u7406\u4E2D",tone:"warning"}:ig[e.indicator]}var sg="Asia/Shanghai",ag="+08:00";function cg(e){return new Date(new Date(e).getTime()+288e5)}function lg(e=Date.now()){let t=cg(e);return{day:t.toISOString().slice(0,10),hour:t.getUTCHours()}}function gs(e=Date.now()){return lg(e).day}function hs(e=gs()){return new Date(`${e}T00:00:00${ag}`)}function fn(e,t){let o=new Date(`${e}T00:00:00Z`);return new Date(o.getTime()+t*864e5).toISOString().slice(0,10)}var ug=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium",timeZone:sg});function K(e){return ug.format(new Date(e))}var mg=[{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 dg(e){return e>=10?Math.round(e).toLocaleString("en-US"):e>=1?e.toFixed(1):e.toFixed(-Math.floor(Math.log10(e)))}function ut(e){return e>=10?Math.round(e).toLocaleString("en-US"):e.toFixed(1)}function qc(e){return e<365?`${ut(e)} \u5929`:`${ut(e/365)} \u5E74`}function pg(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`:`${ut(o/365)} \u5E74`}function fg(e){let t=e/1.2/80/60/8;return t<250?`${ut(t)} \u4E2A\u5DE5\u4F5C\u65E5`:`${ut(t/250)} \u4E2A\u5DE5\u4F5C\u5E74`}function gg(e){let t=e/1.2/30*4;return t<1e3?`${Math.round(t).toLocaleString("en-US")} \u514B`:t<1e6?`${ut(t/1e3)} \u516C\u65A4`:`${ut(t/1e6)} \u5428`}var hg=[...mg.map(e=>({min:e.tokens/10,max:e.tokens*1e4,suffix:t=>`\u7EA6\u4E3A${e.name}\u7684 ${dg(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 ${pg(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 ${ut(e/1.2/300/365)} \u5E74`},{min:12e5,max:1/0,suffix:e=>`\u7EA6\u5408 ${Math.round(e/1.2/1e5).toLocaleString("en-US")} \u672C\u5341\u4E07\u5B57\u7684\u535A\u58EB\u8BBA\u6587`},{min:33e3,max:1/0,suffix:e=>`\u6309\u300A\u8D44\u6CBB\u901A\u9274\u300B\u7684\u7B14\u58A8\u5BC6\u5EA6\uFF0C\u7EA6\u591F\u53F8\u9A6C\u5149\u8BB0\u8F7D ${Math.round(e/45e5*1362).toLocaleString("en-US")} \u5E74\u5386\u53F2`},{min:49e3,max:1/0,suffix:e=>`\u7EA6\u5408\u300A\u4E00\u5343\u96F6\u4E00\u591C\u300B\u91CC\u5C71\u9C81\u4F50\u5FB7\u8BB2\u6545\u4E8B\u7684 ${Math.round(e/492e4*1001).toLocaleString("en-US")} \u4E2A\u591C\u665A`},{min:640,max:1/0,suffix:e=>`\u6309\u91D1\u9675\u523B\u7ECF\u5904\u523B\u5DE5\u534A\u6708\u523B\u6210\u4E00\u5757 800 \u5B57\u7ECF\u7248\u7684\u8FDB\u5EA6\uFF0C\u5168\u90E8\u523B\u4E0A\u96D5\u7248\u9700\u8981 ${qc(e/1.2/53)}`},{min:460800,max:1/0,suffix:e=>`\u6309\u6BCF\u5206\u949F 80 \u5B57\u3001\u6BCF\u5929 8 \u5C0F\u65F6\u8BA1\uFF0C\u591F\u4E00\u4F4D\u4E13\u804C\u6253\u5B57\u5458\u6253 ${fg(e)}`},{min:4500,max:1/0,suffix:e=>`\u82E5\u523B\u6210\u6BCF\u679A 30 \u5B57\u7684\u79E6\u6C49\u7AF9\u7B80\uFF0C\u603B\u91CD\u7EA6 ${gg(e)}`},{min:18e3,max:1/0,suffix:e=>`\u6309\u300A\u6C38\u4E50\u5927\u5178\u300B\u91CD\u5F55\u4E66\u624B\u6BCF\u5929\u4E09\u53F6\u3001\u7EA6 1500 \u5B57\u7684\u5B9A\u989D\uFF0C\u591F\u4E00\u4F4D\u4E66\u624B\u6284\u5199 ${qc(e/1.2/1500)}`},{min:108e3,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${Math.round(e/1.2/9e3).toLocaleString("en-US")} \u671F\u300A\u65B0\u95FB\u8054\u64AD\u300B\u7684\u64AD\u62A5\u7A3F`},{min:4e4,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${ut(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 ${ut(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 ${ut(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 ${ut(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 ${ut(e/1.2*.005/40075e3)} \u5708`}];function Wc(e){let{tokens:t,scope:o,range:n}=e;if(t<=0)return null;let r=hg.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 Yt(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown status value: ${t}`);return o}}function Xt(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown label value: ${t}`);return o}}var gn=Yt({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"}}),Ew=Xt({recharge:"\u5145\u503C",subscription:"\u8BA2\u9605"}),_r=Yt({pending:{label:"\u5F85\u5904\u7406",tone:"warning"},issued:{label:"\u5DF2\u5F00\u5177",tone:"success"},rejected:{label:"\u5DF2\u9A73\u56DE",tone:"danger"}}),Aw=Yt({enabled:{label:"\u5DF2\u542F\u7528",tone:"success"},disabled:{label:"\u5DF2\u7981\u7528",tone:"neutral"}}),Iw=Yt({active:{label:"\u6B63\u5E38",tone:"success"},disabled:{label:"\u7981\u7528",tone:"danger"}}),bs=Xt({recharge:"\u5145\u503C",reserve:"\u9884\u6263",consume:"\u6D88\u8D39",reserve_refund:"\u9884\u6263\u9000\u56DE",refund:"\u9000\u6B3E",refund_release:"\u9000\u6B3E\u8FD4\u8FD8",reward:"\u5956\u52B1",admin_adjust:"\u7BA1\u7406\u5458\u8C03\u6574"}),zc=Xt({usage_log:"\u7528\u91CF",order:"\u8BA2\u5355",invitation:"\u9080\u8BF7",admin:"\u7BA1\u7406\u5458"}),Gc=Yt({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"}}),Rr=Yt({success:{label:"\u6210\u529F",tone:"success"},error:{label:"\u5931\u8D25",tone:"danger"},canceled:{label:"\u53D6\u6D88",tone:"neutral"},anomaly:{label:"\u5F02\u5E38",tone:"warning"}}),Kc=Xt({"openai-chat":"OpenAI Chat","openai-responses":"OpenAI Responses","anthropic-messages":"Anthropic Messages"}),$o=Xt({special:"\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968",general:"\u589E\u503C\u7A0E\u666E\u901A\u53D1\u7968"}),Mn=Xt({special:"\u4E13\u7968",general:"\u666E\u7968"}),Pr=Xt({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"}),Do=Yt({info:{label:"\u4FE1\u606F",tone:"neutral"},success:{label:"\u6210\u529F",tone:"success"},warning:{label:"\u8B66\u544A",tone:"warning"},error:{label:"\u91CD\u8981",tone:"danger"}}),ys=Yt({open:{label:"\u5F85\u5904\u7406",tone:"warning"},replied:{label:"\u5DF2\u56DE\u590D",tone:"success"},closed:{label:"\u5DF2\u5173\u95ED",tone:"neutral"}}),Cr=Xt({billing:"\u8BA1\u8D39",technical:"\u6280\u672F",account:"\u8D26\u53F7",other:"\u5176\u4ED6"}),Ss=Yt({low:{label:"\u8F83\u4F4E",tone:"neutral"},normal:{label:"\u666E\u901A",tone:"neutral"},high:{label:"\u7D27\u6025",tone:"danger"}}),Vc=Xt({openai:"OpenAI",anthropic:"Anthropic"});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 Se(e){let t=e/100;return`${t<0?"-":""}\xA5${Math.abs(t).toFixed(2)}`}function xs(e){return Math.round(e*100)}function Jc(e){return e/100}function Yc(e,t,o){let n=e/t;return`${n<0?"-":""}$${Math.abs(n).toLocaleString("en-US",{minimumFractionDigits:o,maximumFractionDigits:o})}`}function ae(e,t){return Yc(e,t,2)}function oo(e,t){return Yc(e,t,6)}var Er=10080,Ar=1440;function Xc(e){if(e%Er===0){let t=e/Er;return t===1?"\u6BCF\u5468\u9650\u989D":`${t} \u5468\u9650\u989D`}if(e%Ar===0){let t=e/Ar;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 bg(e){if(e%Er===0){let t=e/Er;return t===1?"\u6BCF\u5468":`\u6BCF ${t} \u5468`}if(e%Ar===0){let t=e/Ar;return t===1?"\u6BCF\u5929":`\u6BCF ${t} \u5929`}return e%60===0?`\u6BCF ${e/60} \u5C0F\u65F6`:`\u6BCF ${e} \u5206\u949F`}function Qc(e,t){return e.windows.map(o=>`${bg(o.durationMinutes)} ${ae(o.quota,t)}`)}function Ts(e){return Math.min(100,Math.floor(e.used/e.quota*100))}function ws(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 ks={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"]},Zc={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 yg}from"os";var Sg=3e4,xg=fc({cliVersion:yt,platform:process.platform,release:yg(),arch:process.arch,nodeVersion:process.versions.node});async function el(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",xg);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??Sg),redirect:"follow"})}catch(r){let i=URL.canParse(e)?new URL(e).origin:e;throw new O(`\u65E0\u6CD5\u8FDE\u63A5 ${i}\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u7AD9\u70B9\u5730\u5740`,{exitCode:Fa,cause:r})}}async function tl(e){let t=await e.text();if(t==="")return null;try{return JSON.parse(t)}catch{return null}}async function St(e,t={}){let o=await el(e,t);if(!o.ok)return{status:o.status,ok:!1,headers:o.headers,data:await tl(o)};let n=await o.text(),r=null;if(n!=="")try{r=JSON.parse(n)}catch(i){throw new O(`${e} \u8FD4\u56DE\u4E86\u975E JSON \u5185\u5BB9\uFF0C\u53EF\u80FD\u88AB\u7F51\u5173\u6216\u4E2D\u95F4\u8BBE\u5907\u62E6\u622A`,{cause:i})}return{status:o.status,ok:!0,headers:o.headers,data:r}}async function nl(e,t={}){let o=await el(e,t);if(!o.ok)return{status:o.status,ok:!1,headers:o.headers,data:await tl(o),bytes:null};let n=new Uint8Array(await o.arrayBuffer());return{status:o.status,ok:!0,headers:o.headers,data:null,bytes:n}}function Tg(e,t){let o=dc.safeParse(t);if(!o.success)return new O(`\u8BF7\u6C42\u5931\u8D25\uFF08HTTP ${e}\uFF09`);let{code:n,message:r}=o.data.error,i=n==="unauthorized"||n==="token_expired"?Rn:void 0;return new O(pc[n]??r,i?{exitCode:i}:{})}function It(e){if(!e.ok)throw Tg(e.status,e.data)}var il="cf_refresh",sl="cf_device",ol=6e4;function rl(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 Bo(e,t){return{refresh:rl(t,il)??e.refresh,device:rl(t,sl)??e.device}}function Ir(e){let t=[];return e.refresh&&t.push(`${il}=${e.refresh}`),e.device&&t.push(`${sl}=${e.device}`),t.length>0?{cookie:t.join("; ")}:{}}function wg(e){let t=e.split(".")[1];if(t===void 0)throw new O("\u670D\u52A1\u7AEF\u8FD4\u56DE\u7684\u8BBF\u95EE\u4EE4\u724C\u683C\u5F0F\u4E0D\u6B63\u786E");let o;try{o=JSON.parse(Buffer.from(t,"base64url").toString("utf8"))}catch(r){throw new O("\u670D\u52A1\u7AEF\u8FD4\u56DE\u7684\u8BBF\u95EE\u4EE4\u724C\u65E0\u6CD5\u89E3\u6790",{cause:r})}let n=o.exp;if(typeof n!="number")throw new O("\u670D\u52A1\u7AEF\u8FD4\u56DE\u7684\u8BBF\u95EE\u4EE4\u724C\u7F3A\u5C11\u6709\u6548\u671F");return n*1e3}function Fo(e,t,o){if(!t.refresh)throw new O("\u670D\u52A1\u7AEF\u672A\u4E0B\u53D1\u5237\u65B0\u51ED\u636E\uFF0C\u65E0\u6CD5\u4FDD\u6301\u767B\u5F55\u72B6\u6001");let n={refreshCookie:t.refresh,accessToken:o.accessToken,accessExpiresAt:wg(o.accessToken),username:o.user.username,email:o.user.email,site:e};return Xi(r=>{r.session=n,t.device&&(r.device={site:e,cookie:t.device})}),n}function vs(e){let{device:t}=At();return t!==null&&t.site===e?t.cookie:null}async function al(e,t,o){let n={refresh:null,device:vs(e)},r=await St(`${e}/api/auth/login`,{json:{account:t,password:o},headers:Ir(n)});It(r);let i=bc.parse(r.data),s=Bo(n,r.headers);return i.status==="totp_required"?{status:"totp_required",ticket:i.ticket,jar:s}:{status:"ok",session:Fo(e,s,i)}}async function cl(e,t,o,n,r){let s=await St(`${e}/api/auth/${r==="totp"?"login/totp":"login/recovery-code"}`,{json:{ticket:o,code:n},headers:Ir(t)});It(s);let a=eo.parse(s.data);return Fo(e,Bo(t,s.headers),a)}function ll(){Xi(e=>{e.session=null})}async function kg(e){let t={refresh:e.refreshCookie,device:vs(e.site)},o=await St(`${e.site}/api/auth/refresh`,{method:"POST",headers:Ir(t)});if(o.status===401||o.status===403)throw ll(),new O("\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",{exitCode:Rn});It(o);let n=eo.parse(o.data);return Fo(e.site,Bo(t,o.headers),n)}async function Uo(e=!1){let t=Va();return!e&&Date.now()<t.accessExpiresAt-ol?t:Ja(async()=>{let o=Ka().session;if(!o)throw new O("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:Rn});return(o.refreshCookie!==t.refreshCookie||o.accessToken!==t.accessToken)&&Date.now()<o.accessExpiresAt-ol?o:kg(o)})}async function Nr(){let e=At().session;if(!e)return;let t=await St(`${e.site}/api/auth/logout`,{method:"POST",headers:Ir({refresh:e.refreshCookie,device:vs(e.site)})});ll(),It(t)}import{spawn as vg}from"child_process";function jo(e,t={}){return new Promise((o,n)=>{let r=vg("npm",e,{stdio:["ignore","pipe","pipe"],shell:process.platform==="win32"}),i=[],s=[],a=c=>{for(let l of c.toString("utf8").split(`
|
|
4
|
-
`)){let m=l.trimEnd();m!==""&&(s.push(m),s.length>20&&s.shift())}};r.stdout.on("data",c=>{i.push(c.toString("utf8")),a(c)}),r.stderr.on("data",a),r.on("error",c=>n(new O(`\u6267\u884C npm \u5931\u8D25\uFF1A${c.message}`,{cause:c}))),r.on("close",c=>{if(c===0){o(i.join(""));return}let l=s.slice(-2).join(" / ");n(new O(`npm ${e.join(" ")} \u9000\u51FA\u7801 ${c??"null"}`,{...l===""?{}:{hint:l}}))}),t.background===!0&&(r.stdout.unref(),r.stderr.unref(),r.unref())})}async function ul(e){let t=[],o=async(n,r)=>{try{await r(),e.done(n)}catch(i){t.push(`${n}\uFF1A${Re(i)}`),e.failed(n)}};return await o("\u9000\u51FA\u767B\u5F55",()=>Nr()),await o("\u5220\u9664\u672C\u5730\u6587\u4EF6",()=>{let n=Vt();_g(n)&&Rg(n,{recursive:!0,force:!0})}),await o("\u5378\u8F7D\u672C\u7A0B\u5E8F",async()=>{await jo(["uninstall","-g",Xn])}),t}import{z as Ho}from"zod";var Pg=Ho.object({line:Ho.object({name:Ho.string(),url:Ho.string()}).nullable().default(null),lastUpdateCheckAt:Ho.number().nullable().default(null)}),ml=hr(Pg,ja,"\u672C\u5730\u914D\u7F6E","\u91CD\u65B0\u8FD0\u884C"),Ln=ml.load,Mr=ml.update;var Cg=1440*60*1e3;async function dl(){let e=(await jo(["view",Xn,"version"])).trim();if(e==="")throw new O(`npm \u6CA1\u6709\u62A5\u51FA ${Xn} \u7684\u7248\u672C`);return e}async function pl(e,t){return await jo(["install","-g",`${Xn}@${e}`],{background:t}),e}async function fl(){let e=await dl();return e===yt?null:await pl(e,!1)}function Eg(){let e=Date.now(),t=Ln().lastUpdateCheckAt;return t!==null&&e-t<Cg?!1:(Mr(o=>{o.lastUpdateCheckAt=e}),!0)}async function gl(){if(!Eg())return null;let e;try{e=await dl()}catch{return null}return e===yt?null:await pl(e,!0)}import{Box as ox,render as rx,useInput as ix}from"ink";import{useEffect as $a,useRef as sx}from"react";async function Nt(e,t,o={}){let n=await St(t,o);return It(n),e.parse(n.data)}async function L(e,t,o={}){let n=await Uo(),r=s=>St(`${n.site}/api${t}`,{...o,headers:{...o.headers,authorization:`Bearer ${s}`}}),i=await r(n.accessToken);if(i.status===401){let s=await Uo(!0);i=await r(s.accessToken)}return It(i),e.parse(i.data)}async function Lr(e,t={}){let o=await Uo(),n=i=>nl(`${o.site}/api${e}`,{...t,headers:{...t.headers,authorization:`Bearer ${i}`}}),r=await n(o.accessToken);if(r.status===401){let i=await Uo(!0);r=await n(i.accessToken)}return It(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 hl=e=>L(Cn(ds),Bt("/announcements",{...e})),bl=()=>L(ds.nullable(),"/announcements/unread"),Or=e=>L(pe,`/announcements/${e}/read`,{method:"POST"});import{Box as yl,useWindowSize as Ag}from"ink";import{Children as Ig}from"react";import{jsx as Sl}from"react/jsx-runtime";var Ng=1,_s=1,W=1;function j(){let{columns:e,rows:t}=Ag();return{width:Math.max(1,e-Ng*2),columns:e,rows:t}}function xl({height:e,children:t}){return Sl(yl,{flexDirection:"column",height:e,justifyContent:"space-between",children:Ig.toArray(t).map((o,n)=>Sl(yl,{flexDirection:"column",flexShrink:0,children:o},n))})}import{useInput as wl}from"ink";import{createContext as Cs,useCallback as $r,useContext as Mg,useEffect as Es,useMemo as Rs,useRef as qo,useState as Tl}from"react";import{jsx as Ps}from"react/jsx-runtime";var Dr=Cs(null),As=Cs(null),ro={screen:0,panel:10,input:20},Is=Cs(null);function kl({children:e}){let[t,o]=Tl(!1),[n,r]=Tl(!1),i=qo(0),s=qo(0),a=qo([]),c=qo(0),l=$r(()=>(i.current+=1,o(!0),()=>{i.current-=1,i.current===0&&o(!1)}),[]),m=$r(()=>(s.current+=1,r(!0),()=>{s.current-=1,s.current===0&&r(!1)}),[]),p=$r(h=>{let y={...h,seq:c.current+=1};return a.current.push(y),()=>{a.current=a.current.filter(x=>x!==y)}},[]),d=$r(()=>{a.current.reduce((y,x)=>y===null||x.layer>y.layer||x.layer===y.layer&&x.seq>y.seq?x:y,null)?.handler()},[]);wl((h,y)=>{y.escape&&d()});let f=Rs(()=>({active:t,acquire:l}),[t,l]),S=Rs(()=>({locked:n,acquire:m}),[n,m]),b=Rs(()=>({push:p,fire:d}),[p,d]);return Ps(Dr.Provider,{value:f,children:Ps(As.Provider,{value:S,children:Ps(Is.Provider,{value:b,children:e})})})}function On(e){let t=Mg(e);if(!t)throw new Error("\u952E\u76D8\u94A9\u5B50\u5FC5\u987B\u5728 KeyboardProvider \u5185\u4F7F\u7528");return t}function Br(e){let{acquire:t}=On(Dr);Es(()=>{if(e)return t()},[e,t])}function vl(e){let{acquire:t}=On(As);Es(()=>{if(e)return t()},[e,t])}function Fr(){return On(As).locked}function Ur(){return On(Dr).active}function z(e,t=!0){let o=On(Dr).active;wl(e,{isActive:t&&!o})}function _l(){return On(Is).fire}function hn(e,{isActive:t=!0,layer:o=ro.screen}={}){let{push:n}=On(Is),r=qo(e);r.current=e,Es(()=>{if(t)return n({handler:()=>r.current(),layer:o})},[t,o,n])}import{measureElement as Lg}from"ink";import{PassThrough as Og}from"stream";import{createContext as $g,useCallback as Dg,useContext as Bg,useEffect as El,useRef as jr}from"react";import{jsx as Vg}from"react/jsx-runtime";var Fg="\x1B[?1000h\x1B[?1003h\x1B[?1006h",Ug="\x1B[?1006l\x1B[?1003l\x1B[?1000l",jg=27,Hg=91,qg=60,Rl=77,Pl=109,Cl=20,Wg=64,zg=32,Gg=20;function Kg(e){let t=[],o=[],n=0;for(;n<e.length;){let r=e[n];if(r===void 0)break;if(r!==jg){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!==Hg){o.push(r),n+=1;continue}if(s===Rl){if(n+6>e.length)break;n+=6;continue}if(s!==qg){o.push(r),n+=1;continue}let a=n+3,c;for(;a<e.length&&a-n<Cl;){let f=e[a];if(f===Rl||f===Pl){c=f;break}a+=1}if(c===void 0){if(a-n<Cl)break;o.push(r),n+=1;continue}let l=e.subarray(n+3,a).toString("latin1").split(";");if(n=a+1,c===Pl||l.length!==3)continue;let m=Number(l[0]),p=Number(l[1]),d=Number(l[2]);!Number.isFinite(m)||!Number.isFinite(p)||!Number.isFinite(d)||t.push((m&Wg)!==0?{row:d,column:p,kind:"wheel",delta:(m&1)===0?-1:1}:{row:d,column:p,kind:(m&zg)!==0?"move":"press"})}return{events:t,clean:Buffer.from(o),pending:e.subarray(n)}}function Al(e,t){let o=new Set,n=new Og,r=Buffer.alloc(0),i=null,s=()=>{i=null,r.length!==0&&(n.write(r),r=Buffer.alloc(0))},a=d=>{i!==null&&clearTimeout(i),i=null;let f=Kg(Buffer.concat([r,d]));r=f.pending,f.clean.length>0&&n.write(f.clean);for(let S of f.events)for(let b of o)b(S);r.length>0&&(i=setTimeout(s,Gg))},c=()=>{t.write(Ug)},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(Fg);let p=n;return Object.assign(p,{isTTY:!0,setRawMode(d){return e.setRawMode(d),p},ref(){return e.ref(),p},unref(){return e.unref(),p}}),{stdin:p,subscribe(d){return o.add(d),()=>{o.delete(d)}},dispose(){c(),i!==null&&clearTimeout(i),process.off("exit",c);for(let d of Object.keys(l))process.off(d,m);e.off("data",a),o.clear()}}}var Il=$g(null);function Nl({subscribe:e,children:t}){let o=jr(new Set).current,n=jr(null),r=Dg(i=>(o.add(i),()=>{o.delete(i)}),[o]);return El(()=>e(i=>{let s=i.row-1,a=i.column-1,c=null;for(let m of o){let p=m.node.current;if(p===null||m.handlers.current.isActive===!1)continue;let d=Lg(p);if(s<d.y||s>=d.y+d.height||a<d.x||a>=d.x+d.width)continue;let f=d.width*d.height;(c===null||f<c.area)&&(c={region:m,top:d.y,left:d.x,area:f})}if(i.kind==="move"){let m=c===null?null:c.region;if(n.current!==m){let p=n.current;p!==null&&o.has(p)&&p.handlers.current.onHoverLeave?.(),n.current=m}c!==null&&c.region.handlers.current.onHover?.({row:s-c.top,column:a-c.left});return}if(c===null)return;let l=c.region.handlers.current;i.kind==="wheel"?l.onWheel?.(i.delta):l.onClick?.({row:s-c.top,column:a-c.left})}),[e,o]),Vg(Il.Provider,{value:r,children:t})}function We(e){let t=Bg(Il);if(t===null)throw new Error("useMouseRegion \u5FC5\u987B\u5728 MouseProvider \u5185\u4F7F\u7528");let o=jr(null),n=jr(e);return n.current=e,El(()=>t({node:o,handlers:n}),[t]),o}import{useApp as Jg}from"ink";import{createContext as Yg,useCallback as $n,useContext as Xg,useEffect as Ns,useRef as qr,useState as zo}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"}],Ml="usage",Wo=e=>nt.findIndex(t=>t.id===e),Hr=e=>Wo(e)>=0;import{jsx as Zg}from"react/jsx-runtime";var Qg=5e3,Ol=Yg(null),$l=e=>({id:e,params:void 0}),Ll=()=>At().session===null?[{id:"home",params:void 0}]:[$l(Ml)];function B(){let e=Xg(Ol);if(!e)throw new Error("useNav \u5FC5\u987B\u5728 NavProvider \u5185\u4F7F\u7528");return e}function Dl({ctx:e,children:t}){let o=Jg(),[n,r]=zo(Ll),[i,s]=zo(0),[a,c]=zo([]),l=qr({announcementsChecked:!1,announcementsShown:!1}).current,m=qr(new WeakMap).current,p=$n((P,...$)=>{r(U=>[...U,{id:P,params:$[0]}])},[]),d=$n(()=>{r(P=>P.length>1?P.slice(0,-1):P),s(P=>P+1)},[]),f=$n(P=>{r([$l(P)]),s($=>$+1)},[]),S=$n(()=>{r(Ll()),s(P=>P+1)},[]),b=$n(()=>s(P=>P+1),[]),h=$n((P,$)=>{c(U=>[...U,{tone:P,message:$}])},[]),y=$n(()=>c(P=>P.slice(1)),[]),x=a[0]??null;Ns(()=>{if(x===null)return;let P=setTimeout(y,Qg);return()=>clearTimeout(P)},[x,y]);let k=n[n.length-1];if(k===void 0)throw new Error("\u5BFC\u822A\u6808\u4E3A\u7A7A");let g=m.get(k);g===void 0&&(g=new Map,m.set(k,g));let w={ctx:e,current:k,depth:n.length,push:p,pop:d,select:f,home:S,reload:b,toast:h,message:x,dismissToast:y,exit:o.exit,revision:i,gate:l,retained:g};return Zg(Ol.Provider,{value:w,children:t})}function Ze(e,t){let{retained:o}=B(),[n,r]=zo(()=>e!==void 0&&o.has(e)?o.get(e):t());return Ns(()=>{e!==void 0&&o.set(e,n)},[o,e,n]),[n,r]}function Q(e,t){let[o,n]=zo({phase:"loading"}),r=qr(t);r.current=t;let i=qr(0);return Ns(()=>{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:Re(a),hint:a instanceof O?a.hint:void 0})})},e),o}import{Box as ai,Text as Fn,useInput as Ah}from"ink";import{Box as Yo,Text as co}from"ink";import Go from"string-width";var u={background:"#0d0d0d",foreground:"#f3f3f3",mutedForeground:"#949494",faintForeground:"#696969",cursorBackground:"#c8c8c8",border:"#393939",accent:"#37be95",success:"#34d399",warning:"#fbbf24",danger:"#f87171"},Wr=["#242424","#5a4233","#746533","#70924f","#37be95"],zr=["#37be95","#2d9273","#246e58","#1e5443","#193f33"],Fe={accent:u.accent,success:u.success,warning:u.warning,danger:u.danger},io=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Gr=80,Z={cursor:"\u276F",bullet:"\xB7",crumb:"\u203A",ok:"\u2714",warn:"!",fail:"\u2718",ellipsis:"\u2026",barFilled:"\u2588",barEmpty:"\u2591",section:"\u258D",prev:"\u2039",next:"\u203A"};var eh=Go(Z.ellipsis),th=(e,t)=>e+" ".repeat(Math.max(0,t-Go(e))),nh=(e,t)=>" ".repeat(Math.max(0,t-Go(e)))+e;function Pe(e,t){if(t<=0)return"";if(Go(e)<=t)return e;let o=t-eh,n="";for(let r of e){if(Go(n+r)>o)break;n+=r}return n+Z.ellipsis}var Oe=(e,t)=>th(Pe(e,t),t),bn=(e,t)=>nh(Pe(e,t),t),Ue=e=>e.filter(t=>typeof t=="string"&&t!=="").join(` ${Z.bullet} `);import{Text as Mt,useInput as oh}from"ink";import{useImperativeHandle as rh,useRef as Bl,useEffect as ih,useState as Ul}from"react";import Ms from"string-width";import{jsx as Ft,jsxs as Ls}from"react/jsx-runtime";var sh=e=>e.replace(new RegExp("\\p{Cc}","gu"),"");function Fl(e,t,o){let n=t,r=0;for(;n>0;){let s=Ms(e[n-1]??"");if(r+s>o)break;r+=s,n-=1}let i=t;for(r+=1;i<e.length;){let s=Ms(e[i]??"");if(r+s>o)break;r+=s,i+=1}return{start:n,before:e.slice(n,t).join(""),at:e[t]??" ",after:e.slice(t+1,i).join("")}}function Ko({char:e}){return Ft(Mt,{backgroundColor:u.cursorBackground,color:u.foreground,children:e})}function Kr({value:e,onChange:t,onSubmit:o,placeholder:n,mask:r=!1,isActive:i=!0,width:s=40,ref:a}){let c=[...e],[l,m]=Ul(c.length),p=Math.min(l,c.length),d=Math.max(8,s),f=Bl(e),S=Bl(p);f.current=e,S.current=p,Br(i);let b=w=>{S.current=w,m(w)},h=(w,P)=>{f.current=w,b(P),t(w)};if(rh(a,()=>({moveToColumn:w=>{let P=[...f.current],$=r?Array.from({length:P.length},()=>"\u2022"):P,T=Fl($,Math.min(S.current,P.length),d).start,I=0;for(;T<P.length;){let _=Ms($[T]??"");if(I+_>w)break;I+=_,T+=1}b(T)}})),oh((w,P)=>{let $=[...f.current],U=Math.min(S.current,$.length);if(P.return){o(f.current);return}if(P.tab||P.upArrow||P.downArrow)return;if(P.leftArrow){b(Math.max(0,U-1));return}if(P.rightArrow){b(Math.min($.length,U+1));return}if(P.home){b(0);return}if(P.end){b($.length);return}if(P.backspace){if(U===0)return;h([...$.slice(0,U-1),...$.slice(U)].join(""),U-1);return}if(P.delete){if(U>=$.length)return;h([...$.slice(0,U),...$.slice(U+1)].join(""),U);return}if(P.ctrl){if(w==="a")b(0);else if(w==="e")b($.length);else if(w==="k")h($.slice(0,U).join(""),U);else if(w==="u")h($.slice(U).join(""),0);else if(w==="w"){let v=U;for(;v>0&&$[v-1]===" ";)v-=1;for(;v>0&&$[v-1]!==" ";)v-=1;h([...$.slice(0,v),...$.slice(U)].join(""),v)}return}if(P.meta||!w)return;let T=w.search(/[\r\n]/),I=sh(T===-1?w:w.slice(0,T)),_=[...$.slice(0,U),I,...$.slice(U)].join("");h(_,U+[...I].length),T!==-1&&o(_)},{isActive:i}),e===""){let w=[...n??""];return i?Ls(Mt,{children:[Ft(Ko,{char:w[0]??" "}),Ft(Mt,{color:u.faintForeground,children:w.slice(1).join("")})]}):Ft(Mt,{color:u.faintForeground,children:w.join("")})}let y=r?Array.from({length:c.length},()=>"\u2022"):c;if(!i)return Ft(Mt,{color:u.foreground,children:y.join("")});let{before:x,at:k,after:g}=Fl(y,p,d);return Ls(Mt,{children:[Ft(Mt,{color:u.foreground,children:x}),Ft(Ko,{char:k}),Ft(Mt,{color:u.foreground,children:g})]})}function ot({label:e}){let[t,o]=Ul(0);return ih(()=>{let n=setInterval(()=>o(r=>(r+1)%io.length),Gr);return()=>clearInterval(n)},[]),Ls(Mt,{children:[Ft(Mt,{color:u.accent,children:io[t]}),Ft(Mt,{color:u.mutedForeground,children:` ${e}`})]})}import{Box as ql,Text as so}from"ink";import{useEffect as zl,useState as ch}from"react";import Wl from"string-width";import{Box as jl,Text as Vr}from"ink";import ah from"string-width";import{jsx as Vo,jsxs as Hl}from"react/jsx-runtime";var ce=2,mt=1,He=1,dt=mt+He;function Jo({title:e,note:t,width:o}){let n=t===void 0?0:ah(t)+2,r=Math.max(0,o-ce-n);return Hl(Vr,{wrap:"truncate",children:[Vo(Vr,{color:u.accent,children:`${Z.section} `}),Vo(Vr,{bold:!0,color:u.foreground,children:Pe(e,r)}),t!==void 0&&Vo(Vr,{color:u.faintForeground,children:` ${t}`})]})}function te({title:e,note:t,width:o,gap:n=He,children:r}){return Hl(jl,{flexDirection:"column",children:[Vo(Jo,{title:e,note:t,width:o}),Vo(jl,{flexDirection:"column",marginTop:n,paddingLeft:ce,children:r})]})}import{jsx as Qt,jsxs as Kl}from"react/jsx-runtime";var ao=e=>!("heading"in e),lh=e=>e.flatMap(t=>!ao(t)&&t.heading!==""?[t,{heading:""}]:[t]),Gl=2,Jr=2,uh=(e,t)=>t===void 0?e:e>t?Math.max(1,t-1):t;function mh(e,t,o,n){let[r,i]=Ze(n,()=>e.findIndex(m=>ao(m)&&m.disabled!==!0));zl(()=>{i(m=>m>=e.length?Math.max(0,e.length-1):m)},[e.length]);let s=m=>{i(p=>{let d=e.length;if(d===0)return p;let f=p;for(let S=0;S<d;S+=1){f=(f+m+d)%d;let b=e[f];if(b!==void 0&&ao(b)&&b.disabled!==!0)return f}return p})},a=m=>{let p=e[m];return p!==void 0&&ao(p)&&p.disabled!==!0?p:null},c=m=>{a(m)!==null&&i(m)},l=m=>{let p=a(m);p!==null&&(i(m),o(p.value))};return z((m,p)=>{if(p.upArrow||m==="k"){s(-1);return}if(p.downArrow||m==="j"){s(1);return}p.return&&l(r)},t),{index:Math.max(0,r),step:s,pick:l,moveTo:c}}function Os(e,t){let[o,n]=ch(()=>e>=t?e-t+1:0);return zl(()=>{n(r=>e<r?e:e>=r+t?e-t+1:r)},[e,t]),o}function dh(e,t){let o=e.filter(ao),n=Math.max(0,...o.map(s=>Wl(s.label))),r=Math.max(0,...o.map(s=>s.badge===void 0?0:Wl(s.badge))),i=Gl+n+(r>0?r+Jr:0)+Jr;return{label:n,badge:r,hint:Math.max(0,t-i)}}function ph({item:e,active:t,metrics:o}){let n=e.disabled===!0,r=n?u.faintForeground:e.labelTone!==void 0?Fe[e.labelTone]:t?u.accent:u.foreground;return Kl(so,{wrap:"truncate",children:[Qt(so,{color:u.accent,children:t?`${Z.cursor} `:" "}),Qt(so,{color:r,bold:t,children:Oe(e.label,o.label)}),o.badge>0&&Qt(so,{color:e.badgeTone===void 0?u.faintForeground:Fe[e.badgeTone],children:`${" ".repeat(Jr)}${Oe(e.badge??"",o.badge)}`}),e.hint!==void 0&&o.hint>0&&Qt(so,{color:n||!t?u.faintForeground:u.mutedForeground,children:`${" ".repeat(Jr)}${Pe(e.hint,o.hint)}`})]})}function fh({items:e,cursor:t,metrics:o,window:n,width:r,isActive:i,onPick:s,onHover:a,onScroll:c}){let l=Os(t,n),m=e.slice(l,l+n),p=f=>f<m.length?l+f:null,d=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 Kl(ql,{ref:d,flexDirection:"column",children:[m.map((f,S)=>{let b=l+S;return ao(f)?Qt(ph,{item:f,active:b===t&&i,metrics:o},b):f.heading===""?Qt(ql,{height:1},b):Qt(Jo,{title:f.heading,width:r},b)}),e.length>n&&Qt(so,{color:u.faintForeground,children:`${" ".repeat(Gl)}${l+1}-${Math.min(l+n,e.length)} / ${e.length}`})]})}function se({items:e,onSelect:t,width:o,height:n,isActive:r=!0,retain:i}){let s=lh(e),a=mh(s,r,t,i);return Qt(fh,{items:s,cursor:a.index,metrics:dh(s,o),window:uh(s.length,n),width:o,isActive:r,onPick:a.pick,onHover:a.moveTo,onScroll:a.step})}import{jsx as xt,jsxs as Yr}from"react/jsx-runtime";var Vl={ok:{glyph:Z.ok,color:u.success},warn:{glyph:Z.warn,color:u.warning},fail:{glyph:Z.fail,color:u.danger},info:{glyph:Z.bullet,color:u.mutedForeground}};function ye({tone:e,title:t,detail:o,width:n}){let r=Vl[e];return Yr(Yo,{flexDirection:"column",children:[Yr(co,{children:[xt(co,{color:r.color,children:`${r.glyph} `}),xt(co,{color:u.foreground,children:Pe(t,n-2)})]}),o!==void 0&&xt(co,{color:u.faintForeground,children:` ${Pe(o,n-2)}`})]})}function Dn({message:e,hint:t,width:o}){return xt(ye,{tone:"fail",title:e,detail:t,width:o})}var gh=2,hh=2;function Jl({tone:e,message:t,width:o,onDismiss:n}){let r=Vl[e],i=We({onClick:n});return Yr(Yo,{ref:i,children:[xt(co,{backgroundColor:u.border,color:r.color,wrap:"truncate",children:` ${r.glyph} `}),xt(co,{backgroundColor:u.border,color:u.foreground,wrap:"truncate",children:`${Pe(t,o-gh-hh)} `})]})}function Ve({title:e,detail:t,confirmLabel:o,onConfirm:n,onCancel:r,width:i,busy:s,error:a}){return Yr(Yo,{flexDirection:"column",children:[xt(ye,{tone:"warn",title:e,detail:t,width:i}),a!=null&&xt(Yo,{marginTop:1,children:xt(Dn,{message:a.message,hint:a.hint,width:i})}),xt(Yo,{marginTop:1,children:typeof s=="string"?xt(ot,{label:s}):xt(se,{items:[{value:"cancel",label:"\u53D6\u6D88"},{value:"confirm",label:o,labelTone:"danger"}],width:i,onSelect:c=>c==="confirm"?n():r()})})]})}import{Box as bh,Text as Xr,useInput as yh}from"ink";import{useRef as Sh,useState as xh}from"react";import{jsx as Qr,jsxs as Th}from"react/jsx-runtime";function yn({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]=xh(n?s:0),l=Sh(s);if(s!==l.current){let f=a>=l.current;l.current=s;let S=n&&f?s:Math.min(a,s);S!==a&&c(S)}let m=f=>c(S=>Math.min(Math.max(0,S+f),s));yh((f,S)=>{S.upArrow?m(-1):S.downArrow?m(1):S.pageUp?m(-i):S.pageDown&&m(i)},{isActive:o&&r}),z(f=>{f==="k"?m(-1):f==="j"&&m(1)},o&&r);let p=We({isActive:o&&r,onWheel:m}),d=e.slice(a,a+i);return Th(bh,{ref:p,flexDirection:"column",children:[d.map((f,S)=>Qr(Xr,{wrap:"truncate",children:f.spans.length===0?" ":f.spans.map((b,h)=>Qr(Xr,{color:b.color??u.foreground,bold:b.bold===!0,children:b.text},h))},a+S)),Array.from({length:Math.max(0,i-d.length)},(f,S)=>Qr(Xr,{children:" "},S)),r&&Qr(Xr,{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 Zt(e){let t=Ye(e);return t===void 0?e.label:{text:e.label,tone:t}}import{useCallback as $s,useRef as wh,useState as Yl}from"react";function fe(){let e=B(),[t,o]=Yl(null),[n,r]=Yl(null),i=wh(0),s=$s(()=>{i.current+=1,o(null),r(null)},[]),a=$s((l,m)=>{r({message:l,hint:m})},[]),c=$s((l,m,p={})=>{let d=i.current+=1;o(l),r(null),m().then(f=>{i.current===d&&(o(null),p.onSuccess?.(f))}).catch(f=>{if(i.current!==d)return;o(null);let S={message:Re(f),hint:f instanceof O?f.hint:void 0};p.failToast===!0?e.toast("fail",S.message):r(S)})},[e]);return{busy:t,error:n,reset:s,fail:a,run:c}}import{Lexer as kh}from"marked";import Zr from"string-width";var vh={spans:[]},Ds=e=>e===void 0||e.spans.every(t=>t.text.trim()==="");function Xl(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(Xl(i)),a=!1,i=n(),s=o};for(let l of e)for(let m of l.text){if(m===`
|
|
2
|
+
import{once as hx}from"events";import{createInterface as bx}from"readline/promises";import{parseArgs as yx}from"util";var Da={name:"@codeflow-ai/cli",version:"1.25.1",type:"module",description:"CodeFlow \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF\uFF1A\u4E00\u952E\u914D\u7F6E AI \u5BA2\u6237\u7AEF",keywords:["codeflow","claude-code","codex","openclaw","hermes-agent","opencode","pi-coding-agent","cli"],license:"UNLICENSED",engines:{node:">=22"},bin:{codeflow:"dist/cli.js"},files:["dist"],publishConfig:{access:"public"},scripts:{dev:"tsx src/cli.ts",build:"tsup",typecheck:"tsc --noEmit"},dependencies:{"@decimalturn/toml-patch":"3.0.4",ink:"7.1.1",json5:"2.2.3","jsonc-parser":"3.3.1",marked:"18.0.5",qrcode:"1.5.4",react:"19.2.0","smol-toml":"1.7.0","string-width":"8.2.0",yaml:"2.9.1",zod:"4.4.3"},devDependencies:{"@codeflow/shared":"workspace:*","@types/node":"25.9.1","@types/qrcode":"1.5.6","@types/react":"19.2.2",tsup:"8.5.1",tsx:"4.22.3",typescript:"5.9.3"}};var bt="codeflow",yt=Da.version,Ba="https://codeflow.asia",Xn="@codeflow-ai/cli",Ro=0,Qn=1,Ji=2,Rn=3,Fa=4;import{randomBytes as pf}from"crypto";import{mkdirSync as Wa,readFileSync as ff,rmSync as za,statSync as gf,writeFileSync as hf}from"fs";import{join as Ga}from"path";import{setTimeout as bf}from"timers/promises";import{z as Et}from"zod";var O=class extends Error{exitCode;hint;constructor(t,o={}){super(t,{cause:o.cause}),this.name="CliError",this.exitCode=o.exitCode??Qn,this.hint=o.hint}};function Re(e){return e instanceof Error?e.message:String(e)}import{chmodSync as sf,existsSync as af,mkdirSync as cf,readFileSync as lf,writeFileSync as uf}from"fs";import{dirname as mf}from"path";function ct(e){return af(e)?lf(e,"utf8"):null}function Kt(e,t,o){cf(mf(e),{recursive:!0,mode:448});try{uf(e,t,{mode:o}),sf(e,o)}catch(n){throw new O(`\u5199\u5165 ${e} \u5931\u8D25\uFF1A${Re(n)}`,{cause:n})}}function Ua(e,t,o){Kt(e,`${JSON.stringify(t,null,2)}
|
|
3
|
+
`,o)}function hr(e,t,o,n,r){let i=null,s=()=>{if(i)return i;let a=o(),c=ct(a);if(c===null)return i=structuredClone(t),i;let l;try{l=JSON.parse(c)}catch(p){throw new O(`${n} ${a} \u5DF2\u635F\u574F\uFF0C\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u540E${r}`,{cause:p})}let m=e.safeParse(l);if(!m.success)throw new O(`${n} ${a} \u7ED3\u6784\u4E0D\u7B26\uFF0C\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u540E${r}`);return i=m.data,i};return{load:s,reload:()=>(i=null,s()),update:a=>{let c=structuredClone(s());return a(c),Ua(o(),c,384),i=c,c}}}import{homedir as df}from"os";import{join as Zn}from"path";function Vt(){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(df(),".config","codeflow")}var ja=()=>Zn(Vt(),"config.json"),Ha=()=>Zn(Vt(),"credentials.json"),qa=()=>Zn(Vt(),"refresh.lock");var yf=Et.object({refreshCookie:Et.string(),accessToken:Et.string(),accessExpiresAt:Et.number(),username:Et.string(),email:Et.string(),site:Et.string()}),Sf=Et.object({site:Et.string(),cookie:Et.string()}),xf=Et.object({session:yf.nullable(),device:Sf.nullable()}),Yi=hr(xf,{session:null,device:null},Ha,"\u672C\u5730\u51ED\u636E","\u91CD\u65B0\u767B\u5F55"),At=Yi.load,Ka=Yi.reload,Xi=Yi.update;function Va(){let{session:e}=At();if(!e)throw new O("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:Rn});return e}var Tf=6e4,wf=75e3,kf=120;function vf(e,t){try{Wa(e)}catch{try{Date.now()-gf(e).mtimeMs>Tf&&za(e,{recursive:!0,force:!0})}catch{}return!1}return hf(Ga(e,"owner"),t),!0}function _f(e,t){let o;try{o=ff(Ga(e,"owner"),"utf8")}catch{return}o===t&&za(e,{recursive:!0,force:!0})}async function Ja(e){let t=qa(),o=pf(16).toString("hex");Wa(Vt(),{recursive:!0,mode:448});let n=Date.now()+wf;for(;!vf(t,o);){if(Date.now()>n)throw new O(`\u7B49\u5F85\u5237\u65B0\u9501\u8D85\u65F6\uFF0C\u82E5\u786E\u8BA4\u6CA1\u6709\u5176\u4ED6 ${bt} \u5728\u8FD0\u884C\uFF0C\u8BF7\u5220\u9664 ${t}`);await bf(kf)}try{return await e()}finally{_f(t,o)}}function Rf(){let e=process.env.CODEFLOW_SITE;if(e)return e;let t=At().session;return t?t.site:Ba}function Ya(){return{site:Rf()}}function Pn(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 _g,rmSync as Rg}from"fs";import{z as Be}from"zod";var Pf=["active","disabled"],tT=Be.enum(Pf),Cf=["openai","anthropic"],Xa=Be.enum(Cf),Ef=["openai-chat","openai-responses","anthropic-messages"],Qa=Be.enum(Ef);var Af=["enabled","disabled"],nT=Be.enum(Af),Po=["pending","paid","refund_requested","partially_refunded","refunded","failed","expired"],Za=Be.enum(Po),If=["recharge","subscription"],oT=Be.enum(If),Nf=["requested","pending","succeeded","failed","rejected","canceled"],ec=Be.enum(Nf),Qi=["pending","issued","rejected"],tc=Be.enum(Qi),Mf=["special","general"],Zi=Be.enum(Mf),Lf=["info","success","warning","error"],nc=Be.enum(Lf),Of=["terms","privacy"],rT=Be.enum(Of),es=["recharge","reserve","consume","reserve_refund","refund","refund_release","reward","admin_adjust"],oc=Be.enum(es),$f=["usage_log","order","invitation","admin"],rc=Be.enum($f),ts=["first_inviter","first_invitee","subsequent_inviter"],ic=Be.enum(ts),ns=["success","error","canceled","anomaly"],sc=Be.enum(ns),os=["open","replied","closed"],ac=Be.enum(os),rs=["billing","technical","account","other"],cc=Be.enum(rs),is=["low","normal","high"],lc=Be.enum(is),Df=["user","admin"],uc=Be.enum(Df),Bf=["none","minor","major","critical"],mc=Be.enum(Bf);import{z as dn}from"zod";var Ff=["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","provider_status_unavailable"],Uf=dn.enum(Ff),dc=dn.object({error:dn.object({code:Uf,message:dn.string(),details:dn.unknown().optional(),requestId:dn.string().optional()})}),aT=dn.object({reason:dn.string()});var pc={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",provider_status_unavailable:"\u5B98\u65B9\u670D\u52A1\u72B6\u6001\u6682\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5"};import{z as ue}from"zod";var jf=ue.string().trim().min(1),ss=jf.pipe(ue.url()),Hf=ue.object({name:ue.string().trim().min(1),description:ue.string().trim().min(1),url:ss}),mT=ue.array(Hf),qf=["string","number","boolean","secret","markdown","money","api-lines","origins"],Wf=ue.enum(qf),zf=ue.object({key:ue.string(),type:Wf,label:ue.string(),description:ue.string().optional(),value:ue.unknown().optional(),secret:ue.boolean(),required:ue.boolean(),min:ue.number().optional(),max:ue.number().optional(),step:ue.number().optional(),unit:ue.string().optional(),placeholder:ue.string().optional()}),dT=ue.object({key:ue.string(),label:ue.string(),description:ue.string().optional(),fields:ue.array(zf)}),pT=ue.object({values:ue.record(ue.string(),ue.unknown())}),fT=ue.object({fields:ue.record(ue.string(),ue.string())});function fc(e){return`codeflow-cli/${e.cliVersion} (${e.platform} ${e.release}; ${e.arch}) node/${e.nodeVersion}`}function br(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 Jt}from"zod";var as=1e8;var yT=Jt.object({id:Jt.coerce.number().int().positive()}),gc=100,ST=Jt.object({page:Jt.coerce.number().int().min(1)});function Cn(e){return Jt.object({items:Jt.array(e),total:Jt.number()})}var pe=Jt.object({ok:Jt.literal(!0)});import{z as Y}from"zod";var En=Y.email().max(254).toLowerCase(),lt=8,Co=Y.string().min(lt).max(128),Eo=Y.string().min(1).max(128),An=32,cs=Y.string().trim().min(1).max(An),ls=Y.string().trim().min(1).max(254),wT=Y.object({email:En}),kT=Y.object({username:cs,email:En,password:Co,code:Y.string().min(4).max(8),inviteCode:Y.string().trim().min(1).max(32).optional()}),vT=Y.object({account:ls,password:Eo}),_T=Y.object({email:En,code:Y.string().min(4).max(8),password:Co}),RT=Y.object({oldPassword:Eo,newPassword:Co}),PT=Y.object({email:En}),CT=Y.object({email:En,code:Y.string().min(4).max(8),password:Eo}),hc=Y.object({username:Y.string(),email:Y.string()}),eo=Y.object({accessToken:Y.string(),user:hc}),bc=Y.discriminatedUnion("status",[eo.extend({status:Y.literal("ok")}),Y.object({status:Y.literal("totp_required"),ticket:Y.string()})]),yc=Y.object({user:hc}),Gf=Y.object({client:Y.string().nullable(),clientVersion:Y.string().nullable(),os:Y.string().nullable(),osVersion:Y.string().nullable(),type:Y.string().nullable(),vendor:Y.string().nullable(),model:Y.string().nullable()}),Kf=Y.object({id:Y.number().int(),ip:Y.string(),userAgent:Y.string().nullable(),device:Gf.nullable(),loginAt:Y.string(),lastActiveAt:Y.string(),expiresAt:Y.string(),current:Y.boolean()}),Sc=Y.object({sessions:Y.array(Kf)});import{z as me}from"zod";var to=me.string().trim().length(6),Vf=me.string().trim().min(10).max(20),yr=me.string().trim().min(1).max(64),Sr=me.record(me.string(),me.unknown()),IT=me.object({ticket:me.string().min(1),code:to}),NT=me.object({ticket:me.string().min(1),code:Vf}),MT=me.object({code:to.optional()}),LT=me.object({code:to}),xc=me.object({secret:me.string(),otpauthUri:me.string()}),us=me.object({recoveryCodes:me.array(me.string())}),Jf=me.object({id:me.number().int(),name:me.string(),createdAt:me.string(),lastUsedAt:me.string().nullable()}),Tc=me.object({totp:me.object({enabled:me.boolean(),enabledAt:me.string().nullable(),recoveryCodesRemaining:me.number().int()}),passkeys:me.array(Jf)}),OT=me.object({name:yr,response:Sr}),$T=me.object({name:yr}),DT=me.object({response:Sr});import{z as we}from"zod";var HT=we.object({account:ls,password:Eo}),Yf=we.object({totp:we.boolean(),passkeys:we.boolean()}),qT=we.discriminatedUnion("status",[we.object({status:we.literal("totp_required"),ticket:we.string()}),we.object({status:we.literal("setup_required"),ticket:we.string(),missing:Yf})]),WT=we.object({ticket:we.string().min(1)}),zT=we.object({ticket:we.string().min(1),code:to}),GT=we.object({ticket:we.string().min(1),name:yr,response:Sr}),KT=we.object({ticket:we.string().min(1),code:to.optional()}),wc=we.object({username:we.string(),email:we.string()}),VT=we.object({accessToken:we.string(),admin:wc}),JT=we.object({admin:wc});import{z as ms}from"zod";var ew=ms.object({siteName:ms.string().trim().min(1).max(64),siteDescription:ms.string().trim().max(200).optional(),siteOrigin:ss,username:cs,email:En,password:Co});import{z as ke}from"zod";var kc={orderNo:ke.string(),amountCny:ke.number().int(),status:Za,credited:ke.boolean(),refundedAmountCny:ke.number().int(),succeededRefundCny:ke.number().int(),pendingRefundCny:ke.number().int(),createdAt:ke.string()},Ao=ke.object({...kc,quota:ke.number(),refundedQuota:ke.number()}),Io=ke.object({...kc,planName:ke.string(),renewal:ke.boolean(),grantedDurationDays:ke.number().int()}),xr=ke.object({order:Ao.pick({orderNo:!0,amountCny:!0,quota:!0}),qrCode:ke.string()}),No=ke.object({order:Io.pick({orderNo:!0,amountCny:!0,planName:!0,grantedDurationDays:!0}),qrCode:ke.string()}),vc=ke.object({id:ke.number().int(),amountCny:ke.number().int(),status:ec,refundTradeNo:ke.string().nullable(),reason:ke.string().nullable(),rejectReason:ke.string().nullable(),createdAt:ke.string()});function _c(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 Ke}from"zod";var Tr=Ke.object({id:Ke.number().int(),title:Ke.string(),category:cc,priority:lc,status:ac,createdAt:Ke.string(),updatedAt:Ke.string()}),Rc=Tr.pick({id:!0}),Mo=25*1024*1024,wr=5,Pc=Ke.object({id:Ke.number().int(),fileName:Ke.string(),fileSize:Ke.number().int(),contentType:Ke.string()}),Cc=Pc.pick({id:!0,fileSize:!0}),Xf=Ke.object({id:Ke.number().int(),authorKind:uc,content:Ke.string(),attachments:Ke.array(Pc),createdAt:Ke.string()}),Ec=Ke.object({ticket:Tr,messages:Ke.array(Xf)});import{z as Lo}from"zod";var ds=Lo.object({id:Lo.number().int(),title:Lo.string(),content:Lo.string(),level:nc,publishedAt:Lo.string()});import{z as je}from"zod";var dw=je.union([je.object({ok:je.literal(!0),latencyMs:je.number().int().nonnegative()}),je.object({ok:je.literal(!1),reason:je.enum(["http","error_payload"]),status:je.number().int(),latencyMs:je.number().int().nonnegative(),body:je.string()}),je.object({ok:je.literal(!1),reason:je.literal("timeout"),latencyMs:je.number().int().nonnegative()}),je.object({ok:je.literal(!1),reason:je.literal("network"),detail:je.string(),latencyMs:je.number().int().nonnegative()})]);import{z as Le}from"zod";var gw=Le.object({groups:Le.array(Le.object({title:Le.string(),items:Le.array(Le.object({slug:Le.string(),title:Le.string()}))}))}),hw=Le.object({title:Le.string(),markdown:Le.string(),images:Le.record(Le.string(),Le.object({width:Le.number().int(),height:Le.number().int()}))}),bw=Le.object({slug:Le.string(),title:Le.string(),anchor:Le.string().nullable(),snippet:Le.string()});import{z as de}from"zod";function Te(e){return e.toLocaleString("en-US")}function pn(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`:Te(e)}function Dt(e,t){return e===0&&t!==void 0?t:e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:6})}function In(e){return(e/1e3).toFixed(2)}function no(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 kr(e,t){return`${e}******${t}`}var vr=de.union([de.literal(0),de.number().min(1e-6)]),Ac=de.object({inputPricePerMillionTokens:vr,outputPricePerMillionTokens:vr,cachedInputPricePerMillionTokens:vr,cacheWritePricePerMillionTokens:vr}),ps=de.object({inputPricePerMillionTokens:de.number(),outputPricePerMillionTokens:de.number(),cachedInputPricePerMillionTokens:de.number(),cacheWritePricePerMillionTokens:de.number()});var Ic=de.number().int().nonnegative(),Qf=de.number().min(1e-4),Zf={param:de.string().trim().min(1),value:de.string().trim().min(1)},eg=de.discriminatedUnion("kind",[Ac.extend({kind:de.literal("price"),inputTokensOver:Ic}),de.object({kind:de.literal("multiplier"),...Zf,multiplier:Qf})]),ww=Ac.extend({model:de.string().trim().min(1),displayName:de.string().trim().min(1),rules:de.array(eg)}),tg=de.discriminatedUnion("kind",[ps.extend({kind:de.literal("price"),inputTokensOver:Ic}),de.object({kind:de.literal("multiplier"),param:de.string(),value:de.string(),multiplier:de.number()})]),Nc=de.array(tg);function ng(e){return e.kind==="price"}function Mc(e){return e.kind==="multiplier"}function Lc(e){return e>=1e6&&e%1e5===0?`${e/1e6}M`:e>=1e3&&e%1e3===0?`${e/1e3}k`:Te(e)}function Oo(e){return e===null?"\u57FA\u7840":"\u6269\u5C55"}function fs(e){return`> ${Lc(e)}`}function Oc(e,t){let o=t.filter(ng).sort((r,i)=>r.inputTokensOver-i.inputTokensOver),n=o[0];return n===void 0?[{name:Oo(null),range:null,price:e}]:[{name:Oo(null),range:`\u2264 ${Lc(n.inputTokensOver)}`,price:e},...o.map(r=>({name:Oo(r.inputTokensOver),range:fs(r.inputTokensOver),price:r}))]}var og=de.object({value:de.string(),multiplier:de.number()}),$c=de.array(og);function Dc(e){return Fc(e.map(t=>t.multiplier))}function Bc(e,t){return Fc([e,...t.map(o=>o.multiplier)])}function Fc(e){return Number(e.reduce((t,o)=>t*o,1).toFixed(4))}import{z as Nn}from"zod";var rg=Nn.object({provider:Xa,pageUrl:Nn.string(),indicator:mc,incidents:Nn.array(Nn.object({title:Nn.string()}))}),Uc=Nn.object({providers:Nn.array(rg)}),ig={minor:{label:"\u90E8\u5206\u964D\u7EA7",tone:"warning"},major:{label:"\u90E8\u5206\u4E2D\u65AD",tone:"danger"},critical:{label:"\u4E25\u91CD\u4E2D\u65AD",tone:"danger"}};function jc(e){return e.filter(t=>t.indicator!=="none"||t.incidents.length>0)}function Hc(e){return e.indicator==="none"?{label:"\u4E8B\u4EF6\u5904\u7406\u4E2D",tone:"warning"}:ig[e.indicator]}var sg="Asia/Shanghai",ag="+08:00";function cg(e){return new Date(new Date(e).getTime()+288e5)}function lg(e=Date.now()){let t=cg(e);return{day:t.toISOString().slice(0,10),hour:t.getUTCHours()}}function gs(e=Date.now()){return lg(e).day}function hs(e=gs()){return new Date(`${e}T00:00:00${ag}`)}function fn(e,t){let o=new Date(`${e}T00:00:00Z`);return new Date(o.getTime()+t*864e5).toISOString().slice(0,10)}var ug=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium",timeZone:sg});function K(e){return ug.format(new Date(e))}var mg=[{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 dg(e){return e>=10?Math.round(e).toLocaleString("en-US"):e>=1?e.toFixed(1):e.toFixed(-Math.floor(Math.log10(e)))}function ut(e){return e>=10?Math.round(e).toLocaleString("en-US"):e.toFixed(1)}function qc(e){return e<365?`${ut(e)} \u5929`:`${ut(e/365)} \u5E74`}function pg(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`:`${ut(o/365)} \u5E74`}function fg(e){let t=e/1.2/80/60/8;return t<250?`${ut(t)} \u4E2A\u5DE5\u4F5C\u65E5`:`${ut(t/250)} \u4E2A\u5DE5\u4F5C\u5E74`}function gg(e){let t=e/1.2/30*4;return t<1e3?`${Math.round(t).toLocaleString("en-US")} \u514B`:t<1e6?`${ut(t/1e3)} \u516C\u65A4`:`${ut(t/1e6)} \u5428`}var hg=[...mg.map(e=>({min:e.tokens/10,max:e.tokens*1e4,suffix:t=>`\u7EA6\u4E3A${e.name}\u7684 ${dg(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 ${pg(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 ${ut(e/1.2/300/365)} \u5E74`},{min:12e5,max:1/0,suffix:e=>`\u7EA6\u5408 ${Math.round(e/1.2/1e5).toLocaleString("en-US")} \u672C\u5341\u4E07\u5B57\u7684\u535A\u58EB\u8BBA\u6587`},{min:33e3,max:1/0,suffix:e=>`\u6309\u300A\u8D44\u6CBB\u901A\u9274\u300B\u7684\u7B14\u58A8\u5BC6\u5EA6\uFF0C\u7EA6\u591F\u53F8\u9A6C\u5149\u8BB0\u8F7D ${Math.round(e/45e5*1362).toLocaleString("en-US")} \u5E74\u5386\u53F2`},{min:49e3,max:1/0,suffix:e=>`\u7EA6\u5408\u300A\u4E00\u5343\u96F6\u4E00\u591C\u300B\u91CC\u5C71\u9C81\u4F50\u5FB7\u8BB2\u6545\u4E8B\u7684 ${Math.round(e/492e4*1001).toLocaleString("en-US")} \u4E2A\u591C\u665A`},{min:640,max:1/0,suffix:e=>`\u6309\u91D1\u9675\u523B\u7ECF\u5904\u523B\u5DE5\u534A\u6708\u523B\u6210\u4E00\u5757 800 \u5B57\u7ECF\u7248\u7684\u8FDB\u5EA6\uFF0C\u5168\u90E8\u523B\u4E0A\u96D5\u7248\u9700\u8981 ${qc(e/1.2/53)}`},{min:460800,max:1/0,suffix:e=>`\u6309\u6BCF\u5206\u949F 80 \u5B57\u3001\u6BCF\u5929 8 \u5C0F\u65F6\u8BA1\uFF0C\u591F\u4E00\u4F4D\u4E13\u804C\u6253\u5B57\u5458\u6253 ${fg(e)}`},{min:4500,max:1/0,suffix:e=>`\u82E5\u523B\u6210\u6BCF\u679A 30 \u5B57\u7684\u79E6\u6C49\u7AF9\u7B80\uFF0C\u603B\u91CD\u7EA6 ${gg(e)}`},{min:18e3,max:1/0,suffix:e=>`\u6309\u300A\u6C38\u4E50\u5927\u5178\u300B\u91CD\u5F55\u4E66\u624B\u6BCF\u5929\u4E09\u53F6\u3001\u7EA6 1500 \u5B57\u7684\u5B9A\u989D\uFF0C\u591F\u4E00\u4F4D\u4E66\u624B\u6284\u5199 ${qc(e/1.2/1500)}`},{min:108e3,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${Math.round(e/1.2/9e3).toLocaleString("en-US")} \u671F\u300A\u65B0\u95FB\u8054\u64AD\u300B\u7684\u64AD\u62A5\u7A3F`},{min:4e4,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${ut(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 ${ut(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 ${ut(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 ${ut(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 ${ut(e/1.2*.005/40075e3)} \u5708`}];function Wc(e){let{tokens:t,scope:o,range:n}=e;if(t<=0)return null;let r=hg.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 Yt(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown status value: ${t}`);return o}}function Xt(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown label value: ${t}`);return o}}var gn=Yt({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"}}),Ew=Xt({recharge:"\u5145\u503C",subscription:"\u8BA2\u9605"}),_r=Yt({pending:{label:"\u5F85\u5904\u7406",tone:"warning"},issued:{label:"\u5DF2\u5F00\u5177",tone:"success"},rejected:{label:"\u5DF2\u9A73\u56DE",tone:"danger"}}),Aw=Yt({enabled:{label:"\u5DF2\u542F\u7528",tone:"success"},disabled:{label:"\u5DF2\u7981\u7528",tone:"neutral"}}),Iw=Yt({active:{label:"\u6B63\u5E38",tone:"success"},disabled:{label:"\u7981\u7528",tone:"danger"}}),bs=Xt({recharge:"\u5145\u503C",reserve:"\u9884\u6263",consume:"\u6D88\u8D39",reserve_refund:"\u9884\u6263\u9000\u56DE",refund:"\u9000\u6B3E",refund_release:"\u9000\u6B3E\u8FD4\u8FD8",reward:"\u5956\u52B1",admin_adjust:"\u7BA1\u7406\u5458\u8C03\u6574"}),zc=Xt({usage_log:"\u7528\u91CF",order:"\u8BA2\u5355",invitation:"\u9080\u8BF7",admin:"\u7BA1\u7406\u5458"}),Gc=Yt({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"}}),Rr=Yt({success:{label:"\u6210\u529F",tone:"success"},error:{label:"\u5931\u8D25",tone:"danger"},canceled:{label:"\u53D6\u6D88",tone:"neutral"},anomaly:{label:"\u5F02\u5E38",tone:"warning"}}),Kc=Xt({"openai-chat":"OpenAI Chat","openai-responses":"OpenAI Responses","anthropic-messages":"Anthropic Messages"}),$o=Xt({special:"\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968",general:"\u589E\u503C\u7A0E\u666E\u901A\u53D1\u7968"}),Mn=Xt({special:"\u4E13\u7968",general:"\u666E\u7968"}),Pr=Xt({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"}),Do=Yt({info:{label:"\u4FE1\u606F",tone:"neutral"},success:{label:"\u6210\u529F",tone:"success"},warning:{label:"\u8B66\u544A",tone:"warning"},error:{label:"\u91CD\u8981",tone:"danger"}}),ys=Yt({open:{label:"\u5F85\u5904\u7406",tone:"warning"},replied:{label:"\u5DF2\u56DE\u590D",tone:"success"},closed:{label:"\u5DF2\u5173\u95ED",tone:"neutral"}}),Cr=Xt({billing:"\u8BA1\u8D39",technical:"\u6280\u672F",account:"\u8D26\u53F7",other:"\u5176\u4ED6"}),Ss=Yt({low:{label:"\u8F83\u4F4E",tone:"neutral"},normal:{label:"\u666E\u901A",tone:"neutral"},high:{label:"\u7D27\u6025",tone:"danger"}}),Vc=Xt({openai:"OpenAI",anthropic:"Anthropic"});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 Se(e){let t=e/100;return`${t<0?"-":""}\xA5${Math.abs(t).toFixed(2)}`}function xs(e){return Math.round(e*100)}function Jc(e){return e/100}function Yc(e,t,o){let n=e/t;return`${n<0?"-":""}$${Math.abs(n).toLocaleString("en-US",{minimumFractionDigits:o,maximumFractionDigits:o})}`}function ae(e,t){return Yc(e,t,2)}function oo(e,t){return Yc(e,t,6)}var Er=10080,Ar=1440;function Xc(e){if(e%Er===0){let t=e/Er;return t===1?"\u6BCF\u5468\u9650\u989D":`${t} \u5468\u9650\u989D`}if(e%Ar===0){let t=e/Ar;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 bg(e){if(e%Er===0){let t=e/Er;return t===1?"\u6BCF\u5468":`\u6BCF ${t} \u5468`}if(e%Ar===0){let t=e/Ar;return t===1?"\u6BCF\u5929":`\u6BCF ${t} \u5929`}return e%60===0?`\u6BCF ${e/60} \u5C0F\u65F6`:`\u6BCF ${e} \u5206\u949F`}function Qc(e,t){return e.windows.map(o=>`${bg(o.durationMinutes)} ${ae(o.quota,t)}`)}function Ts(e){return Math.min(100,Math.floor(e.used/e.quota*100))}function ws(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 ks={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"]},Zc={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 yg}from"os";var Sg=3e4,xg=fc({cliVersion:yt,platform:process.platform,release:yg(),arch:process.arch,nodeVersion:process.versions.node});async function el(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",xg);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??Sg),redirect:"follow"})}catch(r){let i=URL.canParse(e)?new URL(e).origin:e;throw new O(`\u65E0\u6CD5\u8FDE\u63A5 ${i}\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u7AD9\u70B9\u5730\u5740`,{exitCode:Fa,cause:r})}}async function tl(e){let t=await e.text();if(t==="")return null;try{return JSON.parse(t)}catch{return null}}async function St(e,t={}){let o=await el(e,t);if(!o.ok)return{status:o.status,ok:!1,headers:o.headers,data:await tl(o)};let n=await o.text(),r=null;if(n!=="")try{r=JSON.parse(n)}catch(i){throw new O(`${e} \u8FD4\u56DE\u4E86\u975E JSON \u5185\u5BB9\uFF0C\u53EF\u80FD\u88AB\u7F51\u5173\u6216\u4E2D\u95F4\u8BBE\u5907\u62E6\u622A`,{cause:i})}return{status:o.status,ok:!0,headers:o.headers,data:r}}async function nl(e,t={}){let o=await el(e,t);if(!o.ok)return{status:o.status,ok:!1,headers:o.headers,data:await tl(o),bytes:null};let n=new Uint8Array(await o.arrayBuffer());return{status:o.status,ok:!0,headers:o.headers,data:null,bytes:n}}function Tg(e,t){let o=dc.safeParse(t);if(!o.success)return new O(`\u8BF7\u6C42\u5931\u8D25\uFF08HTTP ${e}\uFF09`);let{code:n,message:r}=o.data.error,i=n==="unauthorized"||n==="token_expired"?Rn:void 0;return new O(pc[n]??r,i?{exitCode:i}:{})}function It(e){if(!e.ok)throw Tg(e.status,e.data)}var il="cf_refresh",sl="cf_device",ol=6e4;function rl(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 Bo(e,t){return{refresh:rl(t,il)??e.refresh,device:rl(t,sl)??e.device}}function Ir(e){let t=[];return e.refresh&&t.push(`${il}=${e.refresh}`),e.device&&t.push(`${sl}=${e.device}`),t.length>0?{cookie:t.join("; ")}:{}}function wg(e){let t=e.split(".")[1];if(t===void 0)throw new O("\u670D\u52A1\u7AEF\u8FD4\u56DE\u7684\u8BBF\u95EE\u4EE4\u724C\u683C\u5F0F\u4E0D\u6B63\u786E");let o;try{o=JSON.parse(Buffer.from(t,"base64url").toString("utf8"))}catch(r){throw new O("\u670D\u52A1\u7AEF\u8FD4\u56DE\u7684\u8BBF\u95EE\u4EE4\u724C\u65E0\u6CD5\u89E3\u6790",{cause:r})}let n=o.exp;if(typeof n!="number")throw new O("\u670D\u52A1\u7AEF\u8FD4\u56DE\u7684\u8BBF\u95EE\u4EE4\u724C\u7F3A\u5C11\u6709\u6548\u671F");return n*1e3}function Fo(e,t,o){if(!t.refresh)throw new O("\u670D\u52A1\u7AEF\u672A\u4E0B\u53D1\u5237\u65B0\u51ED\u636E\uFF0C\u65E0\u6CD5\u4FDD\u6301\u767B\u5F55\u72B6\u6001");let n={refreshCookie:t.refresh,accessToken:o.accessToken,accessExpiresAt:wg(o.accessToken),username:o.user.username,email:o.user.email,site:e};return Xi(r=>{r.session=n,t.device&&(r.device={site:e,cookie:t.device})}),n}function vs(e){let{device:t}=At();return t!==null&&t.site===e?t.cookie:null}async function al(e,t,o){let n={refresh:null,device:vs(e)},r=await St(`${e}/api/auth/login`,{json:{account:t,password:o},headers:Ir(n)});It(r);let i=bc.parse(r.data),s=Bo(n,r.headers);return i.status==="totp_required"?{status:"totp_required",ticket:i.ticket,jar:s}:{status:"ok",session:Fo(e,s,i)}}async function cl(e,t,o,n,r){let s=await St(`${e}/api/auth/${r==="totp"?"login/totp":"login/recovery-code"}`,{json:{ticket:o,code:n},headers:Ir(t)});It(s);let a=eo.parse(s.data);return Fo(e,Bo(t,s.headers),a)}function ll(){Xi(e=>{e.session=null})}async function kg(e){let t={refresh:e.refreshCookie,device:vs(e.site)},o=await St(`${e.site}/api/auth/refresh`,{method:"POST",headers:Ir(t)});if(o.status===401||o.status===403)throw ll(),new O("\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",{exitCode:Rn});It(o);let n=eo.parse(o.data);return Fo(e.site,Bo(t,o.headers),n)}async function Uo(e=!1){let t=Va();return!e&&Date.now()<t.accessExpiresAt-ol?t:Ja(async()=>{let o=Ka().session;if(!o)throw new O("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:Rn});return(o.refreshCookie!==t.refreshCookie||o.accessToken!==t.accessToken)&&Date.now()<o.accessExpiresAt-ol?o:kg(o)})}async function Nr(){let e=At().session;if(!e)return;let t=await St(`${e.site}/api/auth/logout`,{method:"POST",headers:Ir({refresh:e.refreshCookie,device:vs(e.site)})});ll(),It(t)}import{spawn as vg}from"child_process";function jo(e,t={}){return new Promise((o,n)=>{let r=vg("npm",e,{stdio:["ignore","pipe","pipe"],shell:process.platform==="win32"}),i=[],s=[],a=c=>{for(let l of c.toString("utf8").split(`
|
|
4
|
+
`)){let m=l.trimEnd();m!==""&&(s.push(m),s.length>20&&s.shift())}};r.stdout.on("data",c=>{i.push(c.toString("utf8")),a(c)}),r.stderr.on("data",a),r.on("error",c=>n(new O(`\u6267\u884C npm \u5931\u8D25\uFF1A${c.message}`,{cause:c}))),r.on("close",c=>{if(c===0){o(i.join(""));return}let l=s.slice(-2).join(" / ");n(new O(`npm ${e.join(" ")} \u9000\u51FA\u7801 ${c??"null"}`,{...l===""?{}:{hint:l}}))}),t.background===!0&&(r.stdout.unref(),r.stderr.unref(),r.unref())})}async function ul(e){let t=[],o=async(n,r)=>{try{await r(),e.done(n)}catch(i){t.push(`${n}\uFF1A${Re(i)}`),e.failed(n)}};return await o("\u9000\u51FA\u767B\u5F55",()=>Nr()),await o("\u5220\u9664\u672C\u5730\u6587\u4EF6",()=>{let n=Vt();_g(n)&&Rg(n,{recursive:!0,force:!0})}),await o("\u5378\u8F7D\u672C\u7A0B\u5E8F",async()=>{await jo(["uninstall","-g",Xn])}),t}import{z as Ho}from"zod";var Pg=Ho.object({line:Ho.object({name:Ho.string(),url:Ho.string()}).nullable(),lastUpdateCheckAt:Ho.number().nullable()}),ml=hr(Pg,{line:null,lastUpdateCheckAt:null},ja,"\u672C\u5730\u914D\u7F6E","\u91CD\u65B0\u8FD0\u884C"),Ln=ml.load,Mr=ml.update;var Cg=1440*60*1e3;async function dl(){let e=(await jo(["view",Xn,"version"])).trim();if(e==="")throw new O(`npm \u6CA1\u6709\u62A5\u51FA ${Xn} \u7684\u7248\u672C`);return e}async function pl(e,t){return await jo(["install","-g",`${Xn}@${e}`],{background:t}),e}async function fl(){let e=await dl();return e===yt?null:await pl(e,!1)}function Eg(){let e=Date.now(),t=Ln().lastUpdateCheckAt;return t!==null&&e-t<Cg?!1:(Mr(o=>{o.lastUpdateCheckAt=e}),!0)}async function gl(){if(!Eg())return null;let e;try{e=await dl()}catch{return null}return e===yt?null:await pl(e,!0)}import{Box as ox,render as rx,useInput as ix}from"ink";import{useEffect as $a,useRef as sx}from"react";async function Nt(e,t,o={}){let n=await St(t,o);return It(n),e.parse(n.data)}async function L(e,t,o={}){let n=await Uo(),r=s=>St(`${n.site}/api${t}`,{...o,headers:{...o.headers,authorization:`Bearer ${s}`}}),i=await r(n.accessToken);if(i.status===401){let s=await Uo(!0);i=await r(s.accessToken)}return It(i),e.parse(i.data)}async function Lr(e,t={}){let o=await Uo(),n=i=>nl(`${o.site}/api${e}`,{...t,headers:{...t.headers,authorization:`Bearer ${i}`}}),r=await n(o.accessToken);if(r.status===401){let i=await Uo(!0);r=await n(i.accessToken)}return It(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 hl=e=>L(Cn(ds),Bt("/announcements",{...e})),bl=()=>L(ds.nullable(),"/announcements/unread"),Or=e=>L(pe,`/announcements/${e}/read`,{method:"POST"});import{Box as yl,useWindowSize as Ag}from"ink";import{Children as Ig}from"react";import{jsx as Sl}from"react/jsx-runtime";var Ng=1,_s=1,W=1;function j(){let{columns:e,rows:t}=Ag();return{width:Math.max(1,e-Ng*2),columns:e,rows:t}}function xl({height:e,children:t}){return Sl(yl,{flexDirection:"column",height:e,justifyContent:"space-between",children:Ig.toArray(t).map((o,n)=>Sl(yl,{flexDirection:"column",flexShrink:0,children:o},n))})}import{useInput as wl}from"ink";import{createContext as Cs,useCallback as $r,useContext as Mg,useEffect as Es,useMemo as Rs,useRef as qo,useState as Tl}from"react";import{jsx as Ps}from"react/jsx-runtime";var Dr=Cs(null),As=Cs(null),ro={screen:0,panel:10,input:20},Is=Cs(null);function kl({children:e}){let[t,o]=Tl(!1),[n,r]=Tl(!1),i=qo(0),s=qo(0),a=qo([]),c=qo(0),l=$r(()=>(i.current+=1,o(!0),()=>{i.current-=1,i.current===0&&o(!1)}),[]),m=$r(()=>(s.current+=1,r(!0),()=>{s.current-=1,s.current===0&&r(!1)}),[]),p=$r(h=>{let y={...h,seq:c.current+=1};return a.current.push(y),()=>{a.current=a.current.filter(x=>x!==y)}},[]),d=$r(()=>{a.current.reduce((y,x)=>y===null||x.layer>y.layer||x.layer===y.layer&&x.seq>y.seq?x:y,null)?.handler()},[]);wl((h,y)=>{y.escape&&d()});let f=Rs(()=>({active:t,acquire:l}),[t,l]),S=Rs(()=>({locked:n,acquire:m}),[n,m]),b=Rs(()=>({push:p,fire:d}),[p,d]);return Ps(Dr.Provider,{value:f,children:Ps(As.Provider,{value:S,children:Ps(Is.Provider,{value:b,children:e})})})}function On(e){let t=Mg(e);if(!t)throw new Error("\u952E\u76D8\u94A9\u5B50\u5FC5\u987B\u5728 KeyboardProvider \u5185\u4F7F\u7528");return t}function Br(e){let{acquire:t}=On(Dr);Es(()=>{if(e)return t()},[e,t])}function vl(e){let{acquire:t}=On(As);Es(()=>{if(e)return t()},[e,t])}function Fr(){return On(As).locked}function Ur(){return On(Dr).active}function z(e,t=!0){let o=On(Dr).active;wl(e,{isActive:t&&!o})}function _l(){return On(Is).fire}function hn(e,{isActive:t=!0,layer:o=ro.screen}={}){let{push:n}=On(Is),r=qo(e);r.current=e,Es(()=>{if(t)return n({handler:()=>r.current(),layer:o})},[t,o,n])}import{measureElement as Lg}from"ink";import{PassThrough as Og}from"stream";import{createContext as $g,useCallback as Dg,useContext as Bg,useEffect as El,useRef as jr}from"react";import{jsx as Vg}from"react/jsx-runtime";var Fg="\x1B[?1000h\x1B[?1003h\x1B[?1006h",Ug="\x1B[?1006l\x1B[?1003l\x1B[?1000l",jg=27,Hg=91,qg=60,Rl=77,Pl=109,Cl=20,Wg=64,zg=32,Gg=20;function Kg(e){let t=[],o=[],n=0;for(;n<e.length;){let r=e[n];if(r===void 0)break;if(r!==jg){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!==Hg){o.push(r),n+=1;continue}if(s===Rl){if(n+6>e.length)break;n+=6;continue}if(s!==qg){o.push(r),n+=1;continue}let a=n+3,c;for(;a<e.length&&a-n<Cl;){let f=e[a];if(f===Rl||f===Pl){c=f;break}a+=1}if(c===void 0){if(a-n<Cl)break;o.push(r),n+=1;continue}let l=e.subarray(n+3,a).toString("latin1").split(";");if(n=a+1,c===Pl||l.length!==3)continue;let m=Number(l[0]),p=Number(l[1]),d=Number(l[2]);!Number.isFinite(m)||!Number.isFinite(p)||!Number.isFinite(d)||t.push((m&Wg)!==0?{row:d,column:p,kind:"wheel",delta:(m&1)===0?-1:1}:{row:d,column:p,kind:(m&zg)!==0?"move":"press"})}return{events:t,clean:Buffer.from(o),pending:e.subarray(n)}}function Al(e,t){let o=new Set,n=new Og,r=Buffer.alloc(0),i=null,s=()=>{i=null,r.length!==0&&(n.write(r),r=Buffer.alloc(0))},a=d=>{i!==null&&clearTimeout(i),i=null;let f=Kg(Buffer.concat([r,d]));r=f.pending,f.clean.length>0&&n.write(f.clean);for(let S of f.events)for(let b of o)b(S);r.length>0&&(i=setTimeout(s,Gg))},c=()=>{t.write(Ug)},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(Fg);let p=n;return Object.assign(p,{isTTY:!0,setRawMode(d){return e.setRawMode(d),p},ref(){return e.ref(),p},unref(){return e.unref(),p}}),{stdin:p,subscribe(d){return o.add(d),()=>{o.delete(d)}},dispose(){c(),i!==null&&clearTimeout(i),process.off("exit",c);for(let d of Object.keys(l))process.off(d,m);e.off("data",a),o.clear()}}}var Il=$g(null);function Nl({subscribe:e,children:t}){let o=jr(new Set).current,n=jr(null),r=Dg(i=>(o.add(i),()=>{o.delete(i)}),[o]);return El(()=>e(i=>{let s=i.row-1,a=i.column-1,c=null;for(let m of o){let p=m.node.current;if(p===null||m.handlers.current.isActive===!1)continue;let d=Lg(p);if(s<d.y||s>=d.y+d.height||a<d.x||a>=d.x+d.width)continue;let f=d.width*d.height;(c===null||f<c.area)&&(c={region:m,top:d.y,left:d.x,area:f})}if(i.kind==="move"){let m=c===null?null:c.region;if(n.current!==m){let p=n.current;p!==null&&o.has(p)&&p.handlers.current.onHoverLeave?.(),n.current=m}c!==null&&c.region.handlers.current.onHover?.({row:s-c.top,column:a-c.left});return}if(c===null)return;let l=c.region.handlers.current;i.kind==="wheel"?l.onWheel?.(i.delta):l.onClick?.({row:s-c.top,column:a-c.left})}),[e,o]),Vg(Il.Provider,{value:r,children:t})}function We(e){let t=Bg(Il);if(t===null)throw new Error("useMouseRegion \u5FC5\u987B\u5728 MouseProvider \u5185\u4F7F\u7528");let o=jr(null),n=jr(e);return n.current=e,El(()=>t({node:o,handlers:n}),[t]),o}import{useApp as Jg}from"ink";import{createContext as Yg,useCallback as $n,useContext as Xg,useEffect as Ns,useRef as qr,useState as zo}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"}],Ml="usage",Wo=e=>nt.findIndex(t=>t.id===e),Hr=e=>Wo(e)>=0;import{jsx as Zg}from"react/jsx-runtime";var Qg=5e3,Ol=Yg(null),$l=e=>({id:e,params:void 0}),Ll=()=>At().session===null?[{id:"home",params:void 0}]:[$l(Ml)];function B(){let e=Xg(Ol);if(!e)throw new Error("useNav \u5FC5\u987B\u5728 NavProvider \u5185\u4F7F\u7528");return e}function Dl({ctx:e,children:t}){let o=Jg(),[n,r]=zo(Ll),[i,s]=zo(0),[a,c]=zo([]),l=qr({announcementsChecked:!1,announcementsShown:!1}).current,m=qr(new WeakMap).current,p=$n((P,...$)=>{r(U=>[...U,{id:P,params:$[0]}])},[]),d=$n(()=>{r(P=>P.length>1?P.slice(0,-1):P),s(P=>P+1)},[]),f=$n(P=>{r([$l(P)]),s($=>$+1)},[]),S=$n(()=>{r(Ll()),s(P=>P+1)},[]),b=$n(()=>s(P=>P+1),[]),h=$n((P,$)=>{c(U=>[...U,{tone:P,message:$}])},[]),y=$n(()=>c(P=>P.slice(1)),[]),x=a[0]??null;Ns(()=>{if(x===null)return;let P=setTimeout(y,Qg);return()=>clearTimeout(P)},[x,y]);let k=n[n.length-1];if(k===void 0)throw new Error("\u5BFC\u822A\u6808\u4E3A\u7A7A");let g=m.get(k);g===void 0&&(g=new Map,m.set(k,g));let w={ctx:e,current:k,depth:n.length,push:p,pop:d,select:f,home:S,reload:b,toast:h,message:x,dismissToast:y,exit:o.exit,revision:i,gate:l,retained:g};return Zg(Ol.Provider,{value:w,children:t})}function Ze(e,t){let{retained:o}=B(),[n,r]=zo(()=>e!==void 0&&o.has(e)?o.get(e):t());return Ns(()=>{e!==void 0&&o.set(e,n)},[o,e,n]),[n,r]}function Q(e,t){let[o,n]=zo({phase:"loading"}),r=qr(t);r.current=t;let i=qr(0);return Ns(()=>{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:Re(a),hint:a instanceof O?a.hint:void 0})})},e),o}import{Box as ai,Text as Fn,useInput as Ah}from"ink";import{Box as Yo,Text as co}from"ink";import Go from"string-width";var u={background:"#0d0d0d",foreground:"#f3f3f3",mutedForeground:"#949494",faintForeground:"#696969",cursorBackground:"#c8c8c8",border:"#393939",accent:"#37be95",success:"#34d399",warning:"#fbbf24",danger:"#f87171"},Wr=["#242424","#5a4233","#746533","#70924f","#37be95"],zr=["#37be95","#2d9273","#246e58","#1e5443","#193f33"],Fe={accent:u.accent,success:u.success,warning:u.warning,danger:u.danger},io=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Gr=80,Z={cursor:"\u276F",bullet:"\xB7",crumb:"\u203A",ok:"\u2714",warn:"!",fail:"\u2718",ellipsis:"\u2026",barFilled:"\u2588",barEmpty:"\u2591",section:"\u258D",prev:"\u2039",next:"\u203A"};var eh=Go(Z.ellipsis),th=(e,t)=>e+" ".repeat(Math.max(0,t-Go(e))),nh=(e,t)=>" ".repeat(Math.max(0,t-Go(e)))+e;function Pe(e,t){if(t<=0)return"";if(Go(e)<=t)return e;let o=t-eh,n="";for(let r of e){if(Go(n+r)>o)break;n+=r}return n+Z.ellipsis}var Oe=(e,t)=>th(Pe(e,t),t),bn=(e,t)=>nh(Pe(e,t),t),Ue=e=>e.filter(t=>typeof t=="string"&&t!=="").join(` ${Z.bullet} `);import{Text as Mt,useInput as oh}from"ink";import{useImperativeHandle as rh,useRef as Bl,useEffect as ih,useState as Ul}from"react";import Ms from"string-width";import{jsx as Ft,jsxs as Ls}from"react/jsx-runtime";var sh=e=>e.replace(new RegExp("\\p{Cc}","gu"),"");function Fl(e,t,o){let n=t,r=0;for(;n>0;){let s=Ms(e[n-1]??"");if(r+s>o)break;r+=s,n-=1}let i=t;for(r+=1;i<e.length;){let s=Ms(e[i]??"");if(r+s>o)break;r+=s,i+=1}return{start:n,before:e.slice(n,t).join(""),at:e[t]??" ",after:e.slice(t+1,i).join("")}}function Ko({char:e}){return Ft(Mt,{backgroundColor:u.cursorBackground,color:u.foreground,children:e})}function Kr({value:e,onChange:t,onSubmit:o,placeholder:n,mask:r=!1,isActive:i=!0,width:s=40,ref:a}){let c=[...e],[l,m]=Ul(c.length),p=Math.min(l,c.length),d=Math.max(8,s),f=Bl(e),S=Bl(p);f.current=e,S.current=p,Br(i);let b=w=>{S.current=w,m(w)},h=(w,P)=>{f.current=w,b(P),t(w)};if(rh(a,()=>({moveToColumn:w=>{let P=[...f.current],$=r?Array.from({length:P.length},()=>"\u2022"):P,T=Fl($,Math.min(S.current,P.length),d).start,I=0;for(;T<P.length;){let _=Ms($[T]??"");if(I+_>w)break;I+=_,T+=1}b(T)}})),oh((w,P)=>{let $=[...f.current],U=Math.min(S.current,$.length);if(P.return){o(f.current);return}if(P.tab||P.upArrow||P.downArrow)return;if(P.leftArrow){b(Math.max(0,U-1));return}if(P.rightArrow){b(Math.min($.length,U+1));return}if(P.home){b(0);return}if(P.end){b($.length);return}if(P.backspace){if(U===0)return;h([...$.slice(0,U-1),...$.slice(U)].join(""),U-1);return}if(P.delete){if(U>=$.length)return;h([...$.slice(0,U),...$.slice(U+1)].join(""),U);return}if(P.ctrl){if(w==="a")b(0);else if(w==="e")b($.length);else if(w==="k")h($.slice(0,U).join(""),U);else if(w==="u")h($.slice(U).join(""),0);else if(w==="w"){let v=U;for(;v>0&&$[v-1]===" ";)v-=1;for(;v>0&&$[v-1]!==" ";)v-=1;h([...$.slice(0,v),...$.slice(U)].join(""),v)}return}if(P.meta||!w)return;let T=w.search(/[\r\n]/),I=sh(T===-1?w:w.slice(0,T)),_=[...$.slice(0,U),I,...$.slice(U)].join("");h(_,U+[...I].length),T!==-1&&o(_)},{isActive:i}),e===""){let w=[...n??""];return i?Ls(Mt,{children:[Ft(Ko,{char:w[0]??" "}),Ft(Mt,{color:u.faintForeground,children:w.slice(1).join("")})]}):Ft(Mt,{color:u.faintForeground,children:w.join("")})}let y=r?Array.from({length:c.length},()=>"\u2022"):c;if(!i)return Ft(Mt,{color:u.foreground,children:y.join("")});let{before:x,at:k,after:g}=Fl(y,p,d);return Ls(Mt,{children:[Ft(Mt,{color:u.foreground,children:x}),Ft(Ko,{char:k}),Ft(Mt,{color:u.foreground,children:g})]})}function ot({label:e}){let[t,o]=Ul(0);return ih(()=>{let n=setInterval(()=>o(r=>(r+1)%io.length),Gr);return()=>clearInterval(n)},[]),Ls(Mt,{children:[Ft(Mt,{color:u.accent,children:io[t]}),Ft(Mt,{color:u.mutedForeground,children:` ${e}`})]})}import{Box as ql,Text as so}from"ink";import{useEffect as zl,useState as ch}from"react";import Wl from"string-width";import{Box as jl,Text as Vr}from"ink";import ah from"string-width";import{jsx as Vo,jsxs as Hl}from"react/jsx-runtime";var ce=2,mt=1,He=1,dt=mt+He;function Jo({title:e,note:t,width:o}){let n=t===void 0?0:ah(t)+2,r=Math.max(0,o-ce-n);return Hl(Vr,{wrap:"truncate",children:[Vo(Vr,{color:u.accent,children:`${Z.section} `}),Vo(Vr,{bold:!0,color:u.foreground,children:Pe(e,r)}),t!==void 0&&Vo(Vr,{color:u.faintForeground,children:` ${t}`})]})}function te({title:e,note:t,width:o,gap:n=He,children:r}){return Hl(jl,{flexDirection:"column",children:[Vo(Jo,{title:e,note:t,width:o}),Vo(jl,{flexDirection:"column",marginTop:n,paddingLeft:ce,children:r})]})}import{jsx as Qt,jsxs as Kl}from"react/jsx-runtime";var ao=e=>!("heading"in e),lh=e=>e.flatMap(t=>!ao(t)&&t.heading!==""?[t,{heading:""}]:[t]),Gl=2,Jr=2,uh=(e,t)=>t===void 0?e:e>t?Math.max(1,t-1):t;function mh(e,t,o,n){let[r,i]=Ze(n,()=>e.findIndex(m=>ao(m)&&m.disabled!==!0));zl(()=>{i(m=>m>=e.length?Math.max(0,e.length-1):m)},[e.length]);let s=m=>{i(p=>{let d=e.length;if(d===0)return p;let f=p;for(let S=0;S<d;S+=1){f=(f+m+d)%d;let b=e[f];if(b!==void 0&&ao(b)&&b.disabled!==!0)return f}return p})},a=m=>{let p=e[m];return p!==void 0&&ao(p)&&p.disabled!==!0?p:null},c=m=>{a(m)!==null&&i(m)},l=m=>{let p=a(m);p!==null&&(i(m),o(p.value))};return z((m,p)=>{if(p.upArrow||m==="k"){s(-1);return}if(p.downArrow||m==="j"){s(1);return}p.return&&l(r)},t),{index:Math.max(0,r),step:s,pick:l,moveTo:c}}function Os(e,t){let[o,n]=ch(()=>e>=t?e-t+1:0);return zl(()=>{n(r=>e<r?e:e>=r+t?e-t+1:r)},[e,t]),o}function dh(e,t){let o=e.filter(ao),n=Math.max(0,...o.map(s=>Wl(s.label))),r=Math.max(0,...o.map(s=>s.badge===void 0?0:Wl(s.badge))),i=Gl+n+(r>0?r+Jr:0)+Jr;return{label:n,badge:r,hint:Math.max(0,t-i)}}function ph({item:e,active:t,metrics:o}){let n=e.disabled===!0,r=n?u.faintForeground:e.labelTone!==void 0?Fe[e.labelTone]:t?u.accent:u.foreground;return Kl(so,{wrap:"truncate",children:[Qt(so,{color:u.accent,children:t?`${Z.cursor} `:" "}),Qt(so,{color:r,bold:t,children:Oe(e.label,o.label)}),o.badge>0&&Qt(so,{color:e.badgeTone===void 0?u.faintForeground:Fe[e.badgeTone],children:`${" ".repeat(Jr)}${Oe(e.badge??"",o.badge)}`}),e.hint!==void 0&&o.hint>0&&Qt(so,{color:n||!t?u.faintForeground:u.mutedForeground,children:`${" ".repeat(Jr)}${Pe(e.hint,o.hint)}`})]})}function fh({items:e,cursor:t,metrics:o,window:n,width:r,isActive:i,onPick:s,onHover:a,onScroll:c}){let l=Os(t,n),m=e.slice(l,l+n),p=f=>f<m.length?l+f:null,d=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 Kl(ql,{ref:d,flexDirection:"column",children:[m.map((f,S)=>{let b=l+S;return ao(f)?Qt(ph,{item:f,active:b===t&&i,metrics:o},b):f.heading===""?Qt(ql,{height:1},b):Qt(Jo,{title:f.heading,width:r},b)}),e.length>n&&Qt(so,{color:u.faintForeground,children:`${" ".repeat(Gl)}${l+1}-${Math.min(l+n,e.length)} / ${e.length}`})]})}function se({items:e,onSelect:t,width:o,height:n,isActive:r=!0,retain:i}){let s=lh(e),a=mh(s,r,t,i);return Qt(fh,{items:s,cursor:a.index,metrics:dh(s,o),window:uh(s.length,n),width:o,isActive:r,onPick:a.pick,onHover:a.moveTo,onScroll:a.step})}import{jsx as xt,jsxs as Yr}from"react/jsx-runtime";var Vl={ok:{glyph:Z.ok,color:u.success},warn:{glyph:Z.warn,color:u.warning},fail:{glyph:Z.fail,color:u.danger},info:{glyph:Z.bullet,color:u.mutedForeground}};function ye({tone:e,title:t,detail:o,width:n}){let r=Vl[e];return Yr(Yo,{flexDirection:"column",children:[Yr(co,{children:[xt(co,{color:r.color,children:`${r.glyph} `}),xt(co,{color:u.foreground,children:Pe(t,n-2)})]}),o!==void 0&&xt(co,{color:u.faintForeground,children:` ${Pe(o,n-2)}`})]})}function Dn({message:e,hint:t,width:o}){return xt(ye,{tone:"fail",title:e,detail:t,width:o})}var gh=2,hh=2;function Jl({tone:e,message:t,width:o,onDismiss:n}){let r=Vl[e],i=We({onClick:n});return Yr(Yo,{ref:i,children:[xt(co,{backgroundColor:u.border,color:r.color,wrap:"truncate",children:` ${r.glyph} `}),xt(co,{backgroundColor:u.border,color:u.foreground,wrap:"truncate",children:`${Pe(t,o-gh-hh)} `})]})}function Ve({title:e,detail:t,confirmLabel:o,onConfirm:n,onCancel:r,width:i,busy:s,error:a}){return Yr(Yo,{flexDirection:"column",children:[xt(ye,{tone:"warn",title:e,detail:t,width:i}),a!=null&&xt(Yo,{marginTop:1,children:xt(Dn,{message:a.message,hint:a.hint,width:i})}),xt(Yo,{marginTop:1,children:typeof s=="string"?xt(ot,{label:s}):xt(se,{items:[{value:"cancel",label:"\u53D6\u6D88"},{value:"confirm",label:o,labelTone:"danger"}],width:i,onSelect:c=>c==="confirm"?n():r()})})]})}import{Box as bh,Text as Xr,useInput as yh}from"ink";import{useRef as Sh,useState as xh}from"react";import{jsx as Qr,jsxs as Th}from"react/jsx-runtime";function yn({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]=xh(n?s:0),l=Sh(s);if(s!==l.current){let f=a>=l.current;l.current=s;let S=n&&f?s:Math.min(a,s);S!==a&&c(S)}let m=f=>c(S=>Math.min(Math.max(0,S+f),s));yh((f,S)=>{S.upArrow?m(-1):S.downArrow?m(1):S.pageUp?m(-i):S.pageDown&&m(i)},{isActive:o&&r}),z(f=>{f==="k"?m(-1):f==="j"&&m(1)},o&&r);let p=We({isActive:o&&r,onWheel:m}),d=e.slice(a,a+i);return Th(bh,{ref:p,flexDirection:"column",children:[d.map((f,S)=>Qr(Xr,{wrap:"truncate",children:f.spans.length===0?" ":f.spans.map((b,h)=>Qr(Xr,{color:b.color??u.foreground,bold:b.bold===!0,children:b.text},h))},a+S)),Array.from({length:Math.max(0,i-d.length)},(f,S)=>Qr(Xr,{children:" "},S)),r&&Qr(Xr,{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 Zt(e){let t=Ye(e);return t===void 0?e.label:{text:e.label,tone:t}}import{useCallback as $s,useRef as wh,useState as Yl}from"react";function fe(){let e=B(),[t,o]=Yl(null),[n,r]=Yl(null),i=wh(0),s=$s(()=>{i.current+=1,o(null),r(null)},[]),a=$s((l,m)=>{r({message:l,hint:m})},[]),c=$s((l,m,p={})=>{let d=i.current+=1;o(l),r(null),m().then(f=>{i.current===d&&(o(null),p.onSuccess?.(f))}).catch(f=>{if(i.current!==d)return;o(null);let S={message:Re(f),hint:f instanceof O?f.hint:void 0};p.failToast===!0?e.toast("fail",S.message):r(S)})},[e]);return{busy:t,error:n,reset:s,fail:a,run:c}}import{Lexer as kh}from"marked";import Zr from"string-width";var vh={spans:[]},Ds=e=>e===void 0||e.spans.every(t=>t.text.trim()==="");function Xl(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(Xl(i)),a=!1,i=n(),s=o};for(let l of e)for(let m of l.text){if(m===`
|
|
5
5
|
`){c();continue}let p=Zr(m);if(s+p>t&&i.length>(a?0:o)){let d=a?0:o,f=-1;for(let S=i.length-1;S>d;S-=1)if(i[S]?.ch===" "){f=S;break}if(f>d){let S=i.slice(f+1);i=i.slice(0,f),c(),i=[...i,...S],s=i.reduce((b,h)=>b+Zr(h.ch),0)}else c()}i.push({ch:m,color:l.color,bold:l.bold}),s+=p}return(i.length>0||r.length===0)&&r.push(Xl(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
6
|
`});break;case"escape":o.push({text:n.text,...t});break;default:o.push({text:n.raw,...t})}return o}var Ql=2,Zl=e=>e.reduce((t,o)=>t+Zr(o.text),0);function _h(e,t,o,n){let r=e.map(d=>({spans:jt(d.tokens,{bold:!0,color:u.foreground}),align:d.align})),i=t.map(d=>d.map(f=>({spans:jt(f.tokens,{color:u.foreground}),align:f.align}))),s=n-(e.length+1)-e.length*2;if(s<e.length*Ql)return Ut([{text:o,color:u.foreground}],n);let a=e.map(()=>Ql);for(let d of[r,...i])d.forEach((f,S)=>{for(let b of Ut(f.spans,Number.MAX_SAFE_INTEGER)){let h=a[S],y=Zl(b.spans);h!==void 0&&y>h&&(a[S]=y)}});let c=a.reduce((d,f)=>d+f,0);for(;c>s;){let d=0,f=0;a.forEach((S,b)=>{S>f&&(d=b,f=S)}),a[d]=f-1,c-=1}let l=d=>({text:d,color:u.faintForeground}),m=(d,f,S)=>({spans:[l(`${d}${a.map(b=>"\u2500".repeat(b+2)).join(f)}${S}`)]}),p=d=>{let f=a.map((h,y)=>{let x=d[y];return{width:h,align:x?.align??null,lines:Ut(x?.spans??[],h)}}),S=f.reduce((h,y)=>Math.max(h,y.lines.length),1),b=[];for(let h=0;h<S;h+=1){let y=[];for(let x of f){let k=x.lines[h]?.spans??[],g=x.width-Zl(k),w=x.align==="right"?g:x.align==="center"?Math.floor(g/2):0;y.push(l("\u2502"),{text:` ${" ".repeat(w)}`}),y.push(...k),y.push({text:`${" ".repeat(g-w)} `})}y.push(l("\u2502")),b.push({spans:y})}return b};return[m("\u250C","\u252C","\u2510"),...p(r),m("\u251C","\u253C","\u2524"),...i.flatMap(p),m("\u2514","\u2534","\u2518")]}function Bs(e,t){let o=[],n=()=>{o.length>0&&!Ds(o[o.length-1])&&o.push(vh)};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:`${Z.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
7
|
`))o.push(...Ut([{text:` ${i}`,color:u.mutedForeground}],t,2));n();break;case"blockquote":{let i=Bs(r.tokens??[],Math.max(4,t-2));for(let s of i)o.push({spans:[{text:`${Z.section} `,color:u.accent},...s.spans.map(a=>({...a,color:a.color??u.mutedForeground}))]});n();break}case"list":{let i=r.ordered===!0,s=typeof r.start=="number"?r.start:1;r.items.forEach((a,c)=>{let l=i?`${s+c}. `:`${Z.bullet} `,m=Zr(l),p=Bs(a.tokens,Math.max(4,t-m));p.forEach((d,f)=>{Ds(d)&&f===p.length-1||o.push({spans:f===0?[{text:l,color:u.mutedForeground},...d.spans]:[{text:" ".repeat(m)},...d.spans]})})}),n();break}case"hr":o.push({spans:[{text:"\u2500".repeat(Math.max(1,t)),color:u.faintForeground}]}),n();break;case"table":o.push(..._h(r.header,r.rows,r.raw,t)),n();break;default:o.push(...Ut([{text:r.raw,color:u.foreground}],t))}return o}function lo(e,t){let o=kh.lex(e,{gfm:!0,breaks:!0}),n=Bs(o,Math.max(8,t));for(;n.length>0&&Ds(n[n.length-1]);)n.pop();return n}import{Box as Qo}from"ink";import{Box as Rh,Text as eu}from"ink";import nu from"string-width";import{jsx as tu,jsxs as Ph}from"react/jsx-runtime";var ei=["\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"],ou=Math.max(...ei.map(e=>nu(e))),ti=ei.length,ni=e=>ou<=e;function oi({width:e}){let t=`v${yt}`,o=ou+2+nu(t)<=e;return tu(Rh,{flexDirection:"column",children:ei.map((n,r)=>Ph(eu,{color:u.accent,children:[n,r===ei.length-1&&o&&tu(eu,{color:u.faintForeground,children:` ${t}`})]},n))})}import{Box as js,Text as pt}from"ink";import{useState as ru}from"react";import mo from"string-width";import{jsx as Tt,jsxs as ri}from"react/jsx-runtime";var ii=2,Fs=` ${Z.crumb} `;function si({trail:e,width:t,onBack:o,isActive:n}){let r=e[e.length-1]??"",i=e.slice(0,-1),s=i.reduce((d,f)=>d+mo(f)+mo(Fs),0),a=s+mo(r)<=t,c=a?s:0,[l,m]=ru(!1),p=We({isActive:n,onClick:({column:d})=>{d<c&&o()},onHover:({column:d})=>m(d<c),onHoverLeave:()=>m(!1)});return Tt(js,{ref:p,marginBottom:1,children:a?ri(pt,{children:[i.map((d,f)=>ri(pt,{children:[Tt(pt,{color:f===0?u.accent:l&&n?u.foreground:u.mutedForeground,children:d}),Tt(pt,{color:u.faintForeground,children:Fs})]},f)),Tt(pt,{bold:!0,color:u.foreground,children:r})]}):Tt(pt,{color:u.mutedForeground,children:Pe(e.join(Fs),t)})})}var Us=2,Xo=2,uo=2;function iu({current:e,width:t,onPick:o,isActive:n}){let r=Math.max(0,Wo(e)),[i,s]=ru(null),a=Math.max(...nt.map(y=>mo(y.label))),l=(y=>y*a+(y-1)*Xo+Us)(nt.length)>t,m=l?t-uo*2:t,p=l?Math.max(1,Math.floor((m+Xo-Us)/(a+Xo))):nt.length,d=Math.min(Math.max(0,r-Math.floor((p-1)/2)),nt.length-p),f=nt.slice(d,d+p),S=[],b=l?uo:0;f.forEach((y,x)=>{x>0&&(b+=Xo);let k=mo(y.label)+(y.id===e?Us:0);S.push({id:y.id,from:b,to:b+k}),b+=k});let h=We({isActive:n,onHover:({column:y})=>{let x=S.find(k=>y>=k.from&&y<k.to);s(x?.id??null)},onHoverLeave:()=>s(null),onClick:({column:y})=>{let x=S.find(g=>y>=g.from&&y<g.to);if(x!==void 0){o(x.id);return}if(!l||y>=uo&&y<b)return;let k=y<uo?nt[d-1]:nt[d+p];k!==void 0&&o(k.id)}});return Tt(js,{ref:h,marginBottom:1,children:ri(pt,{wrap:"truncate",children:[l&&Tt(pt,{color:u.border,children:d>0?`${Z.prev} `:" ".repeat(uo)}),f.map((y,x)=>ri(pt,{children:[x>0&&" ".repeat(Xo),y.id===e?Tt(pt,{backgroundColor:u.foreground,color:u.background,bold:!0,children:` ${y.label} `}):Tt(pt,{color:n&&y.id===i?u.foreground:u.mutedForeground,children:y.label})]},y.id)),l&&Tt(pt,{color:u.border,children:d+p<nt.length?` ${Z.next}`:" ".repeat(uo)})]})})}function su({hints:e,width:t}){let o=[];for(let n of e){if(mo(Ue([...o,n]))>t)break;o.push(n)}return Tt(js,{children:Tt(pt,{color:u.faintForeground,children:Ue(o)})})}import{Fragment as Eh,jsx as rt,jsxs as lu}from"react/jsx-runtime";var au=3,Ch=8;function Zo(e){let{rows:t}=j();return Math.max(1,t-_s-au-e)}function cu(){let e=B(),{width:t,rows:o}=j(),n=e.current.id,r=e.depth===1&&Hr(n)?n:null,i=Math.max(1,o-_s-au),s=ti+W,a=r!==null&&ni(t)&&i-ii-s>=Ch;return{tab:r,mark:a,rows:a?ii+s:ii}}var ne=()=>Zo(cu().rows);function Bn({header:e,hints:t,children:o}){let{width:n}=j(),{message:r,dismissToast:i}=B();return lu(Qo,{flexDirection:"column",flexGrow:1,children:[e,rt(Qo,{flexDirection:"column",flexGrow:1,overflow:"hidden",children:rt(Qo,{flexDirection:"column",flexShrink:0,children:o})}),rt(Qo,{height:1,marginTop:1,justifyContent:"flex-end",children:r!==null&&rt(Jl,{tone:r.tone,message:r.message,width:n,onDismiss:i})}),rt(su,{hints:t,width:n})]})}function X({trail:e,hints:t=[],children:o,onEscape:n,isActive:r=!0,locked:i=!1,bleed:s=!1}){let a=B(),{width:c}=j(),{tab:l,mark:m}=cu(),p=Fr(),d=Ur(),f=d?[]:["[] \u5207\u529F\u80FD","q \u9000\u51FA","? \u5E2E\u52A9"],S=d?[]:["? \u5E2E\u52A9"];hn(n??a.pop,{isActive:r});let b=_l(),h=r&&!i&&!p;return z(y=>{if(l===null||y!=="["&&y!=="]")return;let x=nt[(Wo(l)+(y==="["?-1:1)+nt.length)%nt.length];x!==void 0&&a.select(x.id)},r&&!i&&!p&&!s),s?rt(Bn,{header:null,hints:i?t:[...t,"Esc \u8FD4\u56DE",...S],children:o}):l!==null?rt(Bn,{header:lu(Eh,{children:[m&&rt(Qo,{marginBottom:W,children:rt(oi,{width:c})}),rt(iu,{current:l,width:c,onPick:y=>{y===l?b():a.select(y)},isActive:h})]}),hints:i?t:[...t,...f],children:o}):rt(Bn,{header:rt(si,{trail:["CodeFlow",...e??[]],width:c,onBack:b,isActive:h}),hints:i?t:[...t,"Esc \u8FD4\u56DE",...S],children:o})}function ee({state:e,loading:t,width:o,children:n}){return e.phase==="loading"?rt(ot,{label:t}):e.phase==="error"?rt(Dn,{message:e.message,hint:e.hint,width:o}):n(e.data)}import{jsx as wt,jsxs as Hs}from"react/jsx-runtime";function uu({params:e}){let t=B(),{width:o}=j(),n=ne(),{item:r}=e,{busy:i,error:s,run:a}=fe();Ah((p,d)=>{d.return&&a("\u6B63\u5728\u786E\u8BA4",()=>Or(r.id),{onSuccess:()=>t.pop()})},{isActive:i===null});let c=Do(r.level),l=Ye(c),m=Math.max(3,n-4-(s===null?0:2));return wt(X,{trail:["\u7CFB\u7EDF\u516C\u544A","\u672A\u8BFB\u786E\u8BA4"],hints:["\u2191\u2193 \u6EDA\u52A8","Enter \u6211\u77E5\u9053\u4E86"],locked:!0,onEscape:()=>{},children:Hs(ai,{flexDirection:"column",children:[Hs(Fn,{wrap:"truncate",children:[wt(Fn,{bold:!0,color:u.foreground,children:r.title}),wt(Fn,{color:l===void 0?u.mutedForeground:Fe[l],children:` ${c.label}`}),wt(Fn,{color:u.faintForeground,children:` \u53D1\u5E03\u4E8E ${K(r.publishedAt)}`})]}),wt(ai,{marginTop:1,children:wt(yn,{lines:lo(r.content,o),height:m})}),s!==null&&wt(ai,{marginTop:1,children:wt(Dn,{message:s.message,hint:s.hint,width:o})}),wt(ai,{marginTop:1,children:i!==null?wt(ot,{label:i}):Hs(Fn,{wrap:"truncate",children:[wt(Fn,{color:u.accent,children:`${Z.cursor} `}),wt(Fn,{bold:!0,color:u.accent,children:"\u6211\u77E5\u9053\u4E86"})]})})]})})}import{Box as Ks,Text as ci}from"ink";import{useState as Uh}from"react";import{Box as qs,Text as en}from"ink";import{useEffect as mu,useRef as Ih,useState as du}from"react";import Ws from"string-width";import{jsx as Sn,jsxs as tr}from"react/jsx-runtime";var pu=e=>e===void 0?"":typeof e=="string"?e:e.text,zs=2,Nh=6;function Mh(e,t,o){let n=e.map(a=>t===0?o/e.length:o*a/t),r=n.map(a=>Math.floor(a)),i=o-r.reduce((a,c)=>a+c,0),s=n.map((a,c)=>({i:c,fraction:a-Math.floor(a)})).sort((a,c)=>c.fraction-a.fraction);for(let{i:a}of s){if(i<=0)break;r[a]=(r[a]??0)+1,i-=1}return e.map((a,c)=>a+(r[c]??0))}function Gs(e,t,o){let n=e.map((c,l)=>Math.max(Ws(c.label),...t.map(m=>Ws(m[l]??"")))),r=n.reduce((c,l)=>c+l,0),i=r+zs*Math.max(0,e.length-1)-o;if(i<0)return Mh(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)>Nh).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 Lh=(e,t,o)=>t.map((n,r)=>n.align==="right"?bn(e[r]??"",o[r]??0):Oe(e[r]??"",o[r]??0)).join(" ".repeat(zs)),er=2,Oh=2;function Ce({items:e,columns:t,row:o,width:n,height:r,onOpen:i,searchOf:s,isActive:a=!0,emptyLabel:c="\u6682\u65E0\u6570\u636E",emptyDescription:l,retain:m}){let p=F=>m===void 0?void 0:`${m}:${F}`,d=i!==void 0,[f,S]=Ze(d?p("cursor"):void 0,()=>0),[b,h]=Ze(p("query"),()=>""),[y,x]=du(!1),k=b.trim().toLowerCase(),g=k===""||s===void 0?e:e.filter(F=>s(F).toLowerCase().includes(k)),w=y||k!=="",P=Math.max(1,r-1-(w?1:0)),$=g.length>P?Math.max(1,P-1):P,U=Math.max(0,g.length-$),[T,I]=du(()=>f>=$?f-$+1:0);mu(()=>{S(F=>Math.min(F,Math.max(0,g.length-1)))},[g.length]),mu(()=>{I(F=>d?f<F?f:f>=F+$?f-$+1:F:Math.min(F,U))},[f,$,U,d]);let _=F=>{if(!d){I(G=>Math.min(Math.max(0,G+F),U));return}g.length!==0&&S(G=>(G+F+g.length)%g.length)};z((F,G)=>{if(G.upArrow||F==="k"){_(-1);return}if(G.downArrow||F==="j"){_(1);return}if(G.return){let H=g[f];H!==void 0&&i?.(H,f);return}s!==void 0&&F.startsWith("/")&&(x(!0),F.length>1&&h(F.slice(1)))},a&&!y),hn(()=>{x(!1),h("")},{isActive:y||k!=="",layer:y?ro.input:ro.panel});let v=w?1:0,C=Ih(null),N=F=>{if(F<=v)return null;let G=T+F-v-1;return g[G]===void 0?null:G},R=We({isActive:a,onWheel:_,onClick:({row:F,column:G})=>{if(w&&F===0){x(!0),C.current?.moveToColumn(G-Oh);return}if(i===void 0)return;let H=N(F);if(H===null)return;let re=g[H];re!==void 0&&(S(H),i(re,H))},onHover:d?({row:F})=>{let G=N(F);G!==null&&S(G)}:void 0}),A=Gs(t,g.map(F=>o(F).map(pu)),n-er),q=g.slice(T,T+$);return tr(qs,{ref:R,flexDirection:"column",children:[w&&tr(qs,{children:[Sn(en,{color:u.accent,children:"/ "}),Sn(Kr,{ref:C,value:b,onChange:h,onSubmit:()=>x(!1),isActive:y,placeholder:"\u8F93\u5165\u5173\u952E\u8BCD\u8FC7\u6EE4",width:n-2-Ws(` ${g.length}/${e.length}`)}),Sn(en,{color:u.faintForeground,children:` ${g.length}/${e.length}`})]}),tr(en,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(er),Lh(t.map(F=>F.label),t,A)]}),g.length===0?tr(qs,{flexDirection:"column",children:[Sn(en,{wrap:"truncate",color:u.mutedForeground,children:`${" ".repeat(er)}${k===""?c:"\u65E0\u5339\u914D\u7ED3\u679C"}`}),l!==void 0&&k===""&&P>1&&Sn(en,{wrap:"truncate",color:u.faintForeground,children:`${" ".repeat(er)}${l}`})]}):q.map((F,G)=>{let H=T+G,re=d&&H===f&&a,_e=re?u.accent:a?u.foreground:u.mutedForeground,E=o(F);return tr(en,{wrap:"truncate",children:[Sn(en,{color:u.accent,children:re?`${Z.cursor} `:" "}),t.map((D,J)=>{let ge=E[J],$e=pu(ge),Pt=D.align==="right"?bn($e,A[J]??0):Oe($e,A[J]??0),Ct=typeof ge=="object"?ge.tone:void 0,De=!re&&a&&Ct!==void 0?Fe[Ct]:_e;return Sn(en,{color:De,bold:re,children:J>0?`${" ".repeat(zs)}${Pt}`:Pt},D.label)})]},H)}),(T>0||T+$<g.length)&&Sn(en,{color:u.faintForeground,children:`${" ".repeat(er)}${T+1}-${Math.min(T+$,g.length)} / ${g.length}`})]})}import{Text as $h}from"ink";import{useEffect as Dh,useState as Bh}from"react";import{jsx as Fh}from"react/jsx-runtime";function xn(e,t,{retain:o}={}){let[n,r]=Ze(o,()=>1),[i,s]=Bh({pages:1,total:0}),a=Q([...e,n],()=>t(n));Dh(()=>{a.phase==="ready"&&s({pages:Math.max(1,Math.ceil(a.data.total/gc)),total:a.data.total})},[a]);let c=m=>{r(p=>Math.min(Math.max(1,p+m),i.pages))},l=()=>r(1);return{state:a,page:n,pages:i.pages,total:i.total,go:c,reset:l}}function Tn({page:e,pages:t,total:o,width:n}){return Fh($h,{wrap:"truncate",color:u.faintForeground,children:Pe(Ue([`\u7B2C ${e} / ${t} \u9875`,`\u5171 ${o} \u6761`,"\u2190\u2192 \u7FFB\u9875"]),n)})}import{jsx as tn,jsxs as Vs}from"react/jsx-runtime";function fu(){let e=B(),{width:t}=j(),o=ne(),[n,r]=Uh({name:"list"}),i=xn([e.revision],a=>hl({page:a}),{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 tn(X,{hints:n.name==="list"?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","r \u5237\u65B0"]:["\u2191\u2193 \u6EDA\u52A8","Esc \u8FD4\u56DE"],onEscape:s,children:tn(ee,{state:i.state,loading:"\u6B63\u5728\u8BFB\u53D6\u516C\u544A",width:t,children:a=>{if(n.name==="detail"){let c=Do(n.item.level),l=Ye(c);return Vs(Ks,{flexDirection:"column",children:[Vs(ci,{wrap:"truncate",children:[tn(ci,{bold:!0,color:u.foreground,children:n.item.title}),tn(ci,{color:l===void 0?u.mutedForeground:Fe[l],children:` ${c.label}`}),tn(ci,{color:u.faintForeground,children:` ${Ue([`\u53D1\u5E03\u4E8E ${K(n.item.publishedAt)}`])}`})]}),tn(Ks,{marginTop:1,children:tn(yn,{lines:lo(n.item.content,t),height:Math.max(3,o-2)})})]})}return Vs(Ks,{flexDirection:"column",children:[tn(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,Zt(Do(c.level)),K(c.publishedAt)],onOpen:c=>{r({name:"detail",item:c}),Or(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"}),tn(Tn,{page:i.page,pages:i.pages,total:i.total,width:t})]})}})})}import{Box as vt,Text as rr}from"ink";import{useState as Qu}from"react";import lb from"string-width";var gu=()=>L(yc,"/auth/me"),hu=e=>L(pe,"/auth/me",{method:"PATCH",json:e}),bu=e=>L(pe,"/auth/me/password",{method:"POST",json:e}),yu=e=>L(pe,"/auth/me/email/code",{method:"POST",json:e}),Su=e=>L(pe,"/auth/me/email",{method:"POST",json:e}),xu=()=>L(Sc,"/auth/me/sessions"),Tu=e=>L(pe,`/auth/me/sessions/${e}`,{method:"DELETE"}),wu=()=>L(Tc,"/auth/me/security"),Js=e=>L(xc,"/auth/me/totp/setup",{method:"POST",json:e}),ku=e=>L(us,"/auth/me/totp/confirm",{method:"POST",json:e}),vu=e=>L(pe,"/auth/me/totp/disable",{method:"POST",json:e}),_u=e=>L(us,"/auth/me/totp/recovery-codes",{method:"POST",json:e}),Ru=(e,t)=>L(pe,`/auth/me/passkeys/${e}`,{method:"PATCH",json:t}),Pu=e=>L(pe,`/auth/me/passkeys/${e}`,{method:"DELETE"});import{Box as Ht,measureElement as Ou,Text as Ne,useInput as Uu}from"ink";import{useEffect as zh,useRef as $u,useState as po}from"react";import Zs from"string-width";import{Box as jh,Text as wn,useInput as Hh}from"ink";import{useRef as Cu,useState as Eu}from"react";import Xs from"string-width";import{jsx as nn,jsxs as Mu}from"react/jsx-runtime";var qh=e=>e.replace(/\r\n?/g,`
|
|
@@ -9,8 +9,8 @@ import{once as hx}from"events";import{createInterface as bx}from"readline/promis
|
|
|
9
9
|
`){o.push({start:n,end:i,nl:!0}),n=i+1,r=0;continue}let a=Xs(s);r+a>t&&i>n&&(o.push({start:n,end:i,nl:!1}),n=i,r=0),r+=a}return o.push({start:n,end:e.length,nl:!1}),o}function 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 Nu(e,t,o){let n=0;for(let r=t.start;r<t.end;r+=1){let i=Xs(e[r]??"");if(n+i>o)return r;n+=i}return t.end}var Wh=(e,t,o)=>e.slice(t.start,o).reduce((n,r)=>n+Xs(r),0);function Ys(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
11
|
`;)n+=1;return{start:o,end:n}}function Lu({value:e,onChange:t,isActive:o,width:n,rows:r,placeholder:i,maxLength:s,onEdge:a,onFocusRequest:c}){let l=[...e],[m,p]=Eu(l.length),d=Math.min(m,l.length),[f,S]=Eu(0),b=Cu(e),h=Cu(d);b.current=e,h.current=d,Br(o);let y=Math.max(4,n),x=_=>{h.current=_,p(_)},k=(_,v)=>{b.current=_,x(v),t(_)},g=_=>{let v=[...b.current],C=Math.min(h.current,v.length),N=Au(v,y),R=Iu(N,C),A=N[R],q=N[R+_];return A===void 0||q===void 0?!1:(x(Nu(v,q,Wh(v,A,C))),!0)},w=(_,v,C)=>{let N=qh(C);if(s!==void 0){let R=s-_.length;if(R<=0)return;N=[...N].slice(0,R).join("")}N!==""&&k([..._.slice(0,v),N,..._.slice(v)].join(""),v+[...N].length)};Hh((_,v)=>{let C=[...b.current],N=Math.min(h.current,C.length);if(v.return){w(C,N,`
|
|
12
|
-
`);return}if(!v.tab){if(v.upArrow||v.downArrow){let R=v.upArrow?-1:1;g(R)||a?.(v.upArrow?"up":"down");return}if(v.leftArrow){x(Math.max(0,N-1));return}if(v.rightArrow){x(Math.min(C.length,N+1));return}if(v.home){x(Ys(C,N).start);return}if(v.end){x(Ys(C,N).end);return}if(v.backspace){if(N===0)return;k([...C.slice(0,N-1),...C.slice(N)].join(""),N-1);return}if(v.delete){if(N>=C.length)return;k([...C.slice(0,N),...C.slice(N+1)].join(""),N);return}if(v.ctrl){let R=Ys(C,N);if(_==="a")x(R.start);else if(_==="e")x(R.end);else if(_==="k")k([...C.slice(0,N),...C.slice(R.end)].join(""),N);else if(_==="u")k([...C.slice(0,R.start),...C.slice(N)].join(""),R.start);else if(_==="w"){let A=N;for(;A>R.start&&C[A-1]===" ";)A-=1;for(;A>R.start&&C[A-1]!==" ";)A-=1;k([...C.slice(0,A),...C.slice(N)].join(""),A)}return}v.meta||!_||w(C,N,_)}},{isActive:o});let P=Au(l,y),$=Iu(P,d),U=Math.min(f,Math.max(0,P.length-r));$<U&&(U=$),$>U+r-1&&(U=$-r+1),U!==f&&S(U);let T=[];for(let _=0;_<r;_+=1){let v=U+_,C=P[v];if(C===void 0){T.push(nn(wn,{children:" "},v));continue}let N=l.slice(C.start,C.end).join("");if(!o||v!==$){T.push(nn(wn,{wrap:"truncate",color:u.foreground,children:N===""?" ":N},v));continue}let R=l.slice(C.start,d).join(""),A=d<C.end?l[d]??" ":" ",q=d<C.end?l.slice(d+1,C.end).join(""):"";T.push(Mu(wn,{wrap:"truncate",children:[nn(wn,{color:u.foreground,children:R}),nn(Ko,{char:A}),nn(wn,{color:u.foreground,children:q})]},v))}if(e===""&&i!==void 0){let _=[...i];T[0]=o?Mu(wn,{wrap:"truncate",children:[nn(Ko,{char:_[0]??" "}),nn(wn,{color:u.faintForeground,children:_.slice(1).join("")})]},"placeholder"):nn(wn,{wrap:"truncate",color:u.faintForeground,children:i},"placeholder")}let I=We({onWheel:_=>{g(_)},onClick:({row:_,column:v})=>{c?.();let C=P[U+_];x(C===void 0?l.length:Nu(l,C,v))}});return nn(jh,{ref:I,flexDirection:"column",children:T})}import{Fragment as Fu,jsx as he,jsxs as kt}from"react/jsx-runtime";var Gh=e=>Object.fromEntries(e.map(t=>[t.name,"initial"in t?t.initial??"":""])),Du="\u9009\u586B",Kh=(e,t)=>e.kind!=="text"&&e.kind!=="textarea"?!1:typeof e.optional=="function"?e.optional(t):e.optional===!0,Vh=(e,t)=>{let o=typeof e.hint=="function"?e.hint(t[e.name]??""):e.hint;return Kh(e,t)?o===void 0?Du:`${Du} \xB7 ${o}`:o},Jh=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},Yh=6e4,Xh=4,Qs=4,Qh=2,li=(e,t)=>e?u.accent:t?u.foreground:u.mutedForeground;function V({title:e,fields:t,submitLabel:o,onSubmit:n,onCancel:r,width:i,busy:s,busyLabel:a="\u6B63\u5728\u63D0\u4EA4",error:c}){let[l,m]=po(()=>Gh(t)),[p,d]=po(0),[f,S]=po({}),[b,h]=po(null),[,y]=po(0),x=s===!0,k=Jh(t),g=k[Math.min(p,k.length-1)],w=g!==void 0&&g.type!=="submit"?t[g.index]:void 0,P=g?.type==="field"&&(w?.kind==="text"||w?.kind==="code"),$=g?.type==="field"&&w?.kind==="textarea",U=Object.values(f).some(E=>E.phase==="cooldown"&&E.until>Date.now());zh(()=>{if(!U)return;let E=setInterval(()=>y(D=>D+1),1e3);return()=>clearInterval(E)},[U]);let T=E=>d(D=>(D+E+k.length)%k.length),I=(E,D)=>{if(E.options.length===0)return;let J=E.options.findIndex($e=>$e.value===l[E.name]),ge=E.options[(J+D+E.options.length)%E.options.length];ge!==void 0&&m($e=>({...$e,[E.name]:ge.value}))},_=E=>{g?.type!=="field"||w?.kind!=="select"||I(w,E)},v=E=>{let D=t[E];if(D===void 0||D.kind!=="code")return;let J=(l[D.emailField]??"").trim();if(J===""){S($e=>({...$e,[D.name]:{phase:"error",message:"\u8BF7\u5148\u586B\u5199\u90AE\u7BB1"}}));return}let ge=f[D.name];ge?.phase!=="sending"&&(ge?.phase==="cooldown"&&ge.email===J&&ge.until>Date.now()||(S($e=>({...$e,[D.name]:{phase:"sending"}})),D.send(J).then(()=>S($e=>({...$e,[D.name]:{phase:"cooldown",email:J,until:Date.now()+Yh}}))).catch($e=>S(Pt=>({...Pt,[D.name]:{phase:"error",message:Re($e)}})))))};Uu((E,D)=>{if(D.tab){T(D.shift?-1:1);return}if(!$){if(D.upArrow){T(-1);return}if(D.downArrow){T(1);return}if(!P){if(D.leftArrow){_(-1);return}if(D.rightArrow){_(1);return}D.return&&(g?.type==="submit"?n(l):g?.type==="send"?v(g.index):T(1))}}},{isActive:!x}),hn(r,{isActive:!x,layer:ro.panel});let C=Math.max(0,...t.map(E=>Zs(E.label))),N=i-ce,R=Math.max(8,N-C-8),A=(E,D)=>k.findIndex(J=>J.type===E&&(J.type==="submit"||J.index===D)),q=$u(new Map).current,F=$u(new Map).current,G=2+C+Qs,H=(E,D)=>{let J=k[E];if(J===void 0)return;if(d(E),J.type==="submit"){n(l);return}if(J.type==="send"){v(J.index);return}let ge=t[J.index];if(ge!==void 0){if(ge.kind==="select"){let $e=ge.options.find(Ct=>Ct.value===l[ge.name]),Pt=Pe($e?.label??"\u2014",R);D>=G-Qh&&D<G?I(ge,-1):D>=G+Zs(Pt)&&I(ge,1);return}D>=G&&F.get(J.index)?.moveToColumn(D-G)}},re=(E,D)=>{if(E===null)return null;let J=Ou(E),ge=null;for(let[$e,Pt]of q){if(Pt===null)continue;let Ct=Ou(Pt),De=Ct.y-J.y;D<De||D>=De+Ct.height||(ge===null||Ct.height<ge.box.height)&&(ge={index:$e,box:Ct})}return ge===null?null:{...ge,frameX:J.x}},_e=We({isActive:!x,onClick:({row:E,column:D})=>{let J=re(_e.current,E);J!==null&&H(J.index,D-(J.box.x-J.frameX))},onHover:({row:E})=>h(re(_e.current,E)?.index??null),onHoverLeave:()=>h(null)});return kt(Ht,{ref:_e,flexDirection:"column",children:[he(Jo,{title:e,width:i}),kt(Ht,{flexDirection:"column",marginTop:He,paddingLeft:ce,children:[c!=null&&he(Ht,{marginBottom:1,children:he(Dn,{message:c.message,hint:c.hint,width:N})}),t.map((E,D)=>{let J=p===A("field",D)&&!x,ge=Vh(E,l),$e=E.kind==="select"?E.options.find(De=>De.value===l[E.name]):void 0;if(E.kind==="textarea")return kt(Ht,{flexDirection:"column",ref:De=>{q.set(A("field",D),De)},children:[kt(Ne,{children:[he(Ne,{color:u.accent,children:J?`${Z.cursor} `:" "}),he(Ne,{color:li(J,b===A("field",D)),bold:J,children:E.label})]}),he(Ht,{paddingLeft:2,children:he(Lu,{value:l[E.name]??"",onChange:De=>m(Vi=>({...Vi,[E.name]:De})),isActive:J,width:N-2,rows:E.rows??Xh,placeholder:E.placeholder,maxLength:E.maxLength,onEdge:De=>T(De==="up"?-1:1),onFocusRequest:()=>d(A("field",D))})}),J&&ge!==void 0&&he(Ne,{color:u.faintForeground,children:` ${Pe(ge,N-2)}`})]},E.name);let Pt=E.kind==="code"&&p===A("send",D)&&!x,Ct=f[E.name];return kt(Ht,{flexDirection:"column",ref:De=>{q.set(A("field",D),De)},children:[kt(Ne,{children:[he(Ne,{color:u.accent,children:J?`${Z.cursor} `:" "}),he(Ne,{color:li(J,b===A("field",D)),bold:J,children:Oe(E.label,C)}),E.kind==="select"?kt(Fu,{children:[he(Ne,{color:J?u.accent:u.border,children:` ${Z.prev} `}),he(Ne,{color:u.foreground,children:Pe($e?.label??"\u2014",R)}),he(Ne,{color:J?u.accent:u.border,children:` ${Z.next}`})]}):kt(Fu,{children:[he(Ne,{children:" ".repeat(Qs)}),he(Kr,{ref:De=>{F.set(D,De)},value:l[E.name]??"",onChange:De=>m(Vi=>({...Vi,[E.name]:De})),onSubmit:()=>T(1),isActive:J,placeholder:E.kind==="text"||E.kind==="code"?E.placeholder:void 0,mask:E.kind==="text"?E.mask:void 0,width:R})]})]}),J&&ge!==void 0&&he(Ne,{color:u.faintForeground,children:`${" ".repeat(2+C+Qs)}${Pe(ge,R)}`}),E.kind==="code"&&he(Zh,{active:Pt,state:Ct,email:(l[E.emailField]??"").trim(),indent:G,width:R,hovered:b===A("send",D),nodeRef:De=>{q.set(A("send",D),De)}})]},E.name)}),he(Ht,{marginTop:1,ref:E=>{q.set(A("submit"),E)},children:x?he(ot,{label:a}):kt(Ne,{children:[he(Ne,{color:u.accent,children:g?.type==="submit"?`${Z.cursor} `:" "}),he(Ne,{color:li(g?.type==="submit",b===A("submit")),bold:g?.type==="submit",children:o})]})})]})]})}function Zh({active:e,state:t,email:o,indent:n,width:r,hovered:i,nodeRef:s}){if(t?.phase==="sending")return he(Ht,{paddingLeft:n,children:he(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 kt(Ht,{ref:s,flexDirection:"column",paddingLeft:n-2,children:[kt(Ne,{children:[he(Ne,{color:u.accent,children:e?`${Z.cursor} `:" "}),he(Ne,{color:a>0?u.faintForeground:li(e,i),bold:e&&a===0,children:c})]}),t?.phase==="error"&&he(Ne,{color:u.danger,children:` ${Pe(t.message,r)}`})]})}var eb=2,Bu=2;function ju({options:e,value:t,onChange:o}){let n=e.findIndex(m=>m.value===t),r=Ur();Uu((m,p)=>{if(!p.leftArrow&&!p.rightArrow)return;let d=p.leftArrow?-1:1,f=e[(n+d+e.length)%e.length];f!==void 0&&o(f.value)},{isActive:!r});let i=[],s=0;e.forEach((m,p)=>{p>0&&(s+=Bu);let d=Zs(m.label)+eb;i.push({value:m.value,from:s,to:s+d}),s+=d});let[a,c]=po(null),l=We({onClick:({column:m})=>{let p=i.find(d=>m>=d.from&&m<d.to);p!==void 0&&o(p.value)},onHover:({column:m})=>{let p=i.find(d=>m>=d.from&&m<d.to);c(p?.value??null)},onHoverLeave:()=>c(null)});return he(Ht,{ref:l,children:he(Ne,{wrap:"truncate",children:e.map((m,p)=>{let d=m.value===t;return kt(Ne,{children:[p>0&&" ".repeat(Bu),he(Ne,{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 na,Text as Hu}from"ink";import tb from"qrcode";import{jsx as nr,jsxs as ab}from"react/jsx-runtime";var nb="#000000",ob="#ffffff",ea=2,Wu=2,oa=1,qu,ta;function zu(e){if(e===qu&&ta!==void 0)return ta;let t=tb.create(e,{errorCorrectionLevel:"L"}),o=t.modules.size,n=t.modules.data,r=o+ea*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+ea];c!==void 0&&(c[a+ea]=n[s*o+a]===1)}return qu=e,ta=i,i}function rb(e){let t=zu(e).length;return{columns:t*Wu,rows:t}}function ui(e,t,o,n){let r=rb(e),i=t.rows-r.rows-oa;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+oa+o.rows+n.rows}}}function ib(e,t){let o=[],n=0;for(let r=1;r<=e.length;r+=1)r<e.length&&e[r]===e[n]||(o.push(nr(Hu,{backgroundColor:e[n]??!1?nb:ob,children:" ".repeat((r-n)*Wu)},n)),n=r);return nr(Hu,{children:o},t)}function sb({value:e}){return nr(na,{flexDirection:"column",flexShrink:0,children:zu(e).map((t,o)=>ib(t,o))})}function mi({value:e,aside:t}){return ab(na,{flexDirection:"column",flexShrink:0,children:[nr(sb,{value:e}),nr(na,{marginTop:oa,flexDirection:"column",children:t})]})}import{Box as di,Text as it}from"ink";import Gu from"string-width";import{jsx as st,jsxs as or}from"react/jsx-runtime";var pi=2,ra=4,Ku=e=>" ".repeat(e),ia=13,Vu=4,Ju=(e,t,o)=>Math.max(1,Math.min(e,o,Math.floor((t+pi)/(ia+pi)))),on=(e,t,o=Vu)=>Math.ceil(e/Ju(e,t,o))*2;function at({tiles:e,width:t,maxPerRow:o=Vu}){let n=Ju(e.length,t,o),r=Math.floor((t-pi*(n-1))/n),i=[];for(let s=0;s<e.length;s+=n)i.push(e.slice(s,s+n));return st(di,{flexDirection:"column",children:i.map((s,a)=>st(di,{flexDirection:"column",children:["label","value"].map(c=>st(it,{wrap:"truncate",children:s.map((l,m)=>or(it,{children:[m>0&&Ku(pi),st(it,{color:c==="label"?u.mutedForeground:u.foreground,bold:c==="value",children:Oe(l[c],r)})]},l.label))},c))},a))})}function Yu({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 or(it,{children:[st(it,{color:i,children:Z.barFilled.repeat(r)}),st(it,{color:u.border,children:Z.barEmpty.repeat(o-r)})]})}function cb({items:e,width:t}){let o=Math.max(0,...e.map(([r])=>Gu(r))),n=Math.max(0,t-o-3);return st(di,{flexDirection:"column",children:e.map(([r,i])=>or(it,{wrap:"truncate",children:[st(it,{color:u.mutedForeground,children:Oe(r,o)})," ",st(it,{color:u.foreground,children:Pe(i,n)})]},r))})}var Xu=(e,t)=>Math.floor((t-ra)/2)<ia*2?e:Math.ceil(e/2);function Me({items:e,width:t}){let o=Math.floor((t-ra)/2);if(o<ia*2)return st(cb,{items:e,width:t});let n=Math.max(0,...e.map(([a])=>Gu(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)}):or(it,{children:[st(it,{color:u.mutedForeground,children:Oe(a[0],n)})," ",st(it,{color:u.foreground,children:Oe(a[1],r)})]});return st(di,{flexDirection:"column",children:i.map((a,c)=>or(it,{wrap:"truncate",children:[s(a[0]),Ku(ra),s(a[1])]},c))})}import{Fragment as gb,jsx as ie,jsxs as kn}from"react/jsx-runtime";var ub={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"},Zu="\u5BC6\u94A5 ",mb=10,db={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"}},pb=2+W;function fb({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(kn(rr,{wrap:"truncate",color:u.accent,children:[Oe(e[r]??"",Math.min(o,t)),e[r+1]??""]},r));return ie(vt,{flexDirection:"column",children:n})}function em(){let e=B(),{width:t,columns:o,rows:n}=j(),r=ne(),[i,s]=Qu({name:"menu"}),[a,c]=Qu(!1),{busy:l,error:m,reset:p,fail:d,run:f}=fe(),S=Q([e.revision],async()=>{let[k,g,w]=await Promise.all([gu(),wu(),xu()]);return{user:k.user,security:g,sessions:w.sessions}});z(k=>{i.name==="menu"&&l===null&&k==="r"&&e.reload()}),vl(i.name==="codes");let b=()=>{if(i.name!=="codes"){if(i.name==="menu"){e.pop();return}p(),i.name==="passkey-rename"||i.name==="passkey-delete"?s({name:"passkey",item:i.item}):i.name==="confirm-revoke"?s({name:"session",item:i.item}):s({name:"menu"})}},h=k=>{s({name:"menu"}),e.reload(),e.toast("ok",k)},y=(k,g)=>{c(!1),s({name:"codes",codes:k,message:g})},x=(k,g)=>{k==="rebind"?f("\u6B63\u5728\u751F\u6210\u65B0\u5BC6\u94A5",()=>Js({code:g}),{onSuccess:w=>s({name:"enroll",setup:w})}):k==="regenerate"?f("\u6B63\u5728\u751F\u6210\u6062\u590D\u7801",()=>_u({code:g}),{onSuccess:({recoveryCodes:w})=>y(w,"\u6062\u590D\u7801\u5DF2\u66F4\u65B0")}):f("\u6B63\u5728\u505C\u7528",()=>vu({code:g}),{onSuccess:()=>h("\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u505C\u7528")})};return ie(X,{hints:i.name==="menu"?["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","r \u5237\u65B0"]:i.name==="codes"?["\u2191\u2193 \u79FB\u52A8","Enter \u786E\u8BA4"]:["Esc \u8FD4\u56DE"],locked:i.name==="codes",onEscape:b,children:ie(ee,{state:S,loading:"\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u4FE1\u606F",width:t,children:({user:k,security:g,sessions:w})=>{if(i.name==="rename")return ie(V,{title:"\u4FEE\u6539\u7528\u6237\u540D",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:m,fields:[{kind:"text",name:"username",label:"\u7528\u6237\u540D",initial:k.username,placeholder:"\u8BF7\u8F93\u5165\u65B0\u7528\u6237\u540D"}],onCancel:b,onSubmit:T=>{let I=(T.username??"").trim();if(I===""||I.length>An){d(`\u8BF7\u8F93\u5165 1 \u5230 ${An} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}f("\u6B63\u5728\u4FDD\u5B58",()=>hu({username:I}),{onSuccess:()=>h("\u5DF2\u4FDD\u5B58")})}});if(i.name==="email")return ie(V,{title:"\u4FEE\u6539\u90AE\u7BB1",width:t,submitLabel:"\u786E\u8BA4\u4FEE\u6539",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:m,fields:[{kind:"text",name:"email",label:"\u65B0\u90AE\u7BB1",placeholder:"\u7528\u4E8E\u767B\u5F55\u4E0E\u63A5\u6536\u901A\u77E5\u7684\u65B0\u90AE\u7BB1"},{kind:"code",name:"code",label:"\u9A8C\u8BC1\u7801",emailField:"email",send:T=>yu({email:T})},{kind:"text",name:"password",label:"\u5F53\u524D\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801",hint:"\u4FEE\u6539\u540E\u7ACB\u5373\u4EE5\u65B0\u90AE\u7BB1\u767B\u5F55\u548C\u63A5\u6536\u901A\u77E5\uFF0C\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55"}],onCancel:b,onSubmit:T=>{let I=(T.email??"").trim(),_=(T.code??"").trim(),v=T.password??"";if(I===""||_===""||v===""){d("\u8BF7\u586B\u5199\u65B0\u90AE\u7BB1\u3001\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801");return}f("\u6B63\u5728\u4FDD\u5B58",()=>Su({email:I,code:_,password:v}),{onSuccess:()=>h("\u90AE\u7BB1\u5DF2\u4FEE\u6539")})}});if(i.name==="password")return ie(V,{title:"\u4FEE\u6539\u5BC6\u7801",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error: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 ${lt} \u4F4D\uFF0C\u4FDD\u5B58\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55`}],onCancel:b,onSubmit:T=>{let I=T.old??"",_=T.next??"";if(I===""){d("\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801");return}if(_.length<lt){d(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${lt} \u4F4D`);return}f("\u6B63\u5728\u4FDD\u5B58",()=>bu({oldPassword:I,newPassword:_}),{onSuccess:()=>h("\u5BC6\u7801\u5DF2\u4FEE\u6539")})}});if(i.name==="confirm-logout")return ie(Ve,{width:t,title:"\u786E\u8BA4\u9000\u51FA\u767B\u5F55\uFF1F",detail:"\u9000\u51FA\u540E\u9700\u91CD\u65B0\u767B\u5F55\u624D\u80FD\u7BA1\u7406\u8D26\u6237",confirmLabel:"\u9000\u51FA\u767B\u5F55",busy:l,error:m,onConfirm:()=>f("\u6B63\u5728\u9000\u51FA",()=>Nr(),{onSuccess:()=>{e.toast("ok","\u5DF2\u9000\u51FA\u767B\u5F55"),e.home()}}),onCancel:b});if(i.name==="code"){let T=db[i.intent];return ie(V,{title:T.title,width:t,submitLabel:T.submit,busy:l!==null,busyLabel:l??"\u6B63\u5728\u5904\u7406",error:m,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",placeholder:"\u9A8C\u8BC1\u5668\u663E\u793A\u7684 6 \u4F4D\u6570\u5B57",hint:T.hint}],onCancel:b,onSubmit:I=>{let _=(I.code??"").trim();if(_===""){d("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}x(i.intent,_)}})}if(i.name==="enroll"){let T=(_,v)=>kn(gb,{children:[v&&ie(rr,{color:u.mutedForeground,children:"\u4F7F\u7528 Google Authenticator \u7B49\u9A8C\u8BC1\u5668 App \u626B\u7801\u6DFB\u52A0"}),kn(rr,{children:[ie(rr,{color:u.mutedForeground,children:Zu}),ie(rr,{color:u.accent,children:i.setup.secret})]}),ie(vt,{marginTop:1,children:ie(V,{title:"\u586B\u5165\u52A8\u6001\u9A8C\u8BC1\u7801\u5B8C\u6210\u7ED1\u5B9A",width:_,submitLabel:"\u7ED1\u5B9A",busy:l!==null,busyLabel:l??"\u6B63\u5728\u7ED1\u5B9A",error:m,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801"}],onCancel:b,onSubmit:C=>{let N=(C.code??"").trim();if(N===""){d("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}f("\u6B63\u5728\u7ED1\u5B9A",()=>ku({code:N}),{onSuccess:({recoveryCodes:R})=>y(R,"\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u7ED1\u5B9A")})}})})]}),I=ui(i.setup.otpauthUri,{width:t,rows:r},{columns:lb(Zu)+i.setup.secret.length,rows:mb},{columns:o-t,rows:n-r});return I.fits?ie(mi,{value:i.setup.otpauthUri,aside:T(I.asideWidth,!0)}):kn(vt,{flexDirection:"column",children:[ie(ye,{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 kn(vt,{flexDirection:"column",children:[ie(ye,{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(vt,{marginTop:1,children:ie(fb,{codes:i.codes,width:t})}),ie(vt,{marginTop:1,children:ie(se,{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 I=i.message;s({name:"menu"}),e.reload(),e.toast("ok",I)}})})]});if(i.name==="passkey-add")return ie(ye,{tone:"info",width:t,title:`\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00 ${e.ctx.site} \u7684\u300C\u4E2A\u4EBA\u4E2D\u5FC3\u300D\u5B8C\u6210\u6DFB\u52A0`,detail:"\u6DFB\u52A0\u4E0E\u4F7F\u7528 Passkey \u4F9D\u8D56\u6D4F\u89C8\u5668\u7684 WebAuthn \u80FD\u529B\uFF0C\u7EC8\u7AEF\u65E0\u6CD5\u5B8C\u6210"});if(i.name==="passkey-rename")return ie(V,{title:`\u91CD\u547D\u540D Passkey ${i.item.name}`,width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:m,fields:[{kind:"text",name:"name",label:"\u540D\u79F0",initial:i.item.name,placeholder:"\u6807\u8BB0\u6240\u5728\u8BBE\u5907\uFF0C\u5982 MacBook \u6307\u7EB9"}],onCancel:b,onSubmit:T=>{let I=(T.name??"").trim();if(I===""){d("\u8BF7\u8F93\u5165\u540D\u79F0");return}f("\u6B63\u5728\u4FDD\u5B58",()=>Ru(i.item.id,{name:I}),{onSuccess:()=>h("\u5DF2\u4FDD\u5B58")})}});if(i.name==="passkey-delete")return ie(Ve,{width:t,title:`\u786E\u8BA4\u5220\u9664 Passkey\u300C${i.item.name}\u300D\uFF1F`,detail:"\u5220\u9664\u540E\u65E0\u6CD5\u518D\u7528\u5B83\u767B\u5F55",confirmLabel:"\u5220\u9664",busy:l,error:m,onConfirm:()=>f("\u6B63\u5728\u5220\u9664",()=>Pu(i.item.id),{onSuccess:()=>h("\u5DF2\u5220\u9664")}),onCancel:b});if(i.name==="passkey"){let T=i.item;return ie(vt,{flexDirection:"column",children:kn(te,{title:`Passkey ${T.name}`,width:t,children:[ie(Me,{width:t-ce,items:[["\u540D\u79F0",T.name],["\u6DFB\u52A0\u65F6\u95F4",K(T.createdAt)],["\u6700\u8FD1\u4F7F\u7528",T.lastUsedAt===null?"\u2014":K(T.lastUsedAt)]]}),ie(vt,{marginTop:1,children:ie(se,{width:t-ce,items:[{value:"rename",label:"\u91CD\u547D\u540D"},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:I=>{p(),s(I==="rename"?{name:"passkey-rename",item:T}:{name:"passkey-delete",item:T})}})})]})})}if(i.name==="confirm-revoke")return ie(Ve,{width:t,title:"\u786E\u8BA4\u9000\u51FA\u8BE5\u8BBE\u5907\u7684\u767B\u5F55\uFF1F",confirmLabel:"\u9000\u51FA",busy:l,error:m,onConfirm:()=>f("\u6B63\u5728\u9000\u51FA\u8BE5\u8BBE\u5907",()=>Tu(i.item.id),{onSuccess:()=>h("\u5DF2\u9000\u51FA\u8BE5\u8BBE\u5907")}),onCancel:b});if(i.name==="session"){let T=i.item;return kn(vt,{flexDirection:"column",children:[ie(te,{title:br(T.device),note:T.current?"\u5F53\u524D\u8BBE\u5907":void 0,width:t,children:ie(Me,{width:t-ce,items:[["\u8BBE\u5907\u7C7B\u578B",T.device?.type!=null?ub[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",K(T.loginAt)],["\u6700\u540E\u6D3B\u8DC3",K(T.lastActiveAt)],["\u767B\u5F55\u6709\u6548\u671F\u81F3",K(T.expiresAt)],["\u5BA2\u6237\u7AEF\u6807\u8BC6",T.userAgent??"\u2014"]]})}),!T.current&&l===null&&ie(vt,{marginTop:1,children:ie(se,{width:t,items:[{value:"revoke",label:"\u9000\u51FA\u8BE5\u8BBE\u5907",labelTone:"danger"}],onSelect:()=>{p(),s({name:"confirm-revoke",item:T})}})})]})}let P=g.totp,$=P.enabled?P.recoveryCodesRemaining===0?"\u5DF2\u5168\u90E8\u7528\u5B8C\uFF0C\u8BF7\u91CD\u65B0\u751F\u6210":`\u5269\u4F59 ${P.recoveryCodesRemaining} \u679A\uFF0C\u9A8C\u8BC1\u5668\u4E0D\u53EF\u7528\u65F6\u53EF\u4F5C\u4E3A\u767B\u5F55\u51ED\u8BC1`:"\u542F\u7528\u4E24\u6B65\u9A8C\u8BC1\u540E\u751F\u6210\uFF0C\u9A8C\u8BC1\u5668\u4E0D\u53EF\u7528\u65F6\u53EF\u4F5C\u4E3A\u767B\u5F55\u51ED\u8BC1",U=[{heading:"\u8D26\u6237"},{value:{kind:"rename"},label:"\u4FEE\u6539\u7528\u6237\u540D"},{value:{kind:"email"},label:"\u4FEE\u6539\u90AE\u7BB1",hint:"\u9700\u8981\u90AE\u7BB1\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801"},{value:{kind:"password"},label:"\u4FEE\u6539\u5BC6\u7801",hint:"\u4FDD\u5B58\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55"},{heading:""},{heading:"\u4E24\u6B65\u9A8C\u8BC1"},...P.enabled?[{value:{kind:"code",intent:"rebind"},label:"\u91CD\u65B0\u7ED1\u5B9A",hint:"\u751F\u6210\u65B0\u5BC6\u94A5\u5E76\u66F4\u6362\u6062\u590D\u7801"},{value:{kind:"code",intent:"regenerate"},label:"\u91CD\u65B0\u751F\u6210\u6062\u590D\u7801",hint:"\u539F\u6709\u6062\u590D\u7801\u5168\u90E8\u4F5C\u5E9F"},{value:{kind:"code",intent:"disable"},label:"\u505C\u7528",labelTone:"danger"}]:[{value:{kind:"enable"},label:"\u542F\u7528\u4E24\u6B65\u9A8C\u8BC1",hint:"\u767B\u5F55\u65F6\u8981\u6C42\u989D\u5916\u8F93\u5165\u9A8C\u8BC1\u5668\u52A8\u6001\u7801\uFF0C\u5BC6\u7801\u6CC4\u9732\u540E\u4ECD\u53EF\u62E6\u622A\u5192\u7528\u767B\u5F55"}],{heading:""},{heading:"Passkey"},...g.passkeys.length===0?[{value:{kind:"none"},label:"\u6682\u65E0 Passkey",hint:"\u6DFB\u52A0\u540E\u53EF\u4F7F\u7528\u6307\u7EB9\u3001\u9762\u5BB9\u6216\u786C\u4EF6\u5BC6\u94A5\u4E00\u6B65\u767B\u5F55",disabled:!0}]:[],...g.passkeys.map(T=>({value:{kind:"passkey",item:T},label:T.name,hint:`\u6700\u8FD1\u4F7F\u7528 ${T.lastUsedAt===null?"\u2014":K(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?`${br(T.device)}\uFF08\u5F53\u524D\u8BBE\u5907\uFF09`:br(T.device),...T.current?{labelTone:"accent"}:{},hint:`${T.ip??"\u2014"} \xB7 \u6700\u540E\u6D3B\u8DC3 ${K(T.lastActiveAt)}`})),{heading:""},{value:{kind:"logout"},label:"\u9000\u51FA\u767B\u5F55",labelTone:"danger"}];return kn(vt,{flexDirection:"column",children:[ie(Me,{width:t,items:[["\u7528\u6237\u540D",k.username],["\u90AE\u7BB1",k.email],["\u4E24\u6B65\u9A8C\u8BC1",P.enabled?`\u5DF2\u542F\u7528\uFF08\u542F\u7528\u4E8E ${P.enabledAt===null?"\u2014":K(P.enabledAt)}\uFF09`:"\u672A\u542F\u7528"],["\u6062\u590D\u7801",$]]}),ie(vt,{marginTop:W,children:ie(se,{width:t,height:Math.max(3,r-pb),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",()=>Js({}),{onSuccess:I=>s({name:"enroll",setup:I})}):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 xi,Text as Ti,useInput as Cb}from"ink";import{useRef as pm,useState as fo}from"react";import Eb from"string-width";import{z as Xe}from"zod";var hb=Xe.object({siteName:Xe.string(),apiLines:Xe.array(Xe.object({name:Xe.string(),description:Xe.string(),url:Xe.string()})),quotaPerUsd:Xe.number(),ticketAutoCloseMinutes:Xe.number(),docsEnabled:Xe.boolean(),legal:Xe.object({termsConfigured:Xe.boolean(),privacyConfigured:Xe.boolean()})});function Ae(e,t){return Nt(hb,`${e}/api/site-config`,{...t===void 0?{}:{timeoutMs:t}})}var bb=Xe.object({content:Xe.string(),configured:Xe.boolean()});function tm(e,t){return Nt(bb,`${e}/api/agreements/${t}`)}var nm=12e4,om=e=>L(Cn(Tr),Bt("/tickets",{...e})),rm=e=>L(Rc,"/tickets",{method:"POST",json:e}),sa=e=>L(Ec,`/tickets/${e}`),im=(e,t,o)=>L(pe,`/tickets/${e}/messages`,{method:"POST",json:{content:t,attachmentIds:o}}),sm=e=>L(Cc,Bt("/tickets/attachments",{filename:e.fileName,contentType:e.contentType}),{method:"POST",body:e.bytes,headers:{"content-type":"application/octet-stream"},timeoutMs:nm}),am=e=>L(pe,`/tickets/attachments/${e}`,{method:"DELETE"}),cm=(e,t)=>Lr(`/tickets/${e}/attachments/${t}`,{timeoutMs:nm}),lm=e=>L(pe,`/tickets/${e}/close`,{method:"POST"}),um=e=>L(pe,`/tickets/${e}/reopen`,{method:"POST"});import{existsSync as fi,readFileSync as yb,statSync as mm,writeFileSync as Sb}from"fs";import{homedir as aa}from"os";import _t from"path";var xb={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".avif":"image/avif"};function Tb(e){return e.split(`
|
|
13
|
-
`).map(t=>t.trim()).filter(t=>t!=="").map(t=>t.startsWith("~/")?_t.join(aa(),t.slice(2)):t)}function wb(e){if(!fi(e))throw new O(`${e} \u4E0D\u5B58\u5728`);let t=mm(e);if(!t.isFile())throw new O(`${e} \u4E0D\u662F\u6587\u4EF6`);if(t.size===0)throw new O(`${e} \u662F\u7A7A\u6587\u4EF6\uFF0C\u65E0\u6CD5\u4E0A\u4F20`);if(t.size>Mo)throw new O(`${e} \u8D85\u8FC7\u5355\u4E2A\u9644\u4EF6\u5927\u5C0F\u4E0A\u9650 ${no(Mo)}`);let o;try{o=yb(e)}catch(r){throw new O(`${e} \u8BFB\u53D6\u5931\u8D25\uFF1A${Re(r)}`,{cause:r})}let n=_t.basename(e);return{fileName:n,contentType:xb[_t.extname(n).toLowerCase()]??"application/octet-stream",bytes:o}}function gi(e){let t=Tb(e);if(t.length>wr)throw new O("\u9644\u4EF6\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650");return t.map(wb)}async function hi(e,t){let o=[];try{for(let n of e)o.push((await sm(n)).id);return await t(o)}catch(n){for(let r of o)await am(r).catch(()=>{});throw n}}function kb(e,t){let o=_t.basename(t),n=_t.extname(o),r=o.slice(0,o.length-n.length),i=_t.join(e,o);for(let s=1;fi(i);s+=1)i=_t.join(e,`${r}-${s}${n}`);return i}function vb(e,t){let o=e.trim();if(o==="")return{dir:process.cwd(),fileName:t};if(o==="~")return{dir:aa(),fileName:t};let n=o.startsWith("~/")||o.startsWith(`~${_t.sep}`)?_t.join(aa(),o.slice(2)):o;return o.endsWith("/")||o.endsWith(_t.sep)||fi(n)&&mm(n).isDirectory()?{dir:n,fileName:t}:{dir:_t.dirname(n),fileName:_t.basename(n)}}function dm(e,t,o){let n=vb(e,t);if(!fi(n.dir))throw new O(`${n.dir} \u76EE\u5F55\u4E0D\u5B58\u5728`);let r=kb(n.dir,n.fileName);try{Sb(r,o)}catch(i){throw new O(`\u5199\u5165 ${r} \u5931\u8D25\uFF1A${Re(i)}`,{cause:i})}return r}import{jsx as _b}from"react/jsx-runtime";function bi({title:e,width:t,fileName:o,download:n,onCancel:r,onSaved:i}){let{busy:s,error:a,run:c}=fe();return _b(V,{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 dm(l.path??"",o,m)},{onSuccess:i})}})}import{useEffect as Rb,useRef as Pb}from"react";function yi(e,t,o=!0){let n=Pb(t);n.current=t,Rb(()=>{if(!o)return;let r=!1,i=setInterval(()=>{r||(r=!0,n.current().catch(()=>{}).finally(()=>{r=!1}))},e);return()=>clearInterval(i)},[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 ${wr} \u4E2A\uFF0C\u5355\u4E2A\u4E0D\u8D85\u8FC7 ${Mo/1024/1024}MB`,optional:!0};import{jsx as ft,jsxs as ca}from"react/jsx-runtime";var Ab=5e3,Ib=11,Nb=3,fm=1;function Mb(e,t){let o=[],n=r=>{let i=r.spans.reduce((a,c)=>a+Eb(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:` ${K(r.createdAt)}`,color:u.faintForeground}]},c=r.content===""?[]:Ut([{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:` (${no(m.fileSize)})`,color:u.mutedForeground}]}));s?o.push(n(a),...c.map(n),...l.map(n)):o.push(a,...c,...l)}),o}function gm({params:e}){let t=B(),{width:o}=j(),n=ne(),[r,i]=fo("main"),[s,a]=fo(!1),[c,l]=fo(null),[m,p]=fo(null),[d,f]=fo(0),{busy:S,error:b,reset:h,fail:y,run:x}=fe(),k=Q([e.id,t.revision],async()=>{let[N,R]=await Promise.all([sa(e.id),Ae(t.ctx.site)]);return{detail:N,site:R}}),[g,w]=fo(null),P=pm(0),$=pm(t.revision);$.current!==t.revision&&($.current=t.revision,P.current+=1,g!==null&&w(null));let U=k.phase==="ready"?k.data:null,T=g??U?.detail??null;yi(Ab,async()=>{if(T===null||S!==null)return;let N=P.current,R=await sa(e.id);N===P.current&&(R.ticket.updatedAt!==T.ticket.updatedAt||R.messages.length!==T.messages.length)&&w(R)},r==="main"&&U!==null);let I=T?.messages.some(N=>N.attachments.length>0)??!1;z(N=>{r!=="main"||s||S!==null||(N==="r"?t.reload():N==="x"&&T!==null&&T.ticket.status!=="closed"?(h(),i("confirm-close")):N==="a"&&I&&(h(),l(null),p(null),i("attachments")))}),Cb((N,R)=>{R.tab&&r==="main"&&!s&&T?.ticket.status!=="closed"&&a(!0)},{isActive:r==="main"&&!s&&S===null});let _=()=>{if(r!=="main"){h(),i("main");return}if(s){a(!1);return}t.pop()},v=(N,R)=>{x("\u6B63\u5728\u53D1\u9001",()=>hi(R,A=>im(e.id,N,A)),{onSuccess:()=>{a(!1),f(A=>A+1),t.reload(),t.toast("ok","\u5DF2\u53D1\u9001")}})},C=r==="main"&&!s?["\u2191\u2193 \u6EDA\u52A8",...T?.ticket.status==="closed"?[]:["Tab \u56DE\u590D"],...I?["a \u9644\u4EF6"]:[],...T?.ticket.status==="closed"?[]:["x \u5173\u95ED\u5DE5\u5355"],"r \u5237\u65B0"]:[];return ft(X,{trail:["\u5DE5\u5355\u652F\u6301",T?.ticket.title??"\u5DE5\u5355\u8BE6\u60C5"],hints:C,onEscape:_,children:ft(ee,{state:k,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:o,children:({site:N,detail:R})=>{let A=g??R,q=A.ticket,F=q.status==="closed";if(r==="confirm-close")return ft(Ve,{width:o,title:"\u5173\u95ED\u5DE5\u5355",detail:`\u786E\u5B9A\u5173\u95ED\u5DE5\u5355\u300C${q.title}\u300D\u5417\uFF1F\u5173\u95ED\u540E\u53EF\u91CD\u65B0\u6253\u5F00`,confirmLabel:"\u5173\u95ED\u5DE5\u5355",busy:S,error:b,onConfirm:()=>x("\u6B63\u5728\u5173\u95ED",()=>lm(e.id),{onSuccess:()=>{i("main"),t.reload(),t.toast("ok","\u5DF2\u5173\u95ED")}}),onCancel:_});if(r==="attachments")return m!==null?ft(bi,{title:`\u4FDD\u5B58\u9644\u4EF6 \u2014 ${m.fileName}`,width:o,fileName:m.fileName,download:()=>cm(e.id,m.id),onCancel:()=>p(null),onSaved:_e=>{p(null),l(_e),t.toast("ok","\u9644\u4EF6\u5DF2\u4FDD\u5B58")}}):ca(xi,{flexDirection:"column",children:[ft(se,{width:o,height:Math.max(3,n-1),isActive:S===null,items:[{heading:"\u9644\u4EF6"},...A.messages.flatMap(_e=>_e.attachments.map(E=>({value:E,label:E.fileName,hint:`${_e.authorKind==="user"?"\u6211":"\u7BA1\u7406\u5458"} \xB7 ${no(E.fileSize)} \xB7 ${K(_e.createdAt)}`})))],onSelect:_e=>{l(null),p(_e)}}),c!==null&&ft(Ti,{wrap:"truncate",color:u.faintForeground,children:`\u5DF2\u4FDD\u5B58\u5230 ${c}`})]});let G=N.ticketAutoCloseMinutes>0?fm:0,H=F?Nb:s?Ib:fm,re=Math.max(3,n-G-H-W);return ca(xi,{flexDirection:"column",children:[G>0&&ft(Ti,{wrap:"truncate",color:u.faintForeground,children:`\u7BA1\u7406\u5458\u56DE\u590D\u540E\u8D85\u8FC7 ${N.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`}),ft(yn,{lines:Mb(A.messages,o),height:re,isActive:!s&&S===null,pinBottom:!0}),ft(xi,{marginTop:1,flexDirection:"column",children:F?ca(xi,{flexDirection:"column",children:[ft(Ti,{color:u.mutedForeground,children:"\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u5982\u9700\u7EE7\u7EED\u6C9F\u901A\u53EF\u91CD\u65B0\u6253\u5F00"}),ft(se,{width:o,isActive:S===null,items:[{value:"reopen",label:"\u91CD\u65B0\u6253\u5F00"}],onSelect:()=>x("\u6B63\u5728\u91CD\u65B0\u6253\u5F00",()=>um(e.id),{onSuccess:()=>{t.reload(),t.toast("ok","\u5DF2\u91CD\u65B0\u6253\u5F00")}})})]}):s?ft(V,{title:"\u56DE\u590D\u5DE5\u5355",width:o,submitLabel:"\u53D1\u9001\u56DE\u590D",busy:S!==null,busyLabel:S??"\u6B63\u5728\u53D1\u9001",error:b,fields:[{kind:"textarea",name:"content",label:"\u56DE\u590D\u5185\u5BB9",rows:3,maxLength:5e3,placeholder:"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9",optional:!0},Si],onCancel:()=>a(!1),onSubmit:_e=>{let E=(_e.content??"").trim(),D;try{D=gi(_e.attachments??"")}catch(J){y(Re(J));return}if(E===""&&D.length===0){y("\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9\u6216\u9644\u4EF6\u8DEF\u5F84");return}v(E,D)}},d):ft(Ti,{color:u.faintForeground,children:"\u6309 Tab \u64B0\u5199\u56DE\u590D"})})]})}})})}import{Box as Lb}from"ink";import{useState as Ob}from"react";import{jsx as Un,jsxs as Bb}from"react/jsx-runtime";var $b=tt(os,ys,"\u5168\u90E8\u72B6\u6001"),Db={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"},la={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:Db};function hm(){let e=B(),{width:t}=j(),o=ne(),[n,r]=Ob({name:"list"}),[i,s]=Ze("status",()=>""),{busy:a,error:c,reset:l,fail:m,run:p}=fe(),d=xn([e.revision,i],b=>om({page:b,...i===""?{}:{status:i}}),{retain:"page"}),f=n.name==="list";z((b,h)=>{f&&(b==="r"?e.reload():b==="f"?r({name:"filter"}):b==="n"?r({name:"create-category"}):h.leftArrow?d.go(-1):h.rightArrow&&d.go(1))});let S=()=>{n.name==="list"?e.pop():n.name==="create"?r({name:"create-category"}):(l(),r({name:"list"}))};return Un(X,{hints:f?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","n \u65B0\u5EFA","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:S,children:n.name==="filter"?Un(V,{title:"\u7B5B\u9009\u5DE5\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:$b,initial:i}],onCancel:S,onSubmit:b=>{s(b.status??""),d.reset(),r({name:"list"})}}):n.name==="create-category"?Un(se,{width:t,height:o,items:[{heading:"\u5206\u7C7B"},...rs.map(b=>({value:b,label:Cr(b),hint:la[b].title}))],onSelect:b=>r({name:"create",category:b})}):n.name==="create"?Un(V,{title:`\u65B0\u5EFA\u5DE5\u5355 \u2014 ${Cr(n.category)}`,width:t,submitLabel:"\u63D0\u4EA4",busy:a!==null,busyLabel:a??"\u6B63\u5728\u63D0\u4EA4",error:c,fields:[{kind:"select",name:"priority",label:"\u4F18\u5148\u7EA7",options:is.map(b=>({value:b,label:Ss(b).label})),initial:"normal"},{kind:"text",name:"title",label:"\u6807\u9898",placeholder:la[n.category].title},{kind:"textarea",name:"content",label:"\u95EE\u9898\u63CF\u8FF0",rows:5,maxLength:5e3,placeholder:la[n.category].content},Si],onCancel:S,onSubmit:b=>{let h=(b.title??"").trim(),y=(b.content??"").trim();if(h===""){m("\u8BF7\u586B\u5199\u6807\u9898");return}if(y===""){m("\u8BF7\u586B\u5199\u95EE\u9898\u63CF\u8FF0");return}let x;try{x=gi(b.attachments??"")}catch(k){m(Re(k));return}p("\u6B63\u5728\u63D0\u4EA4\u5DE5\u5355",()=>hi(x,k=>rm({title:h,category:n.category,priority:b.priority??"normal",content:y,attachmentIds:k})),{onSuccess:k=>{r({name:"list"}),d.reset(),e.reload(),e.push("ticket",{id:k.id}),e.toast("ok","\u5DE5\u5355\u5DF2\u63D0\u4EA4")}})}}):Un(ee,{state:d.state,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:t,children:b=>Bb(Lb,{flexDirection:"column",children:[Un(Ce,{retain:"list",items:b.items,width:t,height:Math.max(3,o-1),columns:[{label:"\u6807\u9898",shrink:!0},{label:"\u4F18\u5148\u7EA7"},{label:"\u5206\u7C7B"},{label:"\u6700\u540E\u66F4\u65B0"},{label:"\u72B6\u6001",align:"right"}],row:h=>[h.title,Zt(Ss(h.priority)),Cr(h.category),K(h.updatedAt),Zt(ys(h.status))],onOpen:h=>e.push("ticket",{id:h.id}),emptyLabel:i===""?"\u6682\u65E0\u5DE5\u5355":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u9047\u5230\u95EE\u9898\u65F6\u53EF\u65B0\u5EFA\u5DE5\u5355\uFF0C\u7BA1\u7406\u5458\u4F1A\u5C3D\u5FEB\u56DE\u590D":void 0}),Un(Tn,{page:d.page,pages:d.pages,total:d.total,width:t})]})})})}import{Box as Fb}from"ink";import{jsx as ir}from"react/jsx-runtime";function bm({params:e}){let t=B(),{width:o}=j(),n=ne(),r=Q([e.type,t.revision],()=>tm(t.ctx.site,e.type));return ir(X,{trail:["\u6CD5\u5F8B\u6761\u6B3E",e.type==="terms"?"\u7528\u6237\u534F\u8BAE":"\u9690\u79C1\u653F\u7B56"],hints:["\u2191\u2193 \u6EDA\u52A8"],children:ir(ee,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6761\u6B3E",width:o,children:i=>i.configured?ir(Fb,{flexDirection:"column",children:ir(yn,{lines:lo(i.content,o),height:n})}):ir(ye,{tone:"info",width:o,title:"\u8BE5\u6761\u6B3E\u5C1A\u672A\u914D\u7F6E"})})})}var ym=(e,t)=>Nt(pe,`${e}/api/auth/send-code`,{json:t});async function Sm(e,t){let o=await St(`${e}/api/auth/register`,{json:t});It(o);let n=eo.parse(o.data);return Fo(e,Bo({refresh:null,device:null},o.headers),n)}var xm=(e,t)=>Nt(pe,`${e}/api/auth/forgot-password`,{json:t}),Tm=(e,t)=>Nt(pe,`${e}/api/auth/reset-password`,{json:t});import{jsx as wm}from"react/jsx-runtime";function km(){let e=B(),{width:t}=j(),{busy:o,error:n,fail:r,run:i}=fe();return wm(X,{trail:["\u627E\u56DE\u5BC6\u7801"],isActive:o===null,children:wm(V,{title:"\u91CD\u7F6E\u5BC6\u7801",width:t,submitLabel:"\u63D0\u4EA4",busy:o!==null,busyLabel:o??"\u6B63\u5728\u91CD\u7F6E",error:n,fields:[{kind:"text",name:"email",label:"\u90AE\u7BB1",placeholder:"\u8BF7\u8F93\u5165\u6CE8\u518C\u90AE\u7BB1"},{kind:"code",name:"code",label:"\u9A8C\u8BC1\u7801",placeholder:"6 \u4F4D\u6570\u5B57\u9A8C\u8BC1\u7801",emailField:"email",send:s=>xm(e.ctx.site,{email:s})},{kind:"text",name:"password",label:"\u65B0\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${lt} \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<lt){r(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${lt} \u4F4D`);return}i("\u6B63\u5728\u91CD\u7F6E",()=>Tm(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 ma,Text as jb}from"ink";import{useState as _m}from"react";import{Box as vm}from"ink";import{jsx as ua,jsxs as Ub}from"react/jsx-runtime";var wi=e=>e.termsConfigured||e.privacyConfigured;function ki({legal:e,width:t,onAgree:o}){let n=B(),r=[e.termsConfigured?"\u300A\u7528\u6237\u534F\u8BAE\u300B":"",e.privacyConfigured?"\u300A\u9690\u79C1\u653F\u7B56\u300B":""].filter(s=>s!==""),i=[{value:"agree",label:"\u6211\u5DF2\u9605\u8BFB\u5E76\u540C\u610F\uFF0C\u7EE7\u7EED",hint:r.join("\u4E0E")},...e.termsConfigured?[{value:"terms",label:"\u67E5\u770B\u7528\u6237\u534F\u8BAE"}]:[],...e.privacyConfigured?[{value:"privacy",label:"\u67E5\u770B\u9690\u79C1\u653F\u7B56"}]:[],{value:"back",label:"\u8FD4\u56DE"}];return Ub(vm,{flexDirection:"column",children:[ua(ye,{tone:"info",width:t,title:`\u7EE7\u7EED\u524D\u8BF7\u9605\u8BFB\u5E76\u540C\u610F${r.join("\u4E0E")}`}),ua(vm,{marginTop:1,children:ua(se,{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 vn,jsxs as Rm}from"react/jsx-runtime";function Pm(){let e=B(),{width:t}=j(),[o,n]=_m({name:"credentials"}),[r,i]=_m(!1),{busy:s,error:a,reset:c,fail:l,run:m}=fe(),p=Q([e.revision],()=>Ae(e.ctx.site)),d=h=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u5DF2\u767B\u5F55\uFF1A${h}`),e.home()},f=(h,y)=>{m("\u6B63\u5728\u9A8C\u8BC1",()=>al(e.ctx.site,h,y),{onSuccess:x=>{if(x.status==="totp_required"){n({name:"factor",ticket:x.ticket,jar:x.jar});return}d(x.session.username)}})},S=(h,y)=>{m("\u6B63\u5728\u9A8C\u8BC1",()=>cl(e.ctx.site,h.jar,h.ticket,y,h.kind),{onSuccess:x=>d(x.username)})},b=()=>{o.name==="credentials"?e.pop():(c(),n({name:"credentials"}))};return Rm(X,{trail:o.name==="credentials"?["\u767B\u5F55\u8D26\u53F7"]:["\u767B\u5F55\u8D26\u53F7","\u4E24\u6B65\u9A8C\u8BC1"],onEscape:b,isActive:s===null,children:[o.name==="credentials"&&vn(ee,{state:p,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:h=>wi(h.legal)&&!r?vn(ki,{legal:h.legal,width:t,onAgree:()=>i(!0)}):Rm(ma,{flexDirection:"column",children:[vn(V,{title:"\u767B\u5F55",width:t,submitLabel:"\u767B\u5F55",error:a,busy:s!==null,busyLabel:s??"\u6B63\u5728\u9A8C\u8BC1",fields:[{kind:"text",name:"account",label:"\u8D26\u53F7",placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D\u6216\u90AE\u7BB1"},{kind:"text",name:"password",label:"\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u5BC6\u7801"}],onCancel:b,onSubmit:y=>{let x=(y.account??"").trim(),k=y.password??"";if(x===""||k===""){l("\u8BF7\u586B\u5199\u8D26\u53F7\u4E0E\u5BC6\u7801");return}f(x,k)}}),vn(ma,{marginTop:1,children:vn(jb,{color:u.faintForeground,children:"Passkey \u767B\u5F55\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"})})]})}),o.name==="factor"&&vn(se,{width:t,items:[{value:"totp",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",hint:"\u8F93\u5165\u9A8C\u8BC1\u5668 App \u4E2D\u663E\u793A\u7684\u52A8\u6001\u9A8C\u8BC1\u7801"},{value:"recovery-code",label:"\u6062\u590D\u7801",hint:"\u8F93\u5165\u672A\u4F7F\u7528\u8FC7\u7684\u4E00\u6B21\u6027\u6062\u590D\u7801"}],onSelect:h=>n({name:"code",ticket:o.ticket,jar:o.jar,kind:h})}),o.name==="code"&&vn(ma,{flexDirection:"column",children:vn(V,{title:"\u4E24\u6B65\u9A8C\u8BC1",width:t,submitLabel:"\u9A8C\u8BC1\u5E76\u767B\u5F55",error:a,busy:s!==null,busyLabel:s??"\u6B63\u5728\u9A8C\u8BC1",fields:[{kind:"text",name:"code",label:o.kind==="totp"?"\u52A8\u6001\u9A8C\u8BC1\u7801":"\u6062\u590D\u7801",placeholder:o.kind==="totp"?"6 \u4F4D\u6570\u5B57\u9A8C\u8BC1\u7801":"\u8BF7\u8F93\u5165\u6062\u590D\u7801",hint:o.kind==="totp"?"\u8F93\u5165\u9A8C\u8BC1\u5668 App \u4E2D\u663E\u793A\u7684\u52A8\u6001\u9A8C\u8BC1\u7801":"\u8F93\u5165\u672A\u4F7F\u7528\u8FC7\u7684\u4E00\u6B21\u6027\u6062\u590D\u7801"}],onCancel:b,onSubmit:h=>{let y=(h.code??"").trim();if(y===""){l("\u8BF7\u586B\u5199\u9A8C\u8BC1\u7801");return}S(o,y)}})})]})}import{useState as Hb}from"react";import{jsx as vi}from"react/jsx-runtime";function Cm(){let e=B(),{width:t}=j(),[o,n]=Hb(!1),{busy:r,error:i,fail:s,run:a}=fe(),c=Q([e.revision],()=>Ae(e.ctx.site));return vi(X,{trail:["\u6CE8\u518C\u8D26\u53F7"],isActive:r===null,children:vi(ee,{state:c,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:l=>wi(l.legal)&&!o?vi(ki,{legal:l.legal,width:t,onAgree:()=>n(!0)}):vi(V,{title:"\u6CE8\u518C",width:t,submitLabel:"\u6CE8\u518C",busy:r!==null,busyLabel:r??"\u6B63\u5728\u6CE8\u518C",error:i,fields:[{kind:"text",name:"username",label:"\u7528\u6237\u540D",placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D"},{kind:"text",name:"email",label:"\u90AE\u7BB1",placeholder:"\u8BF7\u8F93\u5165\u90AE\u7BB1"},{kind:"code",name:"code",label:"\u9A8C\u8BC1\u7801",placeholder:"6 \u4F4D\u6570\u5B57\u9A8C\u8BC1\u7801",emailField:"email",send:m=>ym(e.ctx.site,{email:m})},{kind:"text",name:"password",label:"\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${lt} \u4F4D`},{kind:"text",name:"invite",label:"\u9080\u8BF7\u7801",placeholder:"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801",optional:!0}],onCancel:()=>e.pop(),onSubmit:m=>{let p=(m.username??"").trim(),d=(m.email??"").trim(),f=(m.code??"").trim(),S=m.password??"",b=(m.invite??"").trim();if(p===""||p.length>An){s(`\u8BF7\u8F93\u5165 1 \u5230 ${An} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}if(d===""||f===""){s("\u8BF7\u586B\u5199\u90AE\u7BB1\u4E0E\u9A8C\u8BC1\u7801");return}if(S.length<lt){s(`\u5BC6\u7801\u81F3\u5C11 ${lt} \u4F4D`);return}a("\u6B63\u5728\u6CE8\u518C",()=>Sm(e.ctx.site,{username:p,email:d,password:S,code:f,...b===""?{}:{inviteCode:b}}),{onSuccess:h=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u6CE8\u518C\u6210\u529F\uFF1A${h.username}`),e.home()}})}})})})}import{Box as Hn}from"ink";import{useEffect as ry,useRef as iy,useState as ha}from"react";import{z as M}from"zod";var qb=M.object({balance:M.number(),today:M.object({requests:M.number(),tokens:M.number(),cost:M.number()})}),Em=()=>L(qb,"/dashboard/summary"),Am=["all","30d","7d"],Wb=M.object({totals:M.object({requests:M.number(),tokens:M.number(),cost:M.number()}),hourly:M.array(M.number()),models:M.array(M.object({model:M.string(),displayName:M.string(),tokens:M.number(),inTokens:M.number(),outTokens:M.number()})),chart:M.object({start:M.string(),end:M.string(),points:M.array(M.object({day:M.string(),model:M.string(),tokens:M.number()}))}),heatmap:M.object({start:M.string(),end:M.string(),days:M.array(M.object({day:M.string(),cost:M.number()}))}),activeDays:M.number(),currentStreak:M.number(),longestStreak:M.number()}),da=e=>L(Wb,Bt("/dashboard/stats",{range:e})),zb=M.object({id:M.number().int(),requestId:M.string(),tokenName:M.string(),protocol:Qa,model:M.string(),modelDisplayName:M.string(),groupName:M.string(),promptTokens:M.number(),completionTokens:M.number(),cachedTokens:M.number(),cacheWriteTokens:M.number(),cacheWrite1hTokens:M.number(),webSearchRequests:M.number(),imageGenerationCalls:M.number(),totalTokens:M.number(),quotaCost:M.number(),subscriptionPlanName:M.string().nullable(),multiplier:M.number(),tierOver:M.number().int().nullable(),paramMultipliers:$c,status:sc,httpStatus:M.number().int(),stopReason:M.string().nullable(),latencyMs:M.number(),firstByteMs:M.number().nullable(),stream:M.boolean(),ip:M.string().nullable(),createdAt:M.string()}),Im=e=>L(Cn(zb),Bt("/logs",{...e})),Gb=M.object({quotaCost:M.number(),rpm:M.number(),tpm:M.number(),concurrency:M.number()}),Nm=e=>L(Gb,Bt("/logs/stats",{...e})),Kb=M.object({id:M.number().int(),type:oc,amount:M.number(),balanceAfter:M.number(),refType:rc,refId:M.string().nullable(),createdAt:M.string()}),Mm=e=>L(Cn(Kb),Bt("/quota-ledger",{...e}));import{Box as Vb,Text as Lt}from"ink";import sr from"string-width";import{Fragment as Om,jsx as Ot,jsxs as pa}from"react/jsx-runtime";var jn=1,Jb=4,Yb=1,go=8,Xb=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587"],Lm=e=>`${Number(e.slice(5,7))}\u6708${Number(e.slice(8,10))}\u65E5`;function $m({data:e,order:t,width:o,rows:n}){let r=n-Yb,i=[];for(let I=e.start;I<=e.end;I=fn(I,1))i.push(I);let s=Math.min(Jb,Math.floor((o+jn)/i.length)-jn);s<1&&(s=1,i=i.slice(-Math.floor((o+jn)/(1+jn))));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,zr.length).map((I,_)=>[I,_])),m=zr.length,p=I=>zr[I]??u.faintForeground,d=new Map(i.map((I,_)=>[I,_])),f=i.map(()=>Array.from({length:m+1},()=>0));for(let I of e.points){let _=d.get(I.day);if(_===void 0)continue;let v=f[_];if(v===void 0)continue;let C=l.get(I.model)??m;v[C]=(v[C]??0)+I.tokens}let S=f.map(I=>I.reduce((_,v)=>_+v,0)),b=Math.max(0,...S),h=r*go,y=f.map((I,_)=>{let v=Array.from({length:r},()=>null),C=S[_]??0;if(C<=0)return v;let N=Math.max(1,Math.round(C/b*h)),R=[],A=0,q=0;I.forEach((F,G)=>{A+=F;let H=Math.round(A/C*N);for(let re=q;re<H;re+=1)R[re]=p(G);q=H});for(let F=0;F<r;F+=1){let G=Math.min(go,N-F*go);if(G<=0)break;let H=new Map;for(let E=F*go;E<F*go+G;E+=1){let D=R[E];D!==void 0&&H.set(D,(H.get(D)??0)+1)}let re=null,_e=0;for(let[E,D]of H)D>_e&&(re=E,_e=D);if(re===null)break;v[F]={color:re,glyph:G===go?null:Xb[G-1]??null}}return v}),x=I=>{let _=[],v=(C,N,R)=>{let A=_[_.length-1];A!==void 0&&A.color===C&&A.glyph===N?A.width+=R:_.push({color:C,glyph:N,width:R})};return y.forEach((C,N)=>{N>0&&v(null,null,jn);let R=C[I]??null;R===null?v(null,null,s):v(R.color,R.glyph,s)}),_},k=i.length*(s+jn)-jn,g=Lm(a),w=Lm(c),P=b>0?`\u5355\u65E5\u5CF0\u503C ${pn(b)}`:"",$=k-sr(g)-sr(w),U=P!==""&&$>=sr(P)+4,T=U?Math.floor(($-sr(P))/2):$;return pa(Vb,{flexDirection:"column",children:[Array.from({length:r},(I,_)=>{let v=r-1-_;return Ot(Lt,{wrap:"truncate",children:x(v).map((C,N)=>C.color===null?Ot(Lt,{children:" ".repeat(C.width)},N):C.glyph===null?Ot(Lt,{backgroundColor:C.color,children:" ".repeat(C.width)},N):Ot(Lt,{color:C.color,children:C.glyph.repeat(C.width)},N))},v)}),Ot(Lt,{wrap:"truncate",children:$<2?Ot(Lt,{color:u.faintForeground,children:Pe(g,k)}):pa(Om,{children:[Ot(Lt,{color:u.faintForeground,children:g}),Ot(Lt,{children:" ".repeat(T)}),U&&pa(Om,{children:[Ot(Lt,{color:u.mutedForeground,children:P}),Ot(Lt,{children:" ".repeat($-sr(P)-T)})]}),Ot(Lt,{color:u.faintForeground,children:w})]})})]})}import{Box as Dm,Text as Wt}from"ink";import Qb from"string-width";import{jsx as qt,jsxs as fa}from"react/jsx-runtime";var _i=3,rn=2,ga=10,Zb=8,Bm=e=>Math.floor((e-_i)/rn),Fm=e=>Bm(e)>=Zb;function ey(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=fn(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 ty(e,t){let o=t*rn,n="",r=0,i="";for(;r<o;){let s=r%rn===0?e[r/rn*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=Qb(c);if(r+l<=o){n+=c,r+=l;continue}}}n+=" ",r+=1}return n}var ny={1:"\u4E00",3:"\u4E09",5:"\u4E94"};function oy({cells:e,day:t,weeks:o}){return fa(Wt,{wrap:"truncate",children:[qt(Wt,{color:u.faintForeground,children:Oe(ny[t]??"",_i)}),Array.from({length:o},(n,r)=>{let i=e[r*7+t];return i===void 0?qt(Wt,{children:" ".repeat(rn)},r):qt(Wt,{backgroundColor:Wr[i.level],children:" ".repeat(rn)},r)})]})}function Um({data:e,funFact:t,width:o}){let n=ey(e),r=Math.ceil(n.length/7),i=Math.min(r,Bm(o)),s=n.slice((r-i)*7),a=3+Wr.length*rn+3,c=Math.max(0,_i+i*rn-a-2);return fa(Dm,{flexDirection:"column",children:[qt(Wt,{wrap:"truncate",color:u.faintForeground,children:" ".repeat(_i)+ty(s,i)}),Array.from({length:7},(l,m)=>qt(oy,{cells:s,day:m,weeks:i},m)),qt(Dm,{marginTop:1,children:fa(Wt,{wrap:"truncate",children:[qt(Wt,{color:u.mutedForeground,children:Oe(t??"",c)})," ",qt(Wt,{color:u.faintForeground,children:"\u5C11 "}),Wr.map(l=>qt(Wt,{backgroundColor:l,children:" ".repeat(rn)},l)),qt(Wt,{color:u.faintForeground,children:" \u591A"})]})})]})}import{jsx as ze,jsxs as Hm}from"react/jsx-runtime";var sy={all:"\u5168\u90E8","30d":"30 \u5929","7d":"7 \u5929"},ay=1,Ri=4,jm=5,cy=9;function ly(e){let t=-1,o=0;return e.forEach((n,r)=>{n>o&&(o=n,t=r)}),t<0?"\u2014":`${t} \u70B9`}function qm(){let e=B(),{width:t}=j(),o=ne(),[n,r]=ha("30d"),[i,s]=ha("heatmap"),[a,c]=ha(null),l=iy(null),m=Q([n,e.revision],async()=>{let p=l.current;if(p!==null&&p.revision===e.revision){let b=await da(n);return{summary:p.summary,stats:b,site:p.site}}let[d,f,S]=await Promise.all([Em(),da(n),Ae(e.ctx.site)]);return l.current={revision:e.revision,summary:d,site:S},{summary:d,stats:f,site:S}});return ry(()=>{m.phase==="ready"&&c(Wc({tokens:m.data.stats.totals.tokens,scope:"user",range:n}))},[m,n]),z(p=>{p==="r"&&e.reload(),p==="t"&&s(d=>d==="heatmap"?"chart":"heatmap")}),ze(X,{hints:["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u5207\u6362\u533A\u95F4","t \u5207\u6362\u56FE\u8868","/ \u8FC7\u6EE4","r \u5237\u65B0"],children:ze(Hn,{flexDirection:"column",children:ze(ee,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u7528\u91CF",width:t,children:({summary:p,stats:d,site:f})=>{let S=[{label:"\u8D26\u6237\u4F59\u989D",value:ae(p.balance,f.quotaPerUsd)},{label:"\u4ECA\u65E5\u8BF7\u6C42",value:Te(p.today.requests)},{label:"\u4ECA\u65E5 Token",value:Te(p.today.tokens)},{label:"\u4ECA\u65E5\u6D88\u8017",value:ae(p.today.cost,f.quotaPerUsd)}],b=[{label:"\u8BF7\u6C42\u6570",value:Te(d.totals.requests)},{label:"Token \u603B\u91CF",value:pn(d.totals.tokens)},{label:"\u6D88\u8017",value:ae(d.totals.cost,f.quotaPerUsd)},{label:"\u6D3B\u8DC3\u5929\u6570",value:Te(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:ly(d.hourly)},{label:"\u5E38\u7528\u6A21\u578B",value:d.models[0]?.displayName??"\u2014"}],h=t-ce,y=_=>mt+_+on(S.length,h)+W+mt+_+ay+_+on(b.length,h)+W+mt+_,x=o-y(He)>=Ri?He:0,k=o-y(x),g=W+mt+x+jm,w=i==="chart"&&d.chart.points.length>0&&k>=g+Ri,P=i==="heatmap"&&Fm(h)&&k-(W+ga)>=Ri,$=P?W+ga:0,U=w?Math.min(cy,jm+Math.floor((k-g-Ri)/2)):0,T=k-$-(w?W+mt+x+U:0),I=_=>`${(d.totals.tokens>0?_/d.totals.tokens*100:0).toFixed(1)}%`;return Hm(Hn,{flexDirection:"column",children:[ze(te,{title:"\u6982\u89C8",width:t,gap:x,children:ze(at,{width:h,tiles:S})}),ze(Hn,{marginTop:1,flexDirection:"column",children:Hm(te,{title:"\u533A\u95F4\u7EDF\u8BA1",width:t,gap:x,children:[ze(ju,{options:Am.map(_=>({value:_,label:sy[_]})),value:n,onChange:r}),ze(Hn,{marginTop:x,children:ze(at,{width:h,tiles:b})}),P&&ze(Hn,{marginTop:1,flexDirection:"column",children:ze(Um,{data:d.heatmap,funFact:a,width:h})})]})}),w&&ze(Hn,{marginTop:1,flexDirection:"column",children:ze(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:ze($m,{data:d.chart,order:d.models.map(_=>_.model),width:h,rows:U})})}),ze(Hn,{marginTop:1,flexDirection:"column",children:ze(te,{title:"\u6A21\u578B\u7528\u91CF",width:t,gap:x,children:d.models.length===0?ze(ye,{tone:"info",width:h,title:"\u6682\u65E0\u7528\u91CF\u6570\u636E",detail:"\u8C03\u7528 API \u540E\u8FD9\u91CC\u4F1A\u663E\u793A\u5404\u6A21\u578B\u7684\u6BCF\u65E5 Token \u7528\u91CF"}):ze(Ce,{retain:"list",items:d.models,width:h,height:T,columns:[{label:"\u6A21\u578B",shrink:!0},{label:"\u603B Token",align:"right"},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u5360\u6BD4",align:"right"}],row:_=>[_.displayName,pn(_.tokens),pn(_.inTokens),pn(_.outTokens),I(_.tokens)],searchOf:_=>_.displayName})})})]})}})})})}import{Box as ho,Text as ya}from"ink";import{useState as Gm}from"react";import{z as my}from"zod";import{z as Je}from"zod";var uy=Je.object({id:Je.number().int(),name:Je.string(),description:Je.string(),multiplier:Je.number()}),Pi=()=>L(Je.array(uy),"/groups"),ba=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()}),Ci=()=>L(Je.array(ba),"/tokens"),Wm=e=>L(ba.extend({token:Je.string()}),"/tokens",{method:"POST",json:e}),Ei=(e,t)=>L(ba,`/tokens/${e}`,{method:"PATCH",json:t}),zm=e=>L(pe,`/tokens/${e}`,{method:"DELETE"});import{jsx as Ge,jsxs as Ai}from"react/jsx-runtime";var Km={model:"",requestId:"",token:"",group:"",status:"",range:"today",since:"",until:""},Vm=my.iso.date();function dy(e){let t=gs();return e.range==="today"?{since:t,until:t}:e.range==="7d"?{since:fn(t,-6),until:t}:e.range==="30d"?{since:fn(t,-29),until:t}:e.range==="custom"?{...e.since===""?{}:{since:e.since},...e.until===""?{}:{until:e.until}}:{}}function Jm(e){let t=dy(e);return{...e.model.trim()===""?{}:{model:e.model.trim()},...e.requestId.trim()===""?{}:{requestId:e.requestId.trim()},...e.token===""?{}:{token:e.token},...e.group===""?{}:{group:e.group},...e.status===""?{}:{status:e.status},...t.since===void 0?{}:{since:hs(t.since).toISOString()},...t.until===void 0?{}:{until:hs(fn(t.until,1)).toISOString()}}}var py=tt(ns,Rr,"\u5168\u90E8\u72B6\u6001"),fy=[{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 gy({log:e,quotaPerUsd:t,width:o}){let n=o-ce,r=Rr(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",Te(e.cachedTokens)]),e.cacheWriteTokens>0&&a.push(["\u7F13\u5B58\u5199",Te(e.cacheWriteTokens)]),e.cacheWrite1hTokens>0&&a.push(["\u7F13\u5B58\u5199 1h",Te(e.cacheWrite1hTokens)]),e.webSearchRequests>0&&a.push(["\u7F51\u9875\u641C\u7D22",`${Te(e.webSearchRequests)} \u6B21`]),e.imageGenerationCalls>0&&a.push(["\u56FE\u50CF\u751F\u6210",`${Te(e.imageGenerationCalls)} \u6B21`]),e.firstByteMs!==null&&a.push(["\u9996\u5B57\u8282",`${In(e.firstByteMs)} s`]),e.tierOver!==null&&a.push(["\u8F93\u5165\u957F\u5EA6",fs(e.tierOver)]),e.paramMultipliers.length>0&&a.push(["\u547D\u4E2D\u53C2\u6570",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",Kc(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 Ai(te,{title:e.modelDisplayName,note:K(e.createdAt),width:o,children:[Ai(ya,{wrap:"truncate",children:[Ge(ya,{color:i===void 0?u.mutedForeground:Fe[i],children:r.label}),Ge(ya,{color:u.faintForeground,children:` ${Ue([e.stream?"\u6D41\u5F0F":"",e.model])}`})]}),Ge(ho,{marginTop:1,children:Ge(at,{width:n,tiles:[{label:"\u8F93\u5165 Token",value:Te(e.promptTokens)},{label:"\u8F93\u51FA Token",value:Te(e.completionTokens)},{label:"\u6D88\u8017",value:oo(e.quotaCost,t)},{label:"\u603B\u8017\u65F6",value:`${In(e.latencyMs)} s`},{label:"\u6863\u4F4D",value:Oo(e.tierOver)},{label:"\u5206\u7EC4\u500D\u7387",value:`\xD7${e.multiplier}`},{label:"\u53C2\u6570\u500D\u7387",value:`\xD7${Dc(e.paramMultipliers)}`},{label:"\u603B\u500D\u7387",value:`\xD7${Bc(e.multiplier,e.paramMultipliers)}`}]})}),s!==null&&Ge(ho,{marginTop:1,children:Ge(ye,{tone:"warn",width:n,title:s})}),Ge(ho,{marginTop:1,children:Ge(Me,{width:n,items:[...a,...c]})})]})}function Ym(){let e=B(),{width:t}=j(),o=ne(),[n,r]=Gm({name:"list"}),[i,s]=Gm(Km),{error:a,fail:c,reset:l}=fe(),m=Q([e.revision],async()=>{let[h,y,x]=await Promise.all([Pi(),Ci(),Ae(e.ctx.site)]);return{groups:h,tokens:y,site:x}}),p=xn([e.revision,JSON.stringify(i)],h=>Im({page:h,...Jm(i)}),{retain:"page"}),d=Q([e.revision,JSON.stringify(i)],()=>Nm(Jm(i))),f=n.name==="list";z((h,y)=>{f&&(h==="r"?e.reload():h==="f"?(l(),r({name:"filter"})):y.leftArrow?p.go(-1):y.rightArrow&&p.go(1))});let S=()=>{n.name==="list"?e.pop():(l(),r({name:"list"}))},b=JSON.stringify(i)!==JSON.stringify(Km);return Ge(X,{hints:f?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:S,children:Ge(ee,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u7B5B\u9009\u9009\u9879",width:t,children:({groups:h,tokens:y,site:x})=>{if(n.name==="filter")return Ge(V,{title:"\u7B5B\u9009\u65E5\u5FD7",width:t,submitLabel:"\u67E5\u8BE2",error:a,fields:[{kind:"text",name:"model",label:"\u6A21\u578B",initial:i.model,placeholder:"\u641C\u7D22\u6A21\u578B ID \u6216\u540D\u79F0"},{kind:"text",name:"requestId",label:"\u8BF7\u6C42 ID",initial:i.requestId,placeholder:"\u641C\u7D22\u8BF7\u6C42 ID"},{kind:"select",name:"token",label:"\u4EE4\u724C",options:[{value:"",label:"\u5168\u90E8\u4EE4\u724C"},...[...new Set(y.map(g=>g.name))].map(g=>({value:g,label:g}))],initial:i.token},{kind:"select",name:"group",label:"\u5206\u7EC4",options:[{value:"",label:"\u5168\u90E8\u5206\u7EC4"},...h.map(g=>({value:g.name,label:g.name}))],initial:i.group},{kind:"select",name:"status",label:"\u72B6\u6001",options:py,initial:i.status},{kind:"select",name:"range",label:"\u65F6\u95F4\u8303\u56F4",options:fy,initial:i.range},{kind:"text",name:"since",label:"\u5F00\u59CB\u65E5\u671F",initial:i.since,placeholder:"YYYY-MM-DD",hint:"\u4EC5\u65F6\u95F4\u8303\u56F4\u9009\u300C\u81EA\u5B9A\u4E49\u8D77\u6B62\u300D\u65F6\u751F\u6548"},{kind:"text",name:"until",label:"\u7ED3\u675F\u65E5\u671F",initial:i.until,placeholder:"YYYY-MM-DD",hint:"\u4EC5\u65F6\u95F4\u8303\u56F4\u9009\u300C\u81EA\u5B9A\u4E49\u8D77\u6B62\u300D\u65F6\u751F\u6548"}],onCancel:S,onSubmit:g=>{let w=g.range??"",P=(g.since??"").trim(),$=(g.until??"").trim();if(w==="custom"&&(P!==""&&!Vm.safeParse(P).success||$!==""&&!Vm.safeParse($).success)){c("\u65E5\u671F\u65E0\u6548");return}s({model:g.model??"",requestId:g.requestId??"",token:g.token??"",group:g.group??"",status:g.status??"",range:w,since:P,until:$}),p.reset(),r({name:"list"})}});if(n.name==="detail")return Ge(gy,{log:n.log,quotaPerUsd:x.quotaPerUsd,width:t});let k=on(4,t);return Ai(ho,{flexDirection:"column",children:[Ge(ho,{height:k+1,flexDirection:"column",overflow:"hidden",children:Ge(ee,{state:d,loading:"\u6B63\u5728\u7EDF\u8BA1\u7B5B\u9009\u7ED3\u679C",width:t,children:g=>Ge(at,{width:t,tiles:[{label:"\u6D88\u8017",value:ae(g.quotaCost,x.quotaPerUsd)},{label:"RPM",value:Te(g.rpm)},{label:"TPM",value:Te(g.tpm)},{label:"\u5E76\u53D1",value:Te(g.concurrency)}]})})}),Ge(ee,{state:p.state,loading:"\u6B63\u5728\u8BFB\u53D6\u4F7F\u7528\u65E5\u5FD7",width:t,children:g=>Ai(ho,{flexDirection:"column",children:[Ge(Ce,{retain:"list",items:g.items,width:t,height:Math.max(3,o-2-k),columns:[{label:"\u65F6\u95F4"},{label:"\u6A21\u578B",shrink:!0},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u6D88\u8017",align:"right"},{label:"\u72B6\u6001",align:"right"}],row:w=>[K(w.createdAt),w.modelDisplayName,Te(w.promptTokens),Te(w.completionTokens),oo(w.quotaCost,x.quotaPerUsd),Zt(Rr(w.status))],onOpen:w=>r({name:"detail",log:w}),emptyLabel:b?"\u65E0\u5339\u914D\u7ED3\u679C":"\u6682\u65E0\u8C03\u7528\u8BB0\u5F55",emptyDescription:b?void 0:"\u901A\u8FC7\u4EE4\u724C\u8C03\u7528 API \u540E\uFF0C\u660E\u7EC6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),Ge(Tn,{page:p.page,pages:p.pages,total:p.total,width:t})]})})]})}})})}import{Box as sn,Text as qn}from"ink";import{useState as Ty}from"react";import{z as le}from"zod";var hy=ps.extend({id:le.number().int(),model:le.string(),displayName:le.string(),rules:Nc}),by=le.object({quotaPerUsd:le.number(),minTopupCny:le.number(),models:le.array(hy)});function Ii(e){return Nt(by,`${e}/api/pricing`)}var yy=le.object({cnyPerUsd:le.number(),groups:le.array(le.object({id:le.number().int(),name:le.string(),description:le.string(),multiplier:le.number()})),stats:le.object({requests:le.number(),errors:le.number(),latencyP50Ms:le.number().nullable(),firstByteP50Ms:le.number().nullable()}),heartbeat:le.object({groups:le.array(le.object({id:le.number().int(),name:le.string(),minutes:le.array(le.object({requests:le.number(),errors:le.number()}))}))})});function Xm(e,t){return Nt(yy,`${e}/api/pricing/${t}`)}var Sy=le.object({data:le.array(le.object({id:le.string()}))});async function Qm(e,t,o){return(await Nt(Sy,`${e}/v1/models`,{headers:{authorization:`Bearer ${t}`},...o===void 0?{}:{timeoutMs:o}})).data.map(r=>r.id)}var Zm=()=>L(Uc,"/provider-status");import{Text as bo}from"ink";import{jsx as Ni,jsxs as ed}from"react/jsx-runtime";var xy=` ${Z.bullet} `,td=1;function nd({providers:e}){return ed(bo,{wrap:"truncate",children:[Ni(bo,{color:u.faintForeground,children:"\u5B98\u65B9\u72B6\u6001"}),e.map(t=>{let o=Hc(t);return ed(bo,{children:[Ni(bo,{color:u.faintForeground,children:xy}),Ni(bo,{color:u.foreground,children:`${Vc(t.provider)} `}),Ni(bo,{color:Fe[o.tone],children:o.label})]},t.provider)})]})}import{jsx as be,jsxs as ar}from"react/jsx-runtime";var wy=4,ky=1+He,vy=e=>e.requests===0?u.border:e.errors===0?u.success:e.errors/e.requests>=.5?u.danger:u.warning;function _y({minutes:e,width:t}){let o=e.slice(Math.max(0,e.length-t)),n=[];for(let r of o){let i=vy(r),s=n[n.length-1];s!==void 0&&s.color===i?s.count+=1:n.push({color:i,count:1})}return be(qn,{wrap:"truncate",children:n.map((r,i)=>be(qn,{color:r.color,children:Z.barFilled.repeat(r.count)},i))})}function Ry({price:e,width:t,contentRows:o}){let n=B(),r=Q([e.id,n.revision],()=>Xm(n.ctx.site,e.id)),i=Oc(e,e.rules),s=i.length>1,a=e.rules.filter(Mc),c=t-ce,l=1+i.length,m=1+a.length;return be(ee,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u8BE6\u60C5",width:t,children:p=>{let d=p.stats,f=[{label:"\u53EF\u7528\u7387",value:d.requests>0?`${((d.requests-d.errors)/d.requests*100).toFixed(1)}%`:"\u2014"},{label:"\u8C03\u7528\u6B21\u6570",value:Te(d.requests)},{label:"\u5EF6\u8FDF P50",value:d.latencyP50Ms!==null?`${In(d.latencyP50Ms)} s`:"\u2014"},{label:"\u9996\u5B57\u8282 P50",value:d.firstByteP50Ms!==null?`${In(d.firstByteP50Ms)} s`:"\u2014"}],S=a.length>0?W+dt+m:0,b=ky+dt+on(f.length,c,2)+W+dt+l+S+W+dt,h=p.heartbeat.groups.length,y=o-b-wy-W-dt,x=Math.max(0,Math.floor(y/2));x<h&&(x=Math.max(0,Math.floor((y-1)/2))),x=Math.min(h,x);let k=x>0?W+dt+x*2+(x<h?1:0):0,g=Math.max(1,o-b-k);return ar(sn,{flexDirection:"column",children:[be(sn,{marginBottom:He,children:ar(qn,{wrap:"truncate",children:[be(qn,{bold:!0,color:u.foreground,children:e.displayName}),be(qn,{color:u.faintForeground,children:` ${e.model}`})]})}),be(te,{title:"\u8FD1 24 \u5C0F\u65F6",note:"\u5168\u90E8\u5206\u7EC4\u7684\u7EFC\u5408\u8C03\u7528\u7EDF\u8BA1",width:t,children:be(at,{width:c,tiles:f,maxPerRow:2})}),x>0&&be(sn,{marginTop:1,flexDirection:"column",children:ar(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=>ar(sn,{flexDirection:"column",children:[be(qn,{wrap:"truncate",color:u.foreground,children:w.name}),be(_y,{minutes:w.minutes,width:c})]},w.id)),x<h&&be(qn,{color:u.faintForeground,children:`\u5176\u4F59 ${h-x} \u4E2A\u5206\u7EC4\u672A\u663E\u793A`})]})}),be(sn,{marginTop:1,flexDirection:"column",children:be(te,{title:"\u6A21\u578B\u4EF7\u683C",note:"\u6BCF\u767E\u4E07 Token \u7684\u7F8E\u5143\u6807\u4EF7",width:t,children:be(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&&be(sn,{marginTop:1,flexDirection:"column",children:be(te,{title:"\u8BF7\u6C42\u53C2\u6570\u500D\u7387",note:"\u547D\u4E2D\u65F6 Token \u8D39\u7528\u4E58\u4EE5\u500D\u7387\uFF0C\u591A\u6761\u547D\u4E2D\u4F9D\u6B21\u76F8\u4E58",width:t,children:be(Ce,{items:a,width:c,height:m,columns:[{label:"\u53C2\u6570\u540D",shrink:!0},{label:"\u53C2\u6570\u503C",shrink:!0},{label:"\u500D\u7387",align:"right"}],row:w=>[w.param,w.value,`\xD7${w.multiplier}`]})})}),be(sn,{marginTop:1,flexDirection:"column",children:be(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?be(ye,{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"}):be(Ce,{items:p.groups,width:c,height:g,columns:[{label:"\u5206\u7EC4",shrink:!0},{label:"\u8BF4\u660E",shrink:!0},{label:"\u500D\u7387",align:"right"},{label:"\u5355\u4EF7",align:"right"}],row:w=>[w.name,w.description,`\xD7${w.multiplier}`,`\xA5${(p.cnyPerUsd*w.multiplier).toFixed(2)}`]})})})]})}})}function od(){let e=B(),{width:t}=j(),o=ne(),[n,r]=Ty({name:"list"}),i=Q([e.revision],async()=>(await Ii(e.ctx.site)).models),s=Q([e.revision],Zm);z(c=>{c==="r"&&e.reload()});let a=()=>{n.name==="list"?e.pop():r({name:"list"})};return be(X,{hints:n.name==="list"?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","/ \u8FC7\u6EE4","r \u5237\u65B0"]:["\u2191\u2193 \u6EDA\u52A8","r \u5237\u65B0","Esc \u8FD4\u56DE"],onEscape:a,children:be(ee,{state:i,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u5B9A\u4EF7",width:t,children:c=>{if(c.length===0)return be(ye,{tone:"info",width:t,title:"\u6682\u65E0\u6A21\u578B"});if(n.name==="detail")return be(Ry,{price:n.price,width:t,contentRows:o});let l=s.phase==="ready"?jc(s.data.providers):[],m=l.length>0?td+W:0;return ar(sn,{flexDirection:"column",children:[l.length>0&&be(sn,{marginBottom:W,children:be(nd,{providers:l})}),be(Ce,{retain:"list",items:c,width:t,height:o-m,columns:[{label:"\u6A21\u578B",shrink:!0},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u7F13\u5B58\u8BFB\u53D6",align:"right"},{label:"\u7F13\u5B58\u5199\u5165",align:"right"}],row:p=>[p.displayName,Dt(p.inputPricePerMillionTokens,"-"),Dt(p.outputPricePerMillionTokens,"-"),Dt(p.cachedInputPricePerMillionTokens,"-"),Dt(p.cacheWritePricePerMillionTokens,"-")],searchOf:p=>`${p.displayName} ${p.model}`,onOpen:p=>r({name:"detail",price:p}),emptyLabel:"\u65E0\u5339\u914D\u7ED3\u679C"})]})}})})}import{Box as Wn,Text as qd}from"ink";import{useState as Ui}from"react";function rd(e,t){let o=e.line??t.apiLines[0];if(o===void 0)throw new O("\u7AD9\u70B9\u672A\u914D\u7F6E\u63A5\u5165\u7EBF\u8DEF",{hint:"\u8BF7\u8054\u7CFB\u7AD9\u70B9\u7BA1\u7406\u5458\u5728\u8BBE\u7F6E\u91CC\u6DFB\u52A0\u63A5\u5165\u7EBF\u8DEF"});return o}async function id(e,t){let o=await Ae(e.site);return Qm(rd(Ln(),o).url,t)}async function sd(e,t,o){let n=await Ae(e.site),r=rd(Ln(),n).url;return{input:{siteName:n.siteName,baseUrl:t.relayUrl(r),apiKey:o},at:t.resolveDir()}}async function ad(e,t,o){let{input:n,at:r}=await sd(e,t,o);t.apply(n,r)}async function cd(e,t,o,n,r){let{input:i,at:s}=await sd(e,t,o);t.apply({...i,model:n,models:r},s)}import{homedir as gd}from"os";import{join as Li,resolve as Iy}from"path";import Py from"json5";import{applyEdits as Cy,modify as Ey,parse as Ay}from"jsonc-parser";function ld(e,t){if(typeof e!="object"||e===null||Array.isArray(e))throw new O(`${t} \u7684\u9876\u5C42\u4E0D\u662F\u5BF9\u8C61\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`);return e}function ud(e){let t=[],o=Ay(e,t,{allowTrailingComma:!0});return t.length>0?null:o}function md(e,t){let o=ud(e);if(o!==null)return{root:ld(o,t),jsonc:!0};try{return{root:ld(Py.parse(e),t),jsonc:!1}}catch(n){throw new O(`${t} \u4E0D\u662F\u5408\u6CD5 JSON\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`,{cause:n})}}function _n(e,t){let o=e;for(let n of t){if(typeof o!="object"||o===null||Array.isArray(o))return;o=o[n]}return o}function cr(e){let t=ct(e);return t===null?null:md(t,e).root}function an(e,t){let o=cr(e),n=o===null?void 0:_n(o,t);return typeof n=="string"?n:null}function Mi(e,t){let o=cr(e);return o!==null&&_n(o,t)!==void 0}function gt(e,t){let o=ct(e)??"{}",n=o.includes(`\r
|
|
12
|
+
`);return}if(!v.tab){if(v.upArrow||v.downArrow){let R=v.upArrow?-1:1;g(R)||a?.(v.upArrow?"up":"down");return}if(v.leftArrow){x(Math.max(0,N-1));return}if(v.rightArrow){x(Math.min(C.length,N+1));return}if(v.home){x(Ys(C,N).start);return}if(v.end){x(Ys(C,N).end);return}if(v.backspace){if(N===0)return;k([...C.slice(0,N-1),...C.slice(N)].join(""),N-1);return}if(v.delete){if(N>=C.length)return;k([...C.slice(0,N),...C.slice(N+1)].join(""),N);return}if(v.ctrl){let R=Ys(C,N);if(_==="a")x(R.start);else if(_==="e")x(R.end);else if(_==="k")k([...C.slice(0,N),...C.slice(R.end)].join(""),N);else if(_==="u")k([...C.slice(0,R.start),...C.slice(N)].join(""),R.start);else if(_==="w"){let A=N;for(;A>R.start&&C[A-1]===" ";)A-=1;for(;A>R.start&&C[A-1]!==" ";)A-=1;k([...C.slice(0,A),...C.slice(N)].join(""),A)}return}v.meta||!_||w(C,N,_)}},{isActive:o});let P=Au(l,y),$=Iu(P,d),U=Math.min(f,Math.max(0,P.length-r));$<U&&(U=$),$>U+r-1&&(U=$-r+1),U!==f&&S(U);let T=[];for(let _=0;_<r;_+=1){let v=U+_,C=P[v];if(C===void 0){T.push(nn(wn,{children:" "},v));continue}let N=l.slice(C.start,C.end).join("");if(!o||v!==$){T.push(nn(wn,{wrap:"truncate",color:u.foreground,children:N===""?" ":N},v));continue}let R=l.slice(C.start,d).join(""),A=d<C.end?l[d]??" ":" ",q=d<C.end?l.slice(d+1,C.end).join(""):"";T.push(Mu(wn,{wrap:"truncate",children:[nn(wn,{color:u.foreground,children:R}),nn(Ko,{char:A}),nn(wn,{color:u.foreground,children:q})]},v))}if(e===""&&i!==void 0){let _=[...i];T[0]=o?Mu(wn,{wrap:"truncate",children:[nn(Ko,{char:_[0]??" "}),nn(wn,{color:u.faintForeground,children:_.slice(1).join("")})]},"placeholder"):nn(wn,{wrap:"truncate",color:u.faintForeground,children:i},"placeholder")}let I=We({onWheel:_=>{g(_)},onClick:({row:_,column:v})=>{c?.();let C=P[U+_];x(C===void 0?l.length:Nu(l,C,v))}});return nn(jh,{ref:I,flexDirection:"column",children:T})}import{Fragment as Fu,jsx as he,jsxs as kt}from"react/jsx-runtime";var Gh=e=>Object.fromEntries(e.map(t=>[t.name,"initial"in t?t.initial??"":""])),Du="\u9009\u586B",Kh=(e,t)=>e.kind!=="text"&&e.kind!=="textarea"?!1:typeof e.optional=="function"?e.optional(t):e.optional===!0,Vh=(e,t)=>{let o=typeof e.hint=="function"?e.hint(t[e.name]??""):e.hint;return Kh(e,t)?o===void 0?Du:`${Du} \xB7 ${o}`:o},Jh=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},Yh=6e4,Xh=4,Qs=4,Qh=2,li=(e,t)=>e?u.accent:t?u.foreground:u.mutedForeground;function V({title:e,fields:t,submitLabel:o,onSubmit:n,onCancel:r,width:i,busy:s,busyLabel:a="\u6B63\u5728\u63D0\u4EA4",error:c}){let[l,m]=po(()=>Gh(t)),[p,d]=po(0),[f,S]=po({}),[b,h]=po(null),[,y]=po(0),x=s===!0,k=Jh(t),g=k[Math.min(p,k.length-1)],w=g!==void 0&&g.type!=="submit"?t[g.index]:void 0,P=g?.type==="field"&&(w?.kind==="text"||w?.kind==="code"),$=g?.type==="field"&&w?.kind==="textarea",U=Object.values(f).some(E=>E.phase==="cooldown"&&E.until>Date.now());zh(()=>{if(!U)return;let E=setInterval(()=>y(D=>D+1),1e3);return()=>clearInterval(E)},[U]);let T=E=>d(D=>(D+E+k.length)%k.length),I=(E,D)=>{if(E.options.length===0)return;let J=E.options.findIndex($e=>$e.value===l[E.name]),ge=E.options[(J+D+E.options.length)%E.options.length];ge!==void 0&&m($e=>({...$e,[E.name]:ge.value}))},_=E=>{g?.type!=="field"||w?.kind!=="select"||I(w,E)},v=E=>{let D=t[E];if(D===void 0||D.kind!=="code")return;let J=(l[D.emailField]??"").trim();if(J===""){S($e=>({...$e,[D.name]:{phase:"error",message:"\u8BF7\u5148\u586B\u5199\u90AE\u7BB1"}}));return}let ge=f[D.name];ge?.phase!=="sending"&&(ge?.phase==="cooldown"&&ge.email===J&&ge.until>Date.now()||(S($e=>({...$e,[D.name]:{phase:"sending"}})),D.send(J).then(()=>S($e=>({...$e,[D.name]:{phase:"cooldown",email:J,until:Date.now()+Yh}}))).catch($e=>S(Pt=>({...Pt,[D.name]:{phase:"error",message:Re($e)}})))))};Uu((E,D)=>{if(D.tab){T(D.shift?-1:1);return}if(!$){if(D.upArrow){T(-1);return}if(D.downArrow){T(1);return}if(!P){if(D.leftArrow){_(-1);return}if(D.rightArrow){_(1);return}D.return&&(g?.type==="submit"?n(l):g?.type==="send"?v(g.index):T(1))}}},{isActive:!x}),hn(r,{isActive:!x,layer:ro.panel});let C=Math.max(0,...t.map(E=>Zs(E.label))),N=i-ce,R=Math.max(8,N-C-8),A=(E,D)=>k.findIndex(J=>J.type===E&&(J.type==="submit"||J.index===D)),q=$u(new Map).current,F=$u(new Map).current,G=2+C+Qs,H=(E,D)=>{let J=k[E];if(J===void 0)return;if(d(E),J.type==="submit"){n(l);return}if(J.type==="send"){v(J.index);return}let ge=t[J.index];if(ge!==void 0){if(ge.kind==="select"){let $e=ge.options.find(Ct=>Ct.value===l[ge.name]),Pt=Pe($e?.label??"\u2014",R);D>=G-Qh&&D<G?I(ge,-1):D>=G+Zs(Pt)&&I(ge,1);return}D>=G&&F.get(J.index)?.moveToColumn(D-G)}},re=(E,D)=>{if(E===null)return null;let J=Ou(E),ge=null;for(let[$e,Pt]of q){if(Pt===null)continue;let Ct=Ou(Pt),De=Ct.y-J.y;D<De||D>=De+Ct.height||(ge===null||Ct.height<ge.box.height)&&(ge={index:$e,box:Ct})}return ge===null?null:{...ge,frameX:J.x}},_e=We({isActive:!x,onClick:({row:E,column:D})=>{let J=re(_e.current,E);J!==null&&H(J.index,D-(J.box.x-J.frameX))},onHover:({row:E})=>h(re(_e.current,E)?.index??null),onHoverLeave:()=>h(null)});return kt(Ht,{ref:_e,flexDirection:"column",children:[he(Jo,{title:e,width:i}),kt(Ht,{flexDirection:"column",marginTop:He,paddingLeft:ce,children:[c!=null&&he(Ht,{marginBottom:1,children:he(Dn,{message:c.message,hint:c.hint,width:N})}),t.map((E,D)=>{let J=p===A("field",D)&&!x,ge=Vh(E,l),$e=E.kind==="select"?E.options.find(De=>De.value===l[E.name]):void 0;if(E.kind==="textarea")return kt(Ht,{flexDirection:"column",ref:De=>{q.set(A("field",D),De)},children:[kt(Ne,{children:[he(Ne,{color:u.accent,children:J?`${Z.cursor} `:" "}),he(Ne,{color:li(J,b===A("field",D)),bold:J,children:E.label})]}),he(Ht,{paddingLeft:2,children:he(Lu,{value:l[E.name]??"",onChange:De=>m(Vi=>({...Vi,[E.name]:De})),isActive:J,width:N-2,rows:E.rows??Xh,placeholder:E.placeholder,maxLength:E.maxLength,onEdge:De=>T(De==="up"?-1:1),onFocusRequest:()=>d(A("field",D))})}),J&&ge!==void 0&&he(Ne,{color:u.faintForeground,children:` ${Pe(ge,N-2)}`})]},E.name);let Pt=E.kind==="code"&&p===A("send",D)&&!x,Ct=f[E.name];return kt(Ht,{flexDirection:"column",ref:De=>{q.set(A("field",D),De)},children:[kt(Ne,{children:[he(Ne,{color:u.accent,children:J?`${Z.cursor} `:" "}),he(Ne,{color:li(J,b===A("field",D)),bold:J,children:Oe(E.label,C)}),E.kind==="select"?kt(Fu,{children:[he(Ne,{color:J?u.accent:u.border,children:` ${Z.prev} `}),he(Ne,{color:u.foreground,children:Pe($e?.label??"\u2014",R)}),he(Ne,{color:J?u.accent:u.border,children:` ${Z.next}`})]}):kt(Fu,{children:[he(Ne,{children:" ".repeat(Qs)}),he(Kr,{ref:De=>{F.set(D,De)},value:l[E.name]??"",onChange:De=>m(Vi=>({...Vi,[E.name]:De})),onSubmit:()=>T(1),isActive:J,placeholder:E.kind==="text"||E.kind==="code"?E.placeholder:void 0,mask:E.kind==="text"?E.mask:void 0,width:R})]})]}),J&&ge!==void 0&&he(Ne,{color:u.faintForeground,children:`${" ".repeat(2+C+Qs)}${Pe(ge,R)}`}),E.kind==="code"&&he(Zh,{active:Pt,state:Ct,email:(l[E.emailField]??"").trim(),indent:G,width:R,hovered:b===A("send",D),nodeRef:De=>{q.set(A("send",D),De)}})]},E.name)}),he(Ht,{marginTop:1,ref:E=>{q.set(A("submit"),E)},children:x?he(ot,{label:a}):kt(Ne,{children:[he(Ne,{color:u.accent,children:g?.type==="submit"?`${Z.cursor} `:" "}),he(Ne,{color:li(g?.type==="submit",b===A("submit")),bold:g?.type==="submit",children:o})]})})]})]})}function Zh({active:e,state:t,email:o,indent:n,width:r,hovered:i,nodeRef:s}){if(t?.phase==="sending")return he(Ht,{paddingLeft:n,children:he(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 kt(Ht,{ref:s,flexDirection:"column",paddingLeft:n-2,children:[kt(Ne,{children:[he(Ne,{color:u.accent,children:e?`${Z.cursor} `:" "}),he(Ne,{color:a>0?u.faintForeground:li(e,i),bold:e&&a===0,children:c})]}),t?.phase==="error"&&he(Ne,{color:u.danger,children:` ${Pe(t.message,r)}`})]})}var eb=2,Bu=2;function ju({options:e,value:t,onChange:o}){let n=e.findIndex(m=>m.value===t),r=Ur();Uu((m,p)=>{if(!p.leftArrow&&!p.rightArrow)return;let d=p.leftArrow?-1:1,f=e[(n+d+e.length)%e.length];f!==void 0&&o(f.value)},{isActive:!r});let i=[],s=0;e.forEach((m,p)=>{p>0&&(s+=Bu);let d=Zs(m.label)+eb;i.push({value:m.value,from:s,to:s+d}),s+=d});let[a,c]=po(null),l=We({onClick:({column:m})=>{let p=i.find(d=>m>=d.from&&m<d.to);p!==void 0&&o(p.value)},onHover:({column:m})=>{let p=i.find(d=>m>=d.from&&m<d.to);c(p?.value??null)},onHoverLeave:()=>c(null)});return he(Ht,{ref:l,children:he(Ne,{wrap:"truncate",children:e.map((m,p)=>{let d=m.value===t;return kt(Ne,{children:[p>0&&" ".repeat(Bu),he(Ne,{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 na,Text as Hu}from"ink";import tb from"qrcode";import{jsx as nr,jsxs as ab}from"react/jsx-runtime";var nb="#000000",ob="#ffffff",ea=2,Wu=2,oa=1,qu,ta;function zu(e){if(e===qu&&ta!==void 0)return ta;let t=tb.create(e,{errorCorrectionLevel:"L"}),o=t.modules.size,n=t.modules.data,r=o+ea*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+ea];c!==void 0&&(c[a+ea]=n[s*o+a]===1)}return qu=e,ta=i,i}function rb(e){let t=zu(e).length;return{columns:t*Wu,rows:t}}function ui(e,t,o,n){let r=rb(e),i=t.rows-r.rows-oa;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+oa+o.rows+n.rows}}}function ib(e,t){let o=[],n=0;for(let r=1;r<=e.length;r+=1)r<e.length&&e[r]===e[n]||(o.push(nr(Hu,{backgroundColor:e[n]??!1?nb:ob,children:" ".repeat((r-n)*Wu)},n)),n=r);return nr(Hu,{children:o},t)}function sb({value:e}){return nr(na,{flexDirection:"column",flexShrink:0,children:zu(e).map((t,o)=>ib(t,o))})}function mi({value:e,aside:t}){return ab(na,{flexDirection:"column",flexShrink:0,children:[nr(sb,{value:e}),nr(na,{marginTop:oa,flexDirection:"column",children:t})]})}import{Box as di,Text as it}from"ink";import Gu from"string-width";import{jsx as st,jsxs as or}from"react/jsx-runtime";var pi=2,ra=4,Ku=e=>" ".repeat(e),ia=13,Vu=4,Ju=(e,t,o)=>Math.max(1,Math.min(e,o,Math.floor((t+pi)/(ia+pi)))),on=(e,t,o=Vu)=>Math.ceil(e/Ju(e,t,o))*2;function at({tiles:e,width:t,maxPerRow:o=Vu}){let n=Ju(e.length,t,o),r=Math.floor((t-pi*(n-1))/n),i=[];for(let s=0;s<e.length;s+=n)i.push(e.slice(s,s+n));return st(di,{flexDirection:"column",children:i.map((s,a)=>st(di,{flexDirection:"column",children:["label","value"].map(c=>st(it,{wrap:"truncate",children:s.map((l,m)=>or(it,{children:[m>0&&Ku(pi),st(it,{color:c==="label"?u.mutedForeground:u.foreground,bold:c==="value",children:Oe(l[c],r)})]},l.label))},c))},a))})}function Yu({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 or(it,{children:[st(it,{color:i,children:Z.barFilled.repeat(r)}),st(it,{color:u.border,children:Z.barEmpty.repeat(o-r)})]})}function cb({items:e,width:t}){let o=Math.max(0,...e.map(([r])=>Gu(r))),n=Math.max(0,t-o-3);return st(di,{flexDirection:"column",children:e.map(([r,i])=>or(it,{wrap:"truncate",children:[st(it,{color:u.mutedForeground,children:Oe(r,o)})," ",st(it,{color:u.foreground,children:Pe(i,n)})]},r))})}var Xu=(e,t)=>Math.floor((t-ra)/2)<ia*2?e:Math.ceil(e/2);function Me({items:e,width:t}){let o=Math.floor((t-ra)/2);if(o<ia*2)return st(cb,{items:e,width:t});let n=Math.max(0,...e.map(([a])=>Gu(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)}):or(it,{children:[st(it,{color:u.mutedForeground,children:Oe(a[0],n)})," ",st(it,{color:u.foreground,children:Oe(a[1],r)})]});return st(di,{flexDirection:"column",children:i.map((a,c)=>or(it,{wrap:"truncate",children:[s(a[0]),Ku(ra),s(a[1])]},c))})}import{Fragment as gb,jsx as ie,jsxs as kn}from"react/jsx-runtime";var ub={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"},Zu="\u5BC6\u94A5 ",mb=10,db={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"}},pb=2+W;function fb({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(kn(rr,{wrap:"truncate",color:u.accent,children:[Oe(e[r]??"",Math.min(o,t)),e[r+1]??""]},r));return ie(vt,{flexDirection:"column",children:n})}function em(){let e=B(),{width:t,columns:o,rows:n}=j(),r=ne(),[i,s]=Qu({name:"menu"}),[a,c]=Qu(!1),{busy:l,error:m,reset:p,fail:d,run:f}=fe(),S=Q([e.revision],async()=>{let[k,g,w]=await Promise.all([gu(),wu(),xu()]);return{user:k.user,security:g,sessions:w.sessions}});z(k=>{i.name==="menu"&&l===null&&k==="r"&&e.reload()}),vl(i.name==="codes");let b=()=>{if(i.name!=="codes"){if(i.name==="menu"){e.pop();return}p(),i.name==="passkey-rename"||i.name==="passkey-delete"?s({name:"passkey",item:i.item}):i.name==="confirm-revoke"?s({name:"session",item:i.item}):s({name:"menu"})}},h=k=>{s({name:"menu"}),e.reload(),e.toast("ok",k)},y=(k,g)=>{c(!1),s({name:"codes",codes:k,message:g})},x=(k,g)=>{k==="rebind"?f("\u6B63\u5728\u751F\u6210\u65B0\u5BC6\u94A5",()=>Js({code:g}),{onSuccess:w=>s({name:"enroll",setup:w})}):k==="regenerate"?f("\u6B63\u5728\u751F\u6210\u6062\u590D\u7801",()=>_u({code:g}),{onSuccess:({recoveryCodes:w})=>y(w,"\u6062\u590D\u7801\u5DF2\u66F4\u65B0")}):f("\u6B63\u5728\u505C\u7528",()=>vu({code:g}),{onSuccess:()=>h("\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u505C\u7528")})};return ie(X,{hints:i.name==="menu"?["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","r \u5237\u65B0"]:i.name==="codes"?["\u2191\u2193 \u79FB\u52A8","Enter \u786E\u8BA4"]:["Esc \u8FD4\u56DE"],locked:i.name==="codes",onEscape:b,children:ie(ee,{state:S,loading:"\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u4FE1\u606F",width:t,children:({user:k,security:g,sessions:w})=>{if(i.name==="rename")return ie(V,{title:"\u4FEE\u6539\u7528\u6237\u540D",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:m,fields:[{kind:"text",name:"username",label:"\u7528\u6237\u540D",initial:k.username,placeholder:"\u8BF7\u8F93\u5165\u65B0\u7528\u6237\u540D"}],onCancel:b,onSubmit:T=>{let I=(T.username??"").trim();if(I===""||I.length>An){d(`\u8BF7\u8F93\u5165 1 \u5230 ${An} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}f("\u6B63\u5728\u4FDD\u5B58",()=>hu({username:I}),{onSuccess:()=>h("\u5DF2\u4FDD\u5B58")})}});if(i.name==="email")return ie(V,{title:"\u4FEE\u6539\u90AE\u7BB1",width:t,submitLabel:"\u786E\u8BA4\u4FEE\u6539",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:m,fields:[{kind:"text",name:"email",label:"\u65B0\u90AE\u7BB1",placeholder:"\u7528\u4E8E\u767B\u5F55\u4E0E\u63A5\u6536\u901A\u77E5\u7684\u65B0\u90AE\u7BB1"},{kind:"code",name:"code",label:"\u9A8C\u8BC1\u7801",emailField:"email",send:T=>yu({email:T})},{kind:"text",name:"password",label:"\u5F53\u524D\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801",hint:"\u4FEE\u6539\u540E\u7ACB\u5373\u4EE5\u65B0\u90AE\u7BB1\u767B\u5F55\u548C\u63A5\u6536\u901A\u77E5\uFF0C\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55"}],onCancel:b,onSubmit:T=>{let I=(T.email??"").trim(),_=(T.code??"").trim(),v=T.password??"";if(I===""||_===""||v===""){d("\u8BF7\u586B\u5199\u65B0\u90AE\u7BB1\u3001\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801");return}f("\u6B63\u5728\u4FDD\u5B58",()=>Su({email:I,code:_,password:v}),{onSuccess:()=>h("\u90AE\u7BB1\u5DF2\u4FEE\u6539")})}});if(i.name==="password")return ie(V,{title:"\u4FEE\u6539\u5BC6\u7801",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error: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 ${lt} \u4F4D\uFF0C\u4FDD\u5B58\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55`}],onCancel:b,onSubmit:T=>{let I=T.old??"",_=T.next??"";if(I===""){d("\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801");return}if(_.length<lt){d(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${lt} \u4F4D`);return}f("\u6B63\u5728\u4FDD\u5B58",()=>bu({oldPassword:I,newPassword:_}),{onSuccess:()=>h("\u5BC6\u7801\u5DF2\u4FEE\u6539")})}});if(i.name==="confirm-logout")return ie(Ve,{width:t,title:"\u786E\u8BA4\u9000\u51FA\u767B\u5F55\uFF1F",detail:"\u9000\u51FA\u540E\u9700\u91CD\u65B0\u767B\u5F55\u624D\u80FD\u7BA1\u7406\u8D26\u6237",confirmLabel:"\u9000\u51FA\u767B\u5F55",busy:l,error:m,onConfirm:()=>f("\u6B63\u5728\u9000\u51FA",()=>Nr(),{onSuccess:()=>{e.toast("ok","\u5DF2\u9000\u51FA\u767B\u5F55"),e.home()}}),onCancel:b});if(i.name==="code"){let T=db[i.intent];return ie(V,{title:T.title,width:t,submitLabel:T.submit,busy:l!==null,busyLabel:l??"\u6B63\u5728\u5904\u7406",error:m,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",placeholder:"\u9A8C\u8BC1\u5668\u663E\u793A\u7684 6 \u4F4D\u6570\u5B57",hint:T.hint}],onCancel:b,onSubmit:I=>{let _=(I.code??"").trim();if(_===""){d("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}x(i.intent,_)}})}if(i.name==="enroll"){let T=(_,v)=>kn(gb,{children:[v&&ie(rr,{color:u.mutedForeground,children:"\u4F7F\u7528 Google Authenticator \u7B49\u9A8C\u8BC1\u5668 App \u626B\u7801\u6DFB\u52A0"}),kn(rr,{children:[ie(rr,{color:u.mutedForeground,children:Zu}),ie(rr,{color:u.accent,children:i.setup.secret})]}),ie(vt,{marginTop:1,children:ie(V,{title:"\u586B\u5165\u52A8\u6001\u9A8C\u8BC1\u7801\u5B8C\u6210\u7ED1\u5B9A",width:_,submitLabel:"\u7ED1\u5B9A",busy:l!==null,busyLabel:l??"\u6B63\u5728\u7ED1\u5B9A",error:m,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801"}],onCancel:b,onSubmit:C=>{let N=(C.code??"").trim();if(N===""){d("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}f("\u6B63\u5728\u7ED1\u5B9A",()=>ku({code:N}),{onSuccess:({recoveryCodes:R})=>y(R,"\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u7ED1\u5B9A")})}})})]}),I=ui(i.setup.otpauthUri,{width:t,rows:r},{columns:lb(Zu)+i.setup.secret.length,rows:mb},{columns:o-t,rows:n-r});return I.fits?ie(mi,{value:i.setup.otpauthUri,aside:T(I.asideWidth,!0)}):kn(vt,{flexDirection:"column",children:[ie(ye,{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 kn(vt,{flexDirection:"column",children:[ie(ye,{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(vt,{marginTop:1,children:ie(fb,{codes:i.codes,width:t})}),ie(vt,{marginTop:1,children:ie(se,{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 I=i.message;s({name:"menu"}),e.reload(),e.toast("ok",I)}})})]});if(i.name==="passkey-add")return ie(ye,{tone:"info",width:t,title:`\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00 ${e.ctx.site} \u7684\u300C\u4E2A\u4EBA\u4E2D\u5FC3\u300D\u5B8C\u6210\u6DFB\u52A0`,detail:"\u6DFB\u52A0\u4E0E\u4F7F\u7528 Passkey \u4F9D\u8D56\u6D4F\u89C8\u5668\u7684 WebAuthn \u80FD\u529B\uFF0C\u7EC8\u7AEF\u65E0\u6CD5\u5B8C\u6210"});if(i.name==="passkey-rename")return ie(V,{title:`\u91CD\u547D\u540D Passkey ${i.item.name}`,width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:m,fields:[{kind:"text",name:"name",label:"\u540D\u79F0",initial:i.item.name,placeholder:"\u6807\u8BB0\u6240\u5728\u8BBE\u5907\uFF0C\u5982 MacBook \u6307\u7EB9"}],onCancel:b,onSubmit:T=>{let I=(T.name??"").trim();if(I===""){d("\u8BF7\u8F93\u5165\u540D\u79F0");return}f("\u6B63\u5728\u4FDD\u5B58",()=>Ru(i.item.id,{name:I}),{onSuccess:()=>h("\u5DF2\u4FDD\u5B58")})}});if(i.name==="passkey-delete")return ie(Ve,{width:t,title:`\u786E\u8BA4\u5220\u9664 Passkey\u300C${i.item.name}\u300D\uFF1F`,detail:"\u5220\u9664\u540E\u65E0\u6CD5\u518D\u7528\u5B83\u767B\u5F55",confirmLabel:"\u5220\u9664",busy:l,error:m,onConfirm:()=>f("\u6B63\u5728\u5220\u9664",()=>Pu(i.item.id),{onSuccess:()=>h("\u5DF2\u5220\u9664")}),onCancel:b});if(i.name==="passkey"){let T=i.item;return ie(vt,{flexDirection:"column",children:kn(te,{title:`Passkey ${T.name}`,width:t,children:[ie(Me,{width:t-ce,items:[["\u540D\u79F0",T.name],["\u6DFB\u52A0\u65F6\u95F4",K(T.createdAt)],["\u6700\u8FD1\u4F7F\u7528",T.lastUsedAt===null?"\u2014":K(T.lastUsedAt)]]}),ie(vt,{marginTop:1,children:ie(se,{width:t-ce,items:[{value:"rename",label:"\u91CD\u547D\u540D"},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:I=>{p(),s(I==="rename"?{name:"passkey-rename",item:T}:{name:"passkey-delete",item:T})}})})]})})}if(i.name==="confirm-revoke")return ie(Ve,{width:t,title:"\u786E\u8BA4\u9000\u51FA\u8BE5\u8BBE\u5907\u7684\u767B\u5F55\uFF1F",confirmLabel:"\u9000\u51FA",busy:l,error:m,onConfirm:()=>f("\u6B63\u5728\u9000\u51FA\u8BE5\u8BBE\u5907",()=>Tu(i.item.id),{onSuccess:()=>h("\u5DF2\u9000\u51FA\u8BE5\u8BBE\u5907")}),onCancel:b});if(i.name==="session"){let T=i.item;return kn(vt,{flexDirection:"column",children:[ie(te,{title:br(T.device),note:T.current?"\u5F53\u524D\u8BBE\u5907":void 0,width:t,children:ie(Me,{width:t-ce,items:[["\u8BBE\u5907\u7C7B\u578B",T.device?.type!=null?ub[T.device.type]??T.device.type:"\u684C\u9762\u8BBE\u5907"],["\u5BA2\u6237\u7AEF",T.device?.client!=null?`${T.device.client} ${T.device.clientVersion??""}`.trim():"\u2014"],["\u64CD\u4F5C\u7CFB\u7EDF",T.device?.os!=null?`${T.device.os} ${T.device.osVersion??""}`.trim():"\u2014"],["\u8BBE\u5907\u578B\u53F7",T.device?.model!=null?`${T.device.vendor??""} ${T.device.model}`.trim():"\u2014"],["IP \u5730\u5740",T.ip],["\u767B\u5F55\u65F6\u95F4",K(T.loginAt)],["\u6700\u540E\u6D3B\u8DC3",K(T.lastActiveAt)],["\u767B\u5F55\u6709\u6548\u671F\u81F3",K(T.expiresAt)],["\u5BA2\u6237\u7AEF\u6807\u8BC6",T.userAgent??"\u2014"]]})}),!T.current&&l===null&&ie(vt,{marginTop:1,children:ie(se,{width:t,items:[{value:"revoke",label:"\u9000\u51FA\u8BE5\u8BBE\u5907",labelTone:"danger"}],onSelect:()=>{p(),s({name:"confirm-revoke",item:T})}})})]})}let P=g.totp,$=P.enabled?P.recoveryCodesRemaining===0?"\u5DF2\u5168\u90E8\u7528\u5B8C\uFF0C\u8BF7\u91CD\u65B0\u751F\u6210":`\u5269\u4F59 ${P.recoveryCodesRemaining} \u679A\uFF0C\u9A8C\u8BC1\u5668\u4E0D\u53EF\u7528\u65F6\u53EF\u4F5C\u4E3A\u767B\u5F55\u51ED\u8BC1`:"\u542F\u7528\u4E24\u6B65\u9A8C\u8BC1\u540E\u751F\u6210\uFF0C\u9A8C\u8BC1\u5668\u4E0D\u53EF\u7528\u65F6\u53EF\u4F5C\u4E3A\u767B\u5F55\u51ED\u8BC1",U=[{heading:"\u8D26\u6237"},{value:{kind:"rename"},label:"\u4FEE\u6539\u7528\u6237\u540D"},{value:{kind:"email"},label:"\u4FEE\u6539\u90AE\u7BB1",hint:"\u9700\u8981\u90AE\u7BB1\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801"},{value:{kind:"password"},label:"\u4FEE\u6539\u5BC6\u7801",hint:"\u4FDD\u5B58\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55"},{heading:""},{heading:"\u4E24\u6B65\u9A8C\u8BC1"},...P.enabled?[{value:{kind:"code",intent:"rebind"},label:"\u91CD\u65B0\u7ED1\u5B9A",hint:"\u751F\u6210\u65B0\u5BC6\u94A5\u5E76\u66F4\u6362\u6062\u590D\u7801"},{value:{kind:"code",intent:"regenerate"},label:"\u91CD\u65B0\u751F\u6210\u6062\u590D\u7801",hint:"\u539F\u6709\u6062\u590D\u7801\u5168\u90E8\u4F5C\u5E9F"},{value:{kind:"code",intent:"disable"},label:"\u505C\u7528",labelTone:"danger"}]:[{value:{kind:"enable"},label:"\u542F\u7528\u4E24\u6B65\u9A8C\u8BC1",hint:"\u767B\u5F55\u65F6\u8981\u6C42\u989D\u5916\u8F93\u5165\u9A8C\u8BC1\u5668\u52A8\u6001\u7801\uFF0C\u5BC6\u7801\u6CC4\u9732\u540E\u4ECD\u53EF\u62E6\u622A\u5192\u7528\u767B\u5F55"}],{heading:""},{heading:"Passkey"},...g.passkeys.length===0?[{value:{kind:"none"},label:"\u6682\u65E0 Passkey",hint:"\u6DFB\u52A0\u540E\u53EF\u4F7F\u7528\u6307\u7EB9\u3001\u9762\u5BB9\u6216\u786C\u4EF6\u5BC6\u94A5\u4E00\u6B65\u767B\u5F55",disabled:!0}]:[],...g.passkeys.map(T=>({value:{kind:"passkey",item:T},label:T.name,hint:`\u6700\u8FD1\u4F7F\u7528 ${T.lastUsedAt===null?"\u2014":K(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?`${br(T.device)}\uFF08\u5F53\u524D\u8BBE\u5907\uFF09`:br(T.device),...T.current?{labelTone:"accent"}:{},hint:`${T.ip} \xB7 \u6700\u540E\u6D3B\u8DC3 ${K(T.lastActiveAt)}`})),{heading:""},{value:{kind:"logout"},label:"\u9000\u51FA\u767B\u5F55",labelTone:"danger"}];return kn(vt,{flexDirection:"column",children:[ie(Me,{width:t,items:[["\u7528\u6237\u540D",k.username],["\u90AE\u7BB1",k.email],["\u4E24\u6B65\u9A8C\u8BC1",P.enabled?`\u5DF2\u542F\u7528\uFF08\u542F\u7528\u4E8E ${P.enabledAt===null?"\u2014":K(P.enabledAt)}\uFF09`:"\u672A\u542F\u7528"],["\u6062\u590D\u7801",$]]}),ie(vt,{marginTop:W,children:ie(se,{width:t,height:Math.max(3,r-pb),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",()=>Js({}),{onSuccess:I=>s({name:"enroll",setup:I})}):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 xi,Text as Ti,useInput as Cb}from"ink";import{useRef as pm,useState as fo}from"react";import Eb from"string-width";import{z as Xe}from"zod";var hb=Xe.object({siteName:Xe.string(),apiLines:Xe.array(Xe.object({name:Xe.string(),description:Xe.string(),url:Xe.string()})),quotaPerUsd:Xe.number(),ticketAutoCloseMinutes:Xe.number(),docsEnabled:Xe.boolean(),legal:Xe.object({termsConfigured:Xe.boolean(),privacyConfigured:Xe.boolean()})});function Ae(e,t){return Nt(hb,`${e}/api/site-config`,{...t===void 0?{}:{timeoutMs:t}})}var bb=Xe.object({content:Xe.string(),configured:Xe.boolean()});function tm(e,t){return Nt(bb,`${e}/api/agreements/${t}`)}var nm=12e4,om=e=>L(Cn(Tr),Bt("/tickets",{...e})),rm=e=>L(Rc,"/tickets",{method:"POST",json:e}),sa=e=>L(Ec,`/tickets/${e}`),im=(e,t,o)=>L(pe,`/tickets/${e}/messages`,{method:"POST",json:{content:t,attachmentIds:o}}),sm=e=>L(Cc,Bt("/tickets/attachments",{filename:e.fileName,contentType:e.contentType}),{method:"POST",body:e.bytes,headers:{"content-type":"application/octet-stream"},timeoutMs:nm}),am=e=>L(pe,`/tickets/attachments/${e}`,{method:"DELETE"}),cm=(e,t)=>Lr(`/tickets/${e}/attachments/${t}`,{timeoutMs:nm}),lm=e=>L(pe,`/tickets/${e}/close`,{method:"POST"}),um=e=>L(pe,`/tickets/${e}/reopen`,{method:"POST"});import{existsSync as fi,readFileSync as yb,statSync as mm,writeFileSync as Sb}from"fs";import{homedir as aa}from"os";import _t from"path";var xb={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".avif":"image/avif"};function Tb(e){return e.split(`
|
|
13
|
+
`).map(t=>t.trim()).filter(t=>t!=="").map(t=>t.startsWith("~/")?_t.join(aa(),t.slice(2)):t)}function wb(e){if(!fi(e))throw new O(`${e} \u4E0D\u5B58\u5728`);let t=mm(e);if(!t.isFile())throw new O(`${e} \u4E0D\u662F\u6587\u4EF6`);if(t.size===0)throw new O(`${e} \u662F\u7A7A\u6587\u4EF6\uFF0C\u65E0\u6CD5\u4E0A\u4F20`);if(t.size>Mo)throw new O(`${e} \u8D85\u8FC7\u5355\u4E2A\u9644\u4EF6\u5927\u5C0F\u4E0A\u9650 ${no(Mo)}`);let o;try{o=yb(e)}catch(r){throw new O(`${e} \u8BFB\u53D6\u5931\u8D25\uFF1A${Re(r)}`,{cause:r})}let n=_t.basename(e);return{fileName:n,contentType:xb[_t.extname(n).toLowerCase()]??"application/octet-stream",bytes:o}}function gi(e){let t=Tb(e);if(t.length>wr)throw new O("\u9644\u4EF6\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650");return t.map(wb)}async function hi(e,t){let o=[];try{for(let n of e)o.push((await sm(n)).id);return await t(o)}catch(n){for(let r of o)await am(r).catch(()=>{});throw n}}function kb(e,t){let o=_t.basename(t),n=_t.extname(o),r=o.slice(0,o.length-n.length),i=_t.join(e,o);for(let s=1;fi(i);s+=1)i=_t.join(e,`${r}-${s}${n}`);return i}function vb(e,t){let o=e.trim();if(o==="")return{dir:process.cwd(),fileName:t};if(o==="~")return{dir:aa(),fileName:t};let n=o.startsWith("~/")||o.startsWith(`~${_t.sep}`)?_t.join(aa(),o.slice(2)):o;return o.endsWith("/")||o.endsWith(_t.sep)||fi(n)&&mm(n).isDirectory()?{dir:n,fileName:t}:{dir:_t.dirname(n),fileName:_t.basename(n)}}function dm(e,t,o){let n=vb(e,t);if(!fi(n.dir))throw new O(`${n.dir} \u76EE\u5F55\u4E0D\u5B58\u5728`);let r=kb(n.dir,n.fileName);try{Sb(r,o)}catch(i){throw new O(`\u5199\u5165 ${r} \u5931\u8D25\uFF1A${Re(i)}`,{cause:i})}return r}import{jsx as _b}from"react/jsx-runtime";function bi({title:e,width:t,fileName:o,download:n,onCancel:r,onSaved:i}){let{busy:s,error:a,run:c}=fe();return _b(V,{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 dm(l.path??"",o,m)},{onSuccess:i})}})}import{useEffect as Rb,useRef as Pb}from"react";function yi(e,t,o=!0){let n=Pb(t);n.current=t,Rb(()=>{if(!o)return;let r=!1,i=setInterval(()=>{r||(r=!0,n.current().catch(()=>{}).finally(()=>{r=!1}))},e);return()=>clearInterval(i)},[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 ${wr} \u4E2A\uFF0C\u5355\u4E2A\u4E0D\u8D85\u8FC7 ${Mo/1024/1024}MB`,optional:!0};import{jsx as ft,jsxs as ca}from"react/jsx-runtime";var Ab=5e3,Ib=11,Nb=3,fm=1;function Mb(e,t){let o=[],n=r=>{let i=r.spans.reduce((a,c)=>a+Eb(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:` ${K(r.createdAt)}`,color:u.faintForeground}]},c=r.content===""?[]:Ut([{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:` (${no(m.fileSize)})`,color:u.mutedForeground}]}));s?o.push(n(a),...c.map(n),...l.map(n)):o.push(a,...c,...l)}),o}function gm({params:e}){let t=B(),{width:o}=j(),n=ne(),[r,i]=fo("main"),[s,a]=fo(!1),[c,l]=fo(null),[m,p]=fo(null),[d,f]=fo(0),{busy:S,error:b,reset:h,fail:y,run:x}=fe(),k=Q([e.id,t.revision],async()=>{let[N,R]=await Promise.all([sa(e.id),Ae(t.ctx.site)]);return{detail:N,site:R}}),[g,w]=fo(null),P=pm(0),$=pm(t.revision);$.current!==t.revision&&($.current=t.revision,P.current+=1,g!==null&&w(null));let U=k.phase==="ready"?k.data:null,T=g??U?.detail??null;yi(Ab,async()=>{if(T===null||S!==null)return;let N=P.current,R=await sa(e.id);N===P.current&&(R.ticket.updatedAt!==T.ticket.updatedAt||R.messages.length!==T.messages.length)&&w(R)},r==="main"&&U!==null);let I=T?.messages.some(N=>N.attachments.length>0)??!1;z(N=>{r!=="main"||s||S!==null||(N==="r"?t.reload():N==="x"&&T!==null&&T.ticket.status!=="closed"?(h(),i("confirm-close")):N==="a"&&I&&(h(),l(null),p(null),i("attachments")))}),Cb((N,R)=>{R.tab&&r==="main"&&!s&&T?.ticket.status!=="closed"&&a(!0)},{isActive:r==="main"&&!s&&S===null});let _=()=>{if(r!=="main"){h(),i("main");return}if(s){a(!1);return}t.pop()},v=(N,R)=>{x("\u6B63\u5728\u53D1\u9001",()=>hi(R,A=>im(e.id,N,A)),{onSuccess:()=>{a(!1),f(A=>A+1),t.reload(),t.toast("ok","\u5DF2\u53D1\u9001")}})},C=r==="main"&&!s?["\u2191\u2193 \u6EDA\u52A8",...T?.ticket.status==="closed"?[]:["Tab \u56DE\u590D"],...I?["a \u9644\u4EF6"]:[],...T?.ticket.status==="closed"?[]:["x \u5173\u95ED\u5DE5\u5355"],"r \u5237\u65B0"]:[];return ft(X,{trail:["\u5DE5\u5355\u652F\u6301",T?.ticket.title??"\u5DE5\u5355\u8BE6\u60C5"],hints:C,onEscape:_,children:ft(ee,{state:k,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:o,children:({site:N,detail:R})=>{let A=g??R,q=A.ticket,F=q.status==="closed";if(r==="confirm-close")return ft(Ve,{width:o,title:"\u5173\u95ED\u5DE5\u5355",detail:`\u786E\u5B9A\u5173\u95ED\u5DE5\u5355\u300C${q.title}\u300D\u5417\uFF1F\u5173\u95ED\u540E\u53EF\u91CD\u65B0\u6253\u5F00`,confirmLabel:"\u5173\u95ED\u5DE5\u5355",busy:S,error:b,onConfirm:()=>x("\u6B63\u5728\u5173\u95ED",()=>lm(e.id),{onSuccess:()=>{i("main"),t.reload(),t.toast("ok","\u5DF2\u5173\u95ED")}}),onCancel:_});if(r==="attachments")return m!==null?ft(bi,{title:`\u4FDD\u5B58\u9644\u4EF6 \u2014 ${m.fileName}`,width:o,fileName:m.fileName,download:()=>cm(e.id,m.id),onCancel:()=>p(null),onSaved:_e=>{p(null),l(_e),t.toast("ok","\u9644\u4EF6\u5DF2\u4FDD\u5B58")}}):ca(xi,{flexDirection:"column",children:[ft(se,{width:o,height:Math.max(3,n-1),isActive:S===null,items:[{heading:"\u9644\u4EF6"},...A.messages.flatMap(_e=>_e.attachments.map(E=>({value:E,label:E.fileName,hint:`${_e.authorKind==="user"?"\u6211":"\u7BA1\u7406\u5458"} \xB7 ${no(E.fileSize)} \xB7 ${K(_e.createdAt)}`})))],onSelect:_e=>{l(null),p(_e)}}),c!==null&&ft(Ti,{wrap:"truncate",color:u.faintForeground,children:`\u5DF2\u4FDD\u5B58\u5230 ${c}`})]});let G=N.ticketAutoCloseMinutes>0?fm:0,H=F?Nb:s?Ib:fm,re=Math.max(3,n-G-H-W);return ca(xi,{flexDirection:"column",children:[G>0&&ft(Ti,{wrap:"truncate",color:u.faintForeground,children:`\u7BA1\u7406\u5458\u56DE\u590D\u540E\u8D85\u8FC7 ${N.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`}),ft(yn,{lines:Mb(A.messages,o),height:re,isActive:!s&&S===null,pinBottom:!0}),ft(xi,{marginTop:1,flexDirection:"column",children:F?ca(xi,{flexDirection:"column",children:[ft(Ti,{color:u.mutedForeground,children:"\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u5982\u9700\u7EE7\u7EED\u6C9F\u901A\u53EF\u91CD\u65B0\u6253\u5F00"}),ft(se,{width:o,isActive:S===null,items:[{value:"reopen",label:"\u91CD\u65B0\u6253\u5F00"}],onSelect:()=>x("\u6B63\u5728\u91CD\u65B0\u6253\u5F00",()=>um(e.id),{onSuccess:()=>{t.reload(),t.toast("ok","\u5DF2\u91CD\u65B0\u6253\u5F00")}})})]}):s?ft(V,{title:"\u56DE\u590D\u5DE5\u5355",width:o,submitLabel:"\u53D1\u9001\u56DE\u590D",busy:S!==null,busyLabel:S??"\u6B63\u5728\u53D1\u9001",error:b,fields:[{kind:"textarea",name:"content",label:"\u56DE\u590D\u5185\u5BB9",rows:3,maxLength:5e3,placeholder:"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9",optional:!0},Si],onCancel:()=>a(!1),onSubmit:_e=>{let E=(_e.content??"").trim(),D;try{D=gi(_e.attachments??"")}catch(J){y(Re(J));return}if(E===""&&D.length===0){y("\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9\u6216\u9644\u4EF6\u8DEF\u5F84");return}v(E,D)}},d):ft(Ti,{color:u.faintForeground,children:"\u6309 Tab \u64B0\u5199\u56DE\u590D"})})]})}})})}import{Box as Lb}from"ink";import{useState as Ob}from"react";import{jsx as Un,jsxs as Bb}from"react/jsx-runtime";var $b=tt(os,ys,"\u5168\u90E8\u72B6\u6001"),Db={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"},la={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:Db};function hm(){let e=B(),{width:t}=j(),o=ne(),[n,r]=Ob({name:"list"}),[i,s]=Ze("status",()=>""),{busy:a,error:c,reset:l,fail:m,run:p}=fe(),d=xn([e.revision,i],b=>om({page:b,...i===""?{}:{status:i}}),{retain:"page"}),f=n.name==="list";z((b,h)=>{f&&(b==="r"?e.reload():b==="f"?r({name:"filter"}):b==="n"?r({name:"create-category"}):h.leftArrow?d.go(-1):h.rightArrow&&d.go(1))});let S=()=>{n.name==="list"?e.pop():n.name==="create"?r({name:"create-category"}):(l(),r({name:"list"}))};return Un(X,{hints:f?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","n \u65B0\u5EFA","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:S,children:n.name==="filter"?Un(V,{title:"\u7B5B\u9009\u5DE5\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:$b,initial:i}],onCancel:S,onSubmit:b=>{s(b.status??""),d.reset(),r({name:"list"})}}):n.name==="create-category"?Un(se,{width:t,height:o,items:[{heading:"\u5206\u7C7B"},...rs.map(b=>({value:b,label:Cr(b),hint:la[b].title}))],onSelect:b=>r({name:"create",category:b})}):n.name==="create"?Un(V,{title:`\u65B0\u5EFA\u5DE5\u5355 \u2014 ${Cr(n.category)}`,width:t,submitLabel:"\u63D0\u4EA4",busy:a!==null,busyLabel:a??"\u6B63\u5728\u63D0\u4EA4",error:c,fields:[{kind:"select",name:"priority",label:"\u4F18\u5148\u7EA7",options:is.map(b=>({value:b,label:Ss(b).label})),initial:"normal"},{kind:"text",name:"title",label:"\u6807\u9898",placeholder:la[n.category].title},{kind:"textarea",name:"content",label:"\u95EE\u9898\u63CF\u8FF0",rows:5,maxLength:5e3,placeholder:la[n.category].content},Si],onCancel:S,onSubmit:b=>{let h=(b.title??"").trim(),y=(b.content??"").trim();if(h===""){m("\u8BF7\u586B\u5199\u6807\u9898");return}if(y===""){m("\u8BF7\u586B\u5199\u95EE\u9898\u63CF\u8FF0");return}let x;try{x=gi(b.attachments??"")}catch(k){m(Re(k));return}p("\u6B63\u5728\u63D0\u4EA4\u5DE5\u5355",()=>hi(x,k=>rm({title:h,category:n.category,priority:b.priority??"normal",content:y,attachmentIds:k})),{onSuccess:k=>{r({name:"list"}),d.reset(),e.reload(),e.push("ticket",{id:k.id}),e.toast("ok","\u5DE5\u5355\u5DF2\u63D0\u4EA4")}})}}):Un(ee,{state:d.state,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:t,children:b=>Bb(Lb,{flexDirection:"column",children:[Un(Ce,{retain:"list",items:b.items,width:t,height:Math.max(3,o-1),columns:[{label:"\u6807\u9898",shrink:!0},{label:"\u4F18\u5148\u7EA7"},{label:"\u5206\u7C7B"},{label:"\u6700\u540E\u66F4\u65B0"},{label:"\u72B6\u6001",align:"right"}],row:h=>[h.title,Zt(Ss(h.priority)),Cr(h.category),K(h.updatedAt),Zt(ys(h.status))],onOpen:h=>e.push("ticket",{id:h.id}),emptyLabel:i===""?"\u6682\u65E0\u5DE5\u5355":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u9047\u5230\u95EE\u9898\u65F6\u53EF\u65B0\u5EFA\u5DE5\u5355\uFF0C\u7BA1\u7406\u5458\u4F1A\u5C3D\u5FEB\u56DE\u590D":void 0}),Un(Tn,{page:d.page,pages:d.pages,total:d.total,width:t})]})})})}import{Box as Fb}from"ink";import{jsx as ir}from"react/jsx-runtime";function bm({params:e}){let t=B(),{width:o}=j(),n=ne(),r=Q([e.type,t.revision],()=>tm(t.ctx.site,e.type));return ir(X,{trail:["\u6CD5\u5F8B\u6761\u6B3E",e.type==="terms"?"\u7528\u6237\u534F\u8BAE":"\u9690\u79C1\u653F\u7B56"],hints:["\u2191\u2193 \u6EDA\u52A8"],children:ir(ee,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6761\u6B3E",width:o,children:i=>i.configured?ir(Fb,{flexDirection:"column",children:ir(yn,{lines:lo(i.content,o),height:n})}):ir(ye,{tone:"info",width:o,title:"\u8BE5\u6761\u6B3E\u5C1A\u672A\u914D\u7F6E"})})})}var ym=(e,t)=>Nt(pe,`${e}/api/auth/send-code`,{json:t});async function Sm(e,t){let o=await St(`${e}/api/auth/register`,{json:t});It(o);let n=eo.parse(o.data);return Fo(e,Bo({refresh:null,device:null},o.headers),n)}var xm=(e,t)=>Nt(pe,`${e}/api/auth/forgot-password`,{json:t}),Tm=(e,t)=>Nt(pe,`${e}/api/auth/reset-password`,{json:t});import{jsx as wm}from"react/jsx-runtime";function km(){let e=B(),{width:t}=j(),{busy:o,error:n,fail:r,run:i}=fe();return wm(X,{trail:["\u627E\u56DE\u5BC6\u7801"],isActive:o===null,children:wm(V,{title:"\u91CD\u7F6E\u5BC6\u7801",width:t,submitLabel:"\u63D0\u4EA4",busy:o!==null,busyLabel:o??"\u6B63\u5728\u91CD\u7F6E",error:n,fields:[{kind:"text",name:"email",label:"\u90AE\u7BB1",placeholder:"\u8BF7\u8F93\u5165\u6CE8\u518C\u90AE\u7BB1"},{kind:"code",name:"code",label:"\u9A8C\u8BC1\u7801",placeholder:"6 \u4F4D\u6570\u5B57\u9A8C\u8BC1\u7801",emailField:"email",send:s=>xm(e.ctx.site,{email:s})},{kind:"text",name:"password",label:"\u65B0\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${lt} \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<lt){r(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${lt} \u4F4D`);return}i("\u6B63\u5728\u91CD\u7F6E",()=>Tm(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 ma,Text as jb}from"ink";import{useState as _m}from"react";import{Box as vm}from"ink";import{jsx as ua,jsxs as Ub}from"react/jsx-runtime";var wi=e=>e.termsConfigured||e.privacyConfigured;function ki({legal:e,width:t,onAgree:o}){let n=B(),r=[e.termsConfigured?"\u300A\u7528\u6237\u534F\u8BAE\u300B":"",e.privacyConfigured?"\u300A\u9690\u79C1\u653F\u7B56\u300B":""].filter(s=>s!==""),i=[{value:"agree",label:"\u6211\u5DF2\u9605\u8BFB\u5E76\u540C\u610F\uFF0C\u7EE7\u7EED",hint:r.join("\u4E0E")},...e.termsConfigured?[{value:"terms",label:"\u67E5\u770B\u7528\u6237\u534F\u8BAE"}]:[],...e.privacyConfigured?[{value:"privacy",label:"\u67E5\u770B\u9690\u79C1\u653F\u7B56"}]:[],{value:"back",label:"\u8FD4\u56DE"}];return Ub(vm,{flexDirection:"column",children:[ua(ye,{tone:"info",width:t,title:`\u7EE7\u7EED\u524D\u8BF7\u9605\u8BFB\u5E76\u540C\u610F${r.join("\u4E0E")}`}),ua(vm,{marginTop:1,children:ua(se,{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 vn,jsxs as Rm}from"react/jsx-runtime";function Pm(){let e=B(),{width:t}=j(),[o,n]=_m({name:"credentials"}),[r,i]=_m(!1),{busy:s,error:a,reset:c,fail:l,run:m}=fe(),p=Q([e.revision],()=>Ae(e.ctx.site)),d=h=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u5DF2\u767B\u5F55\uFF1A${h}`),e.home()},f=(h,y)=>{m("\u6B63\u5728\u9A8C\u8BC1",()=>al(e.ctx.site,h,y),{onSuccess:x=>{if(x.status==="totp_required"){n({name:"factor",ticket:x.ticket,jar:x.jar});return}d(x.session.username)}})},S=(h,y)=>{m("\u6B63\u5728\u9A8C\u8BC1",()=>cl(e.ctx.site,h.jar,h.ticket,y,h.kind),{onSuccess:x=>d(x.username)})},b=()=>{o.name==="credentials"?e.pop():(c(),n({name:"credentials"}))};return Rm(X,{trail:o.name==="credentials"?["\u767B\u5F55\u8D26\u53F7"]:["\u767B\u5F55\u8D26\u53F7","\u4E24\u6B65\u9A8C\u8BC1"],onEscape:b,isActive:s===null,children:[o.name==="credentials"&&vn(ee,{state:p,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:h=>wi(h.legal)&&!r?vn(ki,{legal:h.legal,width:t,onAgree:()=>i(!0)}):Rm(ma,{flexDirection:"column",children:[vn(V,{title:"\u767B\u5F55",width:t,submitLabel:"\u767B\u5F55",error:a,busy:s!==null,busyLabel:s??"\u6B63\u5728\u9A8C\u8BC1",fields:[{kind:"text",name:"account",label:"\u8D26\u53F7",placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D\u6216\u90AE\u7BB1"},{kind:"text",name:"password",label:"\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u5BC6\u7801"}],onCancel:b,onSubmit:y=>{let x=(y.account??"").trim(),k=y.password??"";if(x===""||k===""){l("\u8BF7\u586B\u5199\u8D26\u53F7\u4E0E\u5BC6\u7801");return}f(x,k)}}),vn(ma,{marginTop:1,children:vn(jb,{color:u.faintForeground,children:"Passkey \u767B\u5F55\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"})})]})}),o.name==="factor"&&vn(se,{width:t,items:[{value:"totp",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",hint:"\u8F93\u5165\u9A8C\u8BC1\u5668 App \u4E2D\u663E\u793A\u7684\u52A8\u6001\u9A8C\u8BC1\u7801"},{value:"recovery-code",label:"\u6062\u590D\u7801",hint:"\u8F93\u5165\u672A\u4F7F\u7528\u8FC7\u7684\u4E00\u6B21\u6027\u6062\u590D\u7801"}],onSelect:h=>n({name:"code",ticket:o.ticket,jar:o.jar,kind:h})}),o.name==="code"&&vn(ma,{flexDirection:"column",children:vn(V,{title:"\u4E24\u6B65\u9A8C\u8BC1",width:t,submitLabel:"\u9A8C\u8BC1\u5E76\u767B\u5F55",error:a,busy:s!==null,busyLabel:s??"\u6B63\u5728\u9A8C\u8BC1",fields:[{kind:"text",name:"code",label:o.kind==="totp"?"\u52A8\u6001\u9A8C\u8BC1\u7801":"\u6062\u590D\u7801",placeholder:o.kind==="totp"?"6 \u4F4D\u6570\u5B57\u9A8C\u8BC1\u7801":"\u8BF7\u8F93\u5165\u6062\u590D\u7801",hint:o.kind==="totp"?"\u8F93\u5165\u9A8C\u8BC1\u5668 App \u4E2D\u663E\u793A\u7684\u52A8\u6001\u9A8C\u8BC1\u7801":"\u8F93\u5165\u672A\u4F7F\u7528\u8FC7\u7684\u4E00\u6B21\u6027\u6062\u590D\u7801"}],onCancel:b,onSubmit:h=>{let y=(h.code??"").trim();if(y===""){l("\u8BF7\u586B\u5199\u9A8C\u8BC1\u7801");return}S(o,y)}})})]})}import{useState as Hb}from"react";import{jsx as vi}from"react/jsx-runtime";function Cm(){let e=B(),{width:t}=j(),[o,n]=Hb(!1),{busy:r,error:i,fail:s,run:a}=fe(),c=Q([e.revision],()=>Ae(e.ctx.site));return vi(X,{trail:["\u6CE8\u518C\u8D26\u53F7"],isActive:r===null,children:vi(ee,{state:c,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:l=>wi(l.legal)&&!o?vi(ki,{legal:l.legal,width:t,onAgree:()=>n(!0)}):vi(V,{title:"\u6CE8\u518C",width:t,submitLabel:"\u6CE8\u518C",busy:r!==null,busyLabel:r??"\u6B63\u5728\u6CE8\u518C",error:i,fields:[{kind:"text",name:"username",label:"\u7528\u6237\u540D",placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D"},{kind:"text",name:"email",label:"\u90AE\u7BB1",placeholder:"\u8BF7\u8F93\u5165\u90AE\u7BB1"},{kind:"code",name:"code",label:"\u9A8C\u8BC1\u7801",placeholder:"6 \u4F4D\u6570\u5B57\u9A8C\u8BC1\u7801",emailField:"email",send:m=>ym(e.ctx.site,{email:m})},{kind:"text",name:"password",label:"\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${lt} \u4F4D`},{kind:"text",name:"invite",label:"\u9080\u8BF7\u7801",placeholder:"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801",optional:!0}],onCancel:()=>e.pop(),onSubmit:m=>{let p=(m.username??"").trim(),d=(m.email??"").trim(),f=(m.code??"").trim(),S=m.password??"",b=(m.invite??"").trim();if(p===""||p.length>An){s(`\u8BF7\u8F93\u5165 1 \u5230 ${An} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}if(d===""||f===""){s("\u8BF7\u586B\u5199\u90AE\u7BB1\u4E0E\u9A8C\u8BC1\u7801");return}if(S.length<lt){s(`\u5BC6\u7801\u81F3\u5C11 ${lt} \u4F4D`);return}a("\u6B63\u5728\u6CE8\u518C",()=>Sm(e.ctx.site,{username:p,email:d,password:S,code:f,...b===""?{}:{inviteCode:b}}),{onSuccess:h=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u6CE8\u518C\u6210\u529F\uFF1A${h.username}`),e.home()}})}})})})}import{Box as Hn}from"ink";import{useEffect as ry,useRef as iy,useState as ha}from"react";import{z as M}from"zod";var qb=M.object({balance:M.number(),today:M.object({requests:M.number(),tokens:M.number(),cost:M.number()})}),Em=()=>L(qb,"/dashboard/summary"),Am=["all","30d","7d"],Wb=M.object({totals:M.object({requests:M.number(),tokens:M.number(),cost:M.number()}),hourly:M.array(M.number()),models:M.array(M.object({model:M.string(),displayName:M.string(),tokens:M.number(),inTokens:M.number(),outTokens:M.number()})),chart:M.object({start:M.string(),end:M.string(),points:M.array(M.object({day:M.string(),model:M.string(),tokens:M.number()}))}),heatmap:M.object({start:M.string(),end:M.string(),days:M.array(M.object({day:M.string(),cost:M.number()}))}),activeDays:M.number(),currentStreak:M.number(),longestStreak:M.number()}),da=e=>L(Wb,Bt("/dashboard/stats",{range:e})),zb=M.object({id:M.number().int(),requestId:M.string(),tokenName:M.string(),protocol:Qa,model:M.string(),modelDisplayName:M.string(),groupName:M.string(),promptTokens:M.number(),completionTokens:M.number(),cachedTokens:M.number(),cacheWriteTokens:M.number(),cacheWrite1hTokens:M.number(),webSearchRequests:M.number(),imageGenerationCalls:M.number(),totalTokens:M.number(),quotaCost:M.number(),subscriptionPlanName:M.string().nullable(),multiplier:M.number(),tierOver:M.number().int().nullable(),paramMultipliers:$c,status:sc,httpStatus:M.number().int(),stopReason:M.string().nullable(),latencyMs:M.number(),firstByteMs:M.number().nullable(),stream:M.boolean(),ip:M.string(),createdAt:M.string()}),Im=e=>L(Cn(zb),Bt("/logs",{...e})),Gb=M.object({quotaCost:M.number(),rpm:M.number(),tpm:M.number(),concurrency:M.number()}),Nm=e=>L(Gb,Bt("/logs/stats",{...e})),Kb=M.object({id:M.number().int(),type:oc,amount:M.number(),balanceAfter:M.number(),refType:rc,refId:M.string().nullable(),createdAt:M.string()}),Mm=e=>L(Cn(Kb),Bt("/quota-ledger",{...e}));import{Box as Vb,Text as Lt}from"ink";import sr from"string-width";import{Fragment as Om,jsx as Ot,jsxs as pa}from"react/jsx-runtime";var jn=1,Jb=4,Yb=1,go=8,Xb=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587"],Lm=e=>`${Number(e.slice(5,7))}\u6708${Number(e.slice(8,10))}\u65E5`;function $m({data:e,order:t,width:o,rows:n}){let r=n-Yb,i=[];for(let I=e.start;I<=e.end;I=fn(I,1))i.push(I);let s=Math.min(Jb,Math.floor((o+jn)/i.length)-jn);s<1&&(s=1,i=i.slice(-Math.floor((o+jn)/(1+jn))));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,zr.length).map((I,_)=>[I,_])),m=zr.length,p=I=>zr[I]??u.faintForeground,d=new Map(i.map((I,_)=>[I,_])),f=i.map(()=>Array.from({length:m+1},()=>0));for(let I of e.points){let _=d.get(I.day);if(_===void 0)continue;let v=f[_];if(v===void 0)continue;let C=l.get(I.model)??m;v[C]=(v[C]??0)+I.tokens}let S=f.map(I=>I.reduce((_,v)=>_+v,0)),b=Math.max(0,...S),h=r*go,y=f.map((I,_)=>{let v=Array.from({length:r},()=>null),C=S[_]??0;if(C<=0)return v;let N=Math.max(1,Math.round(C/b*h)),R=[],A=0,q=0;I.forEach((F,G)=>{A+=F;let H=Math.round(A/C*N);for(let re=q;re<H;re+=1)R[re]=p(G);q=H});for(let F=0;F<r;F+=1){let G=Math.min(go,N-F*go);if(G<=0)break;let H=new Map;for(let E=F*go;E<F*go+G;E+=1){let D=R[E];D!==void 0&&H.set(D,(H.get(D)??0)+1)}let re=null,_e=0;for(let[E,D]of H)D>_e&&(re=E,_e=D);if(re===null)break;v[F]={color:re,glyph:G===go?null:Xb[G-1]??null}}return v}),x=I=>{let _=[],v=(C,N,R)=>{let A=_[_.length-1];A!==void 0&&A.color===C&&A.glyph===N?A.width+=R:_.push({color:C,glyph:N,width:R})};return y.forEach((C,N)=>{N>0&&v(null,null,jn);let R=C[I]??null;R===null?v(null,null,s):v(R.color,R.glyph,s)}),_},k=i.length*(s+jn)-jn,g=Lm(a),w=Lm(c),P=b>0?`\u5355\u65E5\u5CF0\u503C ${pn(b)}`:"",$=k-sr(g)-sr(w),U=P!==""&&$>=sr(P)+4,T=U?Math.floor(($-sr(P))/2):$;return pa(Vb,{flexDirection:"column",children:[Array.from({length:r},(I,_)=>{let v=r-1-_;return Ot(Lt,{wrap:"truncate",children:x(v).map((C,N)=>C.color===null?Ot(Lt,{children:" ".repeat(C.width)},N):C.glyph===null?Ot(Lt,{backgroundColor:C.color,children:" ".repeat(C.width)},N):Ot(Lt,{color:C.color,children:C.glyph.repeat(C.width)},N))},v)}),Ot(Lt,{wrap:"truncate",children:$<2?Ot(Lt,{color:u.faintForeground,children:Pe(g,k)}):pa(Om,{children:[Ot(Lt,{color:u.faintForeground,children:g}),Ot(Lt,{children:" ".repeat(T)}),U&&pa(Om,{children:[Ot(Lt,{color:u.mutedForeground,children:P}),Ot(Lt,{children:" ".repeat($-sr(P)-T)})]}),Ot(Lt,{color:u.faintForeground,children:w})]})})]})}import{Box as Dm,Text as Wt}from"ink";import Qb from"string-width";import{jsx as qt,jsxs as fa}from"react/jsx-runtime";var _i=3,rn=2,ga=10,Zb=8,Bm=e=>Math.floor((e-_i)/rn),Fm=e=>Bm(e)>=Zb;function ey(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=fn(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 ty(e,t){let o=t*rn,n="",r=0,i="";for(;r<o;){let s=r%rn===0?e[r/rn*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=Qb(c);if(r+l<=o){n+=c,r+=l;continue}}}n+=" ",r+=1}return n}var ny={1:"\u4E00",3:"\u4E09",5:"\u4E94"};function oy({cells:e,day:t,weeks:o}){return fa(Wt,{wrap:"truncate",children:[qt(Wt,{color:u.faintForeground,children:Oe(ny[t]??"",_i)}),Array.from({length:o},(n,r)=>{let i=e[r*7+t];return i===void 0?qt(Wt,{children:" ".repeat(rn)},r):qt(Wt,{backgroundColor:Wr[i.level],children:" ".repeat(rn)},r)})]})}function Um({data:e,funFact:t,width:o}){let n=ey(e),r=Math.ceil(n.length/7),i=Math.min(r,Bm(o)),s=n.slice((r-i)*7),a=3+Wr.length*rn+3,c=Math.max(0,_i+i*rn-a-2);return fa(Dm,{flexDirection:"column",children:[qt(Wt,{wrap:"truncate",color:u.faintForeground,children:" ".repeat(_i)+ty(s,i)}),Array.from({length:7},(l,m)=>qt(oy,{cells:s,day:m,weeks:i},m)),qt(Dm,{marginTop:1,children:fa(Wt,{wrap:"truncate",children:[qt(Wt,{color:u.mutedForeground,children:Oe(t??"",c)})," ",qt(Wt,{color:u.faintForeground,children:"\u5C11 "}),Wr.map(l=>qt(Wt,{backgroundColor:l,children:" ".repeat(rn)},l)),qt(Wt,{color:u.faintForeground,children:" \u591A"})]})})]})}import{jsx as ze,jsxs as Hm}from"react/jsx-runtime";var sy={all:"\u5168\u90E8","30d":"30 \u5929","7d":"7 \u5929"},ay=1,Ri=4,jm=5,cy=9;function ly(e){let t=-1,o=0;return e.forEach((n,r)=>{n>o&&(o=n,t=r)}),t<0?"\u2014":`${t} \u70B9`}function qm(){let e=B(),{width:t}=j(),o=ne(),[n,r]=ha("30d"),[i,s]=ha("heatmap"),[a,c]=ha(null),l=iy(null),m=Q([n,e.revision],async()=>{let p=l.current;if(p!==null&&p.revision===e.revision){let b=await da(n);return{summary:p.summary,stats:b,site:p.site}}let[d,f,S]=await Promise.all([Em(),da(n),Ae(e.ctx.site)]);return l.current={revision:e.revision,summary:d,site:S},{summary:d,stats:f,site:S}});return ry(()=>{m.phase==="ready"&&c(Wc({tokens:m.data.stats.totals.tokens,scope:"user",range:n}))},[m,n]),z(p=>{p==="r"&&e.reload(),p==="t"&&s(d=>d==="heatmap"?"chart":"heatmap")}),ze(X,{hints:["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u5207\u6362\u533A\u95F4","t \u5207\u6362\u56FE\u8868","/ \u8FC7\u6EE4","r \u5237\u65B0"],children:ze(Hn,{flexDirection:"column",children:ze(ee,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u7528\u91CF",width:t,children:({summary:p,stats:d,site:f})=>{let S=[{label:"\u8D26\u6237\u4F59\u989D",value:ae(p.balance,f.quotaPerUsd)},{label:"\u4ECA\u65E5\u8BF7\u6C42",value:Te(p.today.requests)},{label:"\u4ECA\u65E5 Token",value:Te(p.today.tokens)},{label:"\u4ECA\u65E5\u6D88\u8017",value:ae(p.today.cost,f.quotaPerUsd)}],b=[{label:"\u8BF7\u6C42\u6570",value:Te(d.totals.requests)},{label:"Token \u603B\u91CF",value:pn(d.totals.tokens)},{label:"\u6D88\u8017",value:ae(d.totals.cost,f.quotaPerUsd)},{label:"\u6D3B\u8DC3\u5929\u6570",value:Te(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:ly(d.hourly)},{label:"\u5E38\u7528\u6A21\u578B",value:d.models[0]?.displayName??"\u2014"}],h=t-ce,y=_=>mt+_+on(S.length,h)+W+mt+_+ay+_+on(b.length,h)+W+mt+_,x=o-y(He)>=Ri?He:0,k=o-y(x),g=W+mt+x+jm,w=i==="chart"&&d.chart.points.length>0&&k>=g+Ri,P=i==="heatmap"&&Fm(h)&&k-(W+ga)>=Ri,$=P?W+ga:0,U=w?Math.min(cy,jm+Math.floor((k-g-Ri)/2)):0,T=k-$-(w?W+mt+x+U:0),I=_=>`${(d.totals.tokens>0?_/d.totals.tokens*100:0).toFixed(1)}%`;return Hm(Hn,{flexDirection:"column",children:[ze(te,{title:"\u6982\u89C8",width:t,gap:x,children:ze(at,{width:h,tiles:S})}),ze(Hn,{marginTop:1,flexDirection:"column",children:Hm(te,{title:"\u533A\u95F4\u7EDF\u8BA1",width:t,gap:x,children:[ze(ju,{options:Am.map(_=>({value:_,label:sy[_]})),value:n,onChange:r}),ze(Hn,{marginTop:x,children:ze(at,{width:h,tiles:b})}),P&&ze(Hn,{marginTop:1,flexDirection:"column",children:ze(Um,{data:d.heatmap,funFact:a,width:h})})]})}),w&&ze(Hn,{marginTop:1,flexDirection:"column",children:ze(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:ze($m,{data:d.chart,order:d.models.map(_=>_.model),width:h,rows:U})})}),ze(Hn,{marginTop:1,flexDirection:"column",children:ze(te,{title:"\u6A21\u578B\u7528\u91CF",width:t,gap:x,children:d.models.length===0?ze(ye,{tone:"info",width:h,title:"\u6682\u65E0\u7528\u91CF\u6570\u636E",detail:"\u8C03\u7528 API \u540E\u8FD9\u91CC\u4F1A\u663E\u793A\u5404\u6A21\u578B\u7684\u6BCF\u65E5 Token \u7528\u91CF"}):ze(Ce,{retain:"list",items:d.models,width:h,height:T,columns:[{label:"\u6A21\u578B",shrink:!0},{label:"\u603B Token",align:"right"},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u5360\u6BD4",align:"right"}],row:_=>[_.displayName,pn(_.tokens),pn(_.inTokens),pn(_.outTokens),I(_.tokens)],searchOf:_=>_.displayName})})})]})}})})})}import{Box as ho,Text as ya}from"ink";import{useState as Gm}from"react";import{z as my}from"zod";import{z as Je}from"zod";var uy=Je.object({id:Je.number().int(),name:Je.string(),description:Je.string(),multiplier:Je.number()}),Pi=()=>L(Je.array(uy),"/groups"),ba=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()}),Ci=()=>L(Je.array(ba),"/tokens"),Wm=e=>L(ba.extend({token:Je.string()}),"/tokens",{method:"POST",json:e}),Ei=(e,t)=>L(ba,`/tokens/${e}`,{method:"PATCH",json:t}),zm=e=>L(pe,`/tokens/${e}`,{method:"DELETE"});import{jsx as Ge,jsxs as Ai}from"react/jsx-runtime";var Km={model:"",requestId:"",token:"",group:"",status:"",range:"today",since:"",until:""},Vm=my.iso.date();function dy(e){let t=gs();return e.range==="today"?{since:t,until:t}:e.range==="7d"?{since:fn(t,-6),until:t}:e.range==="30d"?{since:fn(t,-29),until:t}:e.range==="custom"?{...e.since===""?{}:{since:e.since},...e.until===""?{}:{until:e.until}}:{}}function Jm(e){let t=dy(e);return{...e.model.trim()===""?{}:{model:e.model.trim()},...e.requestId.trim()===""?{}:{requestId:e.requestId.trim()},...e.token===""?{}:{token:e.token},...e.group===""?{}:{group:e.group},...e.status===""?{}:{status:e.status},...t.since===void 0?{}:{since:hs(t.since).toISOString()},...t.until===void 0?{}:{until:hs(fn(t.until,1)).toISOString()}}}var py=tt(ns,Rr,"\u5168\u90E8\u72B6\u6001"),fy=[{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 gy({log:e,quotaPerUsd:t,width:o}){let n=o-ce,r=Rr(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",Te(e.cachedTokens)]),e.cacheWriteTokens>0&&a.push(["\u7F13\u5B58\u5199",Te(e.cacheWriteTokens)]),e.cacheWrite1hTokens>0&&a.push(["\u7F13\u5B58\u5199 1h",Te(e.cacheWrite1hTokens)]),e.webSearchRequests>0&&a.push(["\u7F51\u9875\u641C\u7D22",`${Te(e.webSearchRequests)} \u6B21`]),e.imageGenerationCalls>0&&a.push(["\u56FE\u50CF\u751F\u6210",`${Te(e.imageGenerationCalls)} \u6B21`]),e.firstByteMs!==null&&a.push(["\u9996\u5B57\u8282",`${In(e.firstByteMs)} s`]),e.tierOver!==null&&a.push(["\u8F93\u5165\u957F\u5EA6",fs(e.tierOver)]),e.paramMultipliers.length>0&&a.push(["\u547D\u4E2D\u53C2\u6570",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],["\u8BF7\u6C42 IP",e.ip],["\u534F\u8BAE",Kc(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 Ai(te,{title:e.modelDisplayName,note:K(e.createdAt),width:o,children:[Ai(ya,{wrap:"truncate",children:[Ge(ya,{color:i===void 0?u.mutedForeground:Fe[i],children:r.label}),Ge(ya,{color:u.faintForeground,children:` ${Ue([e.stream?"\u6D41\u5F0F":"",e.model])}`})]}),Ge(ho,{marginTop:1,children:Ge(at,{width:n,tiles:[{label:"\u8F93\u5165 Token",value:Te(e.promptTokens)},{label:"\u8F93\u51FA Token",value:Te(e.completionTokens)},{label:"\u6D88\u8017",value:oo(e.quotaCost,t)},{label:"\u603B\u8017\u65F6",value:`${In(e.latencyMs)} s`},{label:"\u6863\u4F4D",value:Oo(e.tierOver)},{label:"\u5206\u7EC4\u500D\u7387",value:`\xD7${e.multiplier}`},{label:"\u53C2\u6570\u500D\u7387",value:`\xD7${Dc(e.paramMultipliers)}`},{label:"\u603B\u500D\u7387",value:`\xD7${Bc(e.multiplier,e.paramMultipliers)}`}]})}),s!==null&&Ge(ho,{marginTop:1,children:Ge(ye,{tone:"warn",width:n,title:s})}),Ge(ho,{marginTop:1,children:Ge(Me,{width:n,items:[...a,...c]})})]})}function Ym(){let e=B(),{width:t}=j(),o=ne(),[n,r]=Gm({name:"list"}),[i,s]=Gm(Km),{error:a,fail:c,reset:l}=fe(),m=Q([e.revision],async()=>{let[h,y,x]=await Promise.all([Pi(),Ci(),Ae(e.ctx.site)]);return{groups:h,tokens:y,site:x}}),p=xn([e.revision,JSON.stringify(i)],h=>Im({page:h,...Jm(i)}),{retain:"page"}),d=Q([e.revision,JSON.stringify(i)],()=>Nm(Jm(i))),f=n.name==="list";z((h,y)=>{f&&(h==="r"?e.reload():h==="f"?(l(),r({name:"filter"})):y.leftArrow?p.go(-1):y.rightArrow&&p.go(1))});let S=()=>{n.name==="list"?e.pop():(l(),r({name:"list"}))},b=JSON.stringify(i)!==JSON.stringify(Km);return Ge(X,{hints:f?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:S,children:Ge(ee,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u7B5B\u9009\u9009\u9879",width:t,children:({groups:h,tokens:y,site:x})=>{if(n.name==="filter")return Ge(V,{title:"\u7B5B\u9009\u65E5\u5FD7",width:t,submitLabel:"\u67E5\u8BE2",error:a,fields:[{kind:"text",name:"model",label:"\u6A21\u578B",initial:i.model,placeholder:"\u641C\u7D22\u6A21\u578B ID \u6216\u540D\u79F0"},{kind:"text",name:"requestId",label:"\u8BF7\u6C42 ID",initial:i.requestId,placeholder:"\u641C\u7D22\u8BF7\u6C42 ID"},{kind:"select",name:"token",label:"\u4EE4\u724C",options:[{value:"",label:"\u5168\u90E8\u4EE4\u724C"},...[...new Set(y.map(g=>g.name))].map(g=>({value:g,label:g}))],initial:i.token},{kind:"select",name:"group",label:"\u5206\u7EC4",options:[{value:"",label:"\u5168\u90E8\u5206\u7EC4"},...h.map(g=>({value:g.name,label:g.name}))],initial:i.group},{kind:"select",name:"status",label:"\u72B6\u6001",options:py,initial:i.status},{kind:"select",name:"range",label:"\u65F6\u95F4\u8303\u56F4",options:fy,initial:i.range},{kind:"text",name:"since",label:"\u5F00\u59CB\u65E5\u671F",initial:i.since,placeholder:"YYYY-MM-DD",hint:"\u4EC5\u65F6\u95F4\u8303\u56F4\u9009\u300C\u81EA\u5B9A\u4E49\u8D77\u6B62\u300D\u65F6\u751F\u6548"},{kind:"text",name:"until",label:"\u7ED3\u675F\u65E5\u671F",initial:i.until,placeholder:"YYYY-MM-DD",hint:"\u4EC5\u65F6\u95F4\u8303\u56F4\u9009\u300C\u81EA\u5B9A\u4E49\u8D77\u6B62\u300D\u65F6\u751F\u6548"}],onCancel:S,onSubmit:g=>{let w=g.range??"",P=(g.since??"").trim(),$=(g.until??"").trim();if(w==="custom"&&(P!==""&&!Vm.safeParse(P).success||$!==""&&!Vm.safeParse($).success)){c("\u65E5\u671F\u65E0\u6548");return}s({model:g.model??"",requestId:g.requestId??"",token:g.token??"",group:g.group??"",status:g.status??"",range:w,since:P,until:$}),p.reset(),r({name:"list"})}});if(n.name==="detail")return Ge(gy,{log:n.log,quotaPerUsd:x.quotaPerUsd,width:t});let k=on(4,t);return Ai(ho,{flexDirection:"column",children:[Ge(ho,{height:k+1,flexDirection:"column",overflow:"hidden",children:Ge(ee,{state:d,loading:"\u6B63\u5728\u7EDF\u8BA1\u7B5B\u9009\u7ED3\u679C",width:t,children:g=>Ge(at,{width:t,tiles:[{label:"\u6D88\u8017",value:ae(g.quotaCost,x.quotaPerUsd)},{label:"RPM",value:Te(g.rpm)},{label:"TPM",value:Te(g.tpm)},{label:"\u5E76\u53D1",value:Te(g.concurrency)}]})})}),Ge(ee,{state:p.state,loading:"\u6B63\u5728\u8BFB\u53D6\u4F7F\u7528\u65E5\u5FD7",width:t,children:g=>Ai(ho,{flexDirection:"column",children:[Ge(Ce,{retain:"list",items:g.items,width:t,height:Math.max(3,o-2-k),columns:[{label:"\u65F6\u95F4"},{label:"\u6A21\u578B",shrink:!0},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u6D88\u8017",align:"right"},{label:"\u72B6\u6001",align:"right"}],row:w=>[K(w.createdAt),w.modelDisplayName,Te(w.promptTokens),Te(w.completionTokens),oo(w.quotaCost,x.quotaPerUsd),Zt(Rr(w.status))],onOpen:w=>r({name:"detail",log:w}),emptyLabel:b?"\u65E0\u5339\u914D\u7ED3\u679C":"\u6682\u65E0\u8C03\u7528\u8BB0\u5F55",emptyDescription:b?void 0:"\u901A\u8FC7\u4EE4\u724C\u8C03\u7528 API \u540E\uFF0C\u660E\u7EC6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),Ge(Tn,{page:p.page,pages:p.pages,total:p.total,width:t})]})})]})}})})}import{Box as sn,Text as qn}from"ink";import{useState as Ty}from"react";import{z as le}from"zod";var hy=ps.extend({id:le.number().int(),model:le.string(),displayName:le.string(),rules:Nc}),by=le.object({quotaPerUsd:le.number(),minTopupCny:le.number(),models:le.array(hy)});function Ii(e){return Nt(by,`${e}/api/pricing`)}var yy=le.object({cnyPerUsd:le.number(),groups:le.array(le.object({id:le.number().int(),name:le.string(),description:le.string(),multiplier:le.number()})),stats:le.object({requests:le.number(),errors:le.number(),latencyP50Ms:le.number().nullable(),firstByteP50Ms:le.number().nullable()}),heartbeat:le.object({groups:le.array(le.object({id:le.number().int(),name:le.string(),minutes:le.array(le.object({requests:le.number(),errors:le.number()}))}))})});function Xm(e,t){return Nt(yy,`${e}/api/pricing/${t}`)}var Sy=le.object({data:le.array(le.object({id:le.string()}))});async function Qm(e,t,o){return(await Nt(Sy,`${e}/v1/models`,{headers:{authorization:`Bearer ${t}`},...o===void 0?{}:{timeoutMs:o}})).data.map(r=>r.id)}var Zm=()=>L(Uc,"/provider-status");import{Text as bo}from"ink";import{jsx as Ni,jsxs as ed}from"react/jsx-runtime";var xy=` ${Z.bullet} `,td=1;function nd({providers:e}){return ed(bo,{wrap:"truncate",children:[Ni(bo,{color:u.faintForeground,children:"\u5B98\u65B9\u72B6\u6001"}),e.map(t=>{let o=Hc(t);return ed(bo,{children:[Ni(bo,{color:u.faintForeground,children:xy}),Ni(bo,{color:u.foreground,children:`${Vc(t.provider)} `}),Ni(bo,{color:Fe[o.tone],children:o.label})]},t.provider)})]})}import{jsx as be,jsxs as ar}from"react/jsx-runtime";var wy=4,ky=1+He,vy=e=>e.requests===0?u.border:e.errors===0?u.success:e.errors/e.requests>=.5?u.danger:u.warning;function _y({minutes:e,width:t}){let o=e.slice(Math.max(0,e.length-t)),n=[];for(let r of o){let i=vy(r),s=n[n.length-1];s!==void 0&&s.color===i?s.count+=1:n.push({color:i,count:1})}return be(qn,{wrap:"truncate",children:n.map((r,i)=>be(qn,{color:r.color,children:Z.barFilled.repeat(r.count)},i))})}function Ry({price:e,width:t,contentRows:o}){let n=B(),r=Q([e.id,n.revision],()=>Xm(n.ctx.site,e.id)),i=Oc(e,e.rules),s=i.length>1,a=e.rules.filter(Mc),c=t-ce,l=1+i.length,m=1+a.length;return be(ee,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u8BE6\u60C5",width:t,children:p=>{let d=p.stats,f=[{label:"\u53EF\u7528\u7387",value:d.requests>0?`${((d.requests-d.errors)/d.requests*100).toFixed(1)}%`:"\u2014"},{label:"\u8C03\u7528\u6B21\u6570",value:Te(d.requests)},{label:"\u5EF6\u8FDF P50",value:d.latencyP50Ms!==null?`${In(d.latencyP50Ms)} s`:"\u2014"},{label:"\u9996\u5B57\u8282 P50",value:d.firstByteP50Ms!==null?`${In(d.firstByteP50Ms)} s`:"\u2014"}],S=a.length>0?W+dt+m:0,b=ky+dt+on(f.length,c,2)+W+dt+l+S+W+dt,h=p.heartbeat.groups.length,y=o-b-wy-W-dt,x=Math.max(0,Math.floor(y/2));x<h&&(x=Math.max(0,Math.floor((y-1)/2))),x=Math.min(h,x);let k=x>0?W+dt+x*2+(x<h?1:0):0,g=Math.max(1,o-b-k);return ar(sn,{flexDirection:"column",children:[be(sn,{marginBottom:He,children:ar(qn,{wrap:"truncate",children:[be(qn,{bold:!0,color:u.foreground,children:e.displayName}),be(qn,{color:u.faintForeground,children:` ${e.model}`})]})}),be(te,{title:"\u8FD1 24 \u5C0F\u65F6",note:"\u5168\u90E8\u5206\u7EC4\u7684\u7EFC\u5408\u8C03\u7528\u7EDF\u8BA1",width:t,children:be(at,{width:c,tiles:f,maxPerRow:2})}),x>0&&be(sn,{marginTop:1,flexDirection:"column",children:ar(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=>ar(sn,{flexDirection:"column",children:[be(qn,{wrap:"truncate",color:u.foreground,children:w.name}),be(_y,{minutes:w.minutes,width:c})]},w.id)),x<h&&be(qn,{color:u.faintForeground,children:`\u5176\u4F59 ${h-x} \u4E2A\u5206\u7EC4\u672A\u663E\u793A`})]})}),be(sn,{marginTop:1,flexDirection:"column",children:be(te,{title:"\u6A21\u578B\u4EF7\u683C",note:"\u6BCF\u767E\u4E07 Token \u7684\u7F8E\u5143\u6807\u4EF7",width:t,children:be(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&&be(sn,{marginTop:1,flexDirection:"column",children:be(te,{title:"\u8BF7\u6C42\u53C2\u6570\u500D\u7387",note:"\u547D\u4E2D\u65F6 Token \u8D39\u7528\u4E58\u4EE5\u500D\u7387\uFF0C\u591A\u6761\u547D\u4E2D\u4F9D\u6B21\u76F8\u4E58",width:t,children:be(Ce,{items:a,width:c,height:m,columns:[{label:"\u53C2\u6570\u540D",shrink:!0},{label:"\u53C2\u6570\u503C",shrink:!0},{label:"\u500D\u7387",align:"right"}],row:w=>[w.param,w.value,`\xD7${w.multiplier}`]})})}),be(sn,{marginTop:1,flexDirection:"column",children:be(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?be(ye,{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"}):be(Ce,{items:p.groups,width:c,height:g,columns:[{label:"\u5206\u7EC4",shrink:!0},{label:"\u8BF4\u660E",shrink:!0},{label:"\u500D\u7387",align:"right"},{label:"\u5355\u4EF7",align:"right"}],row:w=>[w.name,w.description,`\xD7${w.multiplier}`,`\xA5${(p.cnyPerUsd*w.multiplier).toFixed(2)}`]})})})]})}})}function od(){let e=B(),{width:t}=j(),o=ne(),[n,r]=Ty({name:"list"}),i=Q([e.revision],async()=>(await Ii(e.ctx.site)).models),s=Q([e.revision],Zm);z(c=>{c==="r"&&e.reload()});let a=()=>{n.name==="list"?e.pop():r({name:"list"})};return be(X,{hints:n.name==="list"?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","/ \u8FC7\u6EE4","r \u5237\u65B0"]:["\u2191\u2193 \u6EDA\u52A8","r \u5237\u65B0","Esc \u8FD4\u56DE"],onEscape:a,children:be(ee,{state:i,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u5B9A\u4EF7",width:t,children:c=>{if(c.length===0)return be(ye,{tone:"info",width:t,title:"\u6682\u65E0\u6A21\u578B"});if(n.name==="detail")return be(Ry,{price:n.price,width:t,contentRows:o});let l=s.phase==="ready"?jc(s.data.providers):[],m=l.length>0?td+W:0;return ar(sn,{flexDirection:"column",children:[l.length>0&&be(sn,{marginBottom:W,children:be(nd,{providers:l})}),be(Ce,{retain:"list",items:c,width:t,height:o-m,columns:[{label:"\u6A21\u578B",shrink:!0},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u7F13\u5B58\u8BFB\u53D6",align:"right"},{label:"\u7F13\u5B58\u5199\u5165",align:"right"}],row:p=>[p.displayName,Dt(p.inputPricePerMillionTokens,"-"),Dt(p.outputPricePerMillionTokens,"-"),Dt(p.cachedInputPricePerMillionTokens,"-"),Dt(p.cacheWritePricePerMillionTokens,"-")],searchOf:p=>`${p.displayName} ${p.model}`,onOpen:p=>r({name:"detail",price:p}),emptyLabel:"\u65E0\u5339\u914D\u7ED3\u679C"})]})}})})}import{Box as Wn,Text as qd}from"ink";import{useState as Ui}from"react";function rd(e,t){let o=e.line??t.apiLines[0];if(o===void 0)throw new O("\u7AD9\u70B9\u672A\u914D\u7F6E\u63A5\u5165\u7EBF\u8DEF",{hint:"\u8BF7\u8054\u7CFB\u7AD9\u70B9\u7BA1\u7406\u5458\u5728\u8BBE\u7F6E\u91CC\u6DFB\u52A0\u63A5\u5165\u7EBF\u8DEF"});return o}async function id(e,t){let o=await Ae(e.site);return Qm(rd(Ln(),o).url,t)}async function sd(e,t,o){let n=await Ae(e.site),r=rd(Ln(),n).url;return{input:{siteName:n.siteName,baseUrl:t.relayUrl(r),apiKey:o},at:t.resolveDir()}}async function ad(e,t,o){let{input:n,at:r}=await sd(e,t,o);t.apply(n,r)}async function cd(e,t,o,n,r){let{input:i,at:s}=await sd(e,t,o);t.apply({...i,model:n,models:r},s)}import{homedir as gd}from"os";import{join as Li,resolve as Iy}from"path";import Py from"json5";import{applyEdits as Cy,modify as Ey,parse as Ay}from"jsonc-parser";function ld(e,t){if(typeof e!="object"||e===null||Array.isArray(e))throw new O(`${t} \u7684\u9876\u5C42\u4E0D\u662F\u5BF9\u8C61\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`);return e}function ud(e){let t=[],o=Ay(e,t,{allowTrailingComma:!0});return t.length>0?null:o}function md(e,t){let o=ud(e);if(o!==null)return{root:ld(o,t),jsonc:!0};try{return{root:ld(Py.parse(e),t),jsonc:!1}}catch(n){throw new O(`${t} \u4E0D\u662F\u5408\u6CD5 JSON\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`,{cause:n})}}function _n(e,t){let o=e;for(let n of t){if(typeof o!="object"||o===null||Array.isArray(o))return;o=o[n]}return o}function cr(e){let t=ct(e);return t===null?null:md(t,e).root}function an(e,t){let o=cr(e),n=o===null?void 0:_n(o,t);return typeof n=="string"?n:null}function Mi(e,t){let o=cr(e);return o!==null&&_n(o,t)!==void 0}function gt(e,t){let o=ct(e)??"{}",n=o.includes(`\r
|
|
14
14
|
`)?`\r
|
|
15
15
|
`:`
|
|
16
16
|
`,r=md(o,e);r.jsonc||(o=JSON.stringify(r.root,null,2).replaceAll(`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codeflow-ai/cli",
|
|
3
|
-
"version": "1.25.
|
|
3
|
+
"version": "1.25.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "CodeFlow 命令行客户端:一键配置 AI 客户端",
|
|
6
6
|
"keywords": [
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"node": ">=22"
|
|
19
19
|
},
|
|
20
20
|
"bin": {
|
|
21
|
-
"codeflow": "
|
|
21
|
+
"codeflow": "dist/cli.js"
|
|
22
22
|
},
|
|
23
23
|
"files": [
|
|
24
24
|
"dist"
|