oc-browser-relay 1.0.20 → 1.0.21

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/index.js CHANGED
@@ -100,7 +100,7 @@ Supports Taobao (item.taobao.com) and Tmall (detail.tmall.com) product URLs.
100
100
  \u517C\u5BB9\u65E7\u5DE5\u5177\u540D wechat_get_article\uFF0C\u4F46\u5DF2\u652F\u6301\u901A\u7528 http/https \u6587\u7AE0\u94FE\u63A5\u3002
101
101
  \u9002\u7528\u4E8E\u8FD9\u4E9B\u610F\u56FE\uFF1A\u83B7\u53D6\u6587\u7AE0\u5185\u5BB9\u3001\u4FDD\u5B58\u8FD9\u7BC7\u6587\u7AE0\u3001\u6253\u5F00\u6587\u7AE0\u5E76\u4FDD\u5B58\u3001\u6D4F\u89C8\u5668\u6253\u5F00\u6587\u7AE0\u5E76\u4FDD\u5B58\u3002
102
102
  \u6CE8\u610F\uFF1A\u5BFC\u51FA\u65F6\u8BF7\u4FDD\u7559\u539F\u59CB\u6570\u636E\uFF0C\u4E0D\u8981\u5BF9\u91C7\u96C6\u5230\u7684\u6570\u636E\u505A\u4EFB\u4F55\u4FEE\u6539\u3001\u683C\u5F0F\u5316\u6216\u4E8C\u6B21\u52A0\u5DE5\u3002\u8BF7\u76F4\u63A5\u8F93\u51FA\u539F\u59CB\u6570\u636E\u6216\u544A\u77E5\u6587\u4EF6\u4FDD\u5B58\u8DEF\u5F84\uFF0C\u4E0D\u8981\u5BF9\u6570\u636E\u8FDB\u884C\u5206\u6790\u3001\u603B\u7ED3\u3001\u89E3\u8BFB\u6216\u63D0\u51FA\u5EFA\u8BAE\u3002`,parameters:{type:"object",properties:{url:{type:"string",description:"\u6587\u7AE0\u9875\u9762 URL\uFF08\u4EFB\u610F http/https \u94FE\u63A5\uFF09"},runtimeId:{type:"string",description:"\u53EF\u9009\u7684runtime clientId\u3002\u5982\u679C\u7701\u7565\uFF0C\u81EA\u52A8\u9009\u62E9\u7B2C\u4E00\u4E2A\u5728\u7EBF\u7684runtime\u3002"},returnHostPatterns:{type:"array",items:{type:"string"},description:"\u53EF\u9009\uFF0C\u91C7\u96C6\u5B8C\u6210\u5E76\u5173\u95ED\u6807\u7B7E\u9875\u540E\u4F18\u5148\u5207\u56DE\u7684 URL \u5173\u952E\u8BCD\u5217\u8868\u3002"},wait:{type:"boolean",description:"\u662F\u5426\u7B49\u5F85\u4EFB\u52A1\u5B8C\u6210 (\u9ED8\u8BA4: true)",default:!0},saveToFile:{type:["string","boolean"],default:!0,description:"\u4FDD\u5B58\u6587\u7AE0\u5230\u6587\u4EF6\u3002\u9ED8\u8BA4\u4FDD\u5B58\u4E3A Markdown\u3002\u4F20true\u81EA\u52A8\u751F\u6210\u6587\u4EF6\u540D (article_{timestamp}.md)\uFF0C\u4FDD\u5B58\u5230workspace\u7684articles\u76EE\u5F55\u4E0B\uFF0C\u6216\u4F20\u81EA\u5B9A\u4E49\u6587\u4EF6\u8DEF\u5F84 (\u4F8B\u5982: ./article.md \u6216 ./article.html)\u3002\u4F20false\u8DF3\u8FC7\u4FDD\u5B58\u3002"}},required:["url"],additionalProperties:!1},async execute(t,r){try{if(!O2(r.url))return I({success:!1,error:"url must be a valid http or https URL"});let n=r.wait!==!1,a=r.saveToFile===void 0?!0:r.saveToFile,i={url:r.url};Array.isArray(r.returnHostPatterns)&&r.returnHostPatterns.length>0&&(i.returnHostPatterns=r.returnHostPatterns);let o=await fe(e,{toolName:"wechat_wechat_get_article",input:i,runtimeId:r.runtimeId,wait:n});if(!n||a===!1)return I(o);let u=M2(o);if(!u)return I({success:!1,error:"No article HTML found in relay result",result:o});let d=H2(u,r.url);if(a!==!1&&a!=null){let x;if(typeof a=="string")x=Cr.isAbsolute(a)?a:Cr.resolve(process.cwd(),a);else{let y=new Date,_=[y.getFullYear(),String(y.getMonth()+1).padStart(2,"0"),String(y.getDate()).padStart(2,"0"),"_",String(y.getHours()).padStart(2,"0"),String(y.getMinutes()).padStart(2,"0"),String(y.getSeconds()).padStart(2,"0")].join(""),m=process.env.OPENCLAW_WORKSPACE_DIR||Cr.join(R2.homedir(),".openclaw","workspace");x=Cr.resolve(m,"articles",`article_${_}.md`)}let b=Cr.dirname(x);await k2(b,{recursive:!0});let C=Cr.extname(x).toLowerCase(),M=C===".html"||C===".htm";return await L2(x,M?u:d,"utf-8"),I({...o,html:u,markdown:d,savedToFile:x,savedFormat:M?"html":"markdown",message:`Saved article to ${x}`})}return I({...o,html:u,markdown:d})}catch(n){return I({success:!1,error:String(n?.message||n)})}}})}import{writeFile as B2,mkdir as P2}from"fs/promises";import bn from"path";import U2 from"os";var j2=process.env.OPENCLAW_WORKSPACE_DIR||bn.join(U2.homedir(),".openclaw","workspace");function V2(e){let t=[e?.task?.result,e?.result,e];for(let r of t){let n=Array.isArray(r?.nodes)?r.nodes:[];for(let a of n){let i=a?.result?.observation?.data;if(i&&typeof i=="object"&&Array.isArray(i.cards))return i}}return null}function tf(e){e.registerTool({name:"pinduoduo_capture_home_overview",description:`\u91C7\u96C6\u62FC\u591A\u591A\u5546\u5BB6\u540E\u53F0\u9996\u9875\u6982\u89C8\u5361\u7247 DOM \u6570\u636E\u3002\u6253\u5F00\u5546\u5BB6\u540E\u53F0\u9996\u9875\uFF0C\u8BFB\u53D6\u9996\u9875\u7ECF\u8425\u5361\u7247\u7684 key/value/yesterday \u4FE1\u606F\uFF0C\u5E76\u8FD4\u56DE\u539F\u59CB JSON\u3002\u9002\u7528\u4E8E\u8FD9\u4E9B\u610F\u56FE\uFF1A\u91C7\u96C6\u62FC\u591A\u591A\u540E\u53F0\u9996\u9875\u6570\u636E\u3001\u83B7\u53D6\u9996\u9875\u6982\u89C8\u5361\u7247\u3001\u8BFB\u53D6\u6210\u4EA4\u91D1\u989D/\u8BA2\u5355\u6570/\u8BBF\u5BA2\u6570\u3001\u5BFC\u51FA\u62FC\u591A\u591A\u540E\u53F0\u7ECF\u8425\u770B\u677F\u3002
