@openyida/yidacli 0.1.12 → 0.1.14
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/env.js +1 -1
- package/dist/utils.js +1 -1
- package/openyida/.cache/demo-schema.json +2353 -0
- package/package.json +1 -1
- package/openyida/.cache/.gitkeep +0 -0
package/dist/env.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
let fs=require("fs"),path=require("path"),os=require("os"),{detectActiveTool,loadCookieData,resolveBaseUrl,extractInfoFromCookies}=require("./utils"),home=os.homedir();function getInstalledTools(){return[{dirName:".real",displayName:"悟空(Wukong)"},{dirName:".opencode",displayName:"OpenCode"},{dirName:".claudecode",displayName:"Claude Code"},{dirName:".aone_copilot",displayName:"Aone Copilot"},{dirName:".cursor",displayName:"Cursor"},{dirName:".qoder",displayName:"Qoder"},{dirName:".iflow",displayName:"iFlow"}].filter(({dirName:o})=>fs.existsSync(path.join(home,o)))}function detectEnvironment(){let n=detectActiveTool();var o=getInstalledTools();let r=path.join(process.cwd(),"openyida");o=o.map(({dirName:o,displayName:e})=>{var l=".real"===o,s=n&&n.dirName===o,l=l?path.join(home,".real","workspace","openyida"):r;return{displayName:e,dirName:o,isActive:!!s,hasProject:fs.existsSync(l),workspaceRoot:l}});return{activeToolName:n?n.displayName:null,activeProjectRoot:n?n.workspaceRoot:null,results:o}}function detectLoginStatus(o){var e,l,s,o=loadCookieData(o);return o&&o.cookies?({csrfToken:e,corpId:l,userId:s}=extractInfoFromCookies(o.cookies),{loggedIn:!!e,csrfToken:e,corpId:l,userId:s,baseUrl:resolveBaseUrl(o)}):{loggedIn:!1,csrfToken:null,corpId:null,userId:null,baseUrl:null}}function run(){var o="=".repeat(55),{activeToolName:e,activeProjectRoot:l,results:s}=(console.log(o),console.log(" yidacli env - 环境检测"),console.log(o),console.log("\n📋 系统信息"),console.log(` 操作系统: ${process.platform} (${os.arch()})`),console.log(" Node.js: "+process.version),console.log(" 主目录: "+os.homedir()),console.log(" 工作目录: "+process.cwd()),console.log("\n🤖 AI 工具检测"),detectEnvironment());if(0===s.length)console.log(" ⚠️ 未检测到任何已知 AI 工具");else for(var{displayName:n,isActive:r,hasProject:a,workspaceRoot:t}of s){let o,e;e=r&&a?(o="✅","← 当前活跃,项目已就绪"):r&&!a?(o="🟡","← 当前活跃,但无 openyida 项目"):!r&&a?(o="⬜","(已安装,项目存在,但未活跃)"):(o="⬜","(已安装,未活跃)"),console.log(` ${o} ${n.padEnd(18)} `+e)}console.log("\n🎯 当前生效环境"),e&&l?(console.log(" AI 工具: "+e),console.log(" 项目根目录: "+l)):(0<(e=s.filter(o=>o.isActive)).length?console.log(` AI 工具: ${e.map(o=>o.displayName).join(", ")} (活跃,但无 openyida 项目)`):console.log(" AI 工具: 未检测到活跃工具"),console.log(` 项目根目录: ${process.cwd()} (fallback)`)),console.log("\n🔐 登录态检测");s=detectLoginStatus(l
|
|
1
|
+
let fs=require("fs"),path=require("path"),os=require("os"),{detectActiveTool,loadCookieData,resolveBaseUrl,extractInfoFromCookies}=require("./utils"),home=os.homedir();function getInstalledTools(){return[{dirName:".real",displayName:"悟空(Wukong)"},{dirName:".opencode",displayName:"OpenCode"},{dirName:".claudecode",displayName:"Claude Code"},{dirName:".aone_copilot",displayName:"Aone Copilot"},{dirName:".cursor",displayName:"Cursor"},{dirName:".qoder",displayName:"Qoder"},{dirName:".iflow",displayName:"iFlow"}].filter(({dirName:o})=>fs.existsSync(path.join(home,o)))}function detectEnvironment(){let n=detectActiveTool();var o=getInstalledTools();let r=path.join(process.cwd(),"openyida");o=o.map(({dirName:o,displayName:e})=>{var l=".real"===o,s=n&&n.dirName===o,l=l?path.join(home,".real","workspace","openyida"):r;return{displayName:e,dirName:o,isActive:!!s,hasProject:fs.existsSync(l),workspaceRoot:l}});return{activeToolName:n?n.displayName:null,activeProjectRoot:n?n.workspaceRoot:null,results:o}}function detectLoginStatus(o){var e,l,s,o=loadCookieData(o);return o&&o.cookies?({csrfToken:e,corpId:l,userId:s}=extractInfoFromCookies(o.cookies),{loggedIn:!!e,csrfToken:e,corpId:l,userId:s,baseUrl:resolveBaseUrl(o)}):{loggedIn:!1,csrfToken:null,corpId:null,userId:null,baseUrl:null}}function run(){var o="=".repeat(55),{activeToolName:e,activeProjectRoot:l,results:s}=(console.log(o),console.log(" yidacli env - 环境检测"),console.log(o),console.log("\n📋 系统信息"),console.log(` 操作系统: ${process.platform} (${os.arch()})`),console.log(" Node.js: "+process.version),console.log(" 主目录: "+os.homedir()),console.log(" 工作目录: "+process.cwd()),console.log("\n🤖 AI 工具检测"),detectEnvironment());if(0===s.length)console.log(" ⚠️ 未检测到任何已知 AI 工具");else for(var{displayName:n,isActive:r,hasProject:a,workspaceRoot:t}of s){let o,e;e=r&&a?(o="✅","← 当前活跃,项目已就绪"):r&&!a?(o="🟡","← 当前活跃,但无 openyida 项目"):!r&&a?(o="⬜","(已安装,项目存在,但未活跃)"):(o="⬜","(已安装,未活跃)"),console.log(` ${o} ${n.padEnd(18)} `+e)}console.log("\n🎯 当前生效环境"),e&&l?(console.log(" AI 工具: "+e),console.log(" 项目根目录: "+l)):(0<(e=s.filter(o=>o.isActive)).length?console.log(` AI 工具: ${e.map(o=>o.displayName).join(", ")} (活跃,但无 openyida 项目)`):console.log(" AI 工具: 未检测到活跃工具"),console.log(` 项目根目录: ${process.cwd()} (fallback)`)),console.log("\n🔐 登录态检测");s=detectLoginStatus(l&&fs.existsSync(l)?l:process.cwd());s.loggedIn?(console.log(" 状态: ✅ 已登录"),console.log(" 域名: "+s.baseUrl),console.log(" 组织 ID: "+(s.corpId||"(未知)")),console.log(" 用户 ID: "+(s.userId||"(未知)")),console.log(` csrf_token: ${s.csrfToken.slice(0,16)}...`)):console.log(" 状态: ❌ 未登录(运行 yidacli login 进行登录)"),console.log("\n"+o)}module.exports={run:run,detectEnvironment:detectEnvironment,detectLoginStatus:detectLoginStatus};
|
package/dist/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
let fs=require("fs"),path=require("path"),os=require("os"),execSync=require("child_process").execSync;function detectActiveTool(){var e=process.env,o=process.cwd(),r=os.homedir();return e.QODER_IDE||e.QODER_AGENT?{tool:"qoder",displayName:"Qoder",dirName:".qoder",workspaceRoot:path.join(o,"openyida")}:e.CLAUDE_CODE?{tool:"claude-code",displayName:"Claude Code",dirName:".claudecode",workspaceRoot:path.join(o,"openyida")}:e.OPENCODE?{tool:"opencode",displayName:"OpenCode",dirName:".opencode",workspaceRoot:path.join(o,"openyida")}:e.CURSOR_TRACE_ID||(e.VSCODE_GIT_ASKPASS_NODE||"").includes("Cursor")?{tool:"cursor",displayName:"Cursor",dirName:".cursor",workspaceRoot:path.join(o,"openyida")}:e.IFLOW_ACTIVE||e.IFLOW_IDE?{tool:"iflow",displayName:"iFlow",dirName:".iflow",workspaceRoot:path.join(o,"openyida")}:e.AGENT_WORK_ROOT&&e.AGENT_WORK_ROOT.includes(".real")?{tool:"wukong",displayName:"悟空(Wukong)",dirName:".real",workspaceRoot:path.join(r,".real","workspace","openyida")}:"vscode"===e.TERM_PROGRAM?{tool:"aone-copilot",displayName:"Aone Copilot",dirName:".aone_copilot",workspaceRoot:path.join(o,"openyida")}:null}function findProjectRoot(){var e=detectActiveTool();return e&&fs.existsSync(e.workspaceRoot)?e.workspaceRoot:process.cwd()}function extractInfoFromCookies(e){let o=null,r=null,t=null;for(var n of e){var s;"tianshu_csrf_token"===n.name?o=n.value:"tianshu_corp_user"===n.name&&0<(s=n.value.lastIndexOf("_"))&&(r=n.value.slice(0,s),t=n.value.slice(s+1))}return{csrfToken:o,corpId:r,userId:t}}function loadCookieData(o,r){o=o||findProjectRoot(),r=r||"https://www.aliwork.com",o=path.join(o,".cache","cookies.json");if(!fs.existsSync(o))return null;try{var t=fs.readFileSync(o,"utf-8").trim();if(!t)return null;var n,s,i,a=JSON.parse(t);let e;return(e=Array.isArray(a)?{cookies:a,base_url:r}:a).cookies&&0<e.cookies.length&&({csrfToken:n,corpId:s,userId:i}=extractInfoFromCookies(e.cookies),n&&(e.csrf_token=n),s&&(e.corp_id=s),i)&&(e.user_id=i),e}catch{return null}}function triggerLogin(){console.error("\n🔐 登录态失效,正在打开浏览器扫码登录...\n");var e=require("./login").ensureLogin;return e()}function refreshCsrfToken(){console.error("\n🔄 csrf_token 已过期,正在从 Cookie 重新提取...\n");var e=require("./login").refreshCsrfFromCache;return e()}function isLoginExpired(e){return e&&!1===e.success&&("307"===e.errorCode||"302"===e.errorCode)}function isCsrfTokenExpired(e){return e&&!1===e.success&&"TIANSHU_000030"===e.errorCode}function resolveBaseUrl(e,o){o=o||"https://www.aliwork.com";return(e&&e.base_url||o).replace(/\/+$/,"")}function httpPost(a,c,l,u){let d=require("https"),p=require("http");return new Promise((t,e)=>{var o=u.map(e=>e.name+"="+e.value).join("; "),r=new URL(a),n="https:"===r.protocol,s=n?d:p,r={hostname:r.hostname,port:r.port||(n?443:80),path:c,method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","Content-Length":Buffer.byteLength(l),Origin:a,Referer:a+"/",Cookie:o},timeout:3e4};let i=s.request(r,o=>{let r="";o.on("data",e=>{r+=e}),o.on("end",()=>{console.error(" HTTP 状态码: "+o.statusCode);try{var e=JSON.parse(r);isLoginExpired(e)?t({__needLogin:!0}):isCsrfTokenExpired(e)?t({__csrfExpired:!0}):t(e)}catch{console.error(" 响应内容: "+r.substring(0,500)),t({success:!1,errorMsg:`HTTP ${o.statusCode}: 响应非 JSON`})}})});i.on("timeout",()=>{i.destroy(),e(new Error("请求超时"))}),i.on("error",e),i.write(l),i.end()})}function httpGet(c,l,u,d){let p=require("https"),f=require("http"),h=require("querystring");return new Promise((t,e)=>{var o=d.map(e=>e.name+"="+e.value).join("; "),r=new URL(c),n="https:"===r.protocol,s=n?p:f,i=u?l+"?"+h.stringify(u):l;let a=s.request({hostname:r.hostname,port:r.port||(n?443:80),path:i,method:"GET",headers:{Origin:c,Referer:c+"/",Cookie:o},timeout:3e4},o=>{let r="";o.on("data",e=>{r+=e}),o.on("end",()=>{console.error(" HTTP 状态码: "+o.statusCode);try{var e=JSON.parse(r);isLoginExpired(e)?t({__needLogin:!0}):isCsrfTokenExpired(e)?t({__csrfExpired:!0}):t(e)}catch{console.error(" 响应内容: "+r.substring(0,500)),t({success:!1,errorMsg:`HTTP ${o.statusCode}: 响应非 JSON`})}})});a.on("timeout",()=>{a.destroy(),e(new Error("请求超时"))}),a.on("error",e),a.end()})}async function requestWithAutoLogin(e,o){let r=await e(o);var t;return r&&r.__csrfExpired&&(t=refreshCsrfToken(),o.cookieData=t,o.csrfToken=t.csrf_token,o.cookies=t.cookies,o.baseUrl=resolveBaseUrl(t),console.error(" 🔄 csrf_token 已刷新,重试..."),r=await e(o)),r&&r.__needLogin&&(t=triggerLogin(),o.cookieData=t,o.csrfToken=t.csrf_token,o.cookies=t.cookies,o.baseUrl=resolveBaseUrl(t),console.error(" 🔄 重新登录后重试..."),r=await e(o)),r}module.exports={detectActiveTool:detectActiveTool,findProjectRoot:findProjectRoot,extractInfoFromCookies:extractInfoFromCookies,loadCookieData:loadCookieData,triggerLogin:triggerLogin,refreshCsrfToken:refreshCsrfToken,resolveBaseUrl:resolveBaseUrl,isLoginExpired:isLoginExpired,isCsrfTokenExpired:isCsrfTokenExpired,httpPost:httpPost,httpGet:httpGet,requestWithAutoLogin:requestWithAutoLogin};
|
|
1
|
+
let fs=require("fs"),path=require("path"),os=require("os"),execSync=require("child_process").execSync;function detectActiveTool(){var e=process.env,o=process.cwd(),r=os.homedir();return e.QODER_IDE||e.QODER_AGENT?{tool:"qoder",displayName:"Qoder",dirName:".qoder",workspaceRoot:path.join(o,"openyida")}:e.CLAUDE_CODE?{tool:"claude-code",displayName:"Claude Code",dirName:".claudecode",workspaceRoot:path.join(o,"openyida")}:e.OPENCODE?{tool:"opencode",displayName:"OpenCode",dirName:".opencode",workspaceRoot:path.join(o,"openyida")}:e.CURSOR_TRACE_ID||(e.VSCODE_GIT_ASKPASS_NODE||"").includes("Cursor")?{tool:"cursor",displayName:"Cursor",dirName:".cursor",workspaceRoot:path.join(o,"openyida")}:e.IFLOW_ACTIVE||e.IFLOW_IDE?{tool:"iflow",displayName:"iFlow",dirName:".iflow",workspaceRoot:path.join(o,"openyida")}:e.AGENT_WORK_ROOT&&e.AGENT_WORK_ROOT.includes(".real")?{tool:"wukong",displayName:"悟空(Wukong)",dirName:".real",workspaceRoot:path.join(r,".real","workspace","openyida")}:"vscode"===e.TERM_PROGRAM&&fs.existsSync(path.join(r,".aone_copilot"))?{tool:"aone-copilot",displayName:"Aone Copilot",dirName:".aone_copilot",workspaceRoot:path.join(o,"openyida")}:null}function findProjectRoot(){var e=detectActiveTool();return e&&fs.existsSync(e.workspaceRoot)?e.workspaceRoot:process.cwd()}function extractInfoFromCookies(e){let o=null,r=null,t=null;for(var n of e){var s;"tianshu_csrf_token"===n.name?o=n.value:"tianshu_corp_user"===n.name&&0<(s=n.value.lastIndexOf("_"))&&(r=n.value.slice(0,s),t=n.value.slice(s+1))}return{csrfToken:o,corpId:r,userId:t}}function loadCookieData(o,r){o=o||findProjectRoot(),r=r||"https://www.aliwork.com",o=path.join(o,".cache","cookies.json");if(!fs.existsSync(o))return null;try{var t=fs.readFileSync(o,"utf-8").trim();if(!t)return null;var n,s,i,a=JSON.parse(t);let e;return(e=Array.isArray(a)?{cookies:a,base_url:r}:a).cookies&&0<e.cookies.length&&({csrfToken:n,corpId:s,userId:i}=extractInfoFromCookies(e.cookies),n&&(e.csrf_token=n),s&&(e.corp_id=s),i)&&(e.user_id=i),e}catch{return null}}function triggerLogin(){console.error("\n🔐 登录态失效,正在打开浏览器扫码登录...\n");var e=require("./login").ensureLogin;return e()}function refreshCsrfToken(){console.error("\n🔄 csrf_token 已过期,正在从 Cookie 重新提取...\n");var e=require("./login").refreshCsrfFromCache;return e()}function isLoginExpired(e){return e&&!1===e.success&&("307"===e.errorCode||"302"===e.errorCode)}function isCsrfTokenExpired(e){return e&&!1===e.success&&"TIANSHU_000030"===e.errorCode}function resolveBaseUrl(e,o){o=o||"https://www.aliwork.com";return(e&&e.base_url||o).replace(/\/+$/,"")}function httpPost(a,c,l,u){let d=require("https"),p=require("http");return new Promise((t,e)=>{var o=u.map(e=>e.name+"="+e.value).join("; "),r=new URL(a),n="https:"===r.protocol,s=n?d:p,r={hostname:r.hostname,port:r.port||(n?443:80),path:c,method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","Content-Length":Buffer.byteLength(l),Origin:a,Referer:a+"/",Cookie:o},timeout:3e4};let i=s.request(r,o=>{let r="";o.on("data",e=>{r+=e}),o.on("end",()=>{console.error(" HTTP 状态码: "+o.statusCode);try{var e=JSON.parse(r);isLoginExpired(e)?t({__needLogin:!0}):isCsrfTokenExpired(e)?t({__csrfExpired:!0}):t(e)}catch{console.error(" 响应内容: "+r.substring(0,500)),t({success:!1,errorMsg:`HTTP ${o.statusCode}: 响应非 JSON`})}})});i.on("timeout",()=>{i.destroy(),e(new Error("请求超时"))}),i.on("error",e),i.write(l),i.end()})}function httpGet(c,l,u,d){let p=require("https"),f=require("http"),h=require("querystring");return new Promise((t,e)=>{var o=d.map(e=>e.name+"="+e.value).join("; "),r=new URL(c),n="https:"===r.protocol,s=n?p:f,i=u?l+"?"+h.stringify(u):l;let a=s.request({hostname:r.hostname,port:r.port||(n?443:80),path:i,method:"GET",headers:{Origin:c,Referer:c+"/",Cookie:o},timeout:3e4},o=>{let r="";o.on("data",e=>{r+=e}),o.on("end",()=>{console.error(" HTTP 状态码: "+o.statusCode);try{var e=JSON.parse(r);isLoginExpired(e)?t({__needLogin:!0}):isCsrfTokenExpired(e)?t({__csrfExpired:!0}):t(e)}catch{console.error(" 响应内容: "+r.substring(0,500)),t({success:!1,errorMsg:`HTTP ${o.statusCode}: 响应非 JSON`})}})});a.on("timeout",()=>{a.destroy(),e(new Error("请求超时"))}),a.on("error",e),a.end()})}async function requestWithAutoLogin(e,o){let r=await e(o);var t;return r&&r.__csrfExpired&&(t=refreshCsrfToken(),o.cookieData=t,o.csrfToken=t.csrf_token,o.cookies=t.cookies,o.baseUrl=resolveBaseUrl(t),console.error(" 🔄 csrf_token 已刷新,重试..."),r=await e(o)),r&&r.__needLogin&&(t=triggerLogin(),o.cookieData=t,o.csrfToken=t.csrf_token,o.cookies=t.cookies,o.baseUrl=resolveBaseUrl(t),console.error(" 🔄 重新登录后重试..."),r=await e(o)),r}module.exports={detectActiveTool:detectActiveTool,findProjectRoot:findProjectRoot,extractInfoFromCookies:extractInfoFromCookies,loadCookieData:loadCookieData,triggerLogin:triggerLogin,refreshCsrfToken:refreshCsrfToken,resolveBaseUrl:resolveBaseUrl,isLoginExpired:isLoginExpired,isCsrfTokenExpired:isCsrfTokenExpired,httpPost:httpPost,httpGet:httpGet,requestWithAutoLogin:requestWithAutoLogin};
|