@helixlife-ai/xiantao 0.1.38 → 0.1.39

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.
@@ -1,2 +1,2 @@
1
- import{XtzCommand as n}from"../../base-command.js";import{XtzError as s}from"../../lib/errors.js";import{checkToken as h}from"../../lib/auth.js";import{globalFlags as u}from"../../lib/flags.js";import{getTokenPath as f,loadToken as l}from"../../lib/storage.js";class i extends n{static description="Show token auth status for the current profile";static flags={...u};async run(){this.warnIfLegacyAuthCommand();const{flags:e}=await this.parse(i),o=await this.getProfile(e.profile),t=f(o),r=await l(o),a=r?await this.resolveAuthorization(o,r):{authorized:!1,reason:"missing_token"};this.print(e,{agent:o,authorized:a.authorized,reason:a.reason,token_path:t},this.formatStatusText(o,t,a),{profile:o})}async resolveAuthorization(e,o){try{return await h(e,o),{authorized:!0,reason:null}}catch(t){if(!(t instanceof s)||!t.message.includes("\u6388\u6743\u5DF2\u8FC7\u671F"))throw t;return{authorized:!1,reason:"expired_token"}}}formatStatusText(e,o,t){const r=[`profile: ${e}`,`authorized: ${t.authorized}`,`token: ${o}`];return!t.authorized&&t.reason&&(r.push(`reason: ${t.reason}`),r.push(`run: xt login --profile ${e}`)),r.join(`
2
- `)}}export{i as default};
1
+ import{XtzCommand as i}from"../../base-command.js";import{XtzError as s}from"../../lib/errors.js";import{checkToken as h}from"../../lib/auth.js";import{globalFlags as u}from"../../lib/flags.js";import{getTokenPath as f,loadToken as l}from"../../lib/storage.js";class n extends i{static description="Show token auth status for the current profile";static flags={...u};async run(){this.warnIfLegacyAuthCommand();const{flags:o}=await this.parse(n),e=await this.getProfile(o.profile),t=f(e),r=await l(e),a=r?await this.resolveAuthorization(e,r):{authorized:!1,reason:"missing_token"};this.print(o,{agent:e,authorized:a.authorized,reason:a.reason,token_path:t},this.formatStatusText(e,t,a),{profile:e})}async resolveAuthorization(o,e){try{const t=await h(o,e);return t.success===!1?{authorized:!1,reason:t.message?.includes("\u6388\u6743\u5DF2\u8FC7\u671F")?"expired_token":"authorization_pending"}:{authorized:!0,reason:null}}catch(t){if(!(t instanceof s)||!t.message.includes("\u6388\u6743\u5DF2\u8FC7\u671F"))throw t;return{authorized:!1,reason:"expired_token"}}}formatStatusText(o,e,t){const r=[`profile: ${o}`,`authorized: ${t.authorized}`,`token: ${e}`];return!t.authorized&&t.reason&&(r.push(`reason: ${t.reason}`),t.reason!=="authorization_pending"&&r.push(`run: xt login --profile ${o}`)),r.join(`
2
+ `)}}export{n as default};
package/dist/lib/auth.js CHANGED
@@ -1 +1 @@
1
- import{debugHttpError as d,debugHttpRequest as k,debugHttpResponse as m}from"./debug.js";import{resolveAuthUrlEndpoint as h,resolveCheckTokenEndpoint as l,resolveTicketExchangeEndpoint as f}from"./config.js";import{XtzError as i,raiseApiError as g}from"./errors.js";import{openUrl as y}from"./open-url.js";import{requestJson as c}from"./http.js";import{loadToken as T,requireToken as p,saveToken as x}from"./storage.js";async function A(t){const o=await T(t),e=await c(await h(),{headers:a(o)},{agent:t}),n=new URL(e.data.link_url);return n.searchParams.set("source",t),{linkUrl:n.toString(),tokenKey:e.data.token_key}}async function O(t,o=!0){const{linkUrl:e,tokenKey:n}=await A(t),s=await x(t,n);return{browserOpened:o?await y(e):!1,linkUrl:e,token:n,tokenPath:s}}async function R(t,o){const e=o?.trim()||await p(t);return{agent:t,token:e}}async function q(t,o){const e=o??await p(t),n=new URL(await l());return n.searchParams.set("token_key",e),(await c(n.toString(),{headers:a(e)},{agent:t})).data}async function z(t,o){const e=await c(await f(),{body:JSON.stringify({code:o.trim()}),headers:a(t.token,!0),method:"POST"},{agent:t.agent});return e.success===!1&&await g(e,{agent:t.agent}),e.data}async function C(t,o={}){const e=o.timeoutMs??12e4,n=o.intervalMs??1500,s=Date.now()+e;let r="";for(;Date.now()<s;){const u=await S(t);if(u.success)return;r=u.message?.trim()||r,await new Promise(w=>setTimeout(w,n))}throw new i(r?`\u7B49\u5F85\u6388\u6743\u5B8C\u6210\u8D85\u65F6: ${r}`:"\u7B49\u5F85\u6388\u6743\u5B8C\u6210\u8D85\u65F6\uFF0C\u8BF7\u91CD\u65B0\u8FD0\u884C `xt login`\u3002")}async function S(t){const o=new URL(await l());o.searchParams.set("token_key",t);const e={headers:a(t)};let n;k(o.toString(),e);try{n=await fetch(o.toString(),e)}catch(r){throw d(o.toString(),r),new i("\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002")}const s=await n.text();m(o.toString(),n,s);try{const r=JSON.parse(s);return{message:r.message,success:n.ok&&r.success!==!1}}catch{throw new i("\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6CD5\u89E3\u6790\u7684\u54CD\u5E94\u3002")}}function a(t,o=!1){const e={platform:"pc",source:"PC"};return t?.trim()&&(e.Authorization=`Bearer ${t.trim()}`),o&&(e["Content-Type"]="application/json"),e}export{q as checkToken,z as exchangeTicket,A as fetchAuthLink,R as getAuthContext,O as loginAuth,C as waitForAuthorizedToken};
1
+ import{debugHttpError as k,debugHttpRequest as m,debugHttpResponse as d}from"./debug.js";import{resolveAuthUrlEndpoint as h,resolveCheckTokenEndpoint as l,resolveTicketExchangeEndpoint as f}from"./config.js";import{XtzError as i,raiseApiError as g}from"./errors.js";import{openUrl as y}from"./open-url.js";import{requestJson as c}from"./http.js";import{loadToken as T,requireToken as p,saveToken as x}from"./storage.js";async function A(t){const o=await T(t),e=await c(await h(),{headers:a(o)},{agent:t}),n=new URL(e.data.link_url);return n.searchParams.set("source",t),{linkUrl:n.toString(),tokenKey:e.data.token_key}}async function O(t,o=!0){const{linkUrl:e,tokenKey:n}=await A(t),s=await x(t,n);return{browserOpened:o?await y(e):!1,linkUrl:e,token:n,tokenPath:s}}async function R(t,o){const e=o?.trim()||await p(t);return{agent:t,token:e}}async function q(t,o){const e=o??await p(t),n=new URL(await l());return n.searchParams.set("token_key",e),await c(n.toString(),{headers:a(e)},{agent:t})}async function z(t,o){const e=await c(await f(),{body:JSON.stringify({code:o.trim()}),headers:a(t.token,!0),method:"POST"},{agent:t.agent});return e.success===!1&&await g(e,{agent:t.agent}),e.data}async function C(t,o={}){const e=o.timeoutMs??12e4,n=o.intervalMs??1500,s=Date.now()+e;let r="";for(;Date.now()<s;){const u=await S(t);if(u.success)return;r=u.message?.trim()||r,await new Promise(w=>setTimeout(w,n))}throw new i(r?`\u7B49\u5F85\u6388\u6743\u5B8C\u6210\u8D85\u65F6: ${r}`:"\u7B49\u5F85\u6388\u6743\u5B8C\u6210\u8D85\u65F6\uFF0C\u8BF7\u91CD\u65B0\u8FD0\u884C `xt login`\u3002")}async function S(t){const o=new URL(await l());o.searchParams.set("token_key",t);const e={headers:a(t)};let n;m(o.toString(),e);try{n=await fetch(o.toString(),e)}catch(r){throw k(o.toString(),r),new i("\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002")}const s=await n.text();d(o.toString(),n,s);try{const r=JSON.parse(s);return{message:r.message,success:n.ok&&r.success!==!1}}catch{throw new i("\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6CD5\u89E3\u6790\u7684\u54CD\u5E94\u3002")}}function a(t,o=!1){const e={platform:"pc",source:"PC"};return t?.trim()&&(e.Authorization=`Bearer ${t.trim()}`),o&&(e["Content-Type"]="application/json"),e}export{q as checkToken,z as exchangeTicket,A as fetchAuthLink,R as getAuthContext,O as loginAuth,C as waitForAuthorizedToken};
@@ -1 +1 @@
1
- const o="opencode",A=".config/helixlife/config.json",t=".config/helixlife/update-check.json",c=".config/helixlife/config.json",e="https://agent.helixlife.cn"?.trim(),_=process.env.XTZ_BUILD_XIANTAO_LOGIN_URL?.trim(),n=(e||"https://agent.helixlife.cn").replace(/\/+$/,""),T=_||"https://agent.helixlife.cn/",I="c0b6febb-52dd-4525-970a-61bbe9e263ff",U="2d491694-8c8d-11ee-9409-00163e118c99";export{o as DEFAULT_AGENT,n as DEFAULT_XIANTAO_BASE_URL,T as DEFAULT_XIANTAO_LOGIN_URL,I as DEFAULT_XIANTAO_TOOL_PRODUCT_UUID,c as XIANTAO_CONFIG_PATH,U as XIANTAO_HISTORY_UUID,A as XTZ_CONFIG_PATH,t as XTZ_UPDATE_CHECK_PATH};
1
+ const o="opencode",A=".config/helixlife/config.json",t=".config/helixlife/update-check.json",c=".config/helixlife/config.json",e="https://agent.helixlife.net"?.trim(),_=process.env.XTZ_BUILD_XIANTAO_LOGIN_URL?.trim(),n=(e||"https://agent.helixlife.cn").replace(/\/+$/,""),T=_||"https://agent.helixlife.cn/",I="c0b6febb-52dd-4525-970a-61bbe9e263ff",U="2d491694-8c8d-11ee-9409-00163e118c99";export{o as DEFAULT_AGENT,n as DEFAULT_XIANTAO_BASE_URL,T as DEFAULT_XIANTAO_LOGIN_URL,I as DEFAULT_XIANTAO_TOOL_PRODUCT_UUID,c as XIANTAO_CONFIG_PATH,U as XIANTAO_HISTORY_UUID,A as XTZ_CONFIG_PATH,t as XTZ_UPDATE_CHECK_PATH};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helixlife-ai/xiantao",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "description": "CLI for Xiantao bioinformatics tools",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",