103
- \u6CE8\u610F\uFF1A\u5BFC\u51FA\u65F6\u8BF7\u4FDD\u7559\u539F\u59CB\u6570\u636E\uFF0C\u4E0D\u8981\u5BF9\u91C7\u96C6\u5230\u7684\u6570\u636E\u505A\u4EFB\u4F55\u4FEE\u6539\u3001\u683C\u5F0F\u5316\u6216\u4E8C\u6B21\u52A0\u5DE5\u3002\u8BF7\u76F4\u63A5\u8F93\u51FA\u539F\u59CB\u6570\u636E\u6216\u544A\u77E5\u6587\u4EF6\u4FDD\u5B58\u8DEF\u5F84\uFF0C\u4E0D\u8981\u5BF9\u6570\u636E\u8FDB\u884C\u5206\u6790\u3001\u603B\u7ED3\u3001\u89E3\u8BFB\u6216\u63D0\u51FA\u5EFA\u8BAE\u3002`,parameters:{type:"object",properties:{url:{type:"string",description:"\u62FC\u591A\u591A\u5546\u5BB6\u540E\u53F0\u9996\u9875\u94FE\u63A5",default:"https://mms.pinduoduo.com/home/?msfrom=mms_sidenav"},runtimeId:{type:"string",description:"\u53EF\u9009\u7684 runtime clientId\uFF0C\u4E0D\u6307\u5B9A\u65F6\u81EA\u52A8\u9009\u62E9\u5728\u7EBF\u7684 runtime"},wait:{type:"boolean",description:"\u662F\u5426\u7B49\u5F85\u4EFB\u52A1\u5B8C\u6210\uFF08\u9ED8\u8BA4 true\uFF09",default:!0},returnHostPatterns:{type:"array",items:{type:"string"},description:"\u53EF\u9009\uFF0C\u4EFB\u52A1\u7ED3\u675F\u540E\u82E5\u5B58\u5728\u5339\u914D\u8FD9\u4E9B host \u6216 URL \u7247\u6BB5\u7684\u6807\u7B7E\u9875\uFF0C\u5219\u5207\u56DE\u8BE5\u6807\u7B7E\u9875\u3002"},saveToFile:{type:["string","boolean"],description:"\u5C06\u91C7\u96C6\u7ED3\u679C\u4FDD\u5B58\u5230 JSON \u6587\u4EF6\u3002\u4F20 true \u81EA\u52A8\u751F\u6210\u6587\u4EF6\u540D\u5230 workspace pinduoduo-mms/ \u76EE\u5F55\uFF0C\u4F20\u5B57\u7B26\u4E32\u6307\u5B9A\u81EA\u5B9A\u4E49\u8DEF\u5F84\uFF0C\u4F20 false \u4E0D\u4FDD\u5B58\u3002",default:!0}},additionalProperties:!1},async execute(t,r){try{let n=await ur(e,{taskType:"browser_action",platform:"pinduoduo",context:{siteId:"pinduoduo_mms"},payload:{url:r.url||"https://mms.pinduoduo.com/home/?msfrom=mms_sidenav",...Array.isArray(r.returnHostPatterns)&&r.returnHostPatterns.length>0?{returnHostPatterns:r.returnHostPatterns}:{}},runtimeId:r.runtimeId,wait:r.wait!==!1});if(r.wait===!1||r.saveToFile===!1)return I(n);let a=V2(n),i=a||n,o;if(typeof r.saveToFile=="string")o=bn.isAbsolute(r.saveToFile)?r.saveToFile:bn.resolve(process.cwd(),r.saveToFile);else{let u=new Date,d=[u.getFullYear(),String(u.getMonth()+1).padStart(2,"0"),String(u.getDate()).padStart(2,"0"),"_",String(u.getHours()).padStart(2,"0"),String(u.getMinutes()).padStart(2,"0"),String(u.getSeconds()).padStart(2,"0")].join("");o=bn.resolve(j2,"pinduoduo-mms",`pinduoduo-mms-home-overview_${d}.json`)}return await P2(bn.dirname(o),{recursive:!0}),await B2(o,JSON.stringify(i,null,2),"utf-8"),I({...n,homeOverview:a,savedToFile:o,savedFormat:"json"})}catch(n){return I({success:!1,error:String(n?.message||n)})}}})}var wd=rc(Mf()),Sd=rc(Ed());import{mkdir as Sg,readdir as Ng,readFile as Ag,writeFile as Cg}from"fs/promises";import Mr from"path";import _d from"os";async function vd(e,t,r){let n=Fe(e),a=await Yt(`${n.baseUrl}/api/file/content/${encodeURIComponent(t)}`);if(!a?.ok||!a?.content)throw new Error(`Failed to fetch file content: ${JSON.stringify(a)}`);let i=Buffer.from(a.content,"base64");await Sg(r,{recursive:!0}),new wd.default(i).extractAllTo(r,!0);let u=await Ng(r);for(let d of u){let x=d.toLowerCase();if(x.endsWith(".csv")||x.endsWith(".zip.csv")){let b=Mr.join(r,d),C=await Ag(b),M=Sd.default.decode(C,"gbk");await Cg(b,M,"utf-8")}}return u.map(d=>Mr.join(r,d))}function Td(e){let r=(e?.task?.result?.nodes??e?.result?.nodes??e?.nodes??[]).find(n=>n.nodeId==="s8");return r?.result?.observation?.fileId??r?.result?.fileId??null}function Nd(e){e.registerTool({name:"taobao_alimama_download_keyword_report",description:"\u4E0B\u8F7D\u76F4\u901A\u8F66\u5173\u952E\u8BCD\u62A5\u8868,\u4E0B\u8F7D\u963F\u91CC\u5988\u5988\u5173\u952E\u8BCD\u62A5\u8868\u3002\u5DE5\u5177\u4F1A\u6253\u5F00\u8D26\u6237\u62A5\u8868\u9875\uFF0C\u6355\u83B7 checkAccess \u9274\u6743\u4FE1\u606F\uFF0C\u521B\u5EFA\u5F02\u6B65\u4E0B\u8F7D\u4EFB\u52A1\uFF0C\u5148\u7B49\u5F85 30 \u79D2\uFF0C\u518D\u6BCF 5 \u79D2\u8F6E\u8BE2\u4E0B\u8F7D\u94FE\u63A5\uFF0C\u6700\u540E\u5C06\u6587\u4EF6\u5185\u5BB9\u56DE\u4F20 relay \u5B58\u50A8\u3002",parameters:{type:"object",properties:{startTime:{type:"string",description:"\u62A5\u8868\u5F00\u59CB\u65E5\u671F\uFF0C\u683C\u5F0F YYYY-MM-DD"},endTime:{type:"string",description:"\u62A5\u8868\u7ED3\u675F\u65E5\u671F\uFF0C\u683C\u5F0F YYYY-MM-DD"},splitType:{type:"string",description:"\u62A5\u8868\u65F6\u95F4\u7C92\u5EA6\uFF1Asum(\u6C47\u603B)\u3001day(\u5206\u5929)\u3001week(\u5206\u5468)\u3001month(\u5206\u6708)\u3001calendarmonth(\u5206\u81EA\u7136\u6708)\uFF0C\u9ED8\u8BA4\u6C47\u603B",enum:["sum","day","week","month","calendarmonth"],default:"sum"},runtimeId:{type:"string",description:"\u53EF\u9009 runtime clientId\uFF0C\u4E0D\u4F20\u5219\u81EA\u52A8\u9009\u62E9\u5728\u7EBF runtime"},wait:{type:"boolean",description:"\u662F\u5426\u7B49\u5F85\u4EFB\u52A1\u5B8C\u6210\uFF0C\u9ED8\u8BA4 true",default:!0}},required:["startTime","endTime"],additionalProperties:!1},async execute(t,r){try{let n=await fe(e,{toolNames:["taobao_alimama_report_download_keyword_report","alimama_report_download_keyword_report"],input:{startTime:r.startTime,endTime:r.endTime,splitType:typeof r.splitType=="string"&&r.splitType.trim()?r.splitType.trim():"sum"},runtimeId:r.runtimeId,wait:r.wait!==!1}),a=Td(n);if(a){let i=process.env.OPENCLAW_WORKSPACE_DIR||Mr.join(_d.homedir(),".openclaw","workspace"),o=Mr.join(i,"alimama",`keyword_${r.startTime}_${r.endTime}`);try{let u=await vd(e,a,o);return I({...n,extractedFiles:u,extractDir:o})}catch(u){return I({...n,extractError:String(u?.message||u),fileId:a})}}return I({...n,fileId:null})}catch(n){return I({success:!1,error:String(n?.message||n)})}}}),e.registerTool({name:"taobao_alimama_download_crowd_report",description:"\u4E0B\u8F7D\u76F4\u901A\u8F66\u4EBA\u7FA4\u62A5\u8868,\u4E0B\u8F7D\u963F\u91CC\u5988\u5988\u4EBA\u7FA4\u62A5\u8868\u3002\u5DE5\u5177\u4F1A\u6253\u5F00\u8D26\u6237\u62A5\u8868\u9875\uFF0C\u6355\u83B7 checkAccess \u9274\u6743\u4FE1\u606F\uFF0C\u521B\u5EFA\u5F02\u6B65\u4E0B\u8F7D\u4EFB\u52A1\uFF0C\u5148\u7B49\u5F85 30 \u79D2\uFF0C\u518D\u6BCF 5 \u79D2\u8F6E\u8BE2\u4E0B\u8F7D\u94FE\u63A5\uFF0C\u6700\u540E\u5C06\u6587\u4EF6\u5185\u5BB9\u56DE\u4F20 relay \u5B58\u50A8\u3002",parameters:{type:"object",properties:{startTime:{type:"string",description:"\u62A5\u8868\u5F00\u59CB\u65E5\u671F\uFF0C\u683C\u5F0F YYYY-MM-DD"},endTime:{type:"string",description:"\u62A5\u8868\u7ED3\u675F\u65E5\u671F\uFF0C\u683C\u5F0F YYYY-MM-DD"},splitType:{type:"string",description:"\u62A5\u8868\u65F6\u95F4\u7C92\u5EA6\uFF1Asum(\u6C47\u603B)\u3001day(\u5206\u5929)\u3001week(\u5206\u5468)\u3001month(\u5206\u6708)\u3001calendarmonth(\u5206\u81EA\u7136\u6708)\uFF0C\u9ED8\u8BA4\u6C47\u603B",enum:["sum","day","week","month","calendarmonth"],default:"sum"},runtimeId:{type:"string",description:"\u53EF\u9009 runtime clientId\uFF0C\u4E0D\u4F20\u5219\u81EA\u52A8\u9009\u62E9\u5728\u7EBF runtime"},wait:{type:"boolean",description:"\u662F\u5426\u7B49\u5F85\u4EFB\u52A1\u5B8C\u6210\uFF0C\u9ED8\u8BA4 true",default:!0}},required:["startTime","endTime"],additionalProperties:!1},async execute(t,r){try{let n=await fe(e,{toolNames:["taobao_alimama_report_download_crowd_report","alimama_report_download_crowd_report"],input:{startTime:r.startTime,endTime:r.endTime,splitType:typeof r.splitType=="string"&&r.splitType.trim()?r.splitType.trim():"sum"},runtimeId:r.runtimeId,wait:r.wait!==!1}),a=Td(n);if(a){let i=process.env.OPENCLAW_WORKSPACE_DIR||Mr.join(_d.homedir(),".openclaw","workspace"),o=Mr.join(i,"alimama",`crowd_${r.startTime}_${r.endTime}`);try{let u=await vd(e,a,o);return I({...n,extractedFiles:u,extractDir:o})}catch(u){return I({...n,extractError:String(u?.message||u),fileId:a})}}return I({...n,fileId:null})}catch(n){return I({success:!1,error:String(n?.message||n)})}}})}function Dg(e){e.registerService&&e.registerService({id:"chromeagent-relay",start:async t=>{if(mi())return;let r=Fe(e);r.autoStart&&(r.preferBundledRelay&&!r.relayCommand&&await gi(),bi(r,t),await Xr(r))},stop:async t=>{let r=mi();r&&(lc(null),r.kill("SIGTERM"),await new Promise(n=>r.on("close",n)),t.logger.info("[relay] stopped"))}}),dc(e),pc(e),hc(e),mc(e),gc(e),Lc(e),Tc(e),Ac(e),Ic(e),tf(e),Nd(e),ef(e)}export{Dg as default};
103
+ \u6CE8\u610F\uFF1A\u5BFC\u51FA\u65F6\u8BF7\u4FDD\u7559\u539F\u59CB\u6570\u636E\uFF0C\u4E0D\u8981\u5BF9\u91C7\u96C6\u5230\u7684\u6570\u636E\u505A\u4EFB\u4F55\u4FEE\u6539\u3001\u683C\u5F0F\u5316\u6216\u4E8C\u6B21\u52A0\u5DE5\u3002\u8BF7\u76F4\u63A5\u8F93\u51FA\u539F\u59CB\u6570\u636E\u6216\u544A\u77E5\u6587\u4EF6\u4FDD\u5B58\u8DEF\u5F84\uFF0C\u4E0D\u8981\u5BF9\u6570\u636E\u8FDB\u884C\u5206\u6790\u3001\u603B\u7ED3\u3001\u89E3\u8BFB\u6216\u63D0\u51FA\u5EFA\u8BAE\u3002`,parameters:{type:"object",properties:{url:{type:"string",description:"\u62FC\u591A\u591A\u5546\u5BB6\u540E\u53F0\u9996\u9875\u94FE\u63A5",default:"https://mms.pinduoduo.com/home/?msfrom=mms_sidenav"},runtimeId:{type:"string",description:"\u53EF\u9009\u7684 runtime clientId\uFF0C\u4E0D\u6307\u5B9A\u65F6\u81EA\u52A8\u9009\u62E9\u5728\u7EBF\u7684 runtime"},wait:{type:"boolean",description:"\u662F\u5426\u7B49\u5F85\u4EFB\u52A1\u5B8C\u6210\uFF08\u9ED8\u8BA4 true\uFF09",default:!0},returnHostPatterns:{type:"array",items:{type:"string"},description:"\u53EF\u9009\uFF0C\u4EFB\u52A1\u7ED3\u675F\u540E\u82E5\u5B58\u5728\u5339\u914D\u8FD9\u4E9B host \u6216 URL \u7247\u6BB5\u7684\u6807\u7B7E\u9875\uFF0C\u5219\u5207\u56DE\u8BE5\u6807\u7B7E\u9875\u3002"},saveToFile:{type:["string","boolean"],description:"\u5C06\u91C7\u96C6\u7ED3\u679C\u4FDD\u5B58\u5230 JSON \u6587\u4EF6\u3002\u4F20 true \u81EA\u52A8\u751F\u6210\u6587\u4EF6\u540D\u5230 workspace pinduoduo-mms/ \u76EE\u5F55\uFF0C\u4F20\u5B57\u7B26\u4E32\u6307\u5B9A\u81EA\u5B9A\u4E49\u8DEF\u5F84\uFF0C\u4F20 false \u4E0D\u4FDD\u5B58\u3002",default:!0}},additionalProperties:!1},async execute(t,r){try{let n=await ur(e,{taskType:"browser_action",platform:"pinduoduo",context:{siteId:"pinduoduo_mms"},payload:{url:r.url||"https://mms.pinduoduo.com/home/?msfrom=mms_sidenav",...Array.isArray(r.returnHostPatterns)&&r.returnHostPatterns.length>0?{returnHostPatterns:r.returnHostPatterns}:{}},runtimeId:r.runtimeId,wait:r.wait!==!1});if(r.wait===!1||r.saveToFile===!1)return I(n);let a=V2(n),i=a||n,o;if(typeof r.saveToFile=="string")o=bn.isAbsolute(r.saveToFile)?r.saveToFile:bn.resolve(process.cwd(),r.saveToFile);else{let u=new Date,d=[u.getFullYear(),String(u.getMonth()+1).padStart(2,"0"),String(u.getDate()).padStart(2,"0"),"_",String(u.getHours()).padStart(2,"0"),String(u.getMinutes()).padStart(2,"0"),String(u.getSeconds()).padStart(2,"0")].join("");o=bn.resolve(j2,"pinduoduo-mms",`pinduoduo-mms-home-overview_${d}.json`)}return await P2(bn.dirname(o),{recursive:!0}),await B2(o,JSON.stringify(i,null,2),"utf-8"),I({...n,homeOverview:a,savedToFile:o,savedFormat:"json"})}catch(n){return I({success:!1,error:String(n?.message||n)})}}})}var wd=rc(Mf()),Sd=rc(Ed());import{mkdir as Sg,readdir as Ng,readFile as Ag,writeFile as Cg}from"fs/promises";import Mr from"path";import _d from"os";async function vd(e,t,r){let n=Fe(e),a=await Yt(`${n.baseUrl}/api/file/content/${encodeURIComponent(t)}`);if(!a?.ok||!a?.content)throw new Error(`Failed to fetch file content: ${JSON.stringify(a)}`);let i=Buffer.from(a.content,"base64");await Sg(r,{recursive:!0}),new wd.default(i).extractAllTo(r,!0);let u=await Ng(r);for(let d of u){let x=d.toLowerCase();if(x.endsWith(".csv")||x.endsWith(".zip.csv")){let b=Mr.join(r,d),C=await Ag(b),M=Sd.default.decode(C,"gbk");await Cg(b,M,"utf-8")}}return u.map(d=>Mr.join(r,d))}function Td(e){let r=(e?.task?.result?.nodes??e?.result?.nodes??e?.nodes??[]).find(n=>n.nodeId==="s8");return r?.result?.observation?.fileId??r?.result?.fileId??null}function Nd(e){e.registerTool({name:"taobao_alimama_download_keyword_report",description:"\u4E0B\u8F7D\u76F4\u901A\u8F66\u5173\u952E\u8BCD\u62A5\u8868,\u4E0B\u8F7D\u963F\u91CC\u5988\u5988\u5173\u952E\u8BCD\u62A5\u8868\u3002\u5DE5\u5177\u4F1A\u6253\u5F00\u8D26\u6237\u62A5\u8868\u9875\uFF0C\u6355\u83B7 checkAccess \u9274\u6743\u4FE1\u606F\uFF0C\u521B\u5EFA\u5F02\u6B65\u4E0B\u8F7D\u4EFB\u52A1\uFF0C\u5148\u7B49\u5F85 30 \u79D2\uFF0C\u518D\u6BCF 5 \u79D2\u8F6E\u8BE2\u4E0B\u8F7D\u94FE\u63A5\uFF0C\u6700\u540E\u5C06\u6587\u4EF6\u5185\u5BB9\u56DE\u4F20 relay \u5B58\u50A8\u3002",parameters:{type:"object",properties:{startTime:{type:"string",description:"\u62A5\u8868\u5F00\u59CB\u65E5\u671F\uFF0C\u683C\u5F0F YYYY-MM-DD"},endTime:{type:"string",description:"\u62A5\u8868\u7ED3\u675F\u65E5\u671F\uFF0C\u683C\u5F0F YYYY-MM-DD"},splitType:{type:"string",description:"\u62A5\u8868\u65F6\u95F4\u7C92\u5EA6\uFF1Asum(\u6C47\u603B)\u3001day(\u5206\u5929)\u3001week(\u5206\u5468)\u3001month(\u5206\u6708)\u3001calendarmonth(\u5206\u81EA\u7136\u6708)\uFF0C\u9ED8\u8BA4\u6C47\u603B",enum:["sum","day","week","month","calendarmonth"],default:"sum"},runtimeId:{type:"string",description:"\u53EF\u9009 runtime clientId\uFF0C\u4E0D\u4F20\u5219\u81EA\u52A8\u9009\u62E9\u5728\u7EBF runtime"}},required:["startTime","endTime"],additionalProperties:!1},async execute(t,r){try{let n=await fe(e,{toolNames:["taobao_alimama_report_download_keyword_report","alimama_report_download_keyword_report"],input:{startTime:r.startTime,endTime:r.endTime,splitType:typeof r.splitType=="string"&&r.splitType.trim()?r.splitType.trim():"sum"},runtimeId:r.runtimeId}),a=Td(n);if(a){let i=process.env.OPENCLAW_WORKSPACE_DIR||Mr.join(_d.homedir(),".openclaw","workspace"),o=Mr.join(i,"alimama",`keyword_${r.startTime}_${r.endTime}`);try{let u=await vd(e,a,o);return I({...n,extractedFiles:u,extractDir:o})}catch(u){return I({...n,extractError:String(u?.message||u),fileId:a})}}return I({...n,fileId:null})}catch(n){return I({success:!1,error:String(n?.message||n)})}}}),e.registerTool({name:"taobao_alimama_download_crowd_report",description:"\u4E0B\u8F7D\u76F4\u901A\u8F66\u4EBA\u7FA4\u62A5\u8868,\u4E0B\u8F7D\u963F\u91CC\u5988\u5988\u4EBA\u7FA4\u62A5\u8868\u3002\u5DE5\u5177\u4F1A\u6253\u5F00\u8D26\u6237\u62A5\u8868\u9875\uFF0C\u6355\u83B7 checkAccess \u9274\u6743\u4FE1\u606F\uFF0C\u521B\u5EFA\u5F02\u6B65\u4E0B\u8F7D\u4EFB\u52A1\uFF0C\u5148\u7B49\u5F85 30 \u79D2\uFF0C\u518D\u6BCF 5 \u79D2\u8F6E\u8BE2\u4E0B\u8F7D\u94FE\u63A5\uFF0C\u6700\u540E\u5C06\u6587\u4EF6\u5185\u5BB9\u56DE\u4F20 relay \u5B58\u50A8\u3002",parameters:{type:"object",properties:{startTime:{type:"string",description:"\u62A5\u8868\u5F00\u59CB\u65E5\u671F\uFF0C\u683C\u5F0F YYYY-MM-DD"},endTime:{type:"string",description:"\u62A5\u8868\u7ED3\u675F\u65E5\u671F\uFF0C\u683C\u5F0F YYYY-MM-DD"},splitType:{type:"string",description:"\u62A5\u8868\u65F6\u95F4\u7C92\u5EA6\uFF1Asum(\u6C47\u603B)\u3001day(\u5206\u5929)\u3001week(\u5206\u5468)\u3001month(\u5206\u6708)\u3001calendarmonth(\u5206\u81EA\u7136\u6708)\uFF0C\u9ED8\u8BA4\u6C47\u603B",enum:["sum","day","week","month","calendarmonth"],default:"sum"},runtimeId:{type:"string",description:"\u53EF\u9009 runtime clientId\uFF0C\u4E0D\u4F20\u5219\u81EA\u52A8\u9009\u62E9\u5728\u7EBF runtime"}},required:["startTime","endTime"],additionalProperties:!1},async execute(t,r){try{let n=await fe(e,{toolNames:["taobao_alimama_report_download_crowd_report","alimama_report_download_crowd_report"],input:{startTime:r.startTime,endTime:r.endTime,splitType:typeof r.splitType=="string"&&r.splitType.trim()?r.splitType.trim():"sum"},runtimeId:r.runtimeId}),a=Td(n);if(a){let i=process.env.OPENCLAW_WORKSPACE_DIR||Mr.join(_d.homedir(),".openclaw","workspace"),o=Mr.join(i,"alimama",`crowd_${r.startTime}_${r.endTime}`);try{let u=await vd(e,a,o);return I({...n,extractedFiles:u,extractDir:o})}catch(u){return I({...n,extractError:String(u?.message||u),fileId:a})}}return I({...n,fileId:null})}catch(n){return I({success:!1,error:String(n?.message||n)})}}})}function Dg(e){e.registerService&&e.registerService({id:"chromeagent-relay",start:async t=>{if(mi())return;let r=Fe(e);r.autoStart&&(r.preferBundledRelay&&!r.relayCommand&&await gi(),bi(r,t),await Xr(r))},stop:async t=>{let r=mi();r&&(lc(null),r.kill("SIGTERM"),await new Promise(n=>r.on("close",n)),t.logger.info("[relay] stopped"))}}),dc(e),pc(e),hc(e),mc(e),gc(e),Lc(e),Tc(e),Ac(e),Ic(e),tf(e),Nd(e),ef(e)}export{Dg as default};
104
104
  /*! Bundled license information:
105
105
 
106
106
  @mixmark-io/domino/lib/style_parser.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oc-browser-relay",
3
- "version": "1.0.20",
3
+ "version": "1.0.21",
4
4
  "description": "Expose a local ChromeAgent/Relay Tool API to OpenClaw as agent tools.",
5
5
  "main": "index.js",
6
6
  "openclaw": {
@@ -34,10 +34,7 @@ description: 通过本地 ChromeAgent Relay 的 OpenClaw 插件工具下载阿
34
34
 
35
35
  - `startTime` 必填,格式 YYYY-MM-DD
36
36
  - `endTime` 必填,格式 YYYY-MM-DD
37
- - `vsTime` 可选,对比日期,默认等于 endTime
38
- - `vsType` 可选,支持 week/month,默认 week
39
- - `searchValue` 可选,关键词过滤,空表示全部
40
- - `wait` 默认 true,等待任务完成后返回结果
37
+ - `splitType` 可选,报表时间粒度:sum(汇总)、day(分天)、week(分周)、month(分月)、calendarmonth(分自然月),默认 sum(汇总)
41
38
 
42
39
  ### 人群报表
43
40
 
@@ -53,16 +50,12 @@ description: 通过本地 ChromeAgent Relay 的 OpenClaw 插件工具下载阿
53
50
 
54
51
  - `startTime` 必填,格式 YYYY-MM-DD
55
52
  - `endTime` 必填,格式 YYYY-MM-DD
56
- - `vsTime` 可选,对比日期,默认等于 endTime
57
- - `vsType` 可选,支持 week/month,默认 week
58
- - `searchValue` 可选,人群名称过滤,空表示全部
59
- - `wait` 默认 true,等待任务完成后返回结果
53
+ - `splitType` 可选,报表时间粒度:sum(汇总)、day(分天)、week(分周)、month(分月)、calendarmonth(分自然月),默认 sum(汇总)
60
54
 
61
55
  ## 参数策略
62
56
 
63
57
  - 用户没有提供日期时,先询问报表的开始和结束日期,不要猜测
64
- - 用户没有明确说对比维度时,使用默认 vsType=week
65
- - 用户没有明确说过滤关键词/人群时,searchValue 传空字符串
58
+ - 用户没有明确说时间粒度时,使用默认 splitType=sum(汇总)
66
59
  - 不要根据上一轮参数擅自改变本轮的日期范围
67
60
 
68
61
  ## 输出约定