@helixlife-ai/xiantao 0.1.22 → 0.1.24
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.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Args as e,Flags as n}from"@oclif/core";import{XtzCommand as d}from"../../base-command.js";import{getAuthContext as u}from"../../lib/auth.js";import{globalFlags as l}from"../../lib/flags.js";import{saveXiantaoOutput as m}from"../../lib/xiantao-plot.js";class a extends d{static description="Save a direct analysis result to history";static args={fuid:e.string({description:"Result fuid returned by tool exec",required:!0}),uuid:e.string({description:"Tool UUID used in the analysis",required:!0}),moduleId:e.string({description:"Module id, e.g. gokegg_analysis",required:!0}),name:e.string({description:"Name to save the record as",required:!0})};static flags={...l,token:n.string({description:"Bearer token for agent.helixlife.cn xiantao APIs; falls back to the stored agent token"})};async run(){const{args:t,flags:i}=await this.parse(a),r=await this.getProfile(i.profile),o=await u(r,i.token);await m(o,{fuid:t.fuid,moduleId:t.moduleId,name:t.name,uuid:t.uuid});const s={agent:r,fuid:t.fuid,module_id:t.moduleId,name:t.name,uuid:t.uuid};this.print(i,s,`\u5DF2\u4FDD\u5B58: ${t.name}`,{command:"history save",profile:r})}}export{a as default};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{Args as f,Flags as d}from"@oclif/core";import{XtzCommand as l}from"../../base-command.js";import{getAuthContext as c}from"../../lib/auth.js";import{fetchXiantaoHistoryDownloadButtons as u}from"../../lib/history.js";import{globalFlags as g}from"../../lib/flags.js";class a extends l{static description="View downloadable files for a Xiantao history record";static args={fuid:f.string({description:"History record fuid",required:!0})};static flags={...g,token:d.string({description:"Bearer token for agent.helixlife.cn xiantao APIs; falls back to the stored agent token"})};async run(){const{args:o,flags:t}=await this.parse(a),i=await this.getProfile(t.profile),e=await c(i,t.token),r=await u(e,{fuid:o.fuid}),s={agent:i,downloads:r.downloads,fuid:o.fuid},n=this.formatText(o.fuid,r.downloads);this.print(t,s,n,{command:"history view",profile:i})}formatText(o,t){if(t.length===0)return`fuid: ${o}
|
|
2
|
+
|
|
3
|
+
\u6682\u65E0\u53EF\u4E0B\u8F7D\u6587\u4EF6`;const i=[`fuid: ${o}`,"",`\u53EF\u4E0B\u8F7D\u6587\u4EF6\uFF08\u5171 ${t.length} \u9879\uFF09\uFF1A`];return t.forEach((e,r)=>{i.push(` ${r+1}. ${e.label} (device=${e.device})`)}),i.join(`
|
|
4
|
+
`)}}export{a as default};
|
package/dist/lib/xiantao-auth.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import m from"node:http";import{AUTH_BIND_ENDPOINT as p,PASSPORT_JUMP_ENDPOINT as w}from"./constants.js";import{openUrl as d}from"./open-url.js";import{XtzError as c}from"./errors.js";import{requestJson as E}from"./http.js";import{getXiantaoTokenPath as F,loadXiantaoToken as f,requireXiantaoToken as D,saveXiantaoToken as k}from"./storage.js";async function y(t,e){const a=e?.trim()||process.env.XIANTAO_TOKEN?.trim()||await D(t);return{agent:t,token:a}}async function h(t){const e=await f(t);return e?{agent:t,token:e}:void 0}async function C(t){const e=await g(),a=e.callbackUrl.toString(),u=new URL(w);u.searchParams.set("cb_url",a);const
|
|
1
|
+
import m from"node:http";import{AUTH_BIND_ENDPOINT as p,PASSPORT_JUMP_ENDPOINT as w}from"./constants.js";import{openUrl as d}from"./open-url.js";import{XtzError as c}from"./errors.js";import{requestJson as E}from"./http.js";import{getXiantaoTokenPath as F,loadXiantaoToken as f,requireXiantaoToken as D,saveXiantaoToken as k}from"./storage.js";async function y(t,e){const a=e?.trim()||process.env.XIANTAO_TOKEN?.trim()||await D(t);return{agent:t,token:a}}async function h(t){const e=await f(t);return e?{agent:t,token:e}:void 0}async function C(t){const e=await g(),a=e.callbackUrl.toString(),u=new URL(w);u.searchParams.set("cb_url",a);const o=await d(u.toString()),i=await e.waitForToken(),l=await k(t,i);return{browserOpened:o,callbackUrl:a,jumpUrl:u.toString(),reused:!1,token:i,tokenPath:l}}async function T(t,e){const a=await h(t);if(a){try{await E(p,{body:JSON.stringify({auth_key:e}),headers:{Authorization:`Bearer ${a.token}`,"Content-Type":"application/json",origin:"https://www.helixlife.net",platform:"pc",referer:"https://www.helixlife.net/",source:"PC"},method:"POST"},{agent:t,tokenKind:"xiantao"})}catch(u){if(u instanceof c&&u.message.includes("\u4ED9\u6843\u7F51\u9875\u6388\u6743\u5DF2\u8FC7\u671F\u6216\u65E0\u6548"))return;throw u}return{browserOpened:!1,reused:!0,token:a.token,tokenPath:F(t)}}}async function g(){let t,e;const a=new Promise((r,n)=>{t=r,e=n}),u=m.createServer((r,n)=>{const s=new URL(r.url??"/","http://127.0.0.1").searchParams.get("t")?.trim();if(n.statusCode=s?200:400,n.setHeader("Content-Type","text/html; charset=utf-8"),n.end(s?B:P),u.close(),s){t(s);return}e(new c("\u672A\u4ECE\u6D4F\u89C8\u5668\u56DE\u8C03\u4E2D\u83B7\u53D6\u5230\u4ED9\u6843\u7F51\u9875 token"))});await new Promise((r,n)=>{u.listen(0,"127.0.0.1",()=>r()),u.once("error",n)});const o=u.address();if(!o||typeof o=="string")throw u.close(),new c("\u65E0\u6CD5\u542F\u52A8\u672C\u5730\u767B\u5F55\u56DE\u8C03\u670D\u52A1");const i=new URL(`http://127.0.0.1:${o.port}/callback`),l=setTimeout(()=>{u.close(),e(new c("\u7B49\u5F85\u4ED9\u6843\u7F51\u9875\u767B\u5F55\u56DE\u8C03\u8D85\u65F6"))},300*1e3);return{callbackUrl:i,waitForToken:async()=>{try{return await a}finally{clearTimeout(l)}}}}const B=`<!doctype html>
|
|
2
2
|
<html lang="zh-CN">
|
|
3
3
|
<head><meta charset="utf-8"><title>\u767B\u5F55\u6210\u529F</title></head>
|
|
4
4
|
<body><p>\u4ED9\u6843\u7F51\u9875\u767B\u5F55\u6210\u529F\uFF0C\u73B0\u5728\u53EF\u4EE5\u5173\u95ED\u6B64\u9875\u9762\u5E76\u56DE\u5230\u7EC8\u7AEF\u3002</p></body>
|
package/dist/lib/xiantao-plot.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{XIANTAO_BIO_API_ENDPOINT as
|
|
1
|
+
import{XIANTAO_BIO_API_ENDPOINT as d}from"./constants.js";import{XtzError as m}from"./errors.js";import{requestJson as n}from"./http.js";import{buildXiantaoHeaders as s}from"./xiantao.js";async function I(o,e){const a=await n(d,{body:JSON.stringify({version:"v3",name:"public.verify.upload",args:{id:{module_id:e.moduleId,uuid:e.uuid},args_data:{duid:"",info:c(e.uploads)},args_main:e.argsMain}}),headers:s(o,!0),method:"POST"},{agent:o.agent}),i=a.data.id?.duid;if(!i)throw new m(a.message??"\u672A\u83B7\u53D6\u5230 duid");return{duid:i,schema:a.data.args_main??[]}}async function h(o,e){const a=await n(d,{body:JSON.stringify({version:"v3",name:"common.module",extra_args:{name:e.route},args:{action:"submit",id:{module_id:e.moduleId,uuid:e.uuid},args_data:v(e.duid,e.input),args_main:e.argsMain,args_specific:e.argsSpecific}}),headers:s(o,!0),method:"POST"},{agent:o.agent,allowErrorPayload:u=>f(u.message)}),i=g(a.data.data),t=typeof a.data.file=="string"&&a.data.file.trim()?a.data.file.trim():void 0,l=a.data.body??"",r=a.message??"";if(!t&&!l&&i.length===0){if(f(r))return{asyncSubmission:!0,body:l,downloads:i,file:t,message:r};throw new m(r||"\u672A\u83B7\u53D6\u5230\u53EF\u7528\u7ED3\u679C")}return{asyncSubmission:!1,body:l,downloads:i,file:t,message:r}}async function x(o,e){const a=await n(d,{body:JSON.stringify({version:"v3",name:e.item.endpoint,args:{tag:"download",name:e.item.endpoint,fuid:e.item.fuid,sign:e.item.sign,device:e.item.device,index:e.item.index,info:e.item.info,pos:e.item.pos,id:{uuid:e.uuid,module_id:e.moduleId}}}),headers:s(o,!0),method:"POST"},{agent:o.agent}),i=a.data.url?.trim();if(!i)throw new m(a.message??"\u672A\u83B7\u53D6\u5230\u4E0B\u8F7D\u94FE\u63A5");return{fileName:a.data.file_name?.trim()||void 0,url:i}}function g(o){const e=[...o?.buttons??[]];for(const a of o?.tabs??[])for(const i of a.sections??[])e.push(...i.button??[]);return e.flatMap(a=>a.tag!=="download"||!a.device||!a.endpoint||!a.fuid||!a.label?[]:[{device:a.device,endpoint:a.endpoint,fuid:a.fuid,index:a.index,info:a.info,label:a.label,pos:a.pos,sign:a.sign}])}function y(o){return o.fileOssPath??o.fileOss}function _(o){return o.fileSizeForXiantao??o.fileSize}function v(o,e){return e.kind==="cloud"?{duid:o,info:{[e.cloud.key]:b(e.cloud.record)}}:e.kind==="record"?{duid:o,info:{[e.record.key]:{label:e.record.label,module_id:e.record.moduleId,module_name:e.record.moduleName,record_id:e.record.recordId,record_name:e.record.recordName,time:e.record.time,type:"record"}}}:{duid:o,info:c(e.uploads)}}function b(o){const e=structuredClone(o);return(typeof e.type!="string"||!e.type.trim())&&(e.type="cloud"),e}function c(o){return Object.fromEntries(o.map(e=>[e.key,{file_oss:y(e.upload),file_name:e.upload.fileName,file_size:_(e.upload),type:"upload"}]))}async function N(o,e){await n(d,{body:JSON.stringify({version:"v3",name:"public.output.save",args:{tag:"msg-box",type:"all",name:"public.output.save",fuid:e.fuid,pos:"main",id:{uuid:e.uuid,module_id:e.moduleId},value:e.name}}),headers:s(o,!0),method:"POST"},{agent:o.agent})}function f(o){return!!o?.includes("\u4EFB\u52A1\u63D0\u4EA4\u6210\u529F")}export{v as buildSubmitArgsData,x as resolveXiantaoDownload,N as saveXiantaoOutput,h as submitXiantaoPlot,I as verifyXiantaoPlotUpload};
|