best-geo-test 1.0.2 → 1.0.3

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.
@@ -343,7 +343,7 @@
343
343
  "mode": "write",
344
344
  "guide": "question",
345
345
  "requiresPlan": true,
346
- "description": "修改一条搜索问题。",
346
+ "description": "修改一条搜索问题。tags 是整体覆盖不是追加:传进来的就是这条问题最终的全部标签,没传到的旧标签会被删掉。只想加标签时,先用 questions.get 取出现有 tags,合并后整组传入。",
347
347
  "inputSchema": {
348
348
  "type": "object",
349
349
  "properties": {
@@ -360,7 +360,7 @@
360
360
  "items": {
361
361
  "type": "string"
362
362
  },
363
- "description": "整体覆盖,不是追加"
363
+ "description": "整体覆盖,不是追加:传入的就是最终全部标签,传 [] 会清空。只加标签要先 questions.get 取现有的再合并"
364
364
  }
365
365
  },
366
366
  "required": [
@@ -4225,7 +4225,7 @@
4225
4225
  "mode": "write",
4226
4226
  "guide": "answer-card",
4227
4227
  "requiresPlan": true,
4228
- "description": "补丁式改答案卡脚本。只说清「改了什么」——pages 按 id 改字段、insert 插入新页、order 重排、deleteIds 删页,四项至少给一项非空数组,不用把没改过的页也搬一遍原样传回来。服务端按「删 → 改 → 排 → 插」的固定顺序合并:order 只用列已有页的 id(新插入的页此刻还没有 id);insert 的 afterIndex 是「排完序之后」的下标,-1 表示插到最前,其余表示插到该下标对应页之后。这一步不扣费,改到满意再用 answerCards.generate 出图。",
4228
+ "description": "补丁式改答案卡脚本。只说清「改了什么」——pages 按 id 改字段、order 重排、deleteIds 删页,至少给一项非空数组,不用把没改过的页也搬一遍原样传回来。⚠️ 暂不支持新增页:insert 传了会被拒(新加的页拿不到分析阶段的优化提示词,出图会和整套对不上),要加内容请改现有页或重新分析。每页的 type(页面角色)和 visualType(素材类型)也不能改,改了会被拒。服务端按「删 → 改 → 排」的固定顺序合并,order 要列全所有已有页的 id。这一步不扣费,改到满意再用 answerCards.generate 出图。",
4229
4229
  "inputSchema": {
4230
4230
  "type": "object",
4231
4231
  "properties": {
@@ -4247,7 +4247,7 @@
4247
4247
  "type": {
4248
4248
  "type": "string",
4249
4249
  "maxLength": 32,
4250
- "description": "页面角色,如 cover/conclusion/summary 等"
4250
+ "description": "页面角色,如 cover/conclusion/summary 等。【不可改】分析时已定好,传了和现值不同的会被拒"
4251
4251
  },
4252
4252
  "layoutType": {
4253
4253
  "type": "string",
@@ -4294,7 +4294,7 @@
4294
4294
  "visualType": {
4295
4295
  "type": "integer",
4296
4296
  "enum": [1, 2, 3, 4, 5, 6],
4297
- "description": "画面素材类型:1 实景 2 人像 3 产品展示 4 数据图表 5 流程/信息图 6 纯文字卡"
4297
+ "description": "画面素材类型:1 实景 2 人像 3 产品展示 4 数据图表 5 流程/信息图 6 纯文字卡。【不可改】分析时已定好,传了和现值不同的会被拒"
4298
4298
  },
4299
4299
  "visualSubject": {
4300
4300
  "type": "string",
@@ -4313,7 +4313,7 @@
4313
4313
  },
4314
4314
  "insert": {
4315
4315
  "type": "array",
4316
- "description": "插入新页,没有 id",
4316
+ "description": "【暂不支持,传了会被拒】插入新页。新加的页拿不到分析阶段的优化提示词,出图会和整套对不上;要加内容请改现有页,或重新分析",
4317
4317
  "items": {
4318
4318
  "type": "object",
4319
4319
  "properties": {
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var Pt=Object.defineProperty;var Dt=(e,t,n)=>t in e?Pt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var oe=(e,t,n)=>Dt(e,typeof t!="symbol"?t+"":t,n);var ie="https://nbgeo.aimusiclj.com",Ce="best-geo-test",Te="best-geo-test",Re="bg-test-cli-",Oe="1.0.2";var F=1,x=Oe,L=Te,p=Ce,$e="dev",Q=Mt(Ut());function Ut(){var e;return(e=process.env.BEST_GEO_API_BASE)!=null?e:ie}var X=Re,Ne=300*1e3,Le=30*1e3,Pe=300*1e3;function Mt(e){return e.replace(/\/+$/,"")}var Xe=require("node:child_process");var Fe=require("node:crypto"),W=require("node:os");var f=require("node:fs"),De=require("node:os"),B=require("node:path");var Ue=require("node:crypto");var w=class extends Error{constructor(n,r,o){super(o);oe(this,"reason",n);oe(this,"path",r);this.name="LocalConfigError"}},Vt={schemaVersion:1,device:null,activeCredential:null,pendingCredential:null};function K(){var e;return(e=process.env.BEST_GEO_CONFIG_DIR)!=null?e:(0,B.join)((0,De.homedir)(),`.${p}`)}function T(){return(0,B.join)(K(),"config.json")}function A(){var n,r,o;let e=T(),t;try{if(!(0,f.existsSync)(e))return null;Bt(e),t=(0,f.readFileSync)(e,"utf8")}catch(i){throw i instanceof w?i:Me(i,e)}try{let i=JSON.parse(t);if(typeof i!="object"||i==null||i.schemaVersion!==1)throw new Error("unexpected shape");return{schemaVersion:1,device:(n=i.device)!=null?n:null,activeCredential:(r=i.activeCredential)!=null?r:null,pendingCredential:(o=i.pendingCredential)!=null?o:null}}catch{throw new w("corrupted",e,`\u672C\u673A\u914D\u7F6E\u6587\u4EF6\u5185\u5BB9\u4E0D\u5B8C\u6574\u6216\u683C\u5F0F\u4E0D\u5BF9\uFF1A${e}`)}}function Ft(e){let t=K(),n=T(),r=(0,B.join)(t,`.config.json.${(0,Ue.randomBytes)(6).toString("hex")}.tmp`);try{(0,f.existsSync)(t)||(0,f.mkdirSync)(t,{recursive:!0,mode:448});let o=(0,f.openSync)(r,"wx",384);try{(0,f.writeSync)(o,`${JSON.stringify(e,null,2)}
3
- `),(0,f.fsyncSync)(o)}finally{(0,f.closeSync)(o)}(0,f.renameSync)(r,n)}catch(o){if((0,f.existsSync)(r))try{(0,f.unlinkSync)(r)}catch{}throw Me(o,n)}}function S(e){var n;let t=e((n=A())!=null?n:{...Vt});return Ft(t),t}function Bt(e){var r;if(process.platform==="win32")return;let t=(0,f.statSync)(e),n=(r=process.getuid)==null?void 0:r.call(process);if(n!=null&&t.uid!==n)throw new w("not_owner",e,`\u672C\u673A\u914D\u7F6E\u6587\u4EF6\u4E0D\u5C5E\u4E8E\u5F53\u524D\u7528\u6237\uFF1A${e}`);if((t.mode&63)!==0)throw new w("permissions_too_open",e,`\u672C\u673A\u914D\u7F6E\u6587\u4EF6\u6743\u9650\u8FC7\u5BBD\uFF08\u540C\u673A\u5176\u4ED6\u7528\u6237\u53EF\u8BFB\uFF09\uFF1A${e}`)}function Me(e,t){let n=e==null?void 0:e.code;return n==="EACCES"||n==="EPERM"||n==="EROFS"?new w("denied",t,`\u6CA1\u6709\u6743\u9650\u8BFB\u5199\u672C\u673A\u914D\u7F6E\uFF1A${t}`):e instanceof Error?e:new Error(String(e))}var Kt=3600*1e3;function Ve(){return(0,B.join)(K(),"pending-uploads.json")}function q(){let e=Ve();if(!(0,f.existsSync)(e))return{};try{let t=JSON.parse((0,f.readFileSync)(e,"utf8")),n=Date.now();return Object.fromEntries(Object.entries(t).filter(([,r])=>{var o;return n-((o=r==null?void 0:r.createdAt)!=null?o:0)<Kt}))}catch{return{}}}function se(e){(0,f.mkdirSync)(K(),{recursive:!0,mode:448}),(0,f.writeFileSync)(Ve(),JSON.stringify(e),{mode:384})}function Be(){var t,n;let e=(t=A())==null?void 0:t.device;return(n=e==null?void 0:e.deviceId)!=null&&n.startsWith(X)?e.deviceId:null}function Y(){var r,o;let e={deviceName:(0,W.hostname)().slice(0,50),platform:`${(0,W.platform)()}-${process.arch}`},t=(r=A())==null?void 0:r.device;if((o=t==null?void 0:t.deviceId)!=null&&o.startsWith(X))return t.deviceName===e.deviceName&&t.platform===e.platform?t:S(i=>({...i,device:{...t,...e}})).device;let n={deviceId:`${X}${(0,Fe.randomUUID)()}`,...e};return S(i=>({...i,device:n})).device}function Ke(){return`cli_${Date.now().toString(36)}${Math.random().toString(36).slice(2,8)}`}function k(e,t=Ke()){return{ok:!0,code:"OK",requestId:t,data:e}}function l(e,t,n={}){var r;return{ok:!1,code:e,message:t,requestId:(r=n.requestId)!=null?r:Ke(),...n.data==null?{}:{data:n.data},...n.nextAction==null?{}:{nextAction:n.nextAction}}}function a(e){process.stdout.write(`${JSON.stringify(e)}
4
- `),e.ok||(process.exitCode=1)}async function y(e,t={}){var i,s;let n=new URL(`${Q}/v1/agent-cli${e}`);for(let[d,m]of Object.entries((i=t.query)!=null?i:{}))if(m!=null)for(let c of Array.isArray(m)?m:[m])n.searchParams.append(d,String(c));let r={"X-GEO-CLI-Version":x,"X-GEO-Protocol-Version":String(F),"X-GEO-CLI-Package":L},o=null;try{o=Be()}catch{}o&&(r["X-Device-ID"]=o),t.apiKey&&(r.Authorization=`Bearer ${t.apiKey}`),t.body!=null&&(r["Content-Type"]="application/json");try{let d=await fetch(n,{method:(s=t.method)!=null?s:"GET",headers:r,body:t.body==null?void 0:JSON.stringify(t.body),signal:AbortSignal.timeout(t.isWrite?Pe:Le)}),m=await d.text();try{let c=JSON.parse(m);return qt(c)?c:l("SERVER_ERROR",`\u670D\u52A1\u7AEF\u8FD4\u56DE\u4E86\u975E\u9884\u671F\u5185\u5BB9\uFF08HTTP ${d.status}\uFF09`,{data:{transportFailure:!0}})}catch{return l("SERVER_ERROR",`\u670D\u52A1\u7AEF\u8FD4\u56DE\u4E86\u975E\u9884\u671F\u5185\u5BB9\uFF08HTTP ${d.status}\uFF09`,{data:{transportFailure:!0}})}}catch(d){return d instanceof Error&&(d.name==="TimeoutError"||d.name==="AbortError")?l("SERVER_ERROR",t.isWrite?"\u670D\u52A1\u7AEF\u5904\u7406\u8D85\u65F6,\u8FD9\u6B21\u5199\u5165\u7ED3\u679C\u672A\u77E5":"\u670D\u52A1\u7AEF\u54CD\u5E94\u8D85\u65F6",{data:{transportFailure:!0},nextAction:t.isWrite?{type:"ask_user",message:"\u8D85\u65F6\u4E0D\u4EE3\u8868\u6CA1\u5199\u8FDB\u53BB \u2014\u2014 \u670D\u52A1\u7AEF\u53EF\u80FD\u8FD8\u5728\u5904\u7406\u3002**\u5148\u7528\u5BF9\u5E94\u7684\u67E5\u8BE2\u80FD\u529B\u786E\u8BA4\u4E00\u904D**,\u786E\u5B9E\u6CA1\u6709\u518D\u91CD\u65B0 plan;\u76F4\u63A5\u91CD\u8BD5\u4F1A\u5EFA\u51FA\u91CD\u590D\u7684\u4E00\u4EFD,\u800C\u4E14\u4F1A\u518D\u6263\u4E00\u6B21\u8D39\u3002"}:{type:"ask_user",message:"\u670D\u52A1\u7AEF\u54CD\u5E94\u592A\u6162\u3002\u7A0D\u540E\u91CD\u8BD5\u540C\u4E00\u6761\u547D\u4EE4\u5373\u53EF,\u67E5\u8BE2\u4E0D\u4F1A\u4EA7\u751F\u4EFB\u4F55\u5199\u5165"}}):l("SERVER_ERROR",`\u65E0\u6CD5\u8FDE\u63A5\u670D\u52A1\u7AEF\uFF1A${d instanceof Error?d.message:String(d)}`,{data:{transportFailure:!0},nextAction:{type:"ask_user",message:"\u8BF7\u786E\u8BA4\u7F51\u7EDC\u53EF\u7528\uFF0C\u4EE5\u53CA\u670D\u52A1\u7AEF\u5730\u5740\u914D\u7F6E\u6B63\u786E"}})}}function qt(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.ok=="boolean"&&typeof t.code=="string"}function jt(e){var t;return!e.ok&&((t=e.data)==null?void 0:t.transportFailure)===!0}function ae(e){return e.ok||jt(e)?!1:["AUTH_EXPIRED","DEVICE_MISMATCH","ACCESS_DENIED","AUTH_REQUIRED","VALIDATION_FAILED"].includes(e.code)}function P(){var e,t,n;return(n=(t=(e=A())==null?void 0:e.activeCredential)==null?void 0:t.apiKey)!=null?n:null}function Z(){var e,t;return(t=(e=A())==null?void 0:e.activeCredential)!=null?t:null}function qe(){var e,t;return(t=(e=A())==null?void 0:e.pendingCredential)!=null?t:null}function je(e){S(t=>({...t,pendingCredential:{apiKey:e,startedAt:new Date().toISOString()}}))}function le(){S(e=>({...e,pendingCredential:null}))}function de(e){return S(t=>{let n=t.pendingCredential;return n?{...t,activeCredential:{apiKey:n.apiKey,...e},pendingCredential:null}:t}).activeCredential}function Ge(){S(e=>({...e,activeCredential:null,pendingCredential:null}))}var _=require("node:crypto"),Je=require("node:http");function He(e){let t=`
2
+ "use strict";var Pt=Object.defineProperty;var Dt=(e,t,n)=>t in e?Pt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var ie=(e,t,n)=>Dt(e,typeof t!="symbol"?t+"":t,n);var se="https://nbgeo.aimusiclj.com",Te="best-geo-test",Re="best-geo-test",Oe="bg-test-cli-",$e="1.0.3";var F=1,x=$e,L=Re,c=Te,Ne="dev",Q=Mt(Ut());function Ut(){var e;return(e=process.env.BEST_GEO_API_BASE)!=null?e:se}var X=Oe,Le=300*1e3,Pe=30*1e3,De=300*1e3;function Mt(e){return e.replace(/\/+$/,"")}var We=require("node:child_process");var Be=require("node:crypto"),W=require("node:os");var f=require("node:fs"),Ue=require("node:os"),B=require("node:path");var Me=require("node:crypto");var w=class extends Error{constructor(n,r,o){super(o);ie(this,"reason",n);ie(this,"path",r);this.name="LocalConfigError"}},Vt={schemaVersion:1,device:null,activeCredential:null,pendingCredential:null};function K(){var e;return(e=process.env.BEST_GEO_CONFIG_DIR)!=null?e:(0,B.join)((0,Ue.homedir)(),`.${c}`)}function T(){return(0,B.join)(K(),"config.json")}function A(){var n,r,o;let e=T(),t;try{if(!(0,f.existsSync)(e))return null;Bt(e),t=(0,f.readFileSync)(e,"utf8")}catch(i){throw i instanceof w?i:Ve(i,e)}try{let i=JSON.parse(t);if(typeof i!="object"||i==null||i.schemaVersion!==1)throw new Error("unexpected shape");return{schemaVersion:1,device:(n=i.device)!=null?n:null,activeCredential:(r=i.activeCredential)!=null?r:null,pendingCredential:(o=i.pendingCredential)!=null?o:null}}catch{throw new w("corrupted",e,`\u672C\u673A\u914D\u7F6E\u6587\u4EF6\u5185\u5BB9\u4E0D\u5B8C\u6574\u6216\u683C\u5F0F\u4E0D\u5BF9\uFF1A${e}`)}}function Ft(e){let t=K(),n=T(),r=(0,B.join)(t,`.config.json.${(0,Me.randomBytes)(6).toString("hex")}.tmp`);try{(0,f.existsSync)(t)||(0,f.mkdirSync)(t,{recursive:!0,mode:448});let o=(0,f.openSync)(r,"wx",384);try{(0,f.writeSync)(o,`${JSON.stringify(e,null,2)}
3
+ `),(0,f.fsyncSync)(o)}finally{(0,f.closeSync)(o)}(0,f.renameSync)(r,n)}catch(o){if((0,f.existsSync)(r))try{(0,f.unlinkSync)(r)}catch{}throw Ve(o,n)}}function S(e){var n;let t=e((n=A())!=null?n:{...Vt});return Ft(t),t}function Bt(e){var r;if(process.platform==="win32")return;let t=(0,f.statSync)(e),n=(r=process.getuid)==null?void 0:r.call(process);if(n!=null&&t.uid!==n)throw new w("not_owner",e,`\u672C\u673A\u914D\u7F6E\u6587\u4EF6\u4E0D\u5C5E\u4E8E\u5F53\u524D\u7528\u6237\uFF1A${e}`);if((t.mode&63)!==0)throw new w("permissions_too_open",e,`\u672C\u673A\u914D\u7F6E\u6587\u4EF6\u6743\u9650\u8FC7\u5BBD\uFF08\u540C\u673A\u5176\u4ED6\u7528\u6237\u53EF\u8BFB\uFF09\uFF1A${e}`)}function Ve(e,t){let n=e==null?void 0:e.code;return n==="EACCES"||n==="EPERM"||n==="EROFS"?new w("denied",t,`\u6CA1\u6709\u6743\u9650\u8BFB\u5199\u672C\u673A\u914D\u7F6E\uFF1A${t}`):e instanceof Error?e:new Error(String(e))}var Kt=3600*1e3;function Fe(){return(0,B.join)(K(),"pending-uploads.json")}function q(){let e=Fe();if(!(0,f.existsSync)(e))return{};try{let t=JSON.parse((0,f.readFileSync)(e,"utf8")),n=Date.now();return Object.fromEntries(Object.entries(t).filter(([,r])=>{var o;return n-((o=r==null?void 0:r.createdAt)!=null?o:0)<Kt}))}catch{return{}}}function ae(e){(0,f.mkdirSync)(K(),{recursive:!0,mode:448}),(0,f.writeFileSync)(Fe(),JSON.stringify(e),{mode:384})}function Ke(){var t,n;let e=(t=A())==null?void 0:t.device;return(n=e==null?void 0:e.deviceId)!=null&&n.startsWith(X)?e.deviceId:null}function Y(){var r,o;let e={deviceName:(0,W.hostname)().slice(0,50),platform:`${(0,W.platform)()}-${process.arch}`},t=(r=A())==null?void 0:r.device;if((o=t==null?void 0:t.deviceId)!=null&&o.startsWith(X))return t.deviceName===e.deviceName&&t.platform===e.platform?t:S(i=>({...i,device:{...t,...e}})).device;let n={deviceId:`${X}${(0,Be.randomUUID)()}`,...e};return S(i=>({...i,device:n})).device}function qe(){return`cli_${Date.now().toString(36)}${Math.random().toString(36).slice(2,8)}`}function k(e,t=qe()){return{ok:!0,code:"OK",requestId:t,data:e}}function l(e,t,n={}){var r;return{ok:!1,code:e,message:t,requestId:(r=n.requestId)!=null?r:qe(),...n.data==null?{}:{data:n.data},...n.nextAction==null?{}:{nextAction:n.nextAction}}}function a(e){process.stdout.write(`${JSON.stringify(e)}
4
+ `),e.ok||(process.exitCode=1)}async function y(e,t={}){var i,s;let n=new URL(`${Q}/v1/agent-cli${e}`);for(let[d,m]of Object.entries((i=t.query)!=null?i:{}))if(m!=null)for(let p of Array.isArray(m)?m:[m])n.searchParams.append(d,String(p));let r={"X-GEO-CLI-Version":x,"X-GEO-Protocol-Version":String(F),"X-GEO-CLI-Package":L},o=null;try{o=Ke()}catch{}o&&(r["X-Device-ID"]=o),t.apiKey&&(r.Authorization=`Bearer ${t.apiKey}`),t.body!=null&&(r["Content-Type"]="application/json");try{let d=await fetch(n,{method:(s=t.method)!=null?s:"GET",headers:r,body:t.body==null?void 0:JSON.stringify(t.body),signal:AbortSignal.timeout(t.isWrite?De:Pe)}),m=await d.text();try{let p=JSON.parse(m);return qt(p)?p:l("SERVER_ERROR",`\u670D\u52A1\u7AEF\u8FD4\u56DE\u4E86\u975E\u9884\u671F\u5185\u5BB9\uFF08HTTP ${d.status}\uFF09`,{data:{transportFailure:!0}})}catch{return l("SERVER_ERROR",`\u670D\u52A1\u7AEF\u8FD4\u56DE\u4E86\u975E\u9884\u671F\u5185\u5BB9\uFF08HTTP ${d.status}\uFF09`,{data:{transportFailure:!0}})}}catch(d){return d instanceof Error&&(d.name==="TimeoutError"||d.name==="AbortError")?l("SERVER_ERROR",t.isWrite?"\u670D\u52A1\u7AEF\u5904\u7406\u8D85\u65F6,\u8FD9\u6B21\u5199\u5165\u7ED3\u679C\u672A\u77E5":"\u670D\u52A1\u7AEF\u54CD\u5E94\u8D85\u65F6",{data:{transportFailure:!0},nextAction:t.isWrite?{type:"ask_user",message:"\u8D85\u65F6\u4E0D\u4EE3\u8868\u6CA1\u5199\u8FDB\u53BB \u2014\u2014 \u670D\u52A1\u7AEF\u53EF\u80FD\u8FD8\u5728\u5904\u7406\u3002**\u5148\u7528\u5BF9\u5E94\u7684\u67E5\u8BE2\u80FD\u529B\u786E\u8BA4\u4E00\u904D**,\u786E\u5B9E\u6CA1\u6709\u518D\u91CD\u65B0 plan;\u76F4\u63A5\u91CD\u8BD5\u4F1A\u5EFA\u51FA\u91CD\u590D\u7684\u4E00\u4EFD,\u800C\u4E14\u4F1A\u518D\u6263\u4E00\u6B21\u8D39\u3002"}:{type:"ask_user",message:"\u670D\u52A1\u7AEF\u54CD\u5E94\u592A\u6162\u3002\u7A0D\u540E\u91CD\u8BD5\u540C\u4E00\u6761\u547D\u4EE4\u5373\u53EF,\u67E5\u8BE2\u4E0D\u4F1A\u4EA7\u751F\u4EFB\u4F55\u5199\u5165"}}):l("SERVER_ERROR",`\u65E0\u6CD5\u8FDE\u63A5\u670D\u52A1\u7AEF\uFF1A${d instanceof Error?d.message:String(d)}`,{data:{transportFailure:!0},nextAction:{type:"ask_user",message:"\u8BF7\u786E\u8BA4\u7F51\u7EDC\u53EF\u7528\uFF0C\u4EE5\u53CA\u670D\u52A1\u7AEF\u5730\u5740\u914D\u7F6E\u6B63\u786E"}})}}function qt(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.ok=="boolean"&&typeof t.code=="string"}function jt(e){var t;return!e.ok&&((t=e.data)==null?void 0:t.transportFailure)===!0}function le(e){return e.ok||jt(e)?!1:["AUTH_EXPIRED","DEVICE_MISMATCH","ACCESS_DENIED","AUTH_REQUIRED","VALIDATION_FAILED"].includes(e.code)}function P(){var e,t,n;return(n=(t=(e=A())==null?void 0:e.activeCredential)==null?void 0:t.apiKey)!=null?n:null}function Z(){var e,t;return(t=(e=A())==null?void 0:e.activeCredential)!=null?t:null}function je(){var e,t;return(t=(e=A())==null?void 0:e.pendingCredential)!=null?t:null}function Ge(e){S(t=>({...t,pendingCredential:{apiKey:e,startedAt:new Date().toISOString()}}))}function de(){S(e=>({...e,pendingCredential:null}))}function pe(e){return S(t=>{let n=t.pendingCredential;return n?{...t,activeCredential:{apiKey:n.apiKey,...e},pendingCredential:null}:t}).activeCredential}function He(){S(e=>({...e,activeCredential:null,pendingCredential:null}))}var _=require("node:crypto"),Qe=require("node:http");function ze(e){let t=`
5
5
  (function () {
6
6
  var shell = document.getElementById('shell');
7
7
  var form = document.getElementById('f');
@@ -357,13 +357,13 @@ input::placeholder { color: color-mix(in srgb, var(--muted) 72%, transparent); }
357
357
  </main>
358
358
  <script>${t}</script>
359
359
  </body>
360
- </html>`,scriptHash:t}}var Gt=256,Ht=4*1024,ce=3e4;function zt(){if(!1)return ce;let e=Number(process.env.BEST_GEO_TEST_CLAIM_WAIT_MS);return!Number.isFinite(e)||e<=0?ce:Math.min(e,ce)}var Jt=1500,pe=15e3;function Qt(){if(!1)return pe;let e=Number(process.env.BEST_GEO_TEST_RESULT_TTL_MS);return!Number.isFinite(e)||e<=0?pe:Math.min(e,pe)}async function Qe(){let e=(0,_.randomBytes)(16).toString("hex"),t=(0,_.randomBytes)(16).toString("hex"),n=(0,_.randomBytes)(16).toString("hex"),{html:r,scriptHash:o}=He(t),i=(0,_.createHash)("sha256").update(o).digest("base64"),s=null;function d(){let g=new Promise((u,$)=>{s={resolve:u,reject:$}});return g.catch(()=>{}),g}let m=d(),c=!1,I=!1,b=null,C=null,H=null,V=null;function Rt(){V==null&&(V=setTimeout(()=>z(),Jt),V.unref())}let v=(0,Je.createServer)((g,u)=>{Ot(g,u).catch(()=>{u.writeHead(500,{"Content-Type":"application/json"}),u.end(JSON.stringify({ok:!1,message:"internal error"}))})});async function Ot(g,u){var ke,Ee,Ie,ve,we,Ae,Se;let $=new URL((ke=g.url)!=null?ke:"/","http://127.0.0.1");if(g.method==="GET"&&$.pathname==="/"){if($.searchParams.get("state")!==e){u.writeHead(404).end();return}u.writeHead(200,{"Content-Type":"text/html; charset=utf-8","Content-Security-Policy":["default-src 'none'",`script-src 'sha256-${i}'`,"style-src 'unsafe-inline'","connect-src 'self'","form-action 'none'","base-uri 'none'","frame-ancestors 'none'"].join("; "),"Set-Cookie":`bg_session=${n}; HttpOnly; SameSite=Strict; Path=/`,"Cache-Control":"no-store","Referrer-Policy":"no-referrer"}),u.end(r);return}if(g.method==="POST"&&$.pathname==="/submit"){let Nt=g.headers.origin,Lt=`http://127.0.0.1:${v.address().port}`;if(Nt!==Lt){h(u,403,{ok:!1,message:"origin rejected"});return}if(!ze(String((Ee=g.headers["x-csrf-token"])!=null?Ee:""),t)){h(u,403,{ok:!1,message:"csrf rejected"});return}if(!String((Ie=g.headers.cookie)!=null?Ie:"").includes(`bg_session=${n}`)){h(u,403,{ok:!1,message:"session rejected"});return}if(!String((ve=g.headers["content-type"])!=null?ve:"").includes("application/json")){h(u,415,{ok:!1,message:"content-type rejected"});return}if(c){h(u,409,{ok:!1,message:"already submitted"});return}let _e=await Xt(g);if(_e==null){h(u,413,{ok:!1,message:"body too large"});return}let J="";try{J=String((we=JSON.parse(_e).key)!=null?we:"").trim()}catch{h(u,400,{ok:!1,message:"invalid json"});return}if(!J||J.length>Gt){h(u,400,{ok:!1,message:"invalid key"});return}c=!0,I=!0,b=null,h(u,200,{ok:!0}),s==null||s.resolve(J),clearTimeout(re),C=setTimeout(()=>{ye({ok:!1,message:"\u6821\u9A8C\u8D85\u65F6\u3002\u8BF7\u56DE\u5230 AI \u52A9\u624B\u67E5\u770B\u8FD9\u6B21\u767B\u5F55\u7684\u7ED3\u679C\u3002"})},zt()),C.unref();return}if(g.method==="GET"&&$.pathname==="/result"){if(!ze(String((Ae=g.headers["x-csrf-token"])!=null?Ae:""),t)){h(u,403,{ok:!1,message:"csrf rejected"});return}if(!String((Se=g.headers.cookie)!=null?Se:"").includes(`bg_session=${n}`)){h(u,403,{ok:!1,message:"session rejected"});return}if(!I){h(u,409,{ok:!1,message:"not submitted"});return}if(b==null){h(u,200,{state:"pending"});return}h(u,200,{state:"done",...b}),b.retryable||Rt();return}u.writeHead(404).end()}if(process.env.BEST_GEO_TEST_FORCE_LISTEN_ERROR==="1")throw Object.assign(new Error("listen EACCES: permission denied 127.0.0.1"),{code:"EACCES"});v.on("error",g=>{s==null||s.reject(g)}),await new Promise((g,u)=>{v.once("error",u),v.listen(0,"127.0.0.1",()=>{v.removeListener("error",u),g()})});let $t=v.address().port,re=he();function he(){let g=setTimeout(()=>{s==null||s.reject(new Error("LOCAL_INTAKE_TIMEOUT")),z()},Ne);return g.unref(),g}function ye(g){if(b==null){if(b=g,C&&(clearTimeout(C),C=null),g.retryable){c=!1,m=d(),re=he();return}H=setTimeout(()=>z(),Qt()),H.unref()}}let xe=!1;function z(){var g;if(!xe){xe=!0,clearTimeout(re);for(let u of[C,H,V])u&&clearTimeout(u);C=null,H=null,V=null,(g=v.closeAllConnections)==null||g.call(v),v.close()}}return{url:`http://127.0.0.1:${$t}/?state=${e}`,nextKey:()=>m,publishResult:ye,close:z}}function h(e,t,n){e.writeHead(t,{"Content-Type":"application/json","Cache-Control":"no-store"}),e.end(JSON.stringify(n))}async function Xt(e){let t=[],n=0;for await(let r of e){if(n+=r.length,n>Ht)return null;t.push(r)}return Buffer.concat(t).toString("utf8")}function ze(e,t){let n=Buffer.from(e),r=Buffer.from(t);return n.length===r.length&&(0,_.timingSafeEqual)(n,r)}async function j(){let e=qe();if(!e)return null;let t=await tt(e.apiKey);return t.ok?(de({userId:t.data.user.id,agentId:t.data.agentId,companyIds:t.data.companyIds}),null):ae(t)?(le(),null):l("SERVER_ERROR",`\u672C\u673A\u6709\u4E00\u4EFD\u5F85\u786E\u8BA4\u7684\u6388\u6743\uFF0C\u6682\u65F6\u65E0\u6CD5\u4E0E\u670D\u52A1\u7AEF\u786E\u8BA4\uFF1A${t.message}`,{requestId:t.requestId,nextAction:{type:"ask_user",message:"\u7F51\u7EDC\u6062\u590D\u540E\u91CD\u8BD5\u540C\u4E00\u6761\u547D\u4EE4\u5373\u53EF\u81EA\u52A8\u6536\u655B\uFF1B\u5728\u6B64\u4E4B\u524D\u4E0D\u8981\u91CD\u65B0\u767B\u5F55\uFF0C\u4E5F\u4E0D\u8981\u5220\u9664\u672C\u673A\u914D\u7F6E\u6587\u4EF6\u3002"}})}async function We(){var d;let e=Y(),t=await j();if(t){a(t);return}let n=P(),r;try{r=await Qe()}catch(m){a(l("HOST_PERMISSION_REQUIRED",`\u65E0\u6CD5\u5728\u672C\u673A\u542F\u52A8\u5F55\u5165\u670D\u52A1\uFF1A${Zt(m)}`,{nextAction:{type:"request_host_approval",message:"Best GEO \u9700\u8981\u5728 127.0.0.1 \u4E0A\u76D1\u542C\u4E00\u4E2A\u968F\u673A\u7AEF\u53E3\u6765\u63A5\u6536\u7528\u6237\u7C98\u8D34\u7684\u5BC6\u94A5\uFF08\u4E0D\u5BF9\u5916\u66B4\u9732\uFF09\u3002\u8BF7\u7528\u5F53\u524D\u5DE5\u5177\u7684\u6743\u9650\u786E\u8BA4\u673A\u5236\u6388\u6743\u672C\u673A\u56DE\u73AF\u7AEF\u53E3\u76D1\u542C\u540E\u91CD\u8BD5\u540C\u4E00\u6761\u547D\u4EE4\u3002",capability:"loopback_port",command:`${p} auth login`}}));return}Yt(r.url);let o=`[${p}]`;process.stderr.write(`${o} auth login \u5DF2\u542F\u52A8\u672C\u673A\u5F55\u5165\u670D\u52A1\uFF0C\u4F1A\u963B\u585E\u7B49\u5F85\u7528\u6237\u7C98\u8D34\u5BC6\u94A5\uFF0C\u6700\u957F 5 \u5206\u949F\u3002
360
+ </html>`,scriptHash:t}}var Gt=256,Ht=4*1024,ce=3e4;function zt(){if(!1)return ce;let e=Number(process.env.BEST_GEO_TEST_CLAIM_WAIT_MS);return!Number.isFinite(e)||e<=0?ce:Math.min(e,ce)}var Jt=1500,ue=15e3;function Qt(){if(!1)return ue;let e=Number(process.env.BEST_GEO_TEST_RESULT_TTL_MS);return!Number.isFinite(e)||e<=0?ue:Math.min(e,ue)}async function Xe(){let e=(0,_.randomBytes)(16).toString("hex"),t=(0,_.randomBytes)(16).toString("hex"),n=(0,_.randomBytes)(16).toString("hex"),{html:r,scriptHash:o}=ze(t),i=(0,_.createHash)("sha256").update(o).digest("base64"),s=null;function d(){let g=new Promise((u,$)=>{s={resolve:u,reject:$}});return g.catch(()=>{}),g}let m=d(),p=!1,I=!1,b=null,C=null,H=null,V=null;function Rt(){V==null&&(V=setTimeout(()=>z(),Jt),V.unref())}let v=(0,Qe.createServer)((g,u)=>{Ot(g,u).catch(()=>{u.writeHead(500,{"Content-Type":"application/json"}),u.end(JSON.stringify({ok:!1,message:"internal error"}))})});async function Ot(g,u){var Ee,Ie,ve,we,Ae,Se,_e;let $=new URL((Ee=g.url)!=null?Ee:"/","http://127.0.0.1");if(g.method==="GET"&&$.pathname==="/"){if($.searchParams.get("state")!==e){u.writeHead(404).end();return}u.writeHead(200,{"Content-Type":"text/html; charset=utf-8","Content-Security-Policy":["default-src 'none'",`script-src 'sha256-${i}'`,"style-src 'unsafe-inline'","connect-src 'self'","form-action 'none'","base-uri 'none'","frame-ancestors 'none'"].join("; "),"Set-Cookie":`bg_session=${n}; HttpOnly; SameSite=Strict; Path=/`,"Cache-Control":"no-store","Referrer-Policy":"no-referrer"}),u.end(r);return}if(g.method==="POST"&&$.pathname==="/submit"){let Nt=g.headers.origin,Lt=`http://127.0.0.1:${v.address().port}`;if(Nt!==Lt){h(u,403,{ok:!1,message:"origin rejected"});return}if(!Je(String((Ie=g.headers["x-csrf-token"])!=null?Ie:""),t)){h(u,403,{ok:!1,message:"csrf rejected"});return}if(!String((ve=g.headers.cookie)!=null?ve:"").includes(`bg_session=${n}`)){h(u,403,{ok:!1,message:"session rejected"});return}if(!String((we=g.headers["content-type"])!=null?we:"").includes("application/json")){h(u,415,{ok:!1,message:"content-type rejected"});return}if(p){h(u,409,{ok:!1,message:"already submitted"});return}let Ce=await Xt(g);if(Ce==null){h(u,413,{ok:!1,message:"body too large"});return}let J="";try{J=String((Ae=JSON.parse(Ce).key)!=null?Ae:"").trim()}catch{h(u,400,{ok:!1,message:"invalid json"});return}if(!J||J.length>Gt){h(u,400,{ok:!1,message:"invalid key"});return}p=!0,I=!0,b=null,h(u,200,{ok:!0}),s==null||s.resolve(J),clearTimeout(oe),C=setTimeout(()=>{xe({ok:!1,message:"\u6821\u9A8C\u8D85\u65F6\u3002\u8BF7\u56DE\u5230 AI \u52A9\u624B\u67E5\u770B\u8FD9\u6B21\u767B\u5F55\u7684\u7ED3\u679C\u3002"})},zt()),C.unref();return}if(g.method==="GET"&&$.pathname==="/result"){if(!Je(String((Se=g.headers["x-csrf-token"])!=null?Se:""),t)){h(u,403,{ok:!1,message:"csrf rejected"});return}if(!String((_e=g.headers.cookie)!=null?_e:"").includes(`bg_session=${n}`)){h(u,403,{ok:!1,message:"session rejected"});return}if(!I){h(u,409,{ok:!1,message:"not submitted"});return}if(b==null){h(u,200,{state:"pending"});return}h(u,200,{state:"done",...b}),b.retryable||Rt();return}u.writeHead(404).end()}if(process.env.BEST_GEO_TEST_FORCE_LISTEN_ERROR==="1")throw Object.assign(new Error("listen EACCES: permission denied 127.0.0.1"),{code:"EACCES"});v.on("error",g=>{s==null||s.reject(g)}),await new Promise((g,u)=>{v.once("error",u),v.listen(0,"127.0.0.1",()=>{v.removeListener("error",u),g()})});let $t=v.address().port,oe=ye();function ye(){let g=setTimeout(()=>{s==null||s.reject(new Error("LOCAL_INTAKE_TIMEOUT")),z()},Le);return g.unref(),g}function xe(g){if(b==null){if(b=g,C&&(clearTimeout(C),C=null),g.retryable){p=!1,m=d(),oe=ye();return}H=setTimeout(()=>z(),Qt()),H.unref()}}let ke=!1;function z(){var g;if(!ke){ke=!0,clearTimeout(oe);for(let u of[C,H,V])u&&clearTimeout(u);C=null,H=null,V=null,(g=v.closeAllConnections)==null||g.call(v),v.close()}}return{url:`http://127.0.0.1:${$t}/?state=${e}`,nextKey:()=>m,publishResult:xe,close:z}}function h(e,t,n){e.writeHead(t,{"Content-Type":"application/json","Cache-Control":"no-store"}),e.end(JSON.stringify(n))}async function Xt(e){let t=[],n=0;for await(let r of e){if(n+=r.length,n>Ht)return null;t.push(r)}return Buffer.concat(t).toString("utf8")}function Je(e,t){let n=Buffer.from(e),r=Buffer.from(t);return n.length===r.length&&(0,_.timingSafeEqual)(n,r)}async function j(){let e=je();if(!e)return null;let t=await nt(e.apiKey);return t.ok?(pe({userId:t.data.user.id,agentId:t.data.agentId,companyIds:t.data.companyIds}),null):le(t)?(de(),null):l("SERVER_ERROR",`\u672C\u673A\u6709\u4E00\u4EFD\u5F85\u786E\u8BA4\u7684\u6388\u6743\uFF0C\u6682\u65F6\u65E0\u6CD5\u4E0E\u670D\u52A1\u7AEF\u786E\u8BA4\uFF1A${t.message}`,{requestId:t.requestId,nextAction:{type:"ask_user",message:"\u7F51\u7EDC\u6062\u590D\u540E\u91CD\u8BD5\u540C\u4E00\u6761\u547D\u4EE4\u5373\u53EF\u81EA\u52A8\u6536\u655B\uFF1B\u5728\u6B64\u4E4B\u524D\u4E0D\u8981\u91CD\u65B0\u767B\u5F55\uFF0C\u4E5F\u4E0D\u8981\u5220\u9664\u672C\u673A\u914D\u7F6E\u6587\u4EF6\u3002"}})}async function Ye(){var d;let e=Y(),t=await j();if(t){a(t);return}let n=P(),r;try{r=await Xe()}catch(m){a(l("HOST_PERMISSION_REQUIRED",`\u65E0\u6CD5\u5728\u672C\u673A\u542F\u52A8\u5F55\u5165\u670D\u52A1\uFF1A${Zt(m)}`,{nextAction:{type:"request_host_approval",message:"Best GEO \u9700\u8981\u5728 127.0.0.1 \u4E0A\u76D1\u542C\u4E00\u4E2A\u968F\u673A\u7AEF\u53E3\u6765\u63A5\u6536\u7528\u6237\u7C98\u8D34\u7684\u5BC6\u94A5\uFF08\u4E0D\u5BF9\u5916\u66B4\u9732\uFF09\u3002\u8BF7\u7528\u5F53\u524D\u5DE5\u5177\u7684\u6743\u9650\u786E\u8BA4\u673A\u5236\u6388\u6743\u672C\u673A\u56DE\u73AF\u7AEF\u53E3\u76D1\u542C\u540E\u91CD\u8BD5\u540C\u4E00\u6761\u547D\u4EE4\u3002",capability:"loopback_port",command:`${c} auth login`}}));return}Yt(r.url);let o=`[${c}]`;process.stderr.write(`${o} auth login \u5DF2\u542F\u52A8\u672C\u673A\u5F55\u5165\u670D\u52A1\uFF0C\u4F1A\u963B\u585E\u7B49\u5F85\u7528\u6237\u7C98\u8D34\u5BC6\u94A5\uFF0C\u6700\u957F 5 \u5206\u949F\u3002
361
361
  ${o} \u8C03\u7528\u65B9\u8BF7\u4FDD\u6301\u672C\u8FDB\u7A0B\u8FD0\u884C\u76F4\u5230\u5B83\u81EA\u884C\u9000\u51FA\uFF0C\u4E0D\u8981\u4E2D\u65AD\u3001\u4E0D\u8981\u8F6C\u4EA4\u7ED9\u7528\u6237\u5728\u522B\u5904\u6267\u884C\uFF1B
362
362
  ${o} \u8FDB\u7A0B\u9000\u51FA\u65F6 stdout \u4F1A\u7ED9\u51FA\u552F\u4E00\u4E00\u4E2A JSON \u7ED3\u679C\uFF0C\u90A3\u65F6\u518D\u5411\u7528\u6237\u6C47\u62A5\u6210\u8D25\u3002
363
363
  ${o} \u73B0\u5728\u8BF7\u628A\u4E0B\u9762\u8FD9\u4E2A\u5730\u5740\u8F6C\u8FBE\u7ED9\u7528\u6237\uFF0C\u8BA9\u4ED6\u5728\u6D4F\u89C8\u5668\u91CC\u6253\u5F00\u5E76\u7C98\u8D34\u5BC6\u94A5\uFF08\u5BC6\u94A5\u4E0D\u8981\u7ECF\u8FC7\u4F60\uFF09\uFF1A
364
364
  `),process.stderr.write(`${o} \u672C\u5730\u9875\u9762\uFF1A${r.url}
365
365
  `),n&&process.stderr.write(`${o} \u672C\u673A\u5DF2\u6709\u4E00\u4EFD\u6388\u6743\uFF0C\u5F55\u5165\u65B0\u5BC6\u94A5\u4F1A\u66FF\u6362\u5B83\u3002
366
- `);let i;for(;;){let m;try{m=await r.nextKey()}catch{r.close(),a(l("AUTH_REQUIRED","\u672C\u5730\u5F55\u5165\u8D85\u65F6\u6216\u88AB\u53D6\u6D88",{nextAction:{type:"auth_login",message:"\u7528\u6237\u5728 5 \u5206\u949F\u5185\u6CA1\u6709\u5B8C\u6210\u7C98\u8D34\u3002\u5148\u95EE\u6E05\u4ED6\u662F\u5426\u5DF2\u7ECF\u62FF\u5230\u5BC6\u94A5\uFF0C\u518D\u7531\u4F60\u91CD\u65B0\u6267\u884C command\uFF0C\u5E76\u628A\u65B0\u7684\u672C\u5730\u9875\u9762\u5730\u5740\u8F6C\u8FBE\u7ED9\u4ED6\u3002",command:`${p} auth login`}}));return}process.stderr.write(`${o} \u5DF2\u6536\u5230\u5BC6\u94A5\uFF0C\u6B63\u5728\u5411\u670D\u52A1\u7AEF\u6821\u9A8C\u5E76\u7ED1\u5B9A\u672C\u673A\uFF0C\u8BF7\u7EE7\u7EED\u7B49\u5F85\u672C\u8FDB\u7A0B\u9000\u51FA\u3002
367
- `),je(m),i=await tt(m);let c=!i.ok&&ae(i);if(c&&le(),r.publishResult({ok:i.ok,message:i.ok?"\u5DF2\u5B8C\u6210\u7ED1\u5B9A\uFF0C\u53EF\u4EE5\u56DE\u5230 AI \u52A9\u624B\u7EE7\u7EED\u64CD\u4F5C\u4E86\u3002":Wt(i),retryable:c}),i.ok)break;if(c){process.stderr.write(`${o} \u8FD9\u628A\u5BC6\u94A5\u88AB\u670D\u52A1\u7AEF\u62D2\u7EDD\uFF0C\u9875\u9762\u4E0A\u5DF2\u63D0\u793A\u7528\u6237\u6362\u4E00\u628A\u91CD\u8BD5\u3002
368
- `);continue}process.stderr.write(`${o} \u672A\u80FD\u786E\u8BA4\u7ED1\u5B9A\u7ED3\u679C\uFF0C\u5DF2\u4FDD\u7559\u8FD9\u628A\u5F85\u786E\u8BA4\u7684\u5BC6\u94A5\u3002\u7F51\u7EDC\u6062\u590D\u540E\u6267\u884C\u4EFB\u610F ${p} \u547D\u4EE4\u5373\u53EF\u81EA\u52A8\u6536\u655B\u3002
369
- `),a(i);return}let s=de({userId:i.data.user.id,agentId:i.data.agentId,companyIds:i.data.companyIds});a(k({user:i.data.user,device:i.data.device,companyIds:(d=s==null?void 0:s.companyIds)!=null?d:i.data.companyIds,replacedPreviousAuthorization:i.data.replacedPreviousAuthorization,configPath:T()},i.requestId))}async function Ye(){let e=await j();if(e){a(e);return}let t=P();if(!t){a(et());return}let n=await y("/companies",{apiKey:t,query:{page:1,limit:100}});if(!n.ok){a(n);return}let r=Y();a(k({loggedIn:!0,device:{deviceId:r.deviceId,deviceName:r.deviceName,platform:r.platform},user:Z()?{id:Z().userId,agentId:Z().agentId}:null,companies:n.data.data.map(o=>({id:o.id,name:o.name})),configPath:T()},n.requestId))}async function Ze(){let e=await j();if(e){a(e);return}let t=P();if(!t){a(et());return}let n=await y("/auth/logout",{method:"POST",apiKey:t});if(!n.ok){a(n);return}Ge(),a(k({loggedOut:!0,revoked:n.data,note:"\u670D\u52A1\u7AEF\u5BC6\u94A5\u5DF2\u64A4\u9500\uFF0C\u672C\u673A\u51ED\u636E\u5DF2\u6E05\u9664\u3002\u8BBE\u5907\u8EAB\u4EFD\u4FDD\u7559\uFF0C\u91CD\u65B0\u767B\u5F55\u4F1A\u590D\u7528\u540C\u4E00\u53F0\u8BBE\u5907\u3002"},n.requestId))}function et(){return l("AUTH_REQUIRED","\u672C\u673A\u8FD8\u6CA1\u6709\u53EF\u7528\u7684\u6388\u6743",{nextAction:{type:"auth_login",message:"\u5148\u8BA9\u7528\u6237\u5230\u6240\u5C5E SaaS \u7F51\u9875\u7684\u5BC6\u94A5\u7BA1\u7406\u91CC\u521B\u5EFA\u300CAI \u52A9\u624B\u5BC6\u94A5\u300D\u5E76\u9009\u597D\u6388\u6743\u516C\u53F8\uFF1B\u7136\u540E\u7531\u4F60\u76F4\u63A5\u6267\u884C command\uFF0C\u5B83\u4F1A\u963B\u585E\u6700\u957F 5 \u5206\u949F\u7B49\u5F85\u7528\u6237\u5728\u672C\u673A\u9875\u9762\u7C98\u8D34\u5BC6\u94A5\u3002\u6267\u884C\u671F\u95F4\u628A stderr \u91CC\u7684\u672C\u5730\u9875\u9762\u5730\u5740\u8F6C\u8FBE\u7ED9\u7528\u6237\uFF0C\u4FDD\u6301\u8FDB\u7A0B\u8FD0\u884C\u76F4\u5230\u5B83\u81EA\u884C\u9000\u51FA\uFF0C\u4E0D\u8981\u4E2D\u65AD\uFF0C\u4E5F\u4E0D\u8981\u8BA9\u7528\u6237\u5728\u522B\u5904\u6267\u884C\u3002",command:`${p} auth login`}})}function Wt(e){var t;return e.code==="AUTH_REQUIRED"?"\u8FD9\u628A\u5BC6\u94A5\u7528\u4E0D\u4E86\uFF08\u65E0\u6548\u6216\u5DF2\u5931\u6548\uFF09\u3002\u8BF7\u786E\u8BA4\u6574\u4E32\u90FD\u590D\u5236\u5B8C\u6574\u4E86\uFF0C\u6216\u5230\u7F51\u9875\u91CD\u65B0\u521B\u5EFA\u4E00\u628A\u518D\u7C98\u8D34\u3002":e.code==="DEVICE_MISMATCH"?"\u8FD9\u628A\u5BC6\u94A5\u5DF2\u7ECF\u7ED1\u5B9A\u5230\u53E6\u4E00\u53F0\u8BBE\u5907\u3002\u8BF7\u5230\u7F51\u9875\u65B0\u5EFA\u4E00\u628A\u5BC6\u94A5\uFF0C\u518D\u7C98\u8D34\u5230\u8FD9\u91CC\u3002":(t=e.message)!=null?t:"\u767B\u5F55\u5931\u8D25\u3002\u8BF7\u56DE\u5230 AI \u52A9\u624B\u67E5\u770B\u8BE6\u60C5\u3002"}function tt(e){let t=Y();return y("/auth/claim",{method:"POST",apiKey:e,body:{...t,cliVersion:x}})}function Yt(e){if(process.env.BEST_GEO_NO_BROWSER==="1")return;let t=process.platform==="darwin"?"open":process.platform==="win32"?"cmd":"xdg-open",n=process.platform==="win32"?["/c","start","",e]:[e];(0,Xe.execFile)(t,n,()=>{})}function Zt(e){return e instanceof Error?e.message:String(e)}async function G(){let e=await j();if(e)return{ok:!1,envelope:e};let t=P();return t?{ok:!0,apiKey:t}:{ok:!1,envelope:l("AUTH_REQUIRED","\u672C\u673A\u8FD8\u6CA1\u6709\u53EF\u7528\u7684\u6388\u6743",{nextAction:{type:"auth_login",message:"\u5148\u8BA9\u7528\u6237\u5230\u6240\u5C5E SaaS \u7F51\u9875\u7684\u5BC6\u94A5\u7BA1\u7406\u91CC\u521B\u5EFA\u300CAI \u52A9\u624B\u5BC6\u94A5\u300D\u5E76\u9009\u597D\u6388\u6743\u516C\u53F8\uFF1B\u7136\u540E\u7531\u4F60\u76F4\u63A5\u6267\u884C command\uFF0C\u5B83\u4F1A\u963B\u585E\u6700\u957F 5 \u5206\u949F\u7B49\u5F85\u7528\u6237\u5728\u672C\u673A\u9875\u9762\u7C98\u8D34\u5BC6\u94A5\u3002",command:`${p} auth login`}})}}var rt=require("node:fs"),D=require("node:path"),ot=require("node:url");function en(e){if(e.cjsDir)return(0,D.join)(e.cjsDir,"..");if(!e.moduleUrl)throw new Error("\u7F3A\u5C11 CLI \u8FD0\u884C\u4F4D\u7F6E");return(0,D.join)((0,D.dirname)((0,ot.fileURLToPath)(e.moduleUrl)),"..","..","..")}function tn(){return en({cjsDir:typeof __dirname=="string"?__dirname:void 0,moduleUrl:void 0})}function U(...e){return(0,rt.readFileSync)((0,D.join)(tn(),...e),"utf8")}function it(){a(k({package:L,version:x,protocolVersion:F,commands:[{command:`${p} version --check`,description:"\u68C0\u67E5\u7248\u672C\u662F\u5426\u9700\u8981\u5347\u7EA7"},{command:`${p} capabilities`,description:"\u5217\u51FA\u53EF\u7528\u80FD\u529B\u53CA\u5176\u8F93\u5165 schema"},{command:`${p} skill get --raw > <\u4F60\u7684 skill \u76EE\u5F55>/best-geo/SKILL.md`,description:"\u76F4\u63A5\u628A Skill \u5199\u6210\u6587\u4EF6\uFF08\u63A8\u8350\uFF1B--raw \u8F93\u51FA markdown \u539F\u6587\uFF0C\u4E0D\u662F JSON\uFF09"},{command:`${p} skill get`,description:"\u4EE5 JSON \u4FE1\u5C01\u8FD4\u56DE Skill \u5185\u5BB9\u548C revision"},{command:`${p} guide list`,description:"\u5217\u51FA\u4E1A\u52A1\u6307\u5357"},{command:`${p} guide get <name>`,description:"\u8BFB\u53D6\u4E00\u4EFD\u4E1A\u52A1\u6307\u5357"},{command:`${p} auth login`,description:"\u6253\u5F00\u672C\u5730\u9875\u9762\u5F55\u5165\u5BC6\u94A5\u5E76\u7ED1\u5B9A\u672C\u673A"},{command:`${p} auth status`,description:"\u67E5\u770B\u5F53\u524D\u6388\u6743\u72B6\u6001"},{command:`${p} auth logout`,description:"\u64A4\u9500\u670D\u52A1\u7AEF\u5BC6\u94A5\u5E76\u6E05\u9664\u672C\u673A\u51ED\u636E"},{command:`${p} call <capability> --input '<JSON>'`,description:"\u8C03\u7528\u4E00\u4E2A\u67E5\u8BE2\u80FD\u529B"},{command:`${p} plan <operation> --input '<JSON>'`,description:"\u751F\u6210\u5199\u64CD\u4F5C\u8BA1\u5212\uFF0C\u8FD4\u56DE\u7ED9\u7528\u6237\u770B\u7684\u53D8\u66F4\u6458\u8981\uFF08\u4E0D\u5199\u6570\u636E\uFF09"},{command:`${p} apply <planId>`,description:"\u6267\u884C\u8BA1\u5212\u3002\u5FC5\u987B\u5148\u628A plan \u7684\u6458\u8981\u7ED9\u7528\u6237\u770B\u8FC7\u5E76\u5F97\u5230\u540C\u610F"}],nextAction:{type:"install_skill",command:`${p} skill get --raw`,message:"\u6309\u5F53\u524D AI \u5DE5\u5177\u7684 Skill \u673A\u5236\u9009\u4E00\u4E2A\u5B89\u88C5\u76EE\u5F55\uFF0C\u7528 best-geo skill get --raw \u628A\u5185\u5BB9\u76F4\u63A5\u91CD\u5B9A\u5411\u6210 SKILL.md\uFF0C\u7136\u540E\u52A0\u8F7D\u5B83"}}))}async function st(e){if(!e){a(k({package:L,version:x,protocolVersion:F,env:$e,apiBase:Q}));return}let t=await y("/meta");if(!t.ok){a(t);return}if(nt(x,t.data.minimumCliVersion)<0){a(l("CLI_UPDATE_REQUIRED",`\u5F53\u524D\u7248\u672C ${x} \u4F4E\u4E8E\u6700\u4F4E\u8981\u6C42 ${t.data.minimumCliVersion}`,{requestId:t.requestId,data:{current:x,...t.data},nextAction:{type:"upgrade",message:"\u5347\u7EA7\u540E\u91CD\u8BD5",command:`npm install -g ${L}@latest`}}));return}a(k({current:x,...t.data,updateAvailable:nt(x,t.data.latestCliVersion)<0},t.requestId))}function at(){a(k(JSON.parse(U("capabilities","capabilities.json"))))}function lt(e){let t=pt(U("skills","best-geo","SKILL.md"));if(e){process.stdout.write(t);return}a(k({name:p,revision:1,content:t}))}var ue=["company","product","question","article","knowledge","material","question-task","article-task","scheduled-monitor","publication","video","answer-card"];function dt(){a(k({guides:ue.map(e=>{let t=JSON.parse(U("guides",`${e}.json`));return{name:t.name,title:t.title,whenToUse:t.whenToUse}})}))}function ct(e){if(!ue.includes(e)){a(l("GUIDE_NOT_FOUND",`\u6CA1\u6709\u540D\u4E3A ${e} \u7684\u6307\u5357`,{data:{available:ue}}));return}a(k(JSON.parse(pt(U("guides",`${e}.json`)))))}function nt(e,t){var o,i;let n=e.split(".").map(s=>Number.parseInt(s,10)||0),r=t.split(".").map(s=>Number.parseInt(s,10)||0);for(let s=0;s<Math.max(n.length,r.length);s+=1){let d=((o=n[s])!=null?o:0)-((i=r[s])!=null?i:0);if(d!==0)return d<0?-1:1}return 0}function pt(e){return p==="best-geo"?e:e.replace(/\bbest-geo\b(?!-)/g,p)}var me=null,ge=null;function ut(){return me===null&&(me=JSON.parse(U("capabilities","capabilities.json")).capabilities),me}function nn(){return ge===null&&(ge=new Map(ut().filter(e=>e.inputSchema!==void 0).map(e=>[e.name,e.inputSchema]))),ge}function mt(){return ut().filter(e=>e.mode==="write").map(e=>e.name)}function ee(e,t){let n=nn().get(e);return n===void 0?[]:be(t,n,"")}function be(e,t,n){if(t.type==="object"||t.properties!==void 0)return rn(e,t,n);let r=gt(e,t,n);if(r!==null)return[r];let o=[];return typeof e=="string"&&t.minLength!==void 0&&e.length<t.minLength&&o.push(t.minLength===1?`${n} \u4E0D\u80FD\u662F\u7A7A\u5B57\u7B26\u4E32`:`${n} \u81F3\u5C11 ${t.minLength} \u4E2A\u5B57\u7B26\uFF0C\u5F53\u524D ${e.length} \u4E2A`),typeof e=="string"&&t.maxLength!==void 0&&e.length>t.maxLength&&o.push(`${n} \u6700\u591A ${t.maxLength} \u4E2A\u5B57\u7B26\uFF0C\u5F53\u524D ${e.length} \u4E2A`),typeof e=="number"&&(t.maximum!==void 0&&e>t.maximum&&o.push(`${n} \u4E0D\u80FD\u5927\u4E8E ${t.maximum}`),t.minimum!==void 0&&e<t.minimum&&o.push(`${n} \u4E0D\u80FD\u5C0F\u4E8E ${t.minimum}`)),t.enum!==void 0&&!t.enum.includes(e)&&o.push(`${n} \u53EA\u80FD\u662F ${t.enum.join(" / ")} \u4E4B\u4E00\uFF0C\u6536\u5230 ${R(e)}`),Array.isArray(e)&&(t.minItems!==void 0&&e.length<t.minItems&&o.push(`${n} \u81F3\u5C11\u8981 ${t.minItems} \u9879\uFF0C\u5F53\u524D ${e.length} \u9879`),t.maxItems!==void 0&&e.length>t.maxItems&&o.push(`${n} \u6700\u591A ${t.maxItems} \u9879\uFF0C\u5F53\u524D ${e.length} \u9879`),t.items!==void 0&&e.forEach((i,s)=>{o.push(...be(i,t.items,`${n}[${s}]`))})),o}function rn(e,t,n){var d,m;if(typeof e!="object"||e===null||Array.isArray(e))return[`${n||"\u5165\u53C2"} \u5FC5\u987B\u662F\u5BF9\u8C61`];let r=e,o=(d=t.properties)!=null?d:{},i=(m=t.required)!=null?m:[],s=[];for(let c of i)(r[c]===void 0||r[c]===null)&&s.push(`\u7F3A\u5C11\u5FC5\u586B\u5B57\u6BB5 ${fe(n,c)}`);if(t.additionalProperties===!1){let c=Object.keys(o);for(let I of Object.keys(r))c.includes(I)||s.push(`\u4E0D\u8BA4\u8BC6\u7684\u5B57\u6BB5 ${fe(n,I)}\uFF0C\u53EF\u7528\u5B57\u6BB5\uFF1A${c.join("\u3001")}`)}for(let[c,I]of Object.entries(o)){let b=r[c];b===void 0||b===null&&i.includes(c)||s.push(...be(b,I,fe(n,c)))}return s}function gt(e,t,n){if(Array.isArray(t.type)){let r=t.type.map(o=>gt(e,{...t,type:o},n));return r.some(o=>o===null)?null:r[0]}switch(t.type){case"null":return e===null?null:`${n} \u5FC5\u987B\u662F null\uFF0C\u6536\u5230 ${R(e)}`;case"string":return typeof e=="string"?null:`${n} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\uFF0C\u6536\u5230 ${R(e)}`;case"number":return typeof e=="number"&&Number.isFinite(e)?null:`${n} \u5FC5\u987B\u662F\u6570\u5B57\uFF0C\u6536\u5230 ${R(e)}`;case"integer":return typeof e=="number"&&Number.isInteger(e)?null:`${n} \u5FC5\u987B\u662F\u6574\u6570\uFF0C\u6536\u5230 ${R(e)}`;case"boolean":return typeof e=="boolean"?null:`${n} \u5FC5\u987B\u662F true \u6216 false\uFF0C\u6536\u5230 ${R(e)}`;case"array":return Array.isArray(e)?null:`${n} \u5FC5\u987B\u662F\u6570\u7EC4\uFF0C\u6536\u5230 ${R(e)}`;default:return null}}function fe(e,t){return e===""?t:`${e}.${t}`}function R(e){if(e===null)return"null";if(Array.isArray(e))return"\u6570\u7EC4";if(typeof e=="object")return"\u5BF9\u8C61";let t=String(e);return typeof e=="string"?`\u5B57\u7B26\u4E32 "${on(t)}"`:t}function on(e){return e.length>20?`${e.slice(0,20)}\u2026`:e}function te(e,t){return l("VALIDATION_FAILED",`\u5165\u53C2\u4E0D\u5408\u6CD5\uFF1A${t.join("\uFF1B")}`,{data:{name:e,errors:t},nextAction:{type:"ask_user",message:"\u6309 capabilities \u91CC\u7684 inputSchema \u4FEE\u6B63\u53C2\u6570\u540E\u91CD\u8BD5\uFF1B\u7F3A\u7684\u4FE1\u606F\u95EE\u7528\u6237"}})}var ft={"companies.list":e=>({path:"/companies",query:e}),"companies.get":e=>({path:`/companies/${Number(e.id)}`}),"products.list":e=>({path:"/products",query:e}),"products.get":e=>({path:`/products/${Number(e.id)}`}),"questions.list":e=>({path:"/questions",query:e}),"questions.get":e=>({path:`/questions/${Number(e.id)}`}),"articles.list":e=>({path:"/articles",query:e}),"articles.get":e=>({path:`/articles/${Number(e.id)}`,query:e.withContent===!0?{withContent:"true"}:void 0}),"knowledge.list":e=>({path:"/knowledge",query:e}),"knowledge.get":e=>({path:`/knowledge/${Number(e.id)}`}),"images.list":e=>({path:"/images",query:e}),"images.get":e=>({path:`/images/${Number(e.id)}`}),"videos.list":e=>({path:"/videos",query:e}),"videos.get":e=>({path:`/videos/${Number(e.id)}`}),"prompts.list":e=>({path:"/prompts",query:e}),"models.list":e=>({path:"/models",query:e}),"questionTasks.list":e=>({path:"/question-tasks",query:e}),"questionTasks.get":e=>({path:`/question-tasks/${Number(e.taskId)}`}),"articleTasks.list":e=>({path:"/article-tasks",query:e}),"articleTasks.get":e=>({path:`/article-tasks/${Number(e.taskId)}`}),"keywordTasks.list":e=>({path:"/keyword-tasks",query:e}),"keywordTasks.get":e=>({path:`/keyword-tasks/${Number(e.taskId)}`}),"tags.list":e=>({path:"/tags",query:e}),"folders.list":e=>({path:"/article-folders",query:e}),"publicationPlatforms.list":e=>({path:"/publication-platforms",query:e}),"publicationAccounts.list":e=>({path:"/publication-accounts",query:e}),"publicationTasks.list":e=>({path:"/publication-tasks",query:e}),"publicationRecords.list":e=>({path:"/publication-records",query:e}),"mediaPlatforms.list":e=>({path:"/media-platforms",query:e}),"mediaPlatforms.get":e=>({path:`/media-platforms/${Number(e.mediaId)}`}),"mediaPublications.list":e=>({path:"/media-publications",query:e}),"mediaPublications.summary":e=>({path:"/media-publications/summary",query:e}),"articleTasks.reuseConfig":e=>({path:`/article-tasks/${Number(e.taskId)}/reuse-config`}),"scheduledSentiment.generateQuestions":e=>({path:"/scheduled-sentiment/generate-questions",method:"POST",body:e}),"indexing.suggestCompetitors":e=>({path:"/suggest-competitors",method:"POST",body:e}),"indexingPlatforms.list":()=>({path:"/indexing-platforms"}),"scheduledIndexing.list":e=>({path:"/scheduled-indexing",query:e}),"scheduledIndexing.get":e=>({path:`/scheduled-indexing/${Number(e.planId)}`}),"scheduledIndexing.runs":e=>({path:`/scheduled-indexing/${Number(e.planId)}/runs`,query:E(e)}),"scheduledIndexing.metrics":e=>({path:`/scheduled-indexing/${Number(e.planId)}/metrics`,query:E(e)}),"scheduledSentiment.list":e=>({path:"/scheduled-sentiment",query:e}),"scheduledSentiment.get":e=>({path:`/scheduled-sentiment/${Number(e.planId)}`}),"scheduledSentiment.runs":e=>({path:`/scheduled-sentiment/${Number(e.planId)}/runs`,query:E(e)}),"scheduledSentiment.metrics":e=>({path:`/scheduled-sentiment/${Number(e.planId)}/metrics`,query:E(e)}),"scheduledIndexing.answers":e=>({path:`/scheduled-indexing/${Number(e.planId)}/answers`,query:E(e)}),"scheduledIndexing.citations":e=>({path:`/scheduled-indexing/${Number(e.planId)}/citations`,query:E(e)}),"scheduledIndexing.topicStats":e=>({path:`/scheduled-indexing/${Number(e.planId)}/topic-stats`,query:E(e)}),"scheduledIndexing.topicPlatformMatrix":e=>({path:`/scheduled-indexing/${Number(e.planId)}/topic-platform-matrix`,query:E(e)}),"scheduledSentiment.answers":e=>({path:`/scheduled-sentiment/${Number(e.planId)}/answers`,query:E(e)}),"scheduledSentiment.citations":e=>({path:`/scheduled-sentiment/${Number(e.planId)}/citations`,query:E(e)}),"scheduledSentiment.topicStats":e=>({path:`/scheduled-sentiment/${Number(e.planId)}/topic-stats`,query:E(e)}),"textToImages.models":()=>({path:"/text-to-image-models"}),"textToImages.list":e=>({path:"/text-to-images",query:e}),"textToImages.get":e=>({path:`/text-to-images/${Number(e.id)}`}),"textToImages.countUncompleted":()=>({path:"/text-to-images/count-uncompleted"}),"dhVideos.avatars":e=>({path:"/dh-videos/avatars",method:"POST",body:e}),"dhVideos.voices":e=>({path:"/dh-videos/voices",method:"POST",body:e}),"dhVideos.list":e=>({path:"/dh-videos",query:e}),"dhVideos.get":e=>({path:`/dh-videos/${Number(e.id)}`}),"clipTasks.templates":e=>({path:"/clip-tasks/templates",method:"POST",body:e}),"clipTasks.bgm":e=>({path:"/clip-tasks/bgm",method:"POST",body:e}),"clipTasks.list":e=>({path:"/clip-tasks",query:e}),"clipTasks.get":e=>({path:`/clip-tasks/${Number(e.id)}`}),"answerCards.list":e=>({path:"/answer-cards",query:e}),"answerCards.templates":()=>({path:"/answer-cards/templates"}),"answerCards.get":e=>({path:`/answer-cards/${Number(e.id)}`}),"answerCards.batch":e=>({path:`/answer-cards/${Number(e.taskId)}/batches/${Number(e.batchId)}`})};function E(e){let{planId:t,...n}=e;return n}function sn(){return Object.keys(ft)}async function bt(e,t){let n=ft[e];if(!n){a(l("VALIDATION_FAILED",`\u672A\u77E5\u80FD\u529B\uFF1A${e}`,{data:{available:sn()},nextAction:{type:"ask_user",message:"\u5148\u6267\u884C best-geo capabilities \u67E5\u770B\u53EF\u7528\u80FD\u529B"}}));return}let r={};if(t)try{r=JSON.parse(t)}catch{a(l("VALIDATION_FAILED","--input \u4E0D\u662F\u5408\u6CD5 JSON"));return}let o=ee(e,r);if(o.length>0){a(te(e,o));return}let i=await G();if(!i.ok){a(i.envelope);return}let{path:s,query:d,method:m,body:c}=n(r);a(await y(s,{apiKey:i.apiKey,query:d,method:m,body:c}))}var O=require("node:fs"),M=require("node:path");var an={image:{maxBytes:2*1024*1024,extensions:[".png",".jpg",".jpeg"],label:"\u56FE\u7247"},video:{maxBytes:200*1024*1024,extensions:[".mp4"],label:"\u89C6\u9891"},thumbnail:{maxBytes:5*1024*1024,extensions:[".png",".jpg",".jpeg"],label:"\u5C01\u9762\u56FE"}},ln={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".mp4":"video/mp4"},ht={"images.create":[{pathKey:"filePath",metaKey:"file",uploadField:"fileUrl",kind:"image"}],"videos.create":[{pathKey:"videoPath",metaKey:"video",uploadField:"videoUrl",kind:"video"},{pathKey:"thumbnailPath",metaKey:"thumbnail",uploadField:"thumbnail",kind:"thumbnail"}]},dn=900*1e3;function yt(e){return ht[e]!==void 0}function xt(e){return q()[e]!==void 0}function kt(e,t){var i;let n=(i=ht[e])!=null?i:[],r={...t},o={};for(let s of n){let d=t[s.pathKey];if(typeof d!="string"||!d.trim())return{ok:!1,envelope:un(s)};let m=(0,M.resolve)(d.trim()),c=pn(m,s);if(!c.ok)return{ok:!1,envelope:c.envelope};delete r[s.pathKey],r[s.metaKey]={name:(0,M.basename)(m),size:c.size},o[s.uploadField]=m}return{ok:!0,input:r,paths:o}}function Et(e,t){se({...q(),[e]:{paths:t,createdAt:Date.now()}})}async function It(e,t){let n=q()[e];if(!n)return{ok:!1,envelope:l("VALIDATION_FAILED","\u672C\u673A\u6CA1\u6709\u8FD9\u4E2A\u8BA1\u5212\u7684\u5F85\u4F20\u6587\u4EF6\u8BB0\u5F55",{nextAction:{type:"ask_user",message:"\u91CD\u65B0\u6267\u884C best-geo plan \u751F\u6210\u8BA1\u5212\uFF0C\u628A\u6458\u8981\u7ED9\u7528\u6237\u786E\u8BA4\u540E\u518D apply\u2014\u2014\u8BA1\u5212\u548C\u5F85\u4F20\u6587\u4EF6\u662F\u4E00\u8D77\u751F\u6210\u7684"}})};let r={};for(let[o,i]of Object.entries(n.paths)){if(!(0,O.existsSync)(i))return{ok:!1,envelope:l("VALIDATION_FAILED",`\u6587\u4EF6\u5DF2\u7ECF\u4E0D\u5728\u4E86\uFF1A${i}`)};let s=await y(`/plans/${encodeURIComponent(e)}/uploads/presign`,{method:"POST",apiKey:t,body:{field:o,fileName:(0,M.basename)(i)}});if(!s.ok)return{ok:!1,envelope:s};let d=await cn(s.data,i);if(!d.ok)return{ok:!1,envelope:d.envelope};r[o]=s.data.uploadUrl}return{ok:!0,uploads:r}}function vt(e){let t=q();delete t[e],se(t)}async function cn(e,t){let n=ln[wt(t)];if(!n)return{ok:!1,envelope:l("UPLOAD_FAILED",`${t} \u7684\u6587\u4EF6\u7C7B\u578B\u6CA1\u6709\u767B\u8BB0 MIME\uFF0C\u4F20\u4E0D\u4E86`)};let r=new FormData;r.append("key",e.key),r.append("policy",e.policy),r.append("OSSAccessKeyId",e.OSSAccessKeyId),r.append("signature",e.signature),r.append("callback",e.callback),r.append("Content-Disposition",e["Content-Disposition"]),r.append("success_action_status","200"),r.append("file",await(0,O.openAsBlob)(t,{type:n}),(0,M.basename)(t));try{let o=await fetch(e.host,{method:"POST",body:r,signal:AbortSignal.timeout(dn)}),i=(await o.text().catch(()=>"")).slice(0,300);if(!o.ok)return{ok:!1,envelope:l("UPLOAD_FAILED",`\u4E0A\u4F20\u5931\u8D25\uFF08HTTP ${o.status}\uFF09\uFF1A${i}`,{nextAction:{type:"ask_user",message:"\u628A\u8FD9\u4E2A\u60C5\u51B5\u544A\u8BC9\u7528\u6237\uFF0C\u7A0D\u540E\u91CD\u65B0\u6267\u884C\u4E00\u6B21 plan \u518D\u8BD5"}})};let s=mn(i);return s?{ok:!1,envelope:l("UPLOAD_FAILED",`\u6587\u4EF6\u5DF2\u4E0A\u4F20\uFF0C\u4F46\u767B\u8BB0\u5931\u8D25\uFF1A${s}`,{nextAction:{type:"ask_user",message:"\u628A\u8FD9\u53E5\u62A5\u9519\u539F\u6837\u544A\u8BC9\u7528\u6237\uFF0C\u8BA9\u4ED6\u8054\u7CFB\u670D\u52A1\u5546\u3002\u91CD\u8BD5\u591A\u534A\u4E0D\u4F1A\u597D\u3002"}})}:{ok:!0}}catch(o){return{ok:!1,envelope:l("UPLOAD_FAILED",`\u4E0A\u4F20\u4E2D\u65AD\uFF1A${o instanceof Error?o.message:String(o)}`,{nextAction:{type:"ask_user",message:"\u4E0A\u4F20\u6CA1\u80FD\u5B8C\u6210\uFF0C\u539F\u56E0\u89C1\u4E0A\u9762\u7684\u62A5\u9519\u539F\u6587\u3002\u544A\u8BC9\u7528\u6237\uFF0C\u7A0D\u540E\u91CD\u65B0\u8D70\u4E00\u904D"}})}}}function pn(e,t){let n=an[t.kind];if(!(0,O.existsSync)(e))return{ok:!1,envelope:l("VALIDATION_FAILED",`\u627E\u4E0D\u5230\u6587\u4EF6\uFF1A${e}`,{nextAction:{type:"ask_user",message:"\u8BA9\u7528\u6237\u786E\u8BA4\u6587\u4EF6\u8DEF\u5F84\u3002\u76F8\u5BF9\u8DEF\u5F84\u662F\u76F8\u5BF9\u4F60\u5F53\u524D\u7684\u5DE5\u4F5C\u76EE\u5F55\u7B97\u7684"}})};let r=(0,O.statSync)(e);if(!r.isFile())return{ok:!1,envelope:l("VALIDATION_FAILED",`${e} \u4E0D\u662F\u4E00\u4E2A\u6587\u4EF6`)};let o=wt(e);return n.extensions.includes(o)?r.size>n.maxBytes?{ok:!1,envelope:l("VALIDATION_FAILED",`${n.label}\u6700\u5927 ${ne(n.maxBytes)}\uFF0C\u5F53\u524D ${ne(r.size)}\uFF0C\u8D85\u51FA ${ne(r.size-n.maxBytes)}`,{nextAction:{type:"ask_user",message:`\u544A\u8BC9\u7528\u6237\u8FD9\u4E2A\u6587\u4EF6\u8D85\u4E86\u591A\u5C11\uFF0C\u5E76\u95EE\u4ED6\u8981\u4E0D\u8981\u4F60\u5148\u628A\u5B83\u538B\u5230 ${ne(n.maxBytes)} \u4EE5\u5185\u518D\u4F20\u3002\u4F60\u53EF\u4EE5\u7528\u7528\u6237\u673A\u5668\u4E0A\u73B0\u6210\u7684\u5DE5\u5177\u5904\u7406\uFF08macOS \u81EA\u5E26 sips\uFF0C\u591A\u6570\u673A\u5668\u6709 ffmpeg\uFF09\uFF0C\u5904\u7406\u5B8C\u7528\u65B0\u6587\u4EF6\u91CD\u65B0 plan\u3002`}})}:{ok:!0,size:r.size}:{ok:!1,envelope:l("VALIDATION_FAILED",`${n.label}\u53EA\u652F\u6301 ${n.extensions.join(" / ")}\uFF0C\u5F53\u524D\u662F ${o||"(\u6CA1\u6709\u6269\u5C55\u540D)"}`,{nextAction:{type:"ask_user",message:`\u628A\u8FD9\u4E2A\u9650\u5236\u544A\u8BC9\u7528\u6237\uFF0C\u95EE\u4ED6\u8981\u4E0D\u8981\u4F60\u5148\u628A\u6587\u4EF6\u8F6C\u6210 ${n.extensions[0]} \u518D\u4F20`}})}}function un(e){return l("VALIDATION_FAILED",`\u7F3A\u5C11 ${e.pathKey}`,{nextAction:{type:"ask_user",message:`${e.pathKey} \u8981\u7ED9\u4E00\u4E2A\u672C\u673A\u6587\u4EF6\u8DEF\u5F84\u3002\u95EE\u7528\u6237\u6587\u4EF6\u653E\u5728\u54EA\uFF0C\u4E0D\u8981\u81EA\u5DF1\u7F16\u4E00\u4E2A\u8DEF\u5F84\u3002`}})}function ne(e){return e>=1024*1024?`${(e/1024/1024).toFixed(1)}MB`:`${Math.max(1,Math.round(e/1024))}KB`}function mn(e){try{let t=JSON.parse(e),n=Number(t.statusCode);if(Number.isFinite(n)&&n!==0&&n!==200)return typeof t.message=="string"?t.message:`statusCode ${n}`}catch{}return null}function wt(e){let t=e.lastIndexOf(".");return t===-1?"":e.toLowerCase().slice(t)}async function At(e,t,n){var I;let r=mt();if(!e||!r.includes(e)){a(l("VALIDATION_FAILED",`\u672A\u77E5\u7684\u5199\u64CD\u4F5C\uFF1A${e!=null?e:"(\u7A7A)"}`,{data:{available:r},nextAction:{type:"ask_user",message:"\u5148\u6267\u884C best-geo capabilities \u67E5\u770B\u53EF\u7528\u80FD\u529B\u548C\u5B83\u4EEC\u7684\u5165\u53C2"}}));return}if(!t&&(n!=null&&n.trim().startsWith("{"))){a(l("VALIDATION_FAILED","\u5165\u53C2\u8981\u653E\u5728 --input \u540E\u9762",{nextAction:{type:"ask_user",message:`\u6B63\u786E\u5199\u6CD5\uFF1Abest-geo plan ${e} --input '<JSON>'`}}));return}let o;try{o=t?JSON.parse(t):{}}catch{a(l("VALIDATION_FAILED","--input \u4E0D\u662F\u5408\u6CD5 JSON"));return}let i=ee(e,o);if(i.length>0){a(te(e,i));return}let s=o,d=null;if(yt(e)){let b=kt(e,o);if(!b.ok){a(b.envelope);return}s=b.input,d=b.paths}let m=await G();if(!m.ok){a(m.envelope);return}let c=await y("/plans",{method:"POST",apiKey:m.apiKey,body:{operation:e,input:s}});c.ok&&d&&((I=c.data)!=null&&I.planId)&&Et(c.data.planId,d),a(c)}async function St(e){if(!e){a(l("VALIDATION_FAILED","\u7F3A\u5C11 planId",{nextAction:{type:"ask_user",message:"\u5148\u6267\u884C best-geo plan <operation> \u751F\u6210\u8BA1\u5212\uFF0C\u628A\u6458\u8981\u7ED9\u7528\u6237\u786E\u8BA4\u540E\u518D\u6267\u884C"}}));return}let t=await G();if(!t.ok){a(t.envelope);return}let n;if(xt(e)){let o=await It(e,t.apiKey);if(!o.ok){a(o.envelope);return}n=o.uploads}let r=await y(`/plans/${encodeURIComponent(e)}/apply`,{method:"POST",apiKey:t.apiKey,body:n?{uploads:n}:{},isWrite:!0});r.ok&&vt(e),a(r)}function _t(e){let t={};for(let n=0;n<e.length;n+=1){let r=e[n];if(!r.startsWith("--"))continue;let o=r.slice(2),i=e[n+1];i&&!i.startsWith("--")?(t[o]=i,n+=1):t[o]=!0}return t}function Ct(e,t){let n=T();if(e.reason==="denied")return l("HOST_PERMISSION_REQUIRED",`\u6CA1\u6709\u6743\u9650\u8BFB\u5199\u672C\u673A\u914D\u7F6E\u6587\u4EF6\uFF1A${n}`,{nextAction:{type:"request_host_approval",message:`Best GEO \u9700\u8981\u8BFB\u5199 ${n} \u6765\u4FDD\u5B58\u672C\u673A\u7684\u8BBE\u5907\u8EAB\u4EFD\u548C\u6388\u6743\u3002\u8BF7\u7528\u5F53\u524D\u5DE5\u5177\u81EA\u5E26\u7684\u6743\u9650\u786E\u8BA4\u673A\u5236\u7533\u8BF7\u5BF9\u8BE5\u6587\u4EF6\u7684\u8BFB\u5199\u6743\u9650\u540E\u91CD\u8BD5\u540C\u4E00\u6761\u547D\u4EE4\uFF0C\u4E0D\u8981\u5173\u95ED\u6574\u4E2A\u6C99\u7BB1\uFF0C\u4E5F\u4E0D\u8981\u8BA9\u7528\u6237\u628A\u5BC6\u94A5\u8D34\u8FDB\u5BF9\u8BDD\u3002`,capability:t.capability,...t.retryCommand?{command:t.retryCommand}:{}}});if(e.reason==="permissions_too_open"||e.reason==="not_owner"){let r=e.reason==="not_owner"?"\u8BE5\u6587\u4EF6\u4E0D\u5C5E\u4E8E\u5F53\u524D\u7CFB\u7EDF\u7528\u6237\uFF0C\u8BF7\u8BA9\u7528\u6237\u786E\u8BA4\u540E\u5220\u9664\u6216\u4FEE\u6B63\u5C5E\u4E3B":`\u8BF7\u8BA9\u7528\u6237\u6267\u884C\uFF1Achmod 600 ${n}`;return l("HOST_PERMISSION_REQUIRED",`\u672C\u673A\u914D\u7F6E\u6587\u4EF6\u6743\u9650\u4E0D\u5B89\u5168\uFF1A${n}`,{nextAction:{type:"ask_user",message:`${e.message}\u3002${r}\uFF0C\u7136\u540E\u91CD\u8BD5\u3002`}})}return l("HOST_PERMISSION_REQUIRED",`\u672C\u673A\u914D\u7F6E\u6587\u4EF6\u5DF2\u635F\u574F\uFF1A${n}`,{nextAction:{type:"ask_user",message:`\u8BF7\u8BA9\u7528\u6237\u5220\u9664 ${n} \u540E\u91CD\u65B0\u6267\u884C\u767B\u5F55\u3002\u8BE5\u6587\u4EF6\u91CC\u53EA\u6709\u672C\u673A\u8BBE\u5907\u8EAB\u4EFD\u548C\u6388\u6743\uFF0C\u5220\u9664\u4E0D\u4F1A\u5F71\u54CD\u670D\u52A1\u7AEF\u6570\u636E\u3002`,command:`${p} auth login`}})}function Tt(e){return e instanceof w}async function gn(){process.stdout.on("error",r=>process.exit(r.code==="EPIPE"?0:1));let[e,...t]=process.argv.slice(2),n=_t(t);switch(e){case void 0:case"help":it();return;case"version":await st(n.check===!0);return;case"capabilities":at();return;case"skill":if(t[0]==="get"){lt(n.raw===!0);return}break;case"guide":if(t[0]==="list"){dt();return}if(t[0]==="get"&&t[1]){ct(t[1]);return}break;case"auth":if(t[0]==="login")return We();if(t[0]==="status")return Ye();if(t[0]==="logout")return Ze();break;case"plan":await At(t[0],typeof n.input=="string"?n.input:void 0,t[1]);return;case"apply":await St(t[0]);return;case"call":if(t[0]){await bt(t[0],typeof n.input=="string"?n.input:void 0);return}break;default:break}a(l("VALIDATION_FAILED",`\u65E0\u6CD5\u8BC6\u522B\u7684\u547D\u4EE4\uFF1A${[e,...t].filter(Boolean).join(" ")}`,{nextAction:{type:"ask_user",message:"\u6267\u884C best-geo help \u67E5\u770B\u53EF\u7528\u547D\u4EE4"}})),process.exitCode=1}gn().catch(e=>{if(Tt(e)){a(Ct(e,{capability:e.reason==="denied"?"config_write":"config_read",retryCommand:fn()})),process.exitCode=1;return}a(l("SERVER_ERROR",e instanceof Error?e.message:String(e))),process.exitCode=1});function fn(){let[e,t]=process.argv.slice(2);if(e==="auth"&&(t==="login"||t==="status"||t==="logout"))return`${p} auth ${t}`}
366
+ `);let i;for(;;){let m;try{m=await r.nextKey()}catch{r.close(),a(l("AUTH_REQUIRED","\u672C\u5730\u5F55\u5165\u8D85\u65F6\u6216\u88AB\u53D6\u6D88",{nextAction:{type:"auth_login",message:"\u7528\u6237\u5728 5 \u5206\u949F\u5185\u6CA1\u6709\u5B8C\u6210\u7C98\u8D34\u3002\u5148\u95EE\u6E05\u4ED6\u662F\u5426\u5DF2\u7ECF\u62FF\u5230\u5BC6\u94A5\uFF0C\u518D\u7531\u4F60\u91CD\u65B0\u6267\u884C command\uFF0C\u5E76\u628A\u65B0\u7684\u672C\u5730\u9875\u9762\u5730\u5740\u8F6C\u8FBE\u7ED9\u4ED6\u3002",command:`${c} auth login`}}));return}process.stderr.write(`${o} \u5DF2\u6536\u5230\u5BC6\u94A5\uFF0C\u6B63\u5728\u5411\u670D\u52A1\u7AEF\u6821\u9A8C\u5E76\u7ED1\u5B9A\u672C\u673A\uFF0C\u8BF7\u7EE7\u7EED\u7B49\u5F85\u672C\u8FDB\u7A0B\u9000\u51FA\u3002
367
+ `),Ge(m),i=await nt(m);let p=!i.ok&&le(i);if(p&&de(),r.publishResult({ok:i.ok,message:i.ok?"\u5DF2\u5B8C\u6210\u7ED1\u5B9A\uFF0C\u53EF\u4EE5\u56DE\u5230 AI \u52A9\u624B\u7EE7\u7EED\u64CD\u4F5C\u4E86\u3002":Wt(i),retryable:p}),i.ok)break;if(p){process.stderr.write(`${o} \u8FD9\u628A\u5BC6\u94A5\u88AB\u670D\u52A1\u7AEF\u62D2\u7EDD\uFF0C\u9875\u9762\u4E0A\u5DF2\u63D0\u793A\u7528\u6237\u6362\u4E00\u628A\u91CD\u8BD5\u3002
368
+ `);continue}process.stderr.write(`${o} \u672A\u80FD\u786E\u8BA4\u7ED1\u5B9A\u7ED3\u679C\uFF0C\u5DF2\u4FDD\u7559\u8FD9\u628A\u5F85\u786E\u8BA4\u7684\u5BC6\u94A5\u3002\u7F51\u7EDC\u6062\u590D\u540E\u6267\u884C\u4EFB\u610F ${c} \u547D\u4EE4\u5373\u53EF\u81EA\u52A8\u6536\u655B\u3002
369
+ `),a(i);return}let s=pe({userId:i.data.user.id,agentId:i.data.agentId,companyIds:i.data.companyIds});a(k({user:i.data.user,device:i.data.device,companyIds:(d=s==null?void 0:s.companyIds)!=null?d:i.data.companyIds,replacedPreviousAuthorization:i.data.replacedPreviousAuthorization,configPath:T()},i.requestId))}async function Ze(){let e=await j();if(e){a(e);return}let t=P();if(!t){a(tt());return}let n=await y("/companies",{apiKey:t,query:{page:1,limit:100}});if(!n.ok){a(n);return}let r=Y();a(k({loggedIn:!0,device:{deviceId:r.deviceId,deviceName:r.deviceName,platform:r.platform},user:Z()?{id:Z().userId,agentId:Z().agentId}:null,companies:n.data.data.map(o=>({id:o.id,name:o.name})),configPath:T()},n.requestId))}async function et(){let e=await j();if(e){a(e);return}let t=P();if(!t){a(tt());return}let n=await y("/auth/logout",{method:"POST",apiKey:t});if(!n.ok){a(n);return}He(),a(k({loggedOut:!0,revoked:n.data,note:"\u670D\u52A1\u7AEF\u5BC6\u94A5\u5DF2\u64A4\u9500\uFF0C\u672C\u673A\u51ED\u636E\u5DF2\u6E05\u9664\u3002\u8BBE\u5907\u8EAB\u4EFD\u4FDD\u7559\uFF0C\u91CD\u65B0\u767B\u5F55\u4F1A\u590D\u7528\u540C\u4E00\u53F0\u8BBE\u5907\u3002"},n.requestId))}function tt(){return l("AUTH_REQUIRED","\u672C\u673A\u8FD8\u6CA1\u6709\u53EF\u7528\u7684\u6388\u6743",{nextAction:{type:"auth_login",message:"\u5148\u8BA9\u7528\u6237\u5230\u6240\u5C5E SaaS \u7F51\u9875\u7684\u5BC6\u94A5\u7BA1\u7406\u91CC\u521B\u5EFA\u300CAI \u52A9\u624B\u5BC6\u94A5\u300D\u5E76\u9009\u597D\u6388\u6743\u516C\u53F8\uFF1B\u7136\u540E\u7531\u4F60\u76F4\u63A5\u6267\u884C command\uFF0C\u5B83\u4F1A\u963B\u585E\u6700\u957F 5 \u5206\u949F\u7B49\u5F85\u7528\u6237\u5728\u672C\u673A\u9875\u9762\u7C98\u8D34\u5BC6\u94A5\u3002\u6267\u884C\u671F\u95F4\u628A stderr \u91CC\u7684\u672C\u5730\u9875\u9762\u5730\u5740\u8F6C\u8FBE\u7ED9\u7528\u6237\uFF0C\u4FDD\u6301\u8FDB\u7A0B\u8FD0\u884C\u76F4\u5230\u5B83\u81EA\u884C\u9000\u51FA\uFF0C\u4E0D\u8981\u4E2D\u65AD\uFF0C\u4E5F\u4E0D\u8981\u8BA9\u7528\u6237\u5728\u522B\u5904\u6267\u884C\u3002",command:`${c} auth login`}})}function Wt(e){var t;return e.code==="AUTH_REQUIRED"?"\u8FD9\u628A\u5BC6\u94A5\u7528\u4E0D\u4E86\uFF08\u65E0\u6548\u6216\u5DF2\u5931\u6548\uFF09\u3002\u8BF7\u786E\u8BA4\u6574\u4E32\u90FD\u590D\u5236\u5B8C\u6574\u4E86\uFF0C\u6216\u5230\u7F51\u9875\u91CD\u65B0\u521B\u5EFA\u4E00\u628A\u518D\u7C98\u8D34\u3002":e.code==="DEVICE_MISMATCH"?"\u8FD9\u628A\u5BC6\u94A5\u5DF2\u7ECF\u7ED1\u5B9A\u5230\u53E6\u4E00\u53F0\u8BBE\u5907\u3002\u8BF7\u5230\u7F51\u9875\u65B0\u5EFA\u4E00\u628A\u5BC6\u94A5\uFF0C\u518D\u7C98\u8D34\u5230\u8FD9\u91CC\u3002":(t=e.message)!=null?t:"\u767B\u5F55\u5931\u8D25\u3002\u8BF7\u56DE\u5230 AI \u52A9\u624B\u67E5\u770B\u8BE6\u60C5\u3002"}function nt(e){let t=Y();return y("/auth/claim",{method:"POST",apiKey:e,body:{...t,cliVersion:x}})}function Yt(e){if(process.env.BEST_GEO_NO_BROWSER==="1")return;let t=process.platform==="darwin"?"open":process.platform==="win32"?"cmd":"xdg-open",n=process.platform==="win32"?["/c","start","",e]:[e];(0,We.execFile)(t,n,()=>{})}function Zt(e){return e instanceof Error?e.message:String(e)}async function G(){let e=await j();if(e)return{ok:!1,envelope:e};let t=P();return t?{ok:!0,apiKey:t}:{ok:!1,envelope:l("AUTH_REQUIRED","\u672C\u673A\u8FD8\u6CA1\u6709\u53EF\u7528\u7684\u6388\u6743",{nextAction:{type:"auth_login",message:"\u5148\u8BA9\u7528\u6237\u5230\u6240\u5C5E SaaS \u7F51\u9875\u7684\u5BC6\u94A5\u7BA1\u7406\u91CC\u521B\u5EFA\u300CAI \u52A9\u624B\u5BC6\u94A5\u300D\u5E76\u9009\u597D\u6388\u6743\u516C\u53F8\uFF1B\u7136\u540E\u7531\u4F60\u76F4\u63A5\u6267\u884C command\uFF0C\u5B83\u4F1A\u963B\u585E\u6700\u957F 5 \u5206\u949F\u7B49\u5F85\u7528\u6237\u5728\u672C\u673A\u9875\u9762\u7C98\u8D34\u5BC6\u94A5\u3002",command:`${c} auth login`}})}}var ot=require("node:fs"),D=require("node:path"),it=require("node:url");function en(e){if(e.cjsDir)return(0,D.join)(e.cjsDir,"..");if(!e.moduleUrl)throw new Error("\u7F3A\u5C11 CLI \u8FD0\u884C\u4F4D\u7F6E");return(0,D.join)((0,D.dirname)((0,it.fileURLToPath)(e.moduleUrl)),"..","..","..")}function tn(){return en({cjsDir:typeof __dirname=="string"?__dirname:void 0,moduleUrl:void 0})}function U(...e){return(0,ot.readFileSync)((0,D.join)(tn(),...e),"utf8")}function st(){a(k({package:L,version:x,protocolVersion:F,commands:[{command:`${c} version --check`,description:"\u68C0\u67E5\u7248\u672C\u662F\u5426\u9700\u8981\u5347\u7EA7"},{command:`${c} capabilities`,description:"\u5217\u51FA\u53EF\u7528\u80FD\u529B\u53CA\u5176\u8F93\u5165 schema"},{command:`${c} skill get --raw > <\u4F60\u7684 skill \u76EE\u5F55>/best-geo/SKILL.md`,description:"\u76F4\u63A5\u628A Skill \u5199\u6210\u6587\u4EF6\uFF08\u63A8\u8350\uFF1B--raw \u8F93\u51FA markdown \u539F\u6587\uFF0C\u4E0D\u662F JSON\uFF09"},{command:`${c} skill get`,description:"\u4EE5 JSON \u4FE1\u5C01\u8FD4\u56DE Skill \u5185\u5BB9\u548C revision"},{command:`${c} guide list`,description:"\u5217\u51FA\u4E1A\u52A1\u6307\u5357"},{command:`${c} guide get <name>`,description:"\u8BFB\u53D6\u4E00\u4EFD\u4E1A\u52A1\u6307\u5357"},{command:`${c} auth login`,description:"\u6253\u5F00\u672C\u5730\u9875\u9762\u5F55\u5165\u5BC6\u94A5\u5E76\u7ED1\u5B9A\u672C\u673A"},{command:`${c} auth status`,description:"\u67E5\u770B\u5F53\u524D\u6388\u6743\u72B6\u6001"},{command:`${c} auth logout`,description:"\u64A4\u9500\u670D\u52A1\u7AEF\u5BC6\u94A5\u5E76\u6E05\u9664\u672C\u673A\u51ED\u636E"},{command:`${c} call <capability> --input '<JSON>'`,description:"\u8C03\u7528\u4E00\u4E2A\u67E5\u8BE2\u80FD\u529B"},{command:`${c} plan <operation> --input '<JSON>'`,description:"\u751F\u6210\u5199\u64CD\u4F5C\u8BA1\u5212\uFF0C\u8FD4\u56DE\u7ED9\u7528\u6237\u770B\u7684\u53D8\u66F4\u6458\u8981\uFF08\u4E0D\u5199\u6570\u636E\uFF09"},{command:`${c} apply <planId>`,description:"\u6267\u884C\u8BA1\u5212\u3002\u5FC5\u987B\u5148\u628A plan \u7684\u6458\u8981\u7ED9\u7528\u6237\u770B\u8FC7\u5E76\u5F97\u5230\u540C\u610F"}],nextAction:{type:"install_skill",command:`${c} skill get --raw`,message:"\u6309\u5F53\u524D AI \u5DE5\u5177\u7684 Skill \u673A\u5236\u9009\u4E00\u4E2A\u5B89\u88C5\u76EE\u5F55\uFF0C\u7528 best-geo skill get --raw \u628A\u5185\u5BB9\u76F4\u63A5\u91CD\u5B9A\u5411\u6210 SKILL.md\uFF0C\u7136\u540E\u52A0\u8F7D\u5B83"}}))}async function at(e){if(!e){a(k({package:L,version:x,protocolVersion:F,env:Ne,apiBase:Q}));return}let t=await y("/meta");if(!t.ok){a(t);return}if(rt(x,t.data.minimumCliVersion)<0){a(l("CLI_UPDATE_REQUIRED",`\u5F53\u524D\u7248\u672C ${x} \u4F4E\u4E8E\u6700\u4F4E\u8981\u6C42 ${t.data.minimumCliVersion}`,{requestId:t.requestId,data:{current:x,...t.data},nextAction:{type:"upgrade",message:"\u5347\u7EA7\u540E\u91CD\u8BD5",command:`npm install -g ${L}@latest`}}));return}a(k({current:x,...t.data,updateAvailable:rt(x,t.data.latestCliVersion)<0},t.requestId))}function lt(){a(k(JSON.parse(U("capabilities","capabilities.json"))))}function dt(e){let t=ut(U("skills","best-geo","SKILL.md"));if(e){process.stdout.write(t);return}a(k({name:c,revision:1,content:t}))}var me=["company","product","question","article","knowledge","material","question-task","article-task","scheduled-monitor","publication","video","answer-card"];function pt(){a(k({guides:me.map(e=>{let t=JSON.parse(U("guides",`${e}.json`));return{name:t.name,title:t.title,whenToUse:t.whenToUse}})}))}function ct(e){if(!me.includes(e)){a(l("GUIDE_NOT_FOUND",`\u6CA1\u6709\u540D\u4E3A ${e} \u7684\u6307\u5357`,{data:{available:me}}));return}a(k(JSON.parse(ut(U("guides",`${e}.json`)))))}function rt(e,t){var o,i;let n=e.split(".").map(s=>Number.parseInt(s,10)||0),r=t.split(".").map(s=>Number.parseInt(s,10)||0);for(let s=0;s<Math.max(n.length,r.length);s+=1){let d=((o=n[s])!=null?o:0)-((i=r[s])!=null?i:0);if(d!==0)return d<0?-1:1}return 0}function ut(e){return c==="best-geo"?e:e.replace(/\bbest-geo\b(?!-)/g,c)}var ge=null,fe=null;function mt(){return ge===null&&(ge=JSON.parse(U("capabilities","capabilities.json")).capabilities),ge}function nn(){return fe===null&&(fe=new Map(mt().filter(e=>e.inputSchema!==void 0).map(e=>[e.name,e.inputSchema]))),fe}function ee(){return mt().filter(e=>e.mode==="write").map(e=>e.name)}function te(e,t){let n=nn().get(e);return n===void 0?[]:he(t,n,"")}function he(e,t,n){if(t.type==="object"||t.properties!==void 0)return rn(e,t,n);let r=gt(e,t,n);if(r!==null)return[r];let o=[];return typeof e=="string"&&t.minLength!==void 0&&e.length<t.minLength&&o.push(t.minLength===1?`${n} \u4E0D\u80FD\u662F\u7A7A\u5B57\u7B26\u4E32`:`${n} \u81F3\u5C11 ${t.minLength} \u4E2A\u5B57\u7B26\uFF0C\u5F53\u524D ${e.length} \u4E2A`),typeof e=="string"&&t.maxLength!==void 0&&e.length>t.maxLength&&o.push(`${n} \u6700\u591A ${t.maxLength} \u4E2A\u5B57\u7B26\uFF0C\u5F53\u524D ${e.length} \u4E2A`),typeof e=="number"&&(t.maximum!==void 0&&e>t.maximum&&o.push(`${n} \u4E0D\u80FD\u5927\u4E8E ${t.maximum}`),t.minimum!==void 0&&e<t.minimum&&o.push(`${n} \u4E0D\u80FD\u5C0F\u4E8E ${t.minimum}`)),t.enum!==void 0&&!t.enum.includes(e)&&o.push(`${n} \u53EA\u80FD\u662F ${t.enum.join(" / ")} \u4E4B\u4E00\uFF0C\u6536\u5230 ${R(e)}`),Array.isArray(e)&&(t.minItems!==void 0&&e.length<t.minItems&&o.push(`${n} \u81F3\u5C11\u8981 ${t.minItems} \u9879\uFF0C\u5F53\u524D ${e.length} \u9879`),t.maxItems!==void 0&&e.length>t.maxItems&&o.push(`${n} \u6700\u591A ${t.maxItems} \u9879\uFF0C\u5F53\u524D ${e.length} \u9879`),t.items!==void 0&&e.forEach((i,s)=>{o.push(...he(i,t.items,`${n}[${s}]`))})),o}function rn(e,t,n){var d,m;if(typeof e!="object"||e===null||Array.isArray(e))return[`${n||"\u5165\u53C2"} \u5FC5\u987B\u662F\u5BF9\u8C61`];let r=e,o=(d=t.properties)!=null?d:{},i=(m=t.required)!=null?m:[],s=[];for(let p of i)(r[p]===void 0||r[p]===null)&&s.push(`\u7F3A\u5C11\u5FC5\u586B\u5B57\u6BB5 ${be(n,p)}`);if(t.additionalProperties===!1){let p=Object.keys(o);for(let I of Object.keys(r))p.includes(I)||s.push(`\u4E0D\u8BA4\u8BC6\u7684\u5B57\u6BB5 ${be(n,I)}\uFF0C\u53EF\u7528\u5B57\u6BB5\uFF1A${p.join("\u3001")}`)}for(let[p,I]of Object.entries(o)){let b=r[p];b===void 0||b===null&&i.includes(p)||s.push(...he(b,I,be(n,p)))}return s}function gt(e,t,n){if(Array.isArray(t.type)){let r=t.type.map(o=>gt(e,{...t,type:o},n));return r.some(o=>o===null)?null:r[0]}switch(t.type){case"null":return e===null?null:`${n} \u5FC5\u987B\u662F null\uFF0C\u6536\u5230 ${R(e)}`;case"string":return typeof e=="string"?null:`${n} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\uFF0C\u6536\u5230 ${R(e)}`;case"number":return typeof e=="number"&&Number.isFinite(e)?null:`${n} \u5FC5\u987B\u662F\u6570\u5B57\uFF0C\u6536\u5230 ${R(e)}`;case"integer":return typeof e=="number"&&Number.isInteger(e)?null:`${n} \u5FC5\u987B\u662F\u6574\u6570\uFF0C\u6536\u5230 ${R(e)}`;case"boolean":return typeof e=="boolean"?null:`${n} \u5FC5\u987B\u662F true \u6216 false\uFF0C\u6536\u5230 ${R(e)}`;case"array":return Array.isArray(e)?null:`${n} \u5FC5\u987B\u662F\u6570\u7EC4\uFF0C\u6536\u5230 ${R(e)}`;default:return null}}function be(e,t){return e===""?t:`${e}.${t}`}function R(e){if(e===null)return"null";if(Array.isArray(e))return"\u6570\u7EC4";if(typeof e=="object")return"\u5BF9\u8C61";let t=String(e);return typeof e=="string"?`\u5B57\u7B26\u4E32 "${on(t)}"`:t}function on(e){return e.length>20?`${e.slice(0,20)}\u2026`:e}function ne(e,t){return l("VALIDATION_FAILED",`\u5165\u53C2\u4E0D\u5408\u6CD5\uFF1A${t.join("\uFF1B")}`,{data:{name:e,errors:t},nextAction:{type:"ask_user",message:"\u6309 capabilities \u91CC\u7684 inputSchema \u4FEE\u6B63\u53C2\u6570\u540E\u91CD\u8BD5\uFF1B\u7F3A\u7684\u4FE1\u606F\u95EE\u7528\u6237"}})}var ft={"companies.list":e=>({path:"/companies",query:e}),"companies.get":e=>({path:`/companies/${Number(e.id)}`}),"products.list":e=>({path:"/products",query:e}),"products.get":e=>({path:`/products/${Number(e.id)}`}),"questions.list":e=>({path:"/questions",query:e}),"questions.get":e=>({path:`/questions/${Number(e.id)}`}),"articles.list":e=>({path:"/articles",query:e}),"articles.get":e=>({path:`/articles/${Number(e.id)}`,query:e.withContent===!0?{withContent:"true"}:void 0}),"knowledge.list":e=>({path:"/knowledge",query:e}),"knowledge.get":e=>({path:`/knowledge/${Number(e.id)}`}),"images.list":e=>({path:"/images",query:e}),"images.get":e=>({path:`/images/${Number(e.id)}`}),"videos.list":e=>({path:"/videos",query:e}),"videos.get":e=>({path:`/videos/${Number(e.id)}`}),"prompts.list":e=>({path:"/prompts",query:e}),"models.list":e=>({path:"/models",query:e}),"questionTasks.list":e=>({path:"/question-tasks",query:e}),"questionTasks.get":e=>({path:`/question-tasks/${Number(e.taskId)}`}),"articleTasks.list":e=>({path:"/article-tasks",query:e}),"articleTasks.get":e=>({path:`/article-tasks/${Number(e.taskId)}`}),"keywordTasks.list":e=>({path:"/keyword-tasks",query:e}),"keywordTasks.get":e=>({path:`/keyword-tasks/${Number(e.taskId)}`}),"tags.list":e=>({path:"/tags",query:e}),"folders.list":e=>({path:"/article-folders",query:e}),"publicationPlatforms.list":e=>({path:"/publication-platforms",query:e}),"publicationAccounts.list":e=>({path:"/publication-accounts",query:e}),"publicationTasks.list":e=>({path:"/publication-tasks",query:e}),"publicationRecords.list":e=>({path:"/publication-records",query:e}),"mediaPlatforms.list":e=>({path:"/media-platforms",query:e}),"mediaPlatforms.get":e=>({path:`/media-platforms/${Number(e.mediaId)}`}),"mediaPublications.list":e=>({path:"/media-publications",query:e}),"mediaPublications.summary":e=>({path:"/media-publications/summary",query:e}),"articleTasks.reuseConfig":e=>({path:`/article-tasks/${Number(e.taskId)}/reuse-config`}),"scheduledSentiment.generateQuestions":e=>({path:"/scheduled-sentiment/generate-questions",method:"POST",body:e}),"indexing.suggestCompetitors":e=>({path:"/suggest-competitors",method:"POST",body:e}),"indexingPlatforms.list":()=>({path:"/indexing-platforms"}),"scheduledIndexing.list":e=>({path:"/scheduled-indexing",query:e}),"scheduledIndexing.get":e=>({path:`/scheduled-indexing/${Number(e.planId)}`}),"scheduledIndexing.runs":e=>({path:`/scheduled-indexing/${Number(e.planId)}/runs`,query:E(e)}),"scheduledIndexing.metrics":e=>({path:`/scheduled-indexing/${Number(e.planId)}/metrics`,query:E(e)}),"scheduledSentiment.list":e=>({path:"/scheduled-sentiment",query:e}),"scheduledSentiment.get":e=>({path:`/scheduled-sentiment/${Number(e.planId)}`}),"scheduledSentiment.runs":e=>({path:`/scheduled-sentiment/${Number(e.planId)}/runs`,query:E(e)}),"scheduledSentiment.metrics":e=>({path:`/scheduled-sentiment/${Number(e.planId)}/metrics`,query:E(e)}),"scheduledIndexing.answers":e=>({path:`/scheduled-indexing/${Number(e.planId)}/answers`,query:E(e)}),"scheduledIndexing.citations":e=>({path:`/scheduled-indexing/${Number(e.planId)}/citations`,query:E(e)}),"scheduledIndexing.topicStats":e=>({path:`/scheduled-indexing/${Number(e.planId)}/topic-stats`,query:E(e)}),"scheduledIndexing.topicPlatformMatrix":e=>({path:`/scheduled-indexing/${Number(e.planId)}/topic-platform-matrix`,query:E(e)}),"scheduledSentiment.answers":e=>({path:`/scheduled-sentiment/${Number(e.planId)}/answers`,query:E(e)}),"scheduledSentiment.citations":e=>({path:`/scheduled-sentiment/${Number(e.planId)}/citations`,query:E(e)}),"scheduledSentiment.topicStats":e=>({path:`/scheduled-sentiment/${Number(e.planId)}/topic-stats`,query:E(e)}),"textToImages.models":()=>({path:"/text-to-image-models"}),"textToImages.list":e=>({path:"/text-to-images",query:e}),"textToImages.get":e=>({path:`/text-to-images/${Number(e.id)}`}),"textToImages.countUncompleted":()=>({path:"/text-to-images/count-uncompleted"}),"dhVideos.avatars":e=>({path:"/dh-videos/avatars",method:"POST",body:e}),"dhVideos.voices":e=>({path:"/dh-videos/voices",method:"POST",body:e}),"dhVideos.list":e=>({path:"/dh-videos",query:e}),"dhVideos.get":e=>({path:`/dh-videos/${Number(e.id)}`}),"clipTasks.templates":e=>({path:"/clip-tasks/templates",method:"POST",body:e}),"clipTasks.bgm":e=>({path:"/clip-tasks/bgm",method:"POST",body:e}),"clipTasks.list":e=>({path:"/clip-tasks",query:e}),"clipTasks.get":e=>({path:`/clip-tasks/${Number(e.id)}`}),"answerCards.list":e=>({path:"/answer-cards",query:e}),"answerCards.templates":()=>({path:"/answer-cards/templates"}),"answerCards.get":e=>({path:`/answer-cards/${Number(e.id)}`}),"answerCards.batch":e=>({path:`/answer-cards/${Number(e.taskId)}/batches/${Number(e.batchId)}`})};function E(e){let{planId:t,...n}=e;return n}function sn(){return Object.keys(ft)}async function bt(e,t){let n=ft[e];if(!n&&ee().includes(e)){a(l("VALIDATION_FAILED",`${e} \u662F\u5199\u80FD\u529B\uFF0C\u4E0D\u80FD\u7528 call \u8C03\uFF0C\u8981\u8D70 plan \u2192 \u7528\u6237\u786E\u8BA4 \u2192 apply`,{nextAction:{type:"ask_user",message:`\u6539\u7528 best-geo plan ${e} --input '<\u540C\u6837\u7684\u5165\u53C2>'\uFF0C\u628A\u8FD4\u56DE\u7684\u6458\u8981\u7ED9\u7528\u6237\u786E\u8BA4\u540E\u518D best-geo apply <planId>`}}));return}if(!n){a(l("VALIDATION_FAILED",`\u672A\u77E5\u80FD\u529B\uFF1A${e}`,{data:{available:sn()},nextAction:{type:"ask_user",message:"\u5148\u6267\u884C best-geo capabilities \u67E5\u770B\u53EF\u7528\u80FD\u529B"}}));return}let r={};if(t)try{r=JSON.parse(t)}catch{a(l("VALIDATION_FAILED","--input \u4E0D\u662F\u5408\u6CD5 JSON"));return}let o=te(e,r);if(o.length>0){a(ne(e,o));return}let i=await G();if(!i.ok){a(i.envelope);return}let{path:s,query:d,method:m,body:p}=n(r);a(await y(s,{apiKey:i.apiKey,query:d,method:m,body:p}))}var O=require("node:fs"),M=require("node:path");var an={image:{maxBytes:2*1024*1024,extensions:[".png",".jpg",".jpeg"],label:"\u56FE\u7247"},video:{maxBytes:200*1024*1024,extensions:[".mp4"],label:"\u89C6\u9891"},thumbnail:{maxBytes:5*1024*1024,extensions:[".png",".jpg",".jpeg"],label:"\u5C01\u9762\u56FE"}},ln={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".mp4":"video/mp4"},ht={"images.create":[{pathKey:"filePath",metaKey:"file",uploadField:"fileUrl",kind:"image"}],"videos.create":[{pathKey:"videoPath",metaKey:"video",uploadField:"videoUrl",kind:"video"},{pathKey:"thumbnailPath",metaKey:"thumbnail",uploadField:"thumbnail",kind:"thumbnail"}]},dn=900*1e3;function yt(e){return ht[e]!==void 0}function xt(e){return q()[e]!==void 0}function kt(e,t){var i;let n=(i=ht[e])!=null?i:[],r={...t},o={};for(let s of n){let d=t[s.pathKey];if(typeof d!="string"||!d.trim())return{ok:!1,envelope:un(s)};let m=(0,M.resolve)(d.trim()),p=cn(m,s);if(!p.ok)return{ok:!1,envelope:p.envelope};delete r[s.pathKey],r[s.metaKey]={name:(0,M.basename)(m),size:p.size},o[s.uploadField]=m}return{ok:!0,input:r,paths:o}}function Et(e,t){ae({...q(),[e]:{paths:t,createdAt:Date.now()}})}async function It(e,t){let n=q()[e];if(!n)return{ok:!1,envelope:l("VALIDATION_FAILED","\u672C\u673A\u6CA1\u6709\u8FD9\u4E2A\u8BA1\u5212\u7684\u5F85\u4F20\u6587\u4EF6\u8BB0\u5F55",{nextAction:{type:"ask_user",message:"\u91CD\u65B0\u6267\u884C best-geo plan \u751F\u6210\u8BA1\u5212\uFF0C\u628A\u6458\u8981\u7ED9\u7528\u6237\u786E\u8BA4\u540E\u518D apply\u2014\u2014\u8BA1\u5212\u548C\u5F85\u4F20\u6587\u4EF6\u662F\u4E00\u8D77\u751F\u6210\u7684"}})};let r={};for(let[o,i]of Object.entries(n.paths)){if(!(0,O.existsSync)(i))return{ok:!1,envelope:l("VALIDATION_FAILED",`\u6587\u4EF6\u5DF2\u7ECF\u4E0D\u5728\u4E86\uFF1A${i}`)};let s=await y(`/plans/${encodeURIComponent(e)}/uploads/presign`,{method:"POST",apiKey:t,body:{field:o,fileName:(0,M.basename)(i)}});if(!s.ok)return{ok:!1,envelope:s};let d=await pn(s.data,i);if(!d.ok)return{ok:!1,envelope:d.envelope};r[o]=s.data.uploadUrl}return{ok:!0,uploads:r}}function vt(e){let t=q();delete t[e],ae(t)}async function pn(e,t){let n=ln[wt(t)];if(!n)return{ok:!1,envelope:l("UPLOAD_FAILED",`${t} \u7684\u6587\u4EF6\u7C7B\u578B\u6CA1\u6709\u767B\u8BB0 MIME\uFF0C\u4F20\u4E0D\u4E86`)};let r=new FormData;r.append("key",e.key),r.append("policy",e.policy),r.append("OSSAccessKeyId",e.OSSAccessKeyId),r.append("signature",e.signature),r.append("callback",e.callback),r.append("Content-Disposition",e["Content-Disposition"]),r.append("success_action_status","200"),r.append("file",await(0,O.openAsBlob)(t,{type:n}),(0,M.basename)(t));try{let o=await fetch(e.host,{method:"POST",body:r,signal:AbortSignal.timeout(dn)}),i=(await o.text().catch(()=>"")).slice(0,300);if(!o.ok)return{ok:!1,envelope:l("UPLOAD_FAILED",`\u4E0A\u4F20\u5931\u8D25\uFF08HTTP ${o.status}\uFF09\uFF1A${i}`,{nextAction:{type:"ask_user",message:"\u628A\u8FD9\u4E2A\u60C5\u51B5\u544A\u8BC9\u7528\u6237\uFF0C\u7A0D\u540E\u91CD\u65B0\u6267\u884C\u4E00\u6B21 plan \u518D\u8BD5"}})};let s=mn(i);return s?{ok:!1,envelope:l("UPLOAD_FAILED",`\u6587\u4EF6\u5DF2\u4E0A\u4F20\uFF0C\u4F46\u767B\u8BB0\u5931\u8D25\uFF1A${s}`,{nextAction:{type:"ask_user",message:"\u628A\u8FD9\u53E5\u62A5\u9519\u539F\u6837\u544A\u8BC9\u7528\u6237\uFF0C\u8BA9\u4ED6\u8054\u7CFB\u670D\u52A1\u5546\u3002\u91CD\u8BD5\u591A\u534A\u4E0D\u4F1A\u597D\u3002"}})}:{ok:!0}}catch(o){return{ok:!1,envelope:l("UPLOAD_FAILED",`\u4E0A\u4F20\u4E2D\u65AD\uFF1A${o instanceof Error?o.message:String(o)}`,{nextAction:{type:"ask_user",message:"\u4E0A\u4F20\u6CA1\u80FD\u5B8C\u6210\uFF0C\u539F\u56E0\u89C1\u4E0A\u9762\u7684\u62A5\u9519\u539F\u6587\u3002\u544A\u8BC9\u7528\u6237\uFF0C\u7A0D\u540E\u91CD\u65B0\u8D70\u4E00\u904D"}})}}}function cn(e,t){let n=an[t.kind];if(!(0,O.existsSync)(e))return{ok:!1,envelope:l("VALIDATION_FAILED",`\u627E\u4E0D\u5230\u6587\u4EF6\uFF1A${e}`,{nextAction:{type:"ask_user",message:"\u8BA9\u7528\u6237\u786E\u8BA4\u6587\u4EF6\u8DEF\u5F84\u3002\u76F8\u5BF9\u8DEF\u5F84\u662F\u76F8\u5BF9\u4F60\u5F53\u524D\u7684\u5DE5\u4F5C\u76EE\u5F55\u7B97\u7684"}})};let r=(0,O.statSync)(e);if(!r.isFile())return{ok:!1,envelope:l("VALIDATION_FAILED",`${e} \u4E0D\u662F\u4E00\u4E2A\u6587\u4EF6`)};let o=wt(e);return n.extensions.includes(o)?r.size>n.maxBytes?{ok:!1,envelope:l("VALIDATION_FAILED",`${n.label}\u6700\u5927 ${re(n.maxBytes)}\uFF0C\u5F53\u524D ${re(r.size)}\uFF0C\u8D85\u51FA ${re(r.size-n.maxBytes)}`,{nextAction:{type:"ask_user",message:`\u544A\u8BC9\u7528\u6237\u8FD9\u4E2A\u6587\u4EF6\u8D85\u4E86\u591A\u5C11\uFF0C\u5E76\u95EE\u4ED6\u8981\u4E0D\u8981\u4F60\u5148\u628A\u5B83\u538B\u5230 ${re(n.maxBytes)} \u4EE5\u5185\u518D\u4F20\u3002\u4F60\u53EF\u4EE5\u7528\u7528\u6237\u673A\u5668\u4E0A\u73B0\u6210\u7684\u5DE5\u5177\u5904\u7406\uFF08macOS \u81EA\u5E26 sips\uFF0C\u591A\u6570\u673A\u5668\u6709 ffmpeg\uFF09\uFF0C\u5904\u7406\u5B8C\u7528\u65B0\u6587\u4EF6\u91CD\u65B0 plan\u3002`}})}:{ok:!0,size:r.size}:{ok:!1,envelope:l("VALIDATION_FAILED",`${n.label}\u53EA\u652F\u6301 ${n.extensions.join(" / ")}\uFF0C\u5F53\u524D\u662F ${o||"(\u6CA1\u6709\u6269\u5C55\u540D)"}`,{nextAction:{type:"ask_user",message:`\u628A\u8FD9\u4E2A\u9650\u5236\u544A\u8BC9\u7528\u6237\uFF0C\u95EE\u4ED6\u8981\u4E0D\u8981\u4F60\u5148\u628A\u6587\u4EF6\u8F6C\u6210 ${n.extensions[0]} \u518D\u4F20`}})}}function un(e){return l("VALIDATION_FAILED",`\u7F3A\u5C11 ${e.pathKey}`,{nextAction:{type:"ask_user",message:`${e.pathKey} \u8981\u7ED9\u4E00\u4E2A\u672C\u673A\u6587\u4EF6\u8DEF\u5F84\u3002\u95EE\u7528\u6237\u6587\u4EF6\u653E\u5728\u54EA\uFF0C\u4E0D\u8981\u81EA\u5DF1\u7F16\u4E00\u4E2A\u8DEF\u5F84\u3002`}})}function re(e){return e>=1024*1024?`${(e/1024/1024).toFixed(1)}MB`:`${Math.max(1,Math.round(e/1024))}KB`}function mn(e){try{let t=JSON.parse(e),n=Number(t.statusCode);if(Number.isFinite(n)&&n!==0&&n!==200)return typeof t.message=="string"?t.message:`statusCode ${n}`}catch{}return null}function wt(e){let t=e.lastIndexOf(".");return t===-1?"":e.toLowerCase().slice(t)}async function At(e,t,n){var I;let r=ee();if(!e||!r.includes(e)){a(l("VALIDATION_FAILED",`\u672A\u77E5\u7684\u5199\u64CD\u4F5C\uFF1A${e!=null?e:"(\u7A7A)"}`,{data:{available:r},nextAction:{type:"ask_user",message:"\u5148\u6267\u884C best-geo capabilities \u67E5\u770B\u53EF\u7528\u80FD\u529B\u548C\u5B83\u4EEC\u7684\u5165\u53C2"}}));return}if(!t&&(n!=null&&n.trim().startsWith("{"))){a(l("VALIDATION_FAILED","\u5165\u53C2\u8981\u653E\u5728 --input \u540E\u9762",{nextAction:{type:"ask_user",message:`\u6B63\u786E\u5199\u6CD5\uFF1Abest-geo plan ${e} --input '<JSON>'`}}));return}let o;try{o=t?JSON.parse(t):{}}catch{a(l("VALIDATION_FAILED","--input \u4E0D\u662F\u5408\u6CD5 JSON"));return}let i=te(e,o);if(i.length>0){a(ne(e,i));return}let s=o,d=null;if(yt(e)){let b=kt(e,o);if(!b.ok){a(b.envelope);return}s=b.input,d=b.paths}let m=await G();if(!m.ok){a(m.envelope);return}let p=await y("/plans",{method:"POST",apiKey:m.apiKey,body:{operation:e,input:s}});p.ok&&d&&((I=p.data)!=null&&I.planId)&&Et(p.data.planId,d),a(p)}async function St(e){if(!e){a(l("VALIDATION_FAILED","\u7F3A\u5C11 planId",{nextAction:{type:"ask_user",message:"\u5148\u6267\u884C best-geo plan <operation> \u751F\u6210\u8BA1\u5212\uFF0C\u628A\u6458\u8981\u7ED9\u7528\u6237\u786E\u8BA4\u540E\u518D\u6267\u884C"}}));return}let t=await G();if(!t.ok){a(t.envelope);return}let n;if(xt(e)){let o=await It(e,t.apiKey);if(!o.ok){a(o.envelope);return}n=o.uploads}let r=await y(`/plans/${encodeURIComponent(e)}/apply`,{method:"POST",apiKey:t.apiKey,body:n?{uploads:n}:{},isWrite:!0});r.ok&&vt(e),a(r)}function _t(e){let t={};for(let n=0;n<e.length;n+=1){let r=e[n];if(!r.startsWith("--"))continue;let o=r.slice(2),i=e[n+1];i&&!i.startsWith("--")?(t[o]=i,n+=1):t[o]=!0}return t}function Ct(e,t){let n=T();if(e.reason==="denied")return l("HOST_PERMISSION_REQUIRED",`\u6CA1\u6709\u6743\u9650\u8BFB\u5199\u672C\u673A\u914D\u7F6E\u6587\u4EF6\uFF1A${n}`,{nextAction:{type:"request_host_approval",message:`Best GEO \u9700\u8981\u8BFB\u5199 ${n} \u6765\u4FDD\u5B58\u672C\u673A\u7684\u8BBE\u5907\u8EAB\u4EFD\u548C\u6388\u6743\u3002\u8BF7\u7528\u5F53\u524D\u5DE5\u5177\u81EA\u5E26\u7684\u6743\u9650\u786E\u8BA4\u673A\u5236\u7533\u8BF7\u5BF9\u8BE5\u6587\u4EF6\u7684\u8BFB\u5199\u6743\u9650\u540E\u91CD\u8BD5\u540C\u4E00\u6761\u547D\u4EE4\uFF0C\u4E0D\u8981\u5173\u95ED\u6574\u4E2A\u6C99\u7BB1\uFF0C\u4E5F\u4E0D\u8981\u8BA9\u7528\u6237\u628A\u5BC6\u94A5\u8D34\u8FDB\u5BF9\u8BDD\u3002`,capability:t.capability,...t.retryCommand?{command:t.retryCommand}:{}}});if(e.reason==="permissions_too_open"||e.reason==="not_owner"){let r=e.reason==="not_owner"?"\u8BE5\u6587\u4EF6\u4E0D\u5C5E\u4E8E\u5F53\u524D\u7CFB\u7EDF\u7528\u6237\uFF0C\u8BF7\u8BA9\u7528\u6237\u786E\u8BA4\u540E\u5220\u9664\u6216\u4FEE\u6B63\u5C5E\u4E3B":`\u8BF7\u8BA9\u7528\u6237\u6267\u884C\uFF1Achmod 600 ${n}`;return l("HOST_PERMISSION_REQUIRED",`\u672C\u673A\u914D\u7F6E\u6587\u4EF6\u6743\u9650\u4E0D\u5B89\u5168\uFF1A${n}`,{nextAction:{type:"ask_user",message:`${e.message}\u3002${r}\uFF0C\u7136\u540E\u91CD\u8BD5\u3002`}})}return l("HOST_PERMISSION_REQUIRED",`\u672C\u673A\u914D\u7F6E\u6587\u4EF6\u5DF2\u635F\u574F\uFF1A${n}`,{nextAction:{type:"ask_user",message:`\u8BF7\u8BA9\u7528\u6237\u5220\u9664 ${n} \u540E\u91CD\u65B0\u6267\u884C\u767B\u5F55\u3002\u8BE5\u6587\u4EF6\u91CC\u53EA\u6709\u672C\u673A\u8BBE\u5907\u8EAB\u4EFD\u548C\u6388\u6743\uFF0C\u5220\u9664\u4E0D\u4F1A\u5F71\u54CD\u670D\u52A1\u7AEF\u6570\u636E\u3002`,command:`${c} auth login`}})}function Tt(e){return e instanceof w}async function gn(){process.stdout.on("error",r=>process.exit(r.code==="EPIPE"?0:1));let[e,...t]=process.argv.slice(2),n=_t(t);switch(e){case void 0:case"help":st();return;case"version":await at(n.check===!0);return;case"capabilities":lt();return;case"skill":if(t[0]==="get"){dt(n.raw===!0);return}break;case"guide":if(t[0]==="list"){pt();return}if(t[0]==="get"&&t[1]){ct(t[1]);return}break;case"auth":if(t[0]==="login")return Ye();if(t[0]==="status")return Ze();if(t[0]==="logout")return et();break;case"plan":await At(t[0],typeof n.input=="string"?n.input:void 0,t[1]);return;case"apply":await St(t[0]);return;case"call":if(t[0]){await bt(t[0],typeof n.input=="string"?n.input:void 0);return}break;default:break}a(l("VALIDATION_FAILED",`\u65E0\u6CD5\u8BC6\u522B\u7684\u547D\u4EE4\uFF1A${[e,...t].filter(Boolean).join(" ")}`,{nextAction:{type:"ask_user",message:"\u6267\u884C best-geo help \u67E5\u770B\u53EF\u7528\u547D\u4EE4"}})),process.exitCode=1}gn().catch(e=>{if(Tt(e)){a(Ct(e,{capability:e.reason==="denied"?"config_write":"config_read",retryCommand:fn()})),process.exitCode=1;return}a(l("SERVER_ERROR",e instanceof Error?e.message:String(e))),process.exitCode=1});function fn(){let[e,t]=process.argv.slice(2);if(e==="auth"&&(t==="login"||t==="status"||t==="logout"))return`${c} auth ${t}`}
@@ -28,7 +28,7 @@
28
28
  "step": 4,
29
29
  "action": "需要就改脚本,不需要跳过",
30
30
  "capability": "answerCards.savePages",
31
- "note": "补丁式提交:pages 按 id 改字段、insert 插新页、order 重排、deleteIds 删页,只说清改了什么。这一步不花钱,改到满意再出图,不用出完再返工。⚠️ 服务端是删了重建页,不是原地改——每次 savePages 之后,旧的页 id 全部作废,下次再改必须先重新 answerCards.get 拿新 id,拿旧 id 提交会被拒。"
31
+ "note": "补丁式提交:pages 按 id 改字段、order 重排、deleteIds 删页,只说清改了什么。暂不支持新增页(insert 会被拒),每页的 type/visualType 也不能改。这一步不花钱,改到满意再出图,不用出完再返工。⚠️ 服务端是删了重建页,不是原地改——每次 savePages 之后,旧的页 id 全部作废,下次再改必须先重新 answerCards.get 拿新 id,拿旧 id 提交会被拒。"
32
32
  },
33
33
  {
34
34
  "step": 5,
@@ -61,7 +61,8 @@
61
61
  "不要在 status=1(分析中)时反复调 answerCards.get 高频轮询,分析通常需要一些时间",
62
62
  "不要在 answerCards.generate 的计划确认之后再用 answerCards.savePages 改脚本。这份计划的报价是按当时的页数定的,页数一变就会被 apply 打回,得重新生成计划让用户重新确认",
63
63
  "不要自己编 templateId / modelCode。templateId 从 answerCards.templates 查,modelCode 从 textToImages.models 查,猜的值提交后会被服务端拒",
64
- "不要把 answerCards.savePages 的 pages/insert/order/deleteIds 全部留空提交。四项至少要给一项非空数组,全空的补丁不会被接受",
64
+ "不要把 answerCards.savePages 的 pages/order/deleteIds 全部留空提交。至少要给一项非空数组,全空的补丁不会被接受",
65
+ "不要用 answerCards.savePages 的 insert 加页,也不要改某一页的 type / visualType——都会被拒。新加的页拿不到分析阶段的优化提示词,出图会和整套对不上;用户要加内容或换页面角色,让他改现有页文案,或点重新分析",
65
66
  "不要拿 savePages 之前的旧页 id 去提交下一次 savePages 或 generate。savePages 是删了重建页,提交成功后旧 id 全部作废,必须重新 answerCards.get 拿新 id",
66
67
  "不要因为批次 status 还没到终态就说任务失败了。4/5 排队中/出图中都还在正常跑,只有 6/7/8 才是终态",
67
68
  "现在没有重跑单页失败图的能力,不要替用户编一个「重试」操作,有失败页就引导他去网页处理",
@@ -69,7 +70,7 @@
69
70
  ],
70
71
  "errorRecovery": {
71
72
  "ACCESS_DENIED": "这个任务所属公司不在密钥授权范围内,或任务不存在。回到 companies.list 确认范围,或让用户去网页把这家公司加进这把密钥的授权。查别人的答案卡任务也报这个码——不区分「不存在」和「不是你的」。",
72
- "VALIDATION_FAILED": "参数不合法,按 capabilities 里的 inputSchema 修正后重试。message 里写明了是哪个字段;常见原因:sourceType/visualMode 对应的必填项没给全、content 不够 20 个有效字符、savePages 的补丁四项全空、order 没列全所有页 id(或用了 savePages 之前已作废的旧页 id)。",
73
+ "VALIDATION_FAILED": "参数不合法,按 capabilities 里的 inputSchema 修正后重试。message 里写明了是哪个字段;常见原因:sourceType/visualMode 对应的必填项没给全、content 不够 20 个有效字符、savePages 的补丁 pages/order/deleteIds 三项全空、用了 insert 加页或改了某页的 type/visualType(暂不支持)、order 没列全所有页 id(或用了 savePages 之前已作废的旧页 id)。",
73
74
  "PLAN_STALE": "确认期间这条任务(脚本或发布资料)被别人改过。重新 answerCards.get 读当前内容、重新 plan,把新摘要再给用户确认一次,不要拿旧 planId 重试。",
74
75
  "PLAN_EXPIRED": "计划超过 30 分钟没执行。重新 plan,把新摘要再给用户确认一次——旧 planId 已经不能用了。",
75
76
  "PLAN_COST_CHANGED": "generate 在 apply 时发现要出的页数和确认时不一样(多半是确认期间脚本被改过),或者单价变了。重新 plan,把新的页数和费用说明再念给用户确认一次,不要直接重试 apply。",
@@ -33,7 +33,7 @@
33
33
  "step": 5,
34
34
  "action": "批量新增或修改搜索问题时走 plan/apply",
35
35
  "capability": "questions.create / questions.update",
36
- "note": "questions 传字符串数组,一次最多 100 条。计划摘要会分别列出「将新增」「已存在跳过」「重复/空值跳过」。"
36
+ "note": "questions 传字符串数组,一次最多 100 条。计划摘要会分别列出「将新增」「已存在跳过」「重复/空值跳过」。questions.update 的 tags 是整体覆盖不是追加:传入的就是最终全部标签,没传到的旧标签会被删掉、传 [] 会清空;只想加标签时先 questions.get 取现有 tags,合并后整组传入,并在给用户看摘要时点明修改前后的标签。"
37
37
  },
38
38
  {
39
39
  "step": 6,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "best-geo-test",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Best GEO CLI — 给本地 AI 助手调用的 GEO 命令行工具",
5
5
  "bin": {
6
6
  "best-geo-test": "dist/index.cjs"