aws-runtime-bridge 1.9.168 → 1.9.169

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,26 @@ files 白名单),供调度中心「查看本次更新内容」弹窗按 `##
5
5
  展示。发布新版本时须在仓库中先写好 `## v<version>` 段(prepack-guard 校验缺段
6
6
  即阻断发布);Bridge 自更新成功后的运行时追加仅作为包内缺段时的兜底。
7
7
 
8
+ ## v1.9.169
9
+
10
+ _发布日期:2026-10-12_
11
+
12
+ ### 多语言与消息协作增强,环境变量、邮箱与流程线能力整合
13
+
14
+ - dashboard 接入 `vue-i18n`,提供简体中文与英文的自动识别、持久化、运行期切换
15
+ 和 Element Plus 文案联动,并补充完整开发指南与语言资源测试。
16
+ - 消息中心补齐消息复制、引用流、附件下载与反馈队列体验;能力范围、时间线顺序、
17
+ 浏览器面板适配和会话分组等交互稳定性同步收敛。
18
+ - dashboard 侧接通项目 / 角色 / Agent 三层环境变量配置、能力开关与邮箱管理界面,
19
+ 并补充项目关系图导入、流程线交付物下载 / 回放 / 指派标签等能力。
20
+ - bridge 启动测试统一跨平台命令进程 PID mock 输出,稳定 Linux CI 端口探测时序,
21
+ 避免发布流水线因平台差异产生偶发失败。
22
+ - 更新 Docker Compose 与邮箱部署、跨项目角色冲突、环境变量分层等文档。
23
+
24
+ > **验证**:dashboard `npm run lint`、`npm run type-check` 与 `npm run build` 通过;
25
+ > dashboard 新增 34 个测试脚本全部通过;bridge `npm test` 通过
26
+ > (114 files、1621 passed、2 skipped)。
27
+
8
28
  ## v1.9.168
9
29
 
10
30
  _发布日期:2026-10-11_
@@ -4,7 +4,7 @@ import{EventEmitter as ft}from"node:events";import{randomUUID as gt}from"node:cr
4
4
  ${h}`,e.orphanToolMessages+=1},o=c=>{const m=new Map;for(const y of n)if(y.role==="assistant"&&Array.isArray(y.tool_calls))for(const C of y.tool_calls){const d=typeof C?.id=="string"?C.id:"";d&&!m.has(d)&&m.set(d,y)}const h=new Set;for(const y of n){if(y.role==="assistant"&&Array.isArray(y.tool_calls)){for(const f of y.tool_calls){const g=typeof f?.id=="string"?f.id:"";g&&h.add(g)}continue}if(y.role!=="tool")continue;const C=typeof y.tool_call_id=="string"?y.tool_call_id.trim():"";if(!C){t(y,"(\u7F3A\u5931)");continue}if(h.has(C))continue;const d=m.get(C);if(d){c.push({message:y,id:C,assistant:d});continue}t(y,C)}},s=c=>{if(c.length!==0){for(const m of c){const h=n.indexOf(m.message);h>=0&&n.splice(h,1)}for(const m of c){const h=n.indexOf(m.assistant);if(h<0){t(m.message,m.id);continue}let y=h+1;for(;y<n.length&&n[y].role==="tool";)y+=1;n.splice(y,0,m.message),e.reorderedToolResults+=1}}},r=[];o(r),s(r);const i=()=>{const c=new Set;for(const m of n)m.role==="tool"&&m.tool_call_id&&c.add(m.tool_call_id);return c};let a=i();const l="\uFF08\u8BE5\u5DE5\u5177\u8C03\u7528\u7ED3\u679C\u7F3A\u5931\uFF1A\u6240\u5C5E\u8F6E\u6B21\u88AB\u4E2D\u65AD\u6216\u4E0A\u4E0B\u6587\u538B\u7F29\u65F6\u5DF2\u79FB\u9664\uFF0C\u8BF7\u52FF\u57FA\u4E8E\u8BE5\u8C03\u7528\u7EE7\u7EED\u63A8\u65AD\uFF0C\u5FC5\u8981\u65F6\u91CD\u65B0\u8C03\u7528\u5DE5\u5177\u3002\uFF09";for(let c=0;c<n.length;c++){const m=n[c];if(m.role!=="assistant"||!Array.isArray(m.tool_calls))continue;const h=m.tool_calls.filter(f=>typeof f?.id=="string"&&f.id.trim().length>0);if(h.length!==m.tool_calls.length){if(e.downgradedAssistants+=1,h.length===0){delete m.tool_calls,(m.content===null||m.content===void 0)&&(m.content="");continue}m.tool_calls=h}const y=m.tool_calls.map(f=>f?.id).filter(f=>typeof f=="string"&&f.length>0&&!a.has(f));if(y.length===0)continue;let C=-1;for(let f=c+1;f<n.length;f++){if(n[f].role==="tool"){C=f+1;continue}break}if(C>c){const f=y.map(g=>({role:"tool",tool_call_id:g,content:l}));n.splice(C,0,...f),c+=f.length,e.repairedToolCalls+=y.length,a=i();continue}if(c===n.length-1){for(const f of y)n.push({role:"tool",tool_call_id:f,content:l});e.repairedToolCalls+=y.length,a=i();continue}const d=new Set(m.tool_calls.map(f=>f?.id).filter(f=>typeof f=="string"&&f.length>0));delete m.tool_calls,(m.content===null||m.content===void 0)&&(m.content="");for(const f of n)if(f.role==="tool"&&f.tool_call_id&&d.has(f.tool_call_id)){const g=typeof f.content=="string"?f.content:JSON.stringify(f.content??""),T=f.tool_call_id;f.role="user",delete f.tool_call_id,f.content=`[\u7CFB\u7EDF\u63D0\u793A] \u4EE5\u4E0B\u4E3A\u4E00\u6B21\u5DE5\u5177\u6267\u884C\u7684\u7ED3\u679C\uFF08tool_call_id=${T}\uFF09\uFF0C\u5176\u5BF9\u5E94\u7684\u5DE5\u5177\u8C03\u7528\u4E0A\u4E0B\u6587\u5DF2\u4E0D\u5728\u4F1A\u8BDD\u4E2D\uFF0C\u4EC5\u4F9B\u53C2\u8003\uFF1A
5
5
  ${g}`,e.orphanToolMessages+=1}a=i(),e.downgradedAssistants+=1}for(let c=0;c<n.length;c++){const m=n[c];if(m.role!=="assistant"||!Array.isArray(m.tool_calls))continue;const h=new Set(m.tool_calls.map(g=>g?.id).filter(g=>typeof g=="string"&&g.length>0));if(h.size===0)continue;const y=g=>g.role==="tool"&&typeof g.tool_call_id=="string"&&h.has(g.tool_call_id),C=[];for(let g=c+1;g<n.length;g++){const T=n[g];if(y(T))continue;if(T.role==="tool")break;let A=!1;for(let w=g+1;w<n.length;w++)if(y(n[w])){A=!0;break}if(!A)break;C.push(T)}if(C.length===0)continue;const d=n.filter(g=>!C.includes(g));let f=-1;for(let g=0;g<d.length;g++)y(d[g])&&(f=g);f<0||(d.splice(f+1,0,...C),n.length=0,n.push(...d),e.relocatedInterruptions+=C.length)}const u=[];return o(u),s(u),e}const ct={truncatedCount:0,strategy:"none",prunedToolMessages:0,summarizedMessages:0,freedTokens:0};async function ts(n,e,t,o,s,r){if(Oe(n)<=e)return ct;const a=await Ae(n,t,o,{llmSummarizer:s});if(a.strategy!=="none")return a.summarizedMessages>0&&r&&await r(),{truncatedCount:a.prunedToolMessages+a.summarizedMessages,strategy:a.strategy,prunedToolMessages:a.prunedToolMessages,summarizedMessages:a.summarizedMessages,freedTokens:a.freedTokens};const l=await De(n,{llmSummarizer:s,contextLimit:t});return l>0&&r&&await r(),{truncatedCount:l,strategy:l>0?"summarize":"none",prunedToolMessages:0,summarizedMessages:l,freedTokens:0}}function os(n){return be(n)}function ss(n){const e=ue(n).toLowerCase();return os(n)?!1:e.includes("fetch failed")||e.includes("timed out")||e.includes("timeout")||e.includes("econnreset")||e.includes("econnrefused")||e.includes("etimedout")||e.includes("enotfound")||e.includes("socket hang up")||e.includes("network error")||/\b(408|429|500|502|503|504|520|521|522|523|524)\b/.test(e)}function ns(n){if(typeof n!="object"||n===null)return!1;const e=Reflect.get(n,"code"),t=ue(n).toLowerCase();return e===-32001||t.includes("request timed out")}function is(n){if(typeof n=="object"&&n!==null){const e=Reflect.get(n,"code");if(typeof e=="string"&&e)return e;const t=Reflect.get(n,"name");if(typeof t=="string"&&t)return t}return"tool_error"}function ut(n,e,t){return JSON.stringify({ok:!1,tool:n.exposedName,error:{type:is(e),message:ue(e)},...t?{file_snapshot:{path:t.path,bytes:t.bytes,content:t.content}}:{}})}function rs(n){const e=JSON.stringify(n);return e.length>500?`${e.slice(0,500)}\u2026`:e}function as(n){const e=[n?.reasoning_content,n?.reasoning_text,n?.reasoning];for(const t of e){if(typeof t=="string"&&t)return t;if(S(t)){const o=t.text??t.content;if(typeof o=="string"&&o)return o}}return""}function ls(n){return n.length===0?"":["Skills are available for this session.","Use the `skill` tool to load specialized skill instructions when a user task matches one of the available skills listed in the tool description.","Do not attempt to follow skill instructions from memory \u2014 always invoke the `skill` tool first to load the full content."].join(" ")}function cs(n){return n.length===0?"":["Available slash commands:",...n.map(e=>`- /${e.name}${e.description?`: ${e.description}`:""}`),"When the user invokes a slash command, ACode expands it before model execution."].join(`
6
6
  `)}function us(n){if(!n||typeof n!="object")return"";const e=n,t=[],o=e.displayName,s=e.roleName,r=e.instanceName,i=e.projectId,a=e.workspacePath,l=e.runtimeMode,u=e.describe;return typeof o=="string"&&o.trim()&&t.push(`Display Name: ${o.trim()}`),typeof s=="string"&&s.trim()&&t.push(`Role: ${s.trim()}`),typeof r=="string"&&r.trim()&&t.push(`Instance: ${r.trim()}`),typeof i=="string"&&i.trim()&&t.push(`Project: ${i.trim()}`),typeof a=="string"&&a.trim()&&t.push(`Workspace: ${a.trim()}`),typeof l=="string"&&l.trim()&&t.push(`Runtime Mode: ${l.trim()}`),typeof u=="string"&&u.trim()&&t.push(`Description: ${u.trim()}`),t.length===0?"":["[User Profile]",...t].join(`
7
- `)}function mt(n){return n.map(e=>({type:"function",function:{name:e.exposedName,description:e.description||e.toolName,parameters:e.inputSchema}}))}function ms(n,e){return`${n}__${e}`.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,64)||"mcp_tool"}function ds(n){const e={"Content-Type":"application/json"};return n.apiKey&&(e.Authorization=`Bearer ${n.apiKey}`),e}function ps(n){return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,hs(e)?fs(t):t]))}function hs(n){const e=n.trim().toLowerCase();return e==="authorization"||e==="api-key"||e==="x-api-key"||e==="openai-api-key"}function fs(n){return n.trim().toLowerCase().startsWith("bearer ")?"Bearer ***":"***"}function gs(n){return n.split(/\r?\n/).filter(e=>e.startsWith("data:")).map(e=>e.slice(5).trim()).filter(Boolean)}function dt(n){if(!S(n))return null;const e=n.error;if(S(e)){const t=typeof e.message=="string"?e.message:"",o=e.code??e.status??e.type,s=o==null?"":String(o);return t||s?[s,t].filter(Boolean).join(" "):null}if(typeof e=="string"&&e)return e;if(n.type==="error"||n.object==="error"){const t=typeof n.message=="string"?n.message:"",o=n.code??n.status,s=o==null?"":String(o);if(t||s)return[s,t].filter(Boolean).join(" ")}return null}const Ts=/role 'tool'|tool calls and tool results|tool_call_sequence|\b11148\b/i;let pt=0,me="";function xe(n,e,t){if(!Ts.test(t))return null;try{const o=new Map,s=new Map;n.forEach((d,f)=>{if(d.role==="assistant"&&Array.isArray(d.tool_calls))for(const g of d.tool_calls){const T=typeof g?.id=="string"?g.id.trim():"";T&&!o.has(T)&&o.set(T,f)}else if(d.role==="tool"){const g=typeof d.tool_call_id=="string"?d.tool_call_id.trim():"";g&&!s.has(g)&&s.set(g,f)}});const r=[];n.forEach((d,f)=>{if(d.role==="tool"){const g=typeof d.tool_call_id=="string"?d.tool_call_id.trim():"",T=g?o.get(g):void 0;(g===""||T===void 0||T>f)&&r.push(f)}else if(d.role==="assistant"&&Array.isArray(d.tool_calls))for(const g of d.tool_calls){const T=typeof g?.id=="string"?g.id.trim():"";if(T===""||!s.has(T)){r.push(f);break}}});const i=d=>` [\u5DE5\u5177\u5E8F\u5217\u8BC1\u636E] \u53EF\u7591\u6D88\u606F ${r.length}/${n.length} \u6761\uFF08${d?`\u5DF2\u5199\u5165 ${d}`:"\u843D\u76D8\u5931\u8D25"}\uFF09`,a=Date.now();if(a-pt<1e4&&me)return i(me);pt=a;const l=d=>({role:d.role,tool_call_id:d.tool_call_id,tool_calls:Array.isArray(d.tool_calls)?d.tool_calls.map(f=>f?.id??null):void 0,contentPreview:typeof d.content=="string"?d.content.slice(0,300):d.content===null?null:JSON.stringify(d.content).slice(0,300)}),u=`acode-tool-seq-${new Date(a).toISOString().replace(/[:.]/g,"-")}.json`,c=String(process.env.AWS_TEST_HOME||"").trim()||String(process.env.AWS_RUNTIME_HOME_DIR||"").trim(),m=String(process.env.AWS_RUNTIME_ENV||"").trim().toLowerCase()==="development",h=c||(m?z.resolve(process.cwd(),"..",".dev-home"):z.dirname(Pt())),y=z.join(h,".aws-bridge","log"),C={timestamp:new Date(a).toISOString(),status:e,errorBody:t.slice(0,4e3),suspectIndexes:r,messages:n.map((d,f)=>({index:f,role:d.role,tool_call_id:d.tool_call_id,tool_calls:Array.isArray(d.tool_calls)?d.tool_calls.map(g=>g?.id??null):void 0})),suspectWindows:r.map(d=>{const f=Math.max(0,d-6),g=Math.min(n.length,d+7);return{center:d,range:[f,g],messages:n.slice(f,g).map((T,A)=>({index:f+A,...l(T)}))}})};return me=`.aws-bridge/log/${u}`,B.promises.mkdir(y,{recursive:!0}).then(()=>B.promises.writeFile(z.join(y,u),JSON.stringify(C,null,2),"utf-8")).then(()=>B.promises.readdir(y)).then(d=>{const f=d.filter(T=>T.startsWith("acode-tool-seq-")).sort(),g=f.length-20;return g<=0?null:Promise.all(f.slice(0,g).map(T=>B.promises.unlink(z.join(y,T)).catch(()=>{})))}).catch(()=>{me=""}),i(me)}catch{return null}}function ht(n){const e=new Set,t=Date.now();return n.map((o,s)=>{const r=typeof o?.id=="string"?o.id.trim():"";if(r&&!e.has(r))return e.add(r),o;let i=`call-${t}-${s}`,a=1;for(;e.has(i);)i=`call-${t}-${s}-${a}`,a+=1;return e.add(i),{...o,id:i}})}function ys(n,e){const t=Number.isFinite(e.index)?Number(e.index):0,o=n.get(t)??{id:e.id||`call-${t}`,type:"function",function:{name:"",arguments:""}};e.id&&(o.id=e.id),e.function?.name&&(o.function.name+=e.function.name),e.function?.arguments&&(o.function.arguments+=e.function.arguments),n.set(t,o)}function Cs(n){return ht([...n.entries()].sort(([e],[t])=>e-t).map(([,e])=>e).filter(e=>e.function.name.trim().length>0))}function _s(){const n=process.env.ACODE_ABORT_FORCE_SETTLE_GRACE_MS;if(n===void 0||n.trim()==="")return 6e4;const e=Number(n.trim());return Number.isFinite(e)&&e>=0?Math.floor(e):6e4}class X extends ft{hasActiveBlockingToolCall(){return this.activeBlockingToolCalls>0}static isLongBlockingMcpToolName(e){return Xt(e)}constructor(e){super(),this.config=e,this.initialConversation=[],this.state={started:!1,terminated:!1,configMcpCount:0,skills:[],provider:{model:"acode-default",stream:!1,requestTimeoutMs:Ge,requestTotalTimeoutMs:Je,requestRetryCount:Ye,requestFirstByteTimeoutMs:He,requestStreamIdleTimeoutMs:Ke,mcpToolTimeoutMs:fe,mcpPollingToolTimeoutMs:Qe,supportsImageInput:!1},permissions:{mode:"default",allow:[],deny:[]},mcpConnections:[],ownsMcpConnections:!0,exposedTools:[],commands:[],commandRegistry:new Pe([]),conversation:[],accumulatedInputTokens:0,accumulatedOutputTokens:0,accumulatedCacheHitTokens:0,accumulatedCacheMissTokens:0,toolPermissionPolicy:{...Ne}},this.abortController=null,this.exposedToolsInitialized=!1,this.recoveredToolNames=new Set,this.readFileStateTracker=new kt,this.pendingMemorySubAgents=new Map,this.memoryDelegateCooldownUntil=new Map,this.toolGroupManager=null,this.submitQueue=Promise.resolve(),this.activeTurnToken=null,this.forceSettleWaiters=new Map,this.abortForceSettleTimer=null,this.activeTurn=!1,this.activeBlockingToolCalls=0,this.forceMessagePending=!1,this.turnPromptPushed=!1,this.abortRequested=!1,this.toolSettleSlots=new Map,this.toolSettleSeq=0,this.toolResourceLock=oo(),this.toolConcurrencyScheduler=new so,this.toolReadOnlyLimiter=null,this.toolBashLimiter=null,this.toolConcurrencyEnabled=!0,this.pendingAwaitedSubIds=new Set,this.pendingAwaitedBgTaskIds=new Set,this.sessionCompleteEmitted=!1,this.contextVersion=0,this.stopWaiters=new Set,this.compactionDebugTimer=null,this.skillTool=null,this.skillWatchers=[],this.skillRefreshTimer=null,this.questionWaiters=new Map,this.permissionWaiters=new Map,this.hookBus=new Vt({sessionId:e.sessionId,onError:(r,i)=>{this.emitAcodeEvent("error",{message:`ACode hook failed: ${r.name}: ${i instanceof Error?i.message:String(i)}`})}});for(const r of e.hooks??[])this.hookBus.register(r);e.toolPermissionPolicy&&(this.state.toolPermissionPolicy={...Ne,...e.toolPermissionPolicy});const t=e.toolConcurrency;this.toolConcurrencyEnabled=t?.enabled!==!1;const o=t?.maxReadOnly??8;this.toolReadOnlyLimiter=new ze(o);const s=t?.maxBash??0;this.toolBashLimiter=s>0?new ze(s):null}getAvailableTools(){return this.state.exposedTools.map(e=>e.exposedName)}emitAcodeEvent(e,t){const o={type:e,sessionId:this.config.sessionId,timestamp:uo(),data:t};this.emit("event",o)}emitCompactionPhase(e,t,o,s,r){this.emitAcodeEvent("context_compaction",{action:"phase",compactionId:e,parentId:e,phase:t,phaseLabel:o,phaseDetail:s,...r?{trigger:r}:{}})}handleCompactionPhase(e,t){switch(t.phase){case"prune_start":this.emitCompactionPhase(e,"prune","\u9636\u6BB51: \u88C1\u526A\u5DE5\u5177\u8F93\u51FA",`\u6B63\u5728\u88C1\u526A ${t.messageCount??0} \u6761\u6D88\u606F\u4E2D\u7684\u5DE5\u5177\u8F93\u51FA...`);break;case"prune_end":this.emitCompactionPhase(e,"prune_done","\u9636\u6BB51: \u88C1\u526A\u5DE5\u5177\u8F93\u51FA",`\u88C1\u526A\u4E86 ${t.prunedCount??0} \u6761\u5DE5\u5177\u8F93\u51FA, \u91CA\u653E ${t.freedTokens??0} tokens`);break;case"summarize_start":this.emitCompactionPhase(e,"summarize","\u9636\u6BB52: \u6458\u8981\u5316\u5BF9\u8BDD",`\u6B63\u5728\u6458\u8981 ${t.messageCount??0} \u6761\u65E9\u671F\u5BF9\u8BDD...`);break;case"summarize_end":this.emitCompactionPhase(e,"summarize_done","\u9636\u6BB52: \u6458\u8981\u5316\u5BF9\u8BDD",`\u6458\u8981\u5316\u4E86 ${t.summarizedCount??0} \u6761\u6D88\u606F${t.usedLLM?" (LLM \u6458\u8981)":" (\u89C4\u5219\u6458\u8981)"}`);break}}async start(){this.emitAcodeEvent("startup_phase",{phase:"loading_config"});const e=await Yt(this.config.configPath);this.emitAcodeEvent("startup_phase",{phase:"loading_skills"});const{skills:t,skillGroups:o,watchedDirs:s}=await this.loadAllSkills(),r=Io(this.config,e);p(`[ACodeRuntime] \u2605\u2605\u2605 DEBUG \u2605\u2605\u2605 resolveProviderConfig \u7ED3\u679C: config.model=${this.config.model??"(undefined)"}, resolvedModel=${r.model}, baseURL=${r.baseURL??"(none)"}, apiKey=${r.apiKey?"[set]":"(none)"}, configPath=${this.config.configPath??"(none)"}`);const i=Go(this.config,e),a=this.config.sharedMcpConnections?this.filterSharedMcpConnectionsForSubAgent(this.config.sharedMcpConnections):await this.connectMcpServers(e.mcpServers??{},r.mcpToolTimeoutMs),l=!this.config.sharedMcpConnections;this.emitAcodeEvent("startup_phase",{phase:"fetching_profile"});const u=await this.fetchProfilePrompt(a),c=this.config.agentId||"unknown";It(c),ie.reconcileOrphans(c);const m=bt(this.config.workingDirectory,c,this.config.onFileChange,{manager:ie,emitCompleted:_=>{this.emitAcodeEvent("background_command_completed",_)}},this.createToolPermissionController(),{tracker:this.readFileStateTracker,enabled:this.config.enableStaleFileGuard!==!1}),h=Mt(this.buildAskUserQuestionDeps(),()=>this.contextVersion),y=$t(t);this.skillTool=y;const C=vt(c),d=Et(c),f=this.config.subAgentManager?xt(this.buildSubAgentToolDeps(this.config.subAgentManager)):[],g=Rt(this.buildAwaitCompleteDeps()),T=this.config.terminalManager?Ot(c,{terminalManager:this.config.terminalManager}):null,A=new Dt({stateOf:this.config.capabilityState??(()=>"disabled")});A.register({key:"pencil",label:"\u8BBE\u8BA1\u753B\u5E03(pencil)",summary:"UI design editor",collapsible:!0}),A.register({key:"draw",label:"\u7ED8\u56FE",summary:"\u7ED8\u5236 draw.io \u6D41\u7A0B\u56FE/\u6CF3\u9053\u56FE",collapsible:!0}),A.register({key:"office",label:"Office \u6587\u4EF6",summary:"\u53EF\u8FDB\u884C\u67E5\u770B/\u521B\u5EFA\u548C\u590D\u6742\u7F16\u8F91 Word/PPT/Excel",collapsible:!0}),A.register({key:"launch",label:"\u542F\u52A8\u9879\u7BA1\u7406",summary:"\u7BA1\u7406\u9879\u76EE\u4E2D\u4E1A\u52A1\u7A0B\u5E8F\u7684\u8D77\u505C\uFF0C\u82E5\u540E\u9762\u9700\u8981\u542F\u52A8\u9879\u76EE\u5E94\u4F7F\u7528\u6B64\u5DE5\u5177",collapsible:!0}),A.register({key:"hire",label:"\u62DB\u8058\u5DE5\u5177",summary:"\u62DB\u8058\u65B0\u7684\u540C\u4E8B Agent",collapsible:!0}),A.register({key:"browser",label:"\u6D4F\u89C8\u5668\u64CD\u4F5C",summary:"\u542F\u52A8\u6D4F\u89C8\u5668\u4F1A\u8BDD\u3001\u5BFC\u822A\u3001\u622A\u56FE\u4E0E\u9875\u9762\u4EA4\u4E92",collapsible:!0}),A.register({key:"desktop",label:"\u684C\u9762\u64CD\u4F5C",summary:"\u622A\u5C4F\u3001\u9F20\u6807\u952E\u76D8\u63A7\u5236\u4E0E UI \u81EA\u52A8\u5316",collapsible:!1}),A.register({key:"task",label:"\u6D41\u7A0B\u4EFB\u52A1",summary:"\u5904\u7406\u6D41\u7A0B\u7EBF\u4EFB\u52A1\uFF1A\u67E5\u770B\u5F53\u524D\u4EFB\u52A1\u3001\u63D0\u4EA4\u6267\u884C\u7ED3\u679C\u3001\u56DE\u9000\u4EFB\u52A1\u3001\u7ED9\u6D41\u7A0B\u5B9E\u4F8B\u7559\u8A00",collapsible:!0,toolNames:["my_task","submit_task_result","start_task_rollback","finish_task_rollback","create_task_instance_comment"]}),A.register({key:"meeting",label:"\u4F1A\u8BAE",summary:"\u521B\u5EFA/\u52A0\u5165\u4F1A\u8BAE\u3001\u53D1\u8A00\u3001\u67E5\u770B\u4F1A\u8BAE\u4FE1\u606F\u3001\u79BB\u5F00/\u7ED3\u675F\u4F1A\u8BAE",collapsible:!0,toolNames:["create_meeting","leave_meeting","end_meeting","meeting_speak","get_meeting_info","my_meetings"]}),A.register({key:"debug",label:"\u8C03\u8BD5\u65E5\u5FD7",summary:"\u6309\u6761\u4EF6\u5206\u9875\u67E5\u8BE2 Debug \u65E5\u5FD7\u4E0E\u83B7\u53D6\u65E5\u5FD7\u4E0A\u62A5\u914D\u7F6E",collapsible:!0,toolNames:["get_debug_log_config","query_debug_logs"]}),A.register({key:"fileHistory",label:"\u6587\u4EF6\u53D8\u66F4\u5386\u53F2",summary:"\u6309\u89D2\u8272/\u5B9E\u4F8B/\u6587\u4EF6\u8DEF\u5F84\u8FC7\u6EE4\u67E5\u8BE2\u6587\u4EF6\u53D8\u66F4\u5386\u53F2",collapsible:!0,toolNames:["query_file_changes_history"]}),A.register({key:"email",label:"\u90AE\u7BB1",summary:"\u6536\u53D1\u89D2\u8272\u5B9E\u4F8B\u57DF\u540D\u90AE\u7BB1\uFF08xxxxx@\u57DF\u540D\uFF09\uFF1A\u53D1\u4FE1\u3001\u5217\u90AE\u4EF6\u3001\u8BFB\u6B63\u6587\u4E0E\u9644\u4EF6\u3001\u56DE\u4FE1\u4FDD\u6301\u7EBF\u7A0B",collapsible:!0,toolNames:["send_email","list_emails","read_email","reply_email"]}),this.toolGroupManager=A;for(const _ of a){const P=_.spec??e.mcpServers?.[_.serverName];P&&this.registerMcpCollapsedGroup(_.serverName,P,_)}for(const _ of a)this.registerToolGroupsFromMcp(_);const w=Lt({toolGroupManager:A,getAllTools:()=>this.state.exposedTools,capabilityToolRelay:this.config.capabilityToolRelay}),v=Bt({toolGroupManager:A,pluginBridge:this.config.pluginBridge,capabilityToolRelay:this.config.capabilityToolRelay,findTool:_=>{const P=this.state.exposedTools.find(Re=>Re.exposedName===_||Re.toolName===_);if(!P)return;const ne=P.group??A.getGroupForExposedName(P.exposedName);return{kind:P.kind,group:ne,toolName:P.toolName}},dispatchTool:(_,P,ne)=>this.executeSingleToolByName(_,P,ne)}),k=[...m,h,y,C,d,...f,g,...T?[T]:[],w,v,...a.flatMap(_=>_.tools),...Fe(this.config.extraBuiltInTools??[],this.config.agentId??"")];if(this.config.subAgentAllowedTools&&this.config.subAgentAllowedTools.length>0){const _=Fe(this.config.subAgentSuiteTools??[],this.config.agentId??""),P=de(k,_);k.length=0,k.push(...P)}let M=k;const I=this.config.subAgentAllowedTools;I&&I.length>0&&(M=M.filter(_=>qe(_,I)));const x=this.resolveCommandDirs(e);let D=[...x,...this.discoverPluginCommandDirs()];if(this.config.pluginBridge?.getCommandDirs)try{const _=await this.config.pluginBridge.getCommandDirs();_.length>0&&(D=[...D,..._])}catch(_){p(`[ACodeRuntime] \u63D2\u4EF6\u547D\u4EE4\u76EE\u5F55\u83B7\u53D6\u5931\u8D25\uFF08\u5FFD\u7565\uFF09: ${_ instanceof Error?_.message:String(_)}`)}D=[...new Set(D)],this.emitAcodeEvent("startup_phase",{phase:"loading_commands"});const q=await qt(D),se=new Pe(q),Z=ls(t),b=cs(q),E=A.buildCapabilityPrompt(),N=this.config.pluginBridge?["","## \u63D2\u4EF6\u7CFB\u7EDF","\u63D2\u4EF6\u5DE5\u5177\u4E0D\u5728\u4F60\u7684\u9759\u6001\u5DE5\u5177\u5217\u8868\u4E2D\uFF1A\u7D27\u51D1\u76EE\u5F55\u968F poll_message \u7ED3\u679C\u7684 pluginCatalog \u5B57\u6BB5\u8FD4\u56DE\uFF1B",'\u7528 call_tool \u8C03\u7528\uFF08action="catalog" \u53D6\u76EE\u5F55\uFF0Caction="schema" \u53D6\u5B9A\u4E49\uFF0C','\u6216 action="call"\uFF08\u9ED8\u8BA4\uFF09+ name="\u63D2\u4EF6\u540D.\u5DE5\u5177\u540D" + arguments={...} \u8C03\u7528\uFF09\u3002',"\u63D2\u4EF6\u4E8B\u4EF6\u5C3E\u90E8\u6709 toolHints\uFF08\u5EFA\u8BAE\u8C03\u7528\u7684\u5DE5\u5177\uFF09\uFF0C\u6309\u63D0\u793A\u7528 call_tool \u5904\u7406\u3002","\u63D2\u4EF6\u751F\u547D\u5468\u671F\uFF08\u5B89\u88C5/\u5378\u8F7D/\u91CD\u8F7D/\u542F\u505C/\u5217\u8868\uFF09\u4E5F\u662F\u63D2\u4EF6\u5DE5\u5177\uFF1A",'\u7ECF call_tool \u8C03\u7528 plugin-manager.manage\uFF0C\u5373 call_tool({name: "plugin-manager.manage", arguments:{action:"...", ...}})\u3002',"\u672A\u7ECF\u7528\u6237\u660E\u786E\u8981\u6C42\u4E0D\u8981\u5B89\u88C5\u6216\u5378\u8F7D\u63D2\u4EF6\u3002"].join(`
7
+ `)}function mt(n){return n.map(e=>({type:"function",function:{name:e.exposedName,description:e.description||e.toolName,parameters:e.inputSchema}}))}function ms(n,e){return`${n}__${e}`.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,64)||"mcp_tool"}function ds(n){const e={"Content-Type":"application/json"};return n.apiKey&&(e.Authorization=`Bearer ${n.apiKey}`),e}function ps(n){return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,hs(e)?fs(t):t]))}function hs(n){const e=n.trim().toLowerCase();return e==="authorization"||e==="api-key"||e==="x-api-key"||e==="openai-api-key"}function fs(n){return n.trim().toLowerCase().startsWith("bearer ")?"Bearer ***":"***"}function gs(n){return n.split(/\r?\n/).filter(e=>e.startsWith("data:")).map(e=>e.slice(5).trim()).filter(Boolean)}function dt(n){if(!S(n))return null;const e=n.error;if(S(e)){const t=typeof e.message=="string"?e.message:"",o=e.code??e.status??e.type,s=o==null?"":String(o);return t||s?[s,t].filter(Boolean).join(" "):null}if(typeof e=="string"&&e)return e;if(n.type==="error"||n.object==="error"){const t=typeof n.message=="string"?n.message:"",o=n.code??n.status,s=o==null?"":String(o);if(t||s)return[s,t].filter(Boolean).join(" ")}return null}const Ts=/role 'tool'|tool calls and tool results|tool_call_sequence|\b11148\b/i;let pt=0,me="";function xe(n,e,t){if(!Ts.test(t))return null;try{const o=new Map,s=new Map;n.forEach((d,f)=>{if(d.role==="assistant"&&Array.isArray(d.tool_calls))for(const g of d.tool_calls){const T=typeof g?.id=="string"?g.id.trim():"";T&&!o.has(T)&&o.set(T,f)}else if(d.role==="tool"){const g=typeof d.tool_call_id=="string"?d.tool_call_id.trim():"";g&&!s.has(g)&&s.set(g,f)}});const r=[];n.forEach((d,f)=>{if(d.role==="tool"){const g=typeof d.tool_call_id=="string"?d.tool_call_id.trim():"",T=g?o.get(g):void 0;(g===""||T===void 0||T>f)&&r.push(f)}else if(d.role==="assistant"&&Array.isArray(d.tool_calls))for(const g of d.tool_calls){const T=typeof g?.id=="string"?g.id.trim():"";if(T===""||!s.has(T)){r.push(f);break}}});const i=d=>` [\u5DE5\u5177\u5E8F\u5217\u8BC1\u636E] \u53EF\u7591\u6D88\u606F ${r.length}/${n.length} \u6761\uFF08${d?`\u5DF2\u5199\u5165 ${d}`:"\u843D\u76D8\u5931\u8D25"}\uFF09`,a=Date.now();if(a-pt<1e4&&me)return i(me);pt=a;const l=d=>({role:d.role,tool_call_id:d.tool_call_id,tool_calls:Array.isArray(d.tool_calls)?d.tool_calls.map(f=>f?.id??null):void 0,contentPreview:typeof d.content=="string"?d.content.slice(0,300):d.content===null?null:JSON.stringify(d.content).slice(0,300)}),u=`acode-tool-seq-${new Date(a).toISOString().replace(/[:.]/g,"-")}.json`,c=String(process.env.AWS_TEST_HOME||"").trim()||String(process.env.AWS_RUNTIME_HOME_DIR||"").trim(),m=String(process.env.AWS_RUNTIME_ENV||"").trim().toLowerCase()==="development",h=c||(m?z.resolve(process.cwd(),"..",".dev-home"):z.dirname(Pt())),y=z.join(h,".aws-bridge","log"),C={timestamp:new Date(a).toISOString(),status:e,errorBody:t.slice(0,4e3),suspectIndexes:r,messages:n.map((d,f)=>({index:f,role:d.role,tool_call_id:d.tool_call_id,tool_calls:Array.isArray(d.tool_calls)?d.tool_calls.map(g=>g?.id??null):void 0})),suspectWindows:r.map(d=>{const f=Math.max(0,d-6),g=Math.min(n.length,d+7);return{center:d,range:[f,g],messages:n.slice(f,g).map((T,A)=>({index:f+A,...l(T)}))}})};return me=`.aws-bridge/log/${u}`,B.promises.mkdir(y,{recursive:!0}).then(()=>B.promises.writeFile(z.join(y,u),JSON.stringify(C,null,2),"utf-8")).then(()=>B.promises.readdir(y)).then(d=>{const f=d.filter(T=>T.startsWith("acode-tool-seq-")).sort(),g=f.length-20;return g<=0?null:Promise.all(f.slice(0,g).map(T=>B.promises.unlink(z.join(y,T)).catch(()=>{})))}).catch(()=>{me=""}),i(me)}catch{return null}}function ht(n){const e=new Set,t=Date.now();return n.map((o,s)=>{const r=typeof o?.id=="string"?o.id.trim():"";if(r&&!e.has(r))return e.add(r),o;let i=`call-${t}-${s}`,a=1;for(;e.has(i);)i=`call-${t}-${s}-${a}`,a+=1;return e.add(i),{...o,id:i}})}function ys(n,e){const t=Number.isFinite(e.index)?Number(e.index):0,o=n.get(t)??{id:e.id||`call-${t}`,type:"function",function:{name:"",arguments:""}};e.id&&(o.id=e.id),e.function?.name&&(o.function.name+=e.function.name),e.function?.arguments&&(o.function.arguments+=e.function.arguments),n.set(t,o)}function Cs(n){return ht([...n.entries()].sort(([e],[t])=>e-t).map(([,e])=>e).filter(e=>e.function.name.trim().length>0))}function _s(){const n=process.env.ACODE_ABORT_FORCE_SETTLE_GRACE_MS;if(n===void 0||n.trim()==="")return 6e4;const e=Number(n.trim());return Number.isFinite(e)&&e>=0?Math.floor(e):6e4}class X extends ft{hasActiveBlockingToolCall(){return this.activeBlockingToolCalls>0}static isLongBlockingMcpToolName(e){return Xt(e)}constructor(e){super(),this.config=e,this.initialConversation=[],this.state={started:!1,terminated:!1,configMcpCount:0,skills:[],provider:{model:"acode-default",stream:!1,requestTimeoutMs:Ge,requestTotalTimeoutMs:Je,requestRetryCount:Ye,requestFirstByteTimeoutMs:He,requestStreamIdleTimeoutMs:Ke,mcpToolTimeoutMs:fe,mcpPollingToolTimeoutMs:Qe,supportsImageInput:!1},permissions:{mode:"default",allow:[],deny:[]},mcpConnections:[],ownsMcpConnections:!0,exposedTools:[],commands:[],commandRegistry:new Pe([]),conversation:[],accumulatedInputTokens:0,accumulatedOutputTokens:0,accumulatedCacheHitTokens:0,accumulatedCacheMissTokens:0,toolPermissionPolicy:{...Ne}},this.abortController=null,this.exposedToolsInitialized=!1,this.recoveredToolNames=new Set,this.readFileStateTracker=new kt,this.pendingMemorySubAgents=new Map,this.memoryDelegateCooldownUntil=new Map,this.toolGroupManager=null,this.submitQueue=Promise.resolve(),this.activeTurnToken=null,this.forceSettleWaiters=new Map,this.abortForceSettleTimer=null,this.activeTurn=!1,this.activeBlockingToolCalls=0,this.forceMessagePending=!1,this.turnPromptPushed=!1,this.abortRequested=!1,this.toolSettleSlots=new Map,this.toolSettleSeq=0,this.toolResourceLock=oo(),this.toolConcurrencyScheduler=new so,this.toolReadOnlyLimiter=null,this.toolBashLimiter=null,this.toolConcurrencyEnabled=!0,this.pendingAwaitedSubIds=new Set,this.pendingAwaitedBgTaskIds=new Set,this.sessionCompleteEmitted=!1,this.contextVersion=0,this.stopWaiters=new Set,this.compactionDebugTimer=null,this.skillTool=null,this.skillWatchers=[],this.skillRefreshTimer=null,this.questionWaiters=new Map,this.permissionWaiters=new Map,this.hookBus=new Vt({sessionId:e.sessionId,onError:(r,i)=>{this.emitAcodeEvent("error",{message:`ACode hook failed: ${r.name}: ${i instanceof Error?i.message:String(i)}`})}});for(const r of e.hooks??[])this.hookBus.register(r);e.toolPermissionPolicy&&(this.state.toolPermissionPolicy={...Ne,...e.toolPermissionPolicy});const t=e.toolConcurrency;this.toolConcurrencyEnabled=t?.enabled!==!1;const o=t?.maxReadOnly??8;this.toolReadOnlyLimiter=new ze(o);const s=t?.maxBash??0;this.toolBashLimiter=s>0?new ze(s):null}getAvailableTools(){return this.state.exposedTools.map(e=>e.exposedName)}emitAcodeEvent(e,t){const o={type:e,sessionId:this.config.sessionId,timestamp:uo(),data:t};this.emit("event",o)}emitCompactionPhase(e,t,o,s,r){this.emitAcodeEvent("context_compaction",{action:"phase",compactionId:e,parentId:e,phase:t,phaseLabel:o,phaseDetail:s,...r?{trigger:r}:{}})}handleCompactionPhase(e,t){switch(t.phase){case"prune_start":this.emitCompactionPhase(e,"prune","\u9636\u6BB51: \u88C1\u526A\u5DE5\u5177\u8F93\u51FA",`\u6B63\u5728\u88C1\u526A ${t.messageCount??0} \u6761\u6D88\u606F\u4E2D\u7684\u5DE5\u5177\u8F93\u51FA...`);break;case"prune_end":this.emitCompactionPhase(e,"prune_done","\u9636\u6BB51: \u88C1\u526A\u5DE5\u5177\u8F93\u51FA",`\u88C1\u526A\u4E86 ${t.prunedCount??0} \u6761\u5DE5\u5177\u8F93\u51FA, \u91CA\u653E ${t.freedTokens??0} tokens`);break;case"summarize_start":this.emitCompactionPhase(e,"summarize","\u9636\u6BB52: \u6458\u8981\u5316\u5BF9\u8BDD",`\u6B63\u5728\u6458\u8981 ${t.messageCount??0} \u6761\u65E9\u671F\u5BF9\u8BDD...`);break;case"summarize_end":this.emitCompactionPhase(e,"summarize_done","\u9636\u6BB52: \u6458\u8981\u5316\u5BF9\u8BDD",`\u6458\u8981\u5316\u4E86 ${t.summarizedCount??0} \u6761\u6D88\u606F${t.usedLLM?" (LLM \u6458\u8981)":" (\u89C4\u5219\u6458\u8981)"}`);break}}async start(){this.emitAcodeEvent("startup_phase",{phase:"loading_config"});const e=await Yt(this.config.configPath);this.emitAcodeEvent("startup_phase",{phase:"loading_skills"});const{skills:t,skillGroups:o,watchedDirs:s}=await this.loadAllSkills(),r=Io(this.config,e);p(`[ACodeRuntime] \u2605\u2605\u2605 DEBUG \u2605\u2605\u2605 resolveProviderConfig \u7ED3\u679C: config.model=${this.config.model??"(undefined)"}, resolvedModel=${r.model}, baseURL=${r.baseURL??"(none)"}, apiKey=${r.apiKey?"[set]":"(none)"}, configPath=${this.config.configPath??"(none)"}`);const i=Go(this.config,e),a=this.config.sharedMcpConnections?this.filterSharedMcpConnectionsForSubAgent(this.config.sharedMcpConnections):await this.connectMcpServers(e.mcpServers??{},r.mcpToolTimeoutMs),l=!this.config.sharedMcpConnections;this.emitAcodeEvent("startup_phase",{phase:"fetching_profile"});const u=await this.fetchProfilePrompt(a),c=this.config.agentId||"unknown";It(c),ie.reconcileOrphans(c);const m=bt(this.config.workingDirectory,c,this.config.onFileChange,{manager:ie,emitCompleted:_=>{this.emitAcodeEvent("background_command_completed",_)}},this.createToolPermissionController(),{tracker:this.readFileStateTracker,enabled:this.config.enableStaleFileGuard!==!1}),h=Mt(this.buildAskUserQuestionDeps(),()=>this.contextVersion),y=$t(t);this.skillTool=y;const C=vt(c),d=Et(c),f=this.config.subAgentManager?xt(this.buildSubAgentToolDeps(this.config.subAgentManager)):[],g=Rt(this.buildAwaitCompleteDeps()),T=this.config.terminalManager?Ot(c,{terminalManager:this.config.terminalManager}):null,A=new Dt({stateOf:this.config.capabilityState??(()=>"disabled")});A.register({key:"pencil",label:"\u8BBE\u8BA1\u753B\u5E03(pencil)",summary:"UI design editor",collapsible:!0}),A.register({key:"draw",label:"\u7ED8\u56FE",summary:"\u7ED8\u5236 draw.io \u6D41\u7A0B\u56FE/\u6CF3\u9053\u56FE",collapsible:!0}),A.register({key:"office",label:"Office \u6587\u4EF6",summary:"\u53EF\u8FDB\u884C\u67E5\u770B/\u521B\u5EFA\u548C\u590D\u6742\u7F16\u8F91 Word/PPT/Excel",collapsible:!0}),A.register({key:"launch",label:"\u542F\u52A8\u9879\u7BA1\u7406",summary:"\u7BA1\u7406\u9879\u76EE\u4E2D\u4E1A\u52A1\u7A0B\u5E8F\u7684\u8D77\u505C\uFF0C\u82E5\u540E\u9762\u9700\u8981\u542F\u52A8\u9879\u76EE\u5E94\u4F7F\u7528\u6B64\u5DE5\u5177",collapsible:!0}),A.register({key:"hire",label:"\u62DB\u8058\u5DE5\u5177",summary:"\u62DB\u8058\u65B0\u7684\u540C\u4E8B Agent",collapsible:!0}),A.register({key:"browser",label:"\u6D4F\u89C8\u5668\u64CD\u4F5C",summary:"\u542F\u52A8\u6D4F\u89C8\u5668\u4F1A\u8BDD\u3001\u5BFC\u822A\u3001\u622A\u56FE\u4E0E\u9875\u9762\u4EA4\u4E92",collapsible:!0}),A.register({key:"desktop",label:"\u684C\u9762\u64CD\u4F5C",summary:"\u622A\u5C4F\u3001\u9F20\u6807\u952E\u76D8\u63A7\u5236\u4E0E UI \u81EA\u52A8\u5316",collapsible:!1}),A.register({key:"task",label:"\u6D41\u7A0B\u4EFB\u52A1",summary:"\u5904\u7406\u6D41\u7A0B\u7EBF\u4EFB\u52A1\uFF1A\u67E5\u770B\u5F53\u524D\u4EFB\u52A1\u3001\u63D0\u4EA4\u6267\u884C\u7ED3\u679C\u3001\u56DE\u9000\u4EFB\u52A1\u3001\u7ED9\u6D41\u7A0B\u5B9E\u4F8B\u7559\u8A00",collapsible:!0,toolNames:["my_task","submit_task_result","start_task_rollback","finish_task_rollback","create_task_instance_comment"]}),A.register({key:"meeting",label:"\u4F1A\u8BAE",summary:"\u521B\u5EFA/\u52A0\u5165\u4F1A\u8BAE\u3001\u53D1\u8A00\u3001\u67E5\u770B\u4F1A\u8BAE\u4FE1\u606F\u3001\u79BB\u5F00/\u7ED3\u675F\u4F1A\u8BAE",collapsible:!0,toolNames:["create_meeting","leave_meeting","end_meeting","meeting_speak","get_meeting_info","my_meetings"]}),A.register({key:"debug",label:"\u8C03\u8BD5\u65E5\u5FD7",summary:"\u6309\u6761\u4EF6\u5206\u9875\u67E5\u8BE2 Debug \u65E5\u5FD7\u4E0E\u83B7\u53D6\u65E5\u5FD7\u4E0A\u62A5\u914D\u7F6E",collapsible:!0,toolNames:["get_debug_log_config","query_debug_logs"]}),A.register({key:"fileHistory",label:"\u6587\u4EF6\u53D8\u66F4\u5386\u53F2",summary:"\u6309\u89D2\u8272/\u5B9E\u4F8B/\u6587\u4EF6\u8DEF\u5F84\u8FC7\u6EE4\u67E5\u8BE2\u6587\u4EF6\u53D8\u66F4\u5386\u53F2",collapsible:!0,toolNames:["query_file_changes_history"]}),A.register({key:"email",label:"\u90AE\u7BB1",summary:"\u6536\u53D1\u89D2\u8272\u5B9E\u4F8B\u57DF\u540D\u90AE\u7BB1\uFF08xxxxx@\u57DF\u540D\uFF09\uFF1A\u53D1\u4FE1\u3001\u5217\u90AE\u4EF6\u3001\u8BFB\u6B63\u6587\u4E0E\u9644\u4EF6\u3001\u56DE\u4FE1\u4FDD\u6301\u7EBF\u7A0B\u3001\u786E\u8BA4\u4E1A\u52A1\u6D88\u8D39",collapsible:!0,toolNames:["send_email","list_emails","read_email","reply_email","ack_email"]}),this.toolGroupManager=A;for(const _ of a){const P=_.spec??e.mcpServers?.[_.serverName];P&&this.registerMcpCollapsedGroup(_.serverName,P,_)}for(const _ of a)this.registerToolGroupsFromMcp(_);const w=Lt({toolGroupManager:A,getAllTools:()=>this.state.exposedTools,capabilityToolRelay:this.config.capabilityToolRelay}),v=Bt({toolGroupManager:A,pluginBridge:this.config.pluginBridge,capabilityToolRelay:this.config.capabilityToolRelay,findTool:_=>{const P=this.state.exposedTools.find(Re=>Re.exposedName===_||Re.toolName===_);if(!P)return;const ne=P.group??A.getGroupForExposedName(P.exposedName);return{kind:P.kind,group:ne,toolName:P.toolName}},dispatchTool:(_,P,ne)=>this.executeSingleToolByName(_,P,ne)}),k=[...m,h,y,C,d,...f,g,...T?[T]:[],w,v,...a.flatMap(_=>_.tools),...Fe(this.config.extraBuiltInTools??[],this.config.agentId??"")];if(this.config.subAgentAllowedTools&&this.config.subAgentAllowedTools.length>0){const _=Fe(this.config.subAgentSuiteTools??[],this.config.agentId??""),P=de(k,_);k.length=0,k.push(...P)}let M=k;const I=this.config.subAgentAllowedTools;I&&I.length>0&&(M=M.filter(_=>qe(_,I)));const x=this.resolveCommandDirs(e);let D=[...x,...this.discoverPluginCommandDirs()];if(this.config.pluginBridge?.getCommandDirs)try{const _=await this.config.pluginBridge.getCommandDirs();_.length>0&&(D=[...D,..._])}catch(_){p(`[ACodeRuntime] \u63D2\u4EF6\u547D\u4EE4\u76EE\u5F55\u83B7\u53D6\u5931\u8D25\uFF08\u5FFD\u7565\uFF09: ${_ instanceof Error?_.message:String(_)}`)}D=[...new Set(D)],this.emitAcodeEvent("startup_phase",{phase:"loading_commands"});const q=await qt(D),se=new Pe(q),Z=ls(t),b=cs(q),E=A.buildCapabilityPrompt(),N=this.config.pluginBridge?["","## \u63D2\u4EF6\u7CFB\u7EDF","\u63D2\u4EF6\u5DE5\u5177\u4E0D\u5728\u4F60\u7684\u9759\u6001\u5DE5\u5177\u5217\u8868\u4E2D\uFF1A\u7D27\u51D1\u76EE\u5F55\u968F poll_message \u7ED3\u679C\u7684 pluginCatalog \u5B57\u6BB5\u8FD4\u56DE\uFF1B",'\u7528 call_tool \u8C03\u7528\uFF08action="catalog" \u53D6\u76EE\u5F55\uFF0Caction="schema" \u53D6\u5B9A\u4E49\uFF0C','\u6216 action="call"\uFF08\u9ED8\u8BA4\uFF09+ name="\u63D2\u4EF6\u540D.\u5DE5\u5177\u540D" + arguments={...} \u8C03\u7528\uFF09\u3002',"\u63D2\u4EF6\u4E8B\u4EF6\u5C3E\u90E8\u6709 toolHints\uFF08\u5EFA\u8BAE\u8C03\u7528\u7684\u5DE5\u5177\uFF09\uFF0C\u6309\u63D0\u793A\u7528 call_tool \u5904\u7406\u3002","\u63D2\u4EF6\u751F\u547D\u5468\u671F\uFF08\u5B89\u88C5/\u5378\u8F7D/\u91CD\u8F7D/\u542F\u505C/\u5217\u8868\uFF09\u4E5F\u662F\u63D2\u4EF6\u5DE5\u5177\uFF1A",'\u7ECF call_tool \u8C03\u7528 plugin-manager.manage\uFF0C\u5373 call_tool({name: "plugin-manager.manage", arguments:{action:"...", ...}})\u3002',"\u672A\u7ECF\u7528\u6237\u660E\u786E\u8981\u6C42\u4E0D\u8981\u5B89\u88C5\u6216\u5378\u8F7D\u63D2\u4EF6\u3002"].join(`
8
8
  `):"",L=E+N,$=[r.systemPrompt,Z,b,L].map(_=>_?.trim()).filter(_=>!!_).join(`
9
9
 
10
10
  `),J=_=>_?.trim()?[{role:"system",content:_.trim()}]:[],F=[this.config.rolePrompt,u].map(_=>_?.trim()).filter(_=>!!_).join(`
@@ -76,6 +76,8 @@ export declare class AgentClient {
76
76
 
77
77
  replyEmail(args: Record<string, unknown>): Promise<unknown>;
78
78
 
79
+ ackEmail(mailId: string): Promise<unknown>;
80
+
79
81
  getDmHistory(targetUserId?: string, limit?: number, since?: string): Promise<DmHistoryResponse>;
80
82
 
81
83
  getGroupHistory(limit?: number, roomId?: string, since?: string): Promise<GroupHistoryResponse>;
@@ -1,2 +1,2 @@
1
- import{configManager as c}from"./config.js";import{MESSAGE_POLL_INTERVAL_MS as I}from"./constants.js";import{HttpClient as f}from"./http-client.js";import{logger as i,setMcpNodeLogSink as w,updateStartupLogIdentity as u}from"./logger.js";import{claimRuntimeLaunchBindingDetailed as m}from"./runtime-launch-binding.js";import{StatusReporter as A}from"./status-reporter.js";import{WebSocketClient as p}from"./websocket-client.js";class T extends Error{constructor(e){super(e),this.name="PollLongPollTimeoutError"}}const C=27e4;class N{wsClient;httpClient;agentConfig;serverConfig;agentId=null;displayName=null;projectId=null;isRunning=!1;isDegradedMode=!1;messageHandler=null;profileHandler=null;configHandler=null;systemNotifyHandler=null;pollTimer=null;statusReporter=null;newCharacterHandler=null;runtimeTokenRefreshTimer=null;pendingLaunchBindingClaim=!1;cachedProfile=null;constructor(){c.loadConfig(),this.agentConfig=c.getAgentConfig(),this.serverConfig=c.getServerConfig(),this.wsClient=new p(this.serverConfig),this.httpClient=new f(this.serverConfig),this.setupWebSocketListeners()}async initialize(){const e=await m(this.agentConfig,this.serverConfig);if(e.status==="claimed"){this.applyLaunchBinding(e.binding);return}if(e.status==="unreachable"){this.pendingLaunchBindingClaim=!0,i.warn("[AgentClient] runtime-bridge \u672A\u5C31\u7EEA\uFF0C\u542F\u52A8\u7ED1\u5B9A\u8BA4\u9886\u5DF2\u6302\u8D77\uFF0C\u5C06\u5728\u6CE8\u518C\u91CD\u8BD5\u4E2D\u91CD\u65B0\u8BA4\u9886: %s",e.message);return}this.serverConfig.runtimeBridgeBaseUrl=void 0}applyLaunchBinding(e){c.applyRuntimeLaunchBinding(e),this.agentConfig=c.getAgentConfig(),this.serverConfig=c.getServerConfig(),this.wsClient=new p(this.serverConfig),this.httpClient=new f(this.serverConfig),this.setupWebSocketListeners()}async retryPendingLaunchBindingClaim(){if(!this.pendingLaunchBindingClaim)return!0;const e=await m(this.agentConfig,this.serverConfig);if(e.status==="claimed")return this.pendingLaunchBindingClaim=!1,i.info("[AgentClient] \u542F\u52A8\u7ED1\u5B9A\u8865\u8BA4\u9886\u6210\u529F\uFF0C\u7EE7\u7EED\u6CE8\u518C\u6D41\u7A0B"),this.applyLaunchBinding(e.binding),!0;if(e.status==="missing")return this.pendingLaunchBindingClaim=!1,this.serverConfig.runtimeBridgeBaseUrl=void 0,i.warn("[AgentClient] \u542F\u52A8\u7ED1\u5B9A\u8865\u8BA4\u9886\u672A\u627E\u5230\u5F85\u8BA4\u9886\u8BB0\u5F55\uFF0C\u6309\u65E0\u7ED1\u5B9A\u6A21\u5F0F\u7EE7\u7EED\u6CE8\u518C"),!1;const t=e.status==="unreachable"?e.message:e.reason;return i.warn("[AgentClient] \u542F\u52A8\u7ED1\u5B9A\u8865\u8BA4\u9886\u5931\u8D25\uFF0C\u4FDD\u7559\u6302\u8D77\u72B6\u6001\u7B49\u5F85\u4E0B\u6B21\u6CE8\u518C\u91CD\u8BD5: %s",t),!1}setupWebSocketListeners(){this.wsClient.on("directMessage",e=>{this.handleIncomingDm(e)}),this.wsClient.on("groupMessage",e=>{this.handleIncomingGroup(e)}),this.wsClient.on("meetingMessage",e=>{this.handleIncomingMeeting(e)}),this.wsClient.on("systemNotify",e=>{this.systemNotifyHandler?.(e)}),this.wsClient.on("profileInfo",e=>{i.info(`[AgentClient] WebSocket profileInfo \u4E8B\u4EF6\u89E6\u53D1\uFF0CdisplayName: ${e.displayName}`),this.handleProfileInfo(e)}),this.wsClient.on("agentConfig",e=>{i.info("[AgentClient] WebSocket agentConfig \u4E8B\u4EF6\u89E6\u53D1"),this.configHandler&&this.configHandler(e??{})}),this.wsClient.on("agentStatus",e=>{i.info(`[AgentClient] WebSocket agentStatus \u4E8B\u4EF6\u89E6\u53D1: ${e.status}`)}),this.wsClient.on("disconnected",(e,t)=>{const n=t?.toString()||"";i.warn("[AgentClient] WebSocket \u65AD\u5F00\u8FDE\u63A5: code=%s, reason=%s, agentId=%s, \u6B63\u5728\u81EA\u52A8\u91CD\u8FDE",e,n,this.agentId)}),this.wsClient.on("error",e=>{i.error("[AgentClient] WebSocket \u9519\u8BEF: %s, stack=%s",e.message,e.stack)}),this.wsClient.on("reconnectFailed",()=>{i.error("[AgentClient] \u91CD\u8FDE\u5931\u8D25\uFF08\u5DF2\u8FBE\u91CD\u8BD5\u4E0A\u9650\uFF09\uFF0C\u505C\u6B62\u6D88\u606F\u5FAA\u73AF, agentId=%s",this.agentId),this.stop()}),this.wsClient.on("tokenRejected",()=>{i.error("[AgentClient] runtime token \u88AB 1008 \u62D2\u7EDD\u4E14\u5237\u65B0\u65E0\u53D8\u5316\uFF0C\u8FDB\u5165\u6162\u901F\u91CD\u8BD5\u7B49\u5F85\u65B0 token \u7B7E\u53D1: agentId=%s",this.agentId)}),this.wsClient.on("tokenRefreshFailed",e=>{i.error("[AgentClient] runtime token \u5237\u65B0\u8FDE\u7EED\u5931\u8D25 %s \u6B21\uFF0C\u8FDB\u5165\u6162\u901F\u91CD\u8BD5\u7B49\u5F85 bridge \u6062\u590D: agentId=%s",e,this.agentId)})}async register(){return i.info("[AgentClient] \u6B63\u5728\u6CE8\u518C Agent..."),await this.retryPendingLaunchBindingClaim(),this.hasPresetAgentId()?await this.registerWithExistingAgentId():await this.registerAsNewAgent()}hasPresetAgentId(){return!!(this.agentConfig.agentId&&this.agentConfig.agentId.trim().length>0)}async registerWithExistingAgentId(){const e=this.agentConfig.agentId;if(!e)throw new Error("Preset agentId is missing");this.agentId=e.trim();let t;try{t=await this.getProfileByAgentId(this.agentId)}catch(r){throw i.error("[AgentClient] getProfileByAgentId \u5931\u8D25 (presetAgentId=%s): %s",this.agentId,r instanceof Error?r.message:String(r)),r}this.displayName=t.displayName,this.projectId=t.projectId||null,i.info(`[AgentClient] \u4F7F\u7528\u9884\u8BBE AgentID \u7ED1\u5B9A\u5B9E\u4F8B: ${this.displayName} (${this.agentId})`),i.info(`[AgentClient] \u6240\u5C5E\u9879\u76EE: ${this.projectId||"(\u672A\u8BBE\u7F6E)"}`);try{await this.wsClient.connect(this.agentId)}catch(r){throw i.error("[AgentClient] WebSocket \u8FDE\u63A5\u5931\u8D25 (agentId=%s): %s",this.agentId,r instanceof Error?r.message:String(r)),r}i.info("[AgentClient] WebSocket \u8FDE\u63A5\u5DF2\u5EFA\u7ACB\uFF0CAgent \u73B0\u5728\u5DF2\u4E0A\u7EBF"),this.initializeStatusReporter();const n=await this.getProfileByAgentId(this.agentId);return this.displayName=n.displayName,this.projectId=n.projectId||null,u(n.roleName||"unknown-role",n.instanceName||this.agentId),{agentId:this.agentId,displayName:this.displayName,status:n.isOnline?"online":"offline",projectId:n.projectId,workspacePath:n.workspacePath,runtimeStatus:n.runtimeStatus,runtimeSessionId:n.runtimeSessionId}}async registerAsNewAgent(){const e=await this.httpClient.callTool("register",{roleName:this.agentConfig.roleName,projectId:this.agentConfig.projectId,workspacePath:this.agentConfig.workspacePath,prompt:this.agentConfig.prompt,runtimeBridgeBaseUrl:this.serverConfig.runtimeBridgeBaseUrl}),t=e.agentId;if(!t)throw new Error("Registration failed: agentId was not returned");return this.agentId=t,this.displayName=e.displayName,this.projectId=e.projectId||null,u(this.agentConfig.roleName||"unknown-role",e.instanceName||t),i.info(`[AgentClient] \u6CE8\u518C\u6210\u529F: ${this.displayName} (${this.agentId})`),i.info(`[AgentClient] \u72B6\u6001: ${e.status}`),i.info(`[AgentClient] \u6240\u5C5E\u9879\u76EE: ${this.projectId||"(\u672A\u8BBE\u7F6E)"}`),await this.wsClient.connect(this.agentId),i.info("[AgentClient] WebSocket \u8FDE\u63A5\u5DF2\u5EFA\u7ACB\uFF0CAgent \u73B0\u5728\u5DF2\u4E0A\u7EBF"),this.initializeStatusReporter(),e.isExisting===!1&&this.newCharacterHandler&&this.newCharacterHandler(),e}async unregister(){i.info("[AgentClient] \u6B63\u5728\u6CE8\u9500 Agent..."),this.agentId&&await this.httpClient.callTool("unregister",{agentId:this.agentId}),this.stopRuntimeTokenRefresh(),this.wsClient.disconnect(),this.agentId=null,this.displayName=null,this.projectId=null,this.isRunning=!1,i.info("[AgentClient] \u5DF2\u6CE8\u9500")}async discoverColleagues(){return await this.httpClient.callTool("discover_colleague",{agentId:this.agentId})}async discoverGroupRooms(){return this.ensureRegistered(),await this.httpClient.callTool("discover_group_rooms",{agentId:this.agentId})}async listProjectMembers(){return this.ensureRegistered(),await this.httpClient.callTool("list_project_members",{agentId:this.agentId})}async hireColleague(e){return this.ensureRegistered(),await this.httpClient.callTool("hire_colleague",{...e,agentId:this.agentId})}async callAgentScopedTool(e,t){this.ensureRegistered();const n={...t,agentId:this.agentId};if(e==="create_meeting"){const r=typeof t.waitTimeoutMs=="number"?t.waitTimeoutMs:Number.NaN,s=Number.isFinite(r)&&r>0?Math.min(r,C):C;return await this.httpClient.callToolOnce(e,{...n,waitTimeoutMs:s},0)}return await this.httpClient.callTool(e,n)}async reportMemoryStats(e){await this.callAgentScopedTool("report_memory_stats",{memoryStats:e})}async sendGroupMessage(e,t,n,r,s){this.ensureRegistered();const a=t||this.projectId||this.agentConfig.projectId;return await this.httpClient.callTool("send_group_message",{agentId:this.agentId,projectId:a,roomId:n,content:e,card:r,replyTo:s})}async sendDirectMessage(e,t,n=!1,r,s,a,h){this.ensureRegistered();const g={agentId:this.agentId,targetId:e,content:t,requireReply:n,waitReply:n,replyToCallId:r,card:a,replyTo:h};if(typeof s=="number"&&s>0&&(g.timeoutMs=s),n){const o=typeof s=="number"&&s>0?s+3e4:0;return await this.httpClient.callToolOnce("send_dm",g,o)}return await this.httpClient.callTool("send_dm",g)}async sendCallAndWaitReply(e,t,n=6e4){const r=await this.sendDirectMessage(e,t,!0,void 0,n);if(r.reply)return r.reply;throw new Error("No reply received for call-style direct message before timeout")}async replyToCall(e,t,n){return await this.sendDirectMessage(t,n,!1,e)}async sendEmail(e){return await this.callAgentScopedTool("send_email",e)}async listEmails(e){return await this.callAgentScopedTool("list_emails",e)}async readEmail(e){return await this.callAgentScopedTool("read_email",{mailId:e})}async replyEmail(e){return await this.callAgentScopedTool("reply_email",e)}async getDmHistory(e,t=50,n){this.ensureRegistered();const r={agentId:this.agentId,targetUserId:e,limit:t};return n&&(r.since=n),await this.httpClient.callTool("get_dm_history",r)}async getGroupHistory(e=50,t,n){if(this.ensureRegistered(),t){const o={projectId:this.projectId||this.agentConfig.projectId,roomId:t,limit:e};return n&&(o.since=n),await this.httpClient.callTool("get_group_history",o)}const r=await this.discoverGroupRooms(),s=this.projectId||this.agentConfig.projectId,a=this.collectRoomIds(r,s);if(a.length===0)return{messages:[],count:0};const g=(await Promise.all(a.map(async o=>{const l={projectId:s,roomId:o,limit:e};return n&&(l.since=n),await this.httpClient.callTool("get_group_history",l)}))).flatMap(o=>o.messages).sort((o,l)=>new Date(o.timestamp).getTime()-new Date(l.timestamp).getTime());return{messages:g,count:g.length}}async fetchUnreadMessages(e={}){this.ensureRegistered();const t=this.projectId||this.agentConfig.projectId,n={agentId:this.agentId,blockIfEmpty:e.blockIfEmpty??!1};e.since&&(n.since=e.since),e.blockTimeoutMs&&e.blockTimeoutMs>0&&(n.blockTimeoutMs=e.blockTimeoutMs),e.preemptiveJoinWaitMs!==void 0&&e.preemptiveJoinWaitMs!==null&&e.preemptiveJoinWaitMs>=0&&(n.preemptiveJoinWaitMs=e.preemptiveJoinWaitMs);const r=e.includePipelineTasks?"poll_message":"get_dm_messages";i.info("[AgentClient] fetchUnreadMessages \u5165\u53E3: tool=%s, blockIfEmpty=%s, blockTimeoutMs=%s, pollMessageTimeoutMs=%s, skipGroupMessages=%s, preemptiveJoinWaitMs=%s, agentId=%s",r,String(e.blockIfEmpty??!1),String(e.blockTimeoutMs??"-"),String(e.pollMessageTimeoutMs??"-"),String(e.skipGroupMessages??!1),String(e.preemptiveJoinWaitMs??"-"),this.agentId);const s=await this.fetchDirectMessagesWithRecovery(r,n,e.pollMessageTimeoutMs,e.propagatePollTimeout===!0);if(i.info("[AgentClient] fetchUnreadMessages \u79C1\u4FE1\u9636\u6BB5\u8FD4\u56DE: %s \u6761",Array.isArray(s.messages)?s.messages.length:0),e.skipGroupMessages)return i.info("[AgentClient] \u4F1A\u8BAE\u5FEB\u901F hydrate \u5DF2\u53D6\u5F97\u79C1\u4FE1\u54CD\u5E94\uFF0C\u8DF3\u8FC7\u7FA4\u804A\u53D1\u73B0\u5E76\u7ACB\u5373\u8FD4\u56DE: directMessages=%s",Array.isArray(s.messages)?s.messages.length:0),{directMessages:Array.isArray(s.messages)?s.messages:[],groupMessages:[]};let a;try{a=await this.discoverGroupRooms()}catch(o){i.warn("[AgentClient] \u53D1\u73B0\u7FA4\u623F\u95F4\u5931\u8D25\uFF0C\u672C\u6B21\u6309\u65E0\u7FA4\u6D88\u606F\u5904\u7406\uFF08\u5DF2\u53D6\u5230\u7684\u79C1\u4FE1\u4E0D\u53D7\u5F71\u54CD\uFF09: %s",o instanceof Error?o.message:String(o)),a={groups:[]}}const h=this.collectRoomIds(a,t),g=await Promise.all(h.map(async o=>{const l={agentId:this.agentId,projectId:t,roomId:o};e.since&&(l.since=e.since);try{return await this.httpClient.callTool("get_group_messages",l)}catch(d){return i.warn("[AgentClient] \u8DF3\u8FC7\u7FA4\u623F\u95F4\u672A\u8BFB\u8865\u62C9\u5931\u8D25: roomId=%s, error=%s",o,d instanceof Error?d.message:String(d)),{messages:[],currentReadPos:0,hasMore:!1}}}));return{directMessages:Array.isArray(s.messages)?s.messages:[],groupMessages:g.flatMap(o=>this.normalizeGroupMessages(o)).sort((o,l)=>new Date(o.timestamp).getTime()-new Date(l.timestamp).getTime())}}async markDmRead(e){if(e.length===0)return new Set;this.ensureRegistered();try{const t=await this.httpClient.callTool("mark_dm_read",{agentId:this.agentId,msgIds:e}),n=new Set(Array.isArray(t?.deliverableMsgIds)?t.deliverableMsgIds:[]),r=e.filter(s=>!n.has(s));return r.length>0?i.warn("[AgentClient] mark_dm_read \u786E\u8BA4\u540E\u5C06\u6709 %d \u6761\u6D88\u606F\u88AB\u4E22\u5F03\u4E0D\u4EA4\u4ED8: \u8BF7\u6C42=%s, \u53EF\u4EA4\u4ED8=%s, \u88AB\u4E22\u5F03=%s",r.length,JSON.stringify(e),JSON.stringify([...n]),JSON.stringify(r)):i.info("[AgentClient] mark_dm_read \u786E\u8BA4\u5B8C\u6210: %d \u6761\u5168\u90E8\u53EF\u4EA4\u4ED8",e.length),n}catch(t){throw i.warn("[AgentClient] mark_dm_read \u8BF7\u6C42\u5931\u8D25\uFF08\u5C06\u964D\u7EA7\u4E3A\u76F4\u63A5\u4EA4\u4ED8\uFF09: %s",t instanceof Error?t.message:String(t)),t}}async markGroupRead(e,t){if(t.length===0)return new Set;this.ensureRegistered();const n=await this.httpClient.callTool("mark_group_read",{agentId:this.agentId,roomId:e,msgIds:t});return new Set(Array.isArray(n?.deliverableMsgIds)?n.deliverableMsgIds:[])}async markNotificationRead(e){if(e.length!==0){this.ensureRegistered();try{await this.httpClient.callTool("mark_notification_read",{agentId:this.agentId,msgIds:e})}catch{}}}async markMeetingRead(e){if(e.length!==0){this.ensureRegistered();try{await this.httpClient.callTool("mark_meeting_read",{agentId:this.agentId,msgIds:e})}catch{}}}async fetchBrowserListenerEvents(){const e=this.serverConfig.runtimeBridgeBaseUrl,t=this.agentId;if(!e||!t)return i.info("[AgentClient] fetchBrowserListenerEvents \u8DF3\u8FC7: bridgeBaseUrl=%s, agentId=%s",e||"(\u7A7A)",t||"(\u7A7A)"),[];try{const n=`${e}/runtime/browser-listeners/${encodeURIComponent(t)}/events`,r=this.serverConfig.runtimeAccessToken||"";i.debug("[AgentClient] \u62C9\u53D6\u76D1\u542C\u5668\u4E8B\u4EF6: url=%s, tokenLen=%d",n,r.length);const s=await fetch(n,{method:"GET",headers:{"X-Runtime-Token":r},signal:AbortSignal.timeout(3e3)});if(!s.ok)return i.warn("[AgentClient] \u62C9\u53D6\u76D1\u542C\u5668\u4E8B\u4EF6\u5931\u8D25: HTTP %s, url=%s",s.status,n),[];const a=await s.json();return!a.ok||!Array.isArray(a.events)?(i.warn("[AgentClient] \u62C9\u53D6\u76D1\u542C\u5668\u4E8B\u4EF6\u54CD\u5E94\u5F02\u5E38: ok=%s, eventsType=%s",a.ok,Array.isArray(a.events)?"array":typeof a.events),[]):(i.debug("[AgentClient] \u62C9\u53D6\u76D1\u542C\u5668\u4E8B\u4EF6\u6210\u529F: %d \u6761\u4E8B\u4EF6",a.events.length),a.events)}catch(n){return i.warn("[AgentClient] \u62C9\u53D6\u76D1\u542C\u5668\u4E8B\u4EF6\u5F02\u5E38: %s",n instanceof Error?n.message:String(n)),[]}}async fetchPluginEvents(){const e=this.serverConfig.runtimeBridgeBaseUrl,t=this.agentId;if(!e||!t)return{revision:0,events:[],catalog:null,compactionSeq:0};try{const n=`${e}/runtime/plugin-events/${encodeURIComponent(t)}/events`,r=this.serverConfig.runtimeAccessToken||"",s=await fetch(n,{method:"GET",headers:{"X-Runtime-Token":r},signal:AbortSignal.timeout(3e3)});if(!s.ok)return i.warn("[AgentClient] \u62C9\u53D6\u63D2\u4EF6\u4E8B\u4EF6\u5931\u8D25: HTTP %s, url=%s",s.status,n),{revision:0,events:[],catalog:null,compactionSeq:0};const a=await s.json();return!a.ok||!Array.isArray(a.events)?(i.warn("[AgentClient] \u62C9\u53D6\u63D2\u4EF6\u4E8B\u4EF6\u54CD\u5E94\u5F02\u5E38: ok=%s",String(a.ok)),{revision:0,events:[],catalog:null,compactionSeq:0}):(i.debug("[AgentClient] \u62C9\u53D6\u63D2\u4EF6\u4E8B\u4EF6\u6210\u529F: %d \u6761\u4E8B\u4EF6, revision=%s, catalog=%s, compactionSeq=%s",a.events.length,String(a.revision??0),a.catalog?`${a.catalog.plugins.length} \u4E2A\u63D2\u4EF6`:"null",String(a.compactionSeq??0)),{revision:a.revision??0,events:a.events,catalog:a.catalog??null,compactionSeq:typeof a.compactionSeq=="number"&&Number.isFinite(a.compactionSeq)?a.compactionSeq:0})}catch(n){return i.warn("[AgentClient] \u62C9\u53D6\u63D2\u4EF6\u4E8B\u4EF6\u5F02\u5E38: %s",n instanceof Error?n.message:String(n)),{revision:0,events:[],catalog:null,compactionSeq:0}}}async notifyBridgeForceMessage(){const e=this.serverConfig.runtimeBridgeBaseUrl,t=this.agentId;if(!(!e||!t))try{const n=`${e}/runtime/sessions/${encodeURIComponent(t)}/notify-force-message`,r=this.serverConfig.runtimeAccessToken||"",s=await fetch(n,{method:"POST",headers:{"X-Runtime-Token":r},signal:AbortSignal.timeout(3e3)});s.ok||i.warn("[AgentClient] \u901A\u77E5 bridge \u5F3A\u5236\u6D88\u606F\u5931\u8D25: HTTP %s, url=%s",s.status,n)}catch(n){i.warn("[AgentClient] \u901A\u77E5 bridge \u5F3A\u5236\u6D88\u606F\u5F02\u5E38: %s",n instanceof Error?n.message:String(n))}}async fetchDirectMessagesWithRecovery(e,t,n,r=!1){if(e==="poll_message"){i.info("[AgentClient] fetchDirectMessagesWithRecovery \u5165\u53E3: tool=poll_message, pollMessageTimeoutMs=%s, agentId=%s",String(n??"(\u9ED8\u8BA4)"),String(t?.agentId??""));try{const s=await this.httpClient.callToolOnce(e,t,n);return i.info("[AgentClient] fetchDirectMessagesWithRecovery poll_message \u6210\u529F\u8FD4\u56DE: %s \u6761",Array.isArray(s?.messages)?s.messages.length:0),s}catch(s){if(this.isRecoverableLongPollError(s)){if(r)throw new T(s instanceof Error?s.message:String(s));return i.warn("[AgentClient] poll_message \u5355\u6B21\u957F\u8F6E\u8BE2\u8D85\u65F6\uFF0C\u6309\u7A7A\u7ED3\u679C\u9000\u907F\u540E\u7EE7\u7EED\u7B49\u5F85:",s),{messages:[]}}throw s}}return await this.httpClient.callTool(e,t)}isRecoverableLongPollError(e){return e instanceof Error?/MCP tool poll_message call failed: 503(?:\s|$)/.test(e.message)||/MCP tool poll_message timed out after \d+ms/.test(e.message):!1}normalizeGroupMessages(e){return Array.isArray(e.messages)?e.messages.filter(t=>!!(t&&typeof t=="object"&&typeof t.msgId=="number"&&typeof t.senderId=="string"&&typeof t.content=="string"&&typeof t.timestamp=="string")):[]}collectRoomIds(e,t){const n=e.groups.filter(r=>r.projectId===t).map(r=>r.id);return Array.from(new Set(n))}async getProfile(){this.ensureRegistered();const e=this.agentId;if(!e)throw new Error("Agent is not registered");return{...await this.getProfileByAgentId(e),describe:this.agentConfig.describe}}async getProfileByAgentId(e){return await this.httpClient.callTool("get_profile",{agentId:e})}async getMyTasks(){return this.ensureRegistered(),await this.httpClient.callTool("my_task",{agentId:this.agentId})}async listTaskNodeIterations(e={}){return this.ensureRegistered(),await this.httpClient.callTool("list_task_node_iterations",{agentId:this.agentId,...e})}async createTaskInstanceComment(e){this.ensureRegistered();const t={agentId:this.agentId,...e};return await this.httpClient.callTool("create_task_instance_comment",t)}async submitTaskResult(e,t,n,r,s){this.ensureRegistered();const a={agentId:this.agentId,nodeId:e,outputPayload:t};return(Array.isArray(n)&&n.length>0||typeof n=="string"&&n.trim().length>0)&&(a.changeLog=n),typeof r=="string"&&r.trim().length>0&&(a.handoverNote=r),s&&Array.isArray(s)&&s.length>0&&(a.deliverables=s),await this.httpClient.callTool("submit_task_result",a)}async startTaskRollback(e){return this.ensureRegistered(),await this.httpClient.callTool("start_task_rollback",{agentId:this.agentId,...e})}async finishTaskRollback(e){return this.ensureRegistered(),await this.httpClient.callTool("finish_task_rollback",{agentId:this.agentId,...e})}async getDebugLogConfig(){return await this.httpClient.callTool("get_debug_log_config",{agentId:this.agentId})}async queryDebugLogs(e){return this.ensureRegistered(),await this.httpClient.callTool("query_debug_logs",{...e})}async queryFileChangesHistory(e){return this.ensureRegistered(),await this.httpClient.callTool("query_file_changes_history",{...e})}async getRuntimeFeatures(){return await this.httpClient.fetchRuntimeFeatures()}async listLaunchConfigs(){return this.ensureRegistered(),await this.httpClient.callTool("launch_config_list",{})}async createLaunchConfig(e){return this.ensureRegistered(),await this.httpClient.callTool("launch_config_create",{...e})}async updateLaunchConfig(e){return this.ensureRegistered(),await this.httpClient.callTool("launch_config_update",{...e})}async deleteLaunchConfig(e){return this.ensureRegistered(),await this.httpClient.callTool("launch_config_delete",{configId:e})}async startLaunchConfig(e){this.ensureRegistered();const t=Math.max(0,Math.min(3e5,Number(e.wait_timeout_ms)||0));return t>0?await this.httpClient.callToolOnce("launch_config_start",e,t+6e4):await this.httpClient.callTool("launch_config_start",{...e})}async restartLaunchConfig(e){this.ensureRegistered();const t=Math.max(0,Math.min(3e5,Number(e.wait_timeout_ms)||0));return t>0?await this.httpClient.callToolOnce("launch_config_restart",e,t+6e4):await this.httpClient.callTool("launch_config_restart",{...e})}async stopLaunchConfig(e){return this.ensureRegistered(),await this.httpClient.callTool("launch_config_stop",{configId:e})}async getLaunchLogs(e){return this.ensureRegistered(),await this.httpClient.callTool("launch_config_logs",{...e})}async listLaunchRuns(){return this.ensureRegistered(),await this.httpClient.callTool("launch_config_status",{})}start(e,t){if(this.isRunning){i.warn("[AgentClient] \u6D88\u606F\u5FAA\u73AF\u5DF2\u5728\u8FD0\u884C\u4E2D");return}this.isDegradedMode||this.ensureRegistered(),this.messageHandler=e,this.profileHandler=t?.profileHandler||null,this.configHandler=t?.configHandler||null,this.systemNotifyHandler=t?.systemNotifyHandler||null,this.isRunning=!0,i.info(`[AgentClient] start() \u88AB\u8C03\u7528\uFF0CcachedProfile: ${this.cachedProfile?"\u5B58\u5728":"\u4E0D\u5B58\u5728"}, profileHandler: ${this.profileHandler?"\u5DF2\u8BBE\u7F6E":"\u672A\u8BBE\u7F6E"}, \u964D\u7EA7\u6A21\u5F0F: ${this.isDegradedMode?"\u662F":"\u5426"}`),this.cachedProfile&&this.profileHandler&&(i.info(`[AgentClient] \u5904\u7406\u7F13\u5B58\u7684 Profile \u4FE1\u606F: ${this.cachedProfile.displayName}`),this.profileHandler(this.cachedProfile),this.cachedProfile=null),t?.pollMode??!1?(i.warn("[AgentClient] \u542F\u52A8\u6D88\u606F\u4E3B\u5FAA\u73AF\uFF08HTTP\u8F6E\u8BE2\u6A21\u5F0F - \u4E0D\u63A8\u8350\uFF09"),this.messageLoop()):i.info("[AgentClient] \u542F\u52A8\u6D88\u606F\u4E3B\u5FAA\u73AF\uFF08WebSocket\u63A8\u9001\u6A21\u5F0F - \u63A8\u8350\uFF09")}stop(){this.isRunning=!1,this.pollTimer&&(clearTimeout(this.pollTimer),this.pollTimer=null),this.stopRuntimeTokenRefresh(),i.info("[AgentClient] \u6D88\u606F\u4E3B\u5FAA\u73AF\u5DF2\u505C\u6B62")}async messageLoop(){for(;this.isRunning;)try{await this.delay(I)}catch(e){i.error("[AgentClient] \u6D88\u606F\u5FAA\u73AF\u9519\u8BEF:",e),await this.delay(5e3)}}handleIncomingDm(e){e.senderId!==this.agentId&&this.processMessage(e)}handleIncomingGroup(e){e.senderId!==this.agentId&&this.processMessage(e)}handleIncomingMeeting(e){!e||e.senderId===this.agentId||this.processMessage(e)}handleProfileInfo(e){i.info(`[AgentClient] \u6536\u5230 Profile \u4FE1\u606F: ${e.displayName} (${e.roleName})`),e.projectId&&(this.projectId=e.projectId,i.info(`[AgentClient] \u66F4\u65B0\u6240\u5C5E\u9879\u76EE: ${this.projectId}`)),e.roleName&&e.roleName!==this.agentConfig.roleName&&(i.info(`[AgentClient] \u540C\u6B65\u89D2\u8272\u540D: "${this.agentConfig.roleName||"(\u7A7A)"}" -> "${e.roleName}"`),this.agentConfig.roleName=e.roleName),e.roleName&&u(e.roleName,e.instanceName||this.agentId||""),this.profileHandler?this.profileHandler(e):(i.info("[AgentClient] profileHandler \u672A\u8BBE\u7F6E\uFF0C\u7F13\u5B58 Profile \u4FE1\u606F"),this.cachedProfile=e)}async processMessage(e){if(!this.messageHandler)return;const t=typeof e.msgId=="string";i.info(`[AgentClient] \u6536\u5230${t?"\u79C1\u4FE1":"\u7FA4\u6D88\u606F"}\u6765\u81EA ${e.senderName}: ${e.content.substring(0,50)}...`);try{const n=await this.messageHandler(e);if(t){const r=e;r.requireReply&&r.callId&&await this.replyToCall(r.callId,r.senderId,n||"\u5DF2\u6536\u5230\u6D88\u606F\uFF0C\u6B63\u5728\u5904\u7406\u4E2D...")}}catch(n){const r=typeof e.msgId=="string";if(i.error("[AgentClient] \u5904\u7406\u6D88\u606F\u5931\u8D25: type=%s, senderId=%s, senderName=%s, msgId=%s, error=%s",r?"\u79C1\u4FE1":"\u7FA4\u6D88\u606F",e.senderId,e.senderName,e.msgId,n instanceof Error?n.message:String(n)),r){const s=e;s.requireReply&&s.callId&&await this.replyToCall(s.callId,s.senderId,`\u5904\u7406\u5931\u8D25: ${n}`)}}}ensureRegistered(){if(!this.agentId)throw new Error("Agent is not registered")}delay(e){return new Promise(t=>{this.pollTimer=setTimeout(t,e)})}onNewCharacter(e){this.newCharacterHandler=e}getState(){return{agentId:this.agentId,displayName:this.displayName,projectId:this.projectId,isConnected:this.wsClient.isConnected(),isRunning:this.isRunning}}getAgentConfig(){return this.agentConfig}getServerConfig(){return this.serverConfig}reloadConfig(){c.loadConfig(),this.agentConfig=c.getAgentConfig(),i.info(`[AgentClient] \u914D\u7F6E\u5DF2\u91CD\u65B0\u52A0\u8F7D\uFF0C\u89D2\u8272: ${this.agentConfig.roleName}`)}enterDegradedMode(){this.isDegradedMode=!0,i.warn("[AgentClient] \u8FDB\u5165\u964D\u7EA7\u6A21\u5F0F\uFF0C\u5C06\u5728\u540E\u53F0\u6301\u7EED\u5C1D\u8BD5\u91CD\u8FDE")}exitDegradedMode(){this.isDegradedMode=!1,i.info("[AgentClient] \u9000\u51FA\u964D\u7EA7\u6A21\u5F0F")}isInDegradedMode(){return this.isDegradedMode}async retryRegistrationInBackground(e,t){let n=0;(async()=>{for(;this.isDegradedMode;)try{i.info(`[AgentClient] \u964D\u7EA7\u6A21\u5F0F\uFF1A\u5C1D\u8BD5\u91CD\u65B0\u6CE8\u518C (${n+1}/${t===-1?"\u65E0\u9650":t})`);const s=await this.register();i.info(`[AgentClient] \u964D\u7EA7\u6A21\u5F0F\uFF1A\u6CE8\u518C\u6210\u529F - ${s.displayName} (${s.agentId})`),this.exitDegradedMode(),this.messageHandler&&this.start(this.messageHandler);return}catch(s){n++;const a=s instanceof Error?s.message:String(s);if(i.warn(`[AgentClient] \u964D\u7EA7\u6A21\u5F0F\uFF1A\u6CE8\u518C\u5931\u8D25 (${n}/${t===-1?"\u65E0\u9650":t}): ${a}`),t>0&&n>=t){i.error("[AgentClient] \u964D\u7EA7\u6A21\u5F0F\uFF1A\u8FBE\u5230\u6700\u5927\u91CD\u8BD5\u6B21\u6570\uFF0C\u505C\u6B62\u91CD\u8FDE"),this.isDegradedMode=!1;return}await new Promise(h=>setTimeout(h,e))}})().catch(s=>{i.error("[AgentClient] \u964D\u7EA7\u6A21\u5F0F\u540E\u53F0\u91CD\u8BD5\u5FAA\u73AF\u5F02\u5E38\u9000\u51FA: error=%s, stack=%s",s instanceof Error?s.message:String(s),s instanceof Error?s.stack:"(no stack)")})}initializeStatusReporter(){if(!this.agentId){i.warn("[AgentClient] \u65E0\u6CD5\u521D\u59CB\u5316\u72B6\u6001\u62A5\u544A\u5668\uFF1AagentId \u4E3A\u7A7A");return}this.statusReporter=new A({agentId:this.agentId,sendStatusUpdate:e=>{this.wsClient.send({type:"AGENT_STATUS",data:e,timestamp:new Date().toISOString()})}}),w(e=>this.reportMcpNodeLog(e)),this.startRuntimeTokenRefresh(),i.info("[AgentClient] \u72B6\u6001\u62A5\u544A\u5668\u5DF2\u521D\u59CB\u5316")}startRuntimeTokenRefresh(){this.stopRuntimeTokenRefresh();const e=this.serverConfig.runtimeTokenRefreshIntervalMs;if(!e||e<=0){i.warn("[AgentClient] runtimeTokenRefreshIntervalMs \u672A\u914D\u7F6E\u6216\u65E0\u6548\uFF0C\u8DF3\u8FC7\u4E3B\u52A8\u7EED\u671F");return}const t=this.agentId;if(!t){i.warn("[AgentClient] agentId \u4E3A\u7A7A\uFF0C\u8DF3\u8FC7\u4E3B\u52A8\u7EED\u671F");return}this.runtimeTokenRefreshTimer=setInterval(async()=>{try{await this.httpClient.refreshRuntimeAccessToken(t)&&i.info("[AgentClient] runtimeAccessToken \u5DF2\u4E3B\u52A8\u7EED\u671F")}catch(n){i.warn("[AgentClient] \u4E3B\u52A8\u7EED\u671F runtimeAccessToken \u5931\u8D25: %s",n instanceof Error?n.message:String(n)),n instanceof Error&&n.stack&&i.warn("[AgentClient] \u4E3B\u52A8\u7EED\u671F\u5F02\u5E38\u5806\u6808:",n.stack)}},e),this.runtimeTokenRefreshTimer.unref?.(),i.info(`[AgentClient] runtime token \u4E3B\u52A8\u7EED\u671F\u5DF2\u542F\u52A8\uFF0C\u95F4\u9694 ${e}ms`)}stopRuntimeTokenRefresh(){this.runtimeTokenRefreshTimer&&(clearInterval(this.runtimeTokenRefreshTimer),this.runtimeTokenRefreshTimer=null)}reportMcpNodeLog(e){const t=this.wsClient;!this.agentId||!this.wsClient.isConnected()||typeof t.sendMcpNodeLog!="function"||t.sendMcpNodeLog(e)}getStatusReporter(){return this.statusReporter}}export{N as AgentClient,T as PollLongPollTimeoutError};
1
+ import{configManager as c}from"./config.js";import{MESSAGE_POLL_INTERVAL_MS as I}from"./constants.js";import{HttpClient as f}from"./http-client.js";import{logger as i,setMcpNodeLogSink as w,updateStartupLogIdentity as u}from"./logger.js";import{claimRuntimeLaunchBindingDetailed as m}from"./runtime-launch-binding.js";import{StatusReporter as A}from"./status-reporter.js";import{WebSocketClient as p}from"./websocket-client.js";class T extends Error{constructor(e){super(e),this.name="PollLongPollTimeoutError"}}const C=27e4;class N{wsClient;httpClient;agentConfig;serverConfig;agentId=null;displayName=null;projectId=null;isRunning=!1;isDegradedMode=!1;messageHandler=null;profileHandler=null;configHandler=null;systemNotifyHandler=null;pollTimer=null;statusReporter=null;newCharacterHandler=null;runtimeTokenRefreshTimer=null;pendingLaunchBindingClaim=!1;cachedProfile=null;constructor(){c.loadConfig(),this.agentConfig=c.getAgentConfig(),this.serverConfig=c.getServerConfig(),this.wsClient=new p(this.serverConfig),this.httpClient=new f(this.serverConfig),this.setupWebSocketListeners()}async initialize(){const e=await m(this.agentConfig,this.serverConfig);if(e.status==="claimed"){this.applyLaunchBinding(e.binding);return}if(e.status==="unreachable"){this.pendingLaunchBindingClaim=!0,i.warn("[AgentClient] runtime-bridge \u672A\u5C31\u7EEA\uFF0C\u542F\u52A8\u7ED1\u5B9A\u8BA4\u9886\u5DF2\u6302\u8D77\uFF0C\u5C06\u5728\u6CE8\u518C\u91CD\u8BD5\u4E2D\u91CD\u65B0\u8BA4\u9886: %s",e.message);return}this.serverConfig.runtimeBridgeBaseUrl=void 0}applyLaunchBinding(e){c.applyRuntimeLaunchBinding(e),this.agentConfig=c.getAgentConfig(),this.serverConfig=c.getServerConfig(),this.wsClient=new p(this.serverConfig),this.httpClient=new f(this.serverConfig),this.setupWebSocketListeners()}async retryPendingLaunchBindingClaim(){if(!this.pendingLaunchBindingClaim)return!0;const e=await m(this.agentConfig,this.serverConfig);if(e.status==="claimed")return this.pendingLaunchBindingClaim=!1,i.info("[AgentClient] \u542F\u52A8\u7ED1\u5B9A\u8865\u8BA4\u9886\u6210\u529F\uFF0C\u7EE7\u7EED\u6CE8\u518C\u6D41\u7A0B"),this.applyLaunchBinding(e.binding),!0;if(e.status==="missing")return this.pendingLaunchBindingClaim=!1,this.serverConfig.runtimeBridgeBaseUrl=void 0,i.warn("[AgentClient] \u542F\u52A8\u7ED1\u5B9A\u8865\u8BA4\u9886\u672A\u627E\u5230\u5F85\u8BA4\u9886\u8BB0\u5F55\uFF0C\u6309\u65E0\u7ED1\u5B9A\u6A21\u5F0F\u7EE7\u7EED\u6CE8\u518C"),!1;const t=e.status==="unreachable"?e.message:e.reason;return i.warn("[AgentClient] \u542F\u52A8\u7ED1\u5B9A\u8865\u8BA4\u9886\u5931\u8D25\uFF0C\u4FDD\u7559\u6302\u8D77\u72B6\u6001\u7B49\u5F85\u4E0B\u6B21\u6CE8\u518C\u91CD\u8BD5: %s",t),!1}setupWebSocketListeners(){this.wsClient.on("directMessage",e=>{this.handleIncomingDm(e)}),this.wsClient.on("groupMessage",e=>{this.handleIncomingGroup(e)}),this.wsClient.on("meetingMessage",e=>{this.handleIncomingMeeting(e)}),this.wsClient.on("systemNotify",e=>{this.systemNotifyHandler?.(e)}),this.wsClient.on("profileInfo",e=>{i.info(`[AgentClient] WebSocket profileInfo \u4E8B\u4EF6\u89E6\u53D1\uFF0CdisplayName: ${e.displayName}`),this.handleProfileInfo(e)}),this.wsClient.on("agentConfig",e=>{i.info("[AgentClient] WebSocket agentConfig \u4E8B\u4EF6\u89E6\u53D1"),this.configHandler&&this.configHandler(e??{})}),this.wsClient.on("agentStatus",e=>{i.info(`[AgentClient] WebSocket agentStatus \u4E8B\u4EF6\u89E6\u53D1: ${e.status}`)}),this.wsClient.on("disconnected",(e,t)=>{const n=t?.toString()||"";i.warn("[AgentClient] WebSocket \u65AD\u5F00\u8FDE\u63A5: code=%s, reason=%s, agentId=%s, \u6B63\u5728\u81EA\u52A8\u91CD\u8FDE",e,n,this.agentId)}),this.wsClient.on("error",e=>{i.error("[AgentClient] WebSocket \u9519\u8BEF: %s, stack=%s",e.message,e.stack)}),this.wsClient.on("reconnectFailed",()=>{i.error("[AgentClient] \u91CD\u8FDE\u5931\u8D25\uFF08\u5DF2\u8FBE\u91CD\u8BD5\u4E0A\u9650\uFF09\uFF0C\u505C\u6B62\u6D88\u606F\u5FAA\u73AF, agentId=%s",this.agentId),this.stop()}),this.wsClient.on("tokenRejected",()=>{i.error("[AgentClient] runtime token \u88AB 1008 \u62D2\u7EDD\u4E14\u5237\u65B0\u65E0\u53D8\u5316\uFF0C\u8FDB\u5165\u6162\u901F\u91CD\u8BD5\u7B49\u5F85\u65B0 token \u7B7E\u53D1: agentId=%s",this.agentId)}),this.wsClient.on("tokenRefreshFailed",e=>{i.error("[AgentClient] runtime token \u5237\u65B0\u8FDE\u7EED\u5931\u8D25 %s \u6B21\uFF0C\u8FDB\u5165\u6162\u901F\u91CD\u8BD5\u7B49\u5F85 bridge \u6062\u590D: agentId=%s",e,this.agentId)})}async register(){return i.info("[AgentClient] \u6B63\u5728\u6CE8\u518C Agent..."),await this.retryPendingLaunchBindingClaim(),this.hasPresetAgentId()?await this.registerWithExistingAgentId():await this.registerAsNewAgent()}hasPresetAgentId(){return!!(this.agentConfig.agentId&&this.agentConfig.agentId.trim().length>0)}async registerWithExistingAgentId(){const e=this.agentConfig.agentId;if(!e)throw new Error("Preset agentId is missing");this.agentId=e.trim();let t;try{t=await this.getProfileByAgentId(this.agentId)}catch(r){throw i.error("[AgentClient] getProfileByAgentId \u5931\u8D25 (presetAgentId=%s): %s",this.agentId,r instanceof Error?r.message:String(r)),r}this.displayName=t.displayName,this.projectId=t.projectId||null,i.info(`[AgentClient] \u4F7F\u7528\u9884\u8BBE AgentID \u7ED1\u5B9A\u5B9E\u4F8B: ${this.displayName} (${this.agentId})`),i.info(`[AgentClient] \u6240\u5C5E\u9879\u76EE: ${this.projectId||"(\u672A\u8BBE\u7F6E)"}`);try{await this.wsClient.connect(this.agentId)}catch(r){throw i.error("[AgentClient] WebSocket \u8FDE\u63A5\u5931\u8D25 (agentId=%s): %s",this.agentId,r instanceof Error?r.message:String(r)),r}i.info("[AgentClient] WebSocket \u8FDE\u63A5\u5DF2\u5EFA\u7ACB\uFF0CAgent \u73B0\u5728\u5DF2\u4E0A\u7EBF"),this.initializeStatusReporter();const n=await this.getProfileByAgentId(this.agentId);return this.displayName=n.displayName,this.projectId=n.projectId||null,u(n.roleName||"unknown-role",n.instanceName||this.agentId),{agentId:this.agentId,displayName:this.displayName,status:n.isOnline?"online":"offline",projectId:n.projectId,workspacePath:n.workspacePath,runtimeStatus:n.runtimeStatus,runtimeSessionId:n.runtimeSessionId}}async registerAsNewAgent(){const e=await this.httpClient.callTool("register",{roleName:this.agentConfig.roleName,projectId:this.agentConfig.projectId,workspacePath:this.agentConfig.workspacePath,prompt:this.agentConfig.prompt,runtimeBridgeBaseUrl:this.serverConfig.runtimeBridgeBaseUrl}),t=e.agentId;if(!t)throw new Error("Registration failed: agentId was not returned");return this.agentId=t,this.displayName=e.displayName,this.projectId=e.projectId||null,u(this.agentConfig.roleName||"unknown-role",e.instanceName||t),i.info(`[AgentClient] \u6CE8\u518C\u6210\u529F: ${this.displayName} (${this.agentId})`),i.info(`[AgentClient] \u72B6\u6001: ${e.status}`),i.info(`[AgentClient] \u6240\u5C5E\u9879\u76EE: ${this.projectId||"(\u672A\u8BBE\u7F6E)"}`),await this.wsClient.connect(this.agentId),i.info("[AgentClient] WebSocket \u8FDE\u63A5\u5DF2\u5EFA\u7ACB\uFF0CAgent \u73B0\u5728\u5DF2\u4E0A\u7EBF"),this.initializeStatusReporter(),e.isExisting===!1&&this.newCharacterHandler&&this.newCharacterHandler(),e}async unregister(){i.info("[AgentClient] \u6B63\u5728\u6CE8\u9500 Agent..."),this.agentId&&await this.httpClient.callTool("unregister",{agentId:this.agentId}),this.stopRuntimeTokenRefresh(),this.wsClient.disconnect(),this.agentId=null,this.displayName=null,this.projectId=null,this.isRunning=!1,i.info("[AgentClient] \u5DF2\u6CE8\u9500")}async discoverColleagues(){return await this.httpClient.callTool("discover_colleague",{agentId:this.agentId})}async discoverGroupRooms(){return this.ensureRegistered(),await this.httpClient.callTool("discover_group_rooms",{agentId:this.agentId})}async listProjectMembers(){return this.ensureRegistered(),await this.httpClient.callTool("list_project_members",{agentId:this.agentId})}async hireColleague(e){return this.ensureRegistered(),await this.httpClient.callTool("hire_colleague",{...e,agentId:this.agentId})}async callAgentScopedTool(e,t){this.ensureRegistered();const n={...t,agentId:this.agentId};if(e==="create_meeting"){const r=typeof t.waitTimeoutMs=="number"?t.waitTimeoutMs:Number.NaN,s=Number.isFinite(r)&&r>0?Math.min(r,C):C;return await this.httpClient.callToolOnce(e,{...n,waitTimeoutMs:s},0)}return await this.httpClient.callTool(e,n)}async reportMemoryStats(e){await this.callAgentScopedTool("report_memory_stats",{memoryStats:e})}async sendGroupMessage(e,t,n,r,s){this.ensureRegistered();const a=t||this.projectId||this.agentConfig.projectId;return await this.httpClient.callTool("send_group_message",{agentId:this.agentId,projectId:a,roomId:n,content:e,card:r,replyTo:s})}async sendDirectMessage(e,t,n=!1,r,s,a,h){this.ensureRegistered();const g={agentId:this.agentId,targetId:e,content:t,requireReply:n,waitReply:n,replyToCallId:r,card:a,replyTo:h};if(typeof s=="number"&&s>0&&(g.timeoutMs=s),n){const o=typeof s=="number"&&s>0?s+3e4:0;return await this.httpClient.callToolOnce("send_dm",g,o)}return await this.httpClient.callTool("send_dm",g)}async sendCallAndWaitReply(e,t,n=6e4){const r=await this.sendDirectMessage(e,t,!0,void 0,n);if(r.reply)return r.reply;throw new Error("No reply received for call-style direct message before timeout")}async replyToCall(e,t,n){return await this.sendDirectMessage(t,n,!1,e)}async sendEmail(e){return await this.callAgentScopedTool("send_email",e)}async listEmails(e){return await this.callAgentScopedTool("list_emails",e)}async readEmail(e){return await this.callAgentScopedTool("read_email",{mailId:e})}async replyEmail(e){return await this.callAgentScopedTool("reply_email",e)}async ackEmail(e){return await this.callAgentScopedTool("ack_email",{mailId:e})}async getDmHistory(e,t=50,n){this.ensureRegistered();const r={agentId:this.agentId,targetUserId:e,limit:t};return n&&(r.since=n),await this.httpClient.callTool("get_dm_history",r)}async getGroupHistory(e=50,t,n){if(this.ensureRegistered(),t){const o={projectId:this.projectId||this.agentConfig.projectId,roomId:t,limit:e};return n&&(o.since=n),await this.httpClient.callTool("get_group_history",o)}const r=await this.discoverGroupRooms(),s=this.projectId||this.agentConfig.projectId,a=this.collectRoomIds(r,s);if(a.length===0)return{messages:[],count:0};const g=(await Promise.all(a.map(async o=>{const l={projectId:s,roomId:o,limit:e};return n&&(l.since=n),await this.httpClient.callTool("get_group_history",l)}))).flatMap(o=>o.messages).sort((o,l)=>new Date(o.timestamp).getTime()-new Date(l.timestamp).getTime());return{messages:g,count:g.length}}async fetchUnreadMessages(e={}){this.ensureRegistered();const t=this.projectId||this.agentConfig.projectId,n={agentId:this.agentId,blockIfEmpty:e.blockIfEmpty??!1};e.since&&(n.since=e.since),e.blockTimeoutMs&&e.blockTimeoutMs>0&&(n.blockTimeoutMs=e.blockTimeoutMs),e.preemptiveJoinWaitMs!==void 0&&e.preemptiveJoinWaitMs!==null&&e.preemptiveJoinWaitMs>=0&&(n.preemptiveJoinWaitMs=e.preemptiveJoinWaitMs);const r=e.includePipelineTasks?"poll_message":"get_dm_messages";i.info("[AgentClient] fetchUnreadMessages \u5165\u53E3: tool=%s, blockIfEmpty=%s, blockTimeoutMs=%s, pollMessageTimeoutMs=%s, skipGroupMessages=%s, preemptiveJoinWaitMs=%s, agentId=%s",r,String(e.blockIfEmpty??!1),String(e.blockTimeoutMs??"-"),String(e.pollMessageTimeoutMs??"-"),String(e.skipGroupMessages??!1),String(e.preemptiveJoinWaitMs??"-"),this.agentId);const s=await this.fetchDirectMessagesWithRecovery(r,n,e.pollMessageTimeoutMs,e.propagatePollTimeout===!0);if(i.info("[AgentClient] fetchUnreadMessages \u79C1\u4FE1\u9636\u6BB5\u8FD4\u56DE: %s \u6761",Array.isArray(s.messages)?s.messages.length:0),e.skipGroupMessages)return i.info("[AgentClient] \u4F1A\u8BAE\u5FEB\u901F hydrate \u5DF2\u53D6\u5F97\u79C1\u4FE1\u54CD\u5E94\uFF0C\u8DF3\u8FC7\u7FA4\u804A\u53D1\u73B0\u5E76\u7ACB\u5373\u8FD4\u56DE: directMessages=%s",Array.isArray(s.messages)?s.messages.length:0),{directMessages:Array.isArray(s.messages)?s.messages:[],groupMessages:[]};let a;try{a=await this.discoverGroupRooms()}catch(o){i.warn("[AgentClient] \u53D1\u73B0\u7FA4\u623F\u95F4\u5931\u8D25\uFF0C\u672C\u6B21\u6309\u65E0\u7FA4\u6D88\u606F\u5904\u7406\uFF08\u5DF2\u53D6\u5230\u7684\u79C1\u4FE1\u4E0D\u53D7\u5F71\u54CD\uFF09: %s",o instanceof Error?o.message:String(o)),a={groups:[]}}const h=this.collectRoomIds(a,t),g=await Promise.all(h.map(async o=>{const l={agentId:this.agentId,projectId:t,roomId:o};e.since&&(l.since=e.since);try{return await this.httpClient.callTool("get_group_messages",l)}catch(d){return i.warn("[AgentClient] \u8DF3\u8FC7\u7FA4\u623F\u95F4\u672A\u8BFB\u8865\u62C9\u5931\u8D25: roomId=%s, error=%s",o,d instanceof Error?d.message:String(d)),{messages:[],currentReadPos:0,hasMore:!1}}}));return{directMessages:Array.isArray(s.messages)?s.messages:[],groupMessages:g.flatMap(o=>this.normalizeGroupMessages(o)).sort((o,l)=>new Date(o.timestamp).getTime()-new Date(l.timestamp).getTime())}}async markDmRead(e){if(e.length===0)return new Set;this.ensureRegistered();try{const t=await this.httpClient.callTool("mark_dm_read",{agentId:this.agentId,msgIds:e}),n=new Set(Array.isArray(t?.deliverableMsgIds)?t.deliverableMsgIds:[]),r=e.filter(s=>!n.has(s));return r.length>0?i.warn("[AgentClient] mark_dm_read \u786E\u8BA4\u540E\u5C06\u6709 %d \u6761\u6D88\u606F\u88AB\u4E22\u5F03\u4E0D\u4EA4\u4ED8: \u8BF7\u6C42=%s, \u53EF\u4EA4\u4ED8=%s, \u88AB\u4E22\u5F03=%s",r.length,JSON.stringify(e),JSON.stringify([...n]),JSON.stringify(r)):i.info("[AgentClient] mark_dm_read \u786E\u8BA4\u5B8C\u6210: %d \u6761\u5168\u90E8\u53EF\u4EA4\u4ED8",e.length),n}catch(t){throw i.warn("[AgentClient] mark_dm_read \u8BF7\u6C42\u5931\u8D25\uFF08\u5C06\u964D\u7EA7\u4E3A\u76F4\u63A5\u4EA4\u4ED8\uFF09: %s",t instanceof Error?t.message:String(t)),t}}async markGroupRead(e,t){if(t.length===0)return new Set;this.ensureRegistered();const n=await this.httpClient.callTool("mark_group_read",{agentId:this.agentId,roomId:e,msgIds:t});return new Set(Array.isArray(n?.deliverableMsgIds)?n.deliverableMsgIds:[])}async markNotificationRead(e){if(e.length!==0){this.ensureRegistered();try{await this.httpClient.callTool("mark_notification_read",{agentId:this.agentId,msgIds:e})}catch{}}}async markMeetingRead(e){if(e.length!==0){this.ensureRegistered();try{await this.httpClient.callTool("mark_meeting_read",{agentId:this.agentId,msgIds:e})}catch{}}}async fetchBrowserListenerEvents(){const e=this.serverConfig.runtimeBridgeBaseUrl,t=this.agentId;if(!e||!t)return i.info("[AgentClient] fetchBrowserListenerEvents \u8DF3\u8FC7: bridgeBaseUrl=%s, agentId=%s",e||"(\u7A7A)",t||"(\u7A7A)"),[];try{const n=`${e}/runtime/browser-listeners/${encodeURIComponent(t)}/events`,r=this.serverConfig.runtimeAccessToken||"";i.debug("[AgentClient] \u62C9\u53D6\u76D1\u542C\u5668\u4E8B\u4EF6: url=%s, tokenLen=%d",n,r.length);const s=await fetch(n,{method:"GET",headers:{"X-Runtime-Token":r},signal:AbortSignal.timeout(3e3)});if(!s.ok)return i.warn("[AgentClient] \u62C9\u53D6\u76D1\u542C\u5668\u4E8B\u4EF6\u5931\u8D25: HTTP %s, url=%s",s.status,n),[];const a=await s.json();return!a.ok||!Array.isArray(a.events)?(i.warn("[AgentClient] \u62C9\u53D6\u76D1\u542C\u5668\u4E8B\u4EF6\u54CD\u5E94\u5F02\u5E38: ok=%s, eventsType=%s",a.ok,Array.isArray(a.events)?"array":typeof a.events),[]):(i.debug("[AgentClient] \u62C9\u53D6\u76D1\u542C\u5668\u4E8B\u4EF6\u6210\u529F: %d \u6761\u4E8B\u4EF6",a.events.length),a.events)}catch(n){return i.warn("[AgentClient] \u62C9\u53D6\u76D1\u542C\u5668\u4E8B\u4EF6\u5F02\u5E38: %s",n instanceof Error?n.message:String(n)),[]}}async fetchPluginEvents(){const e=this.serverConfig.runtimeBridgeBaseUrl,t=this.agentId;if(!e||!t)return{revision:0,events:[],catalog:null,compactionSeq:0};try{const n=`${e}/runtime/plugin-events/${encodeURIComponent(t)}/events`,r=this.serverConfig.runtimeAccessToken||"",s=await fetch(n,{method:"GET",headers:{"X-Runtime-Token":r},signal:AbortSignal.timeout(3e3)});if(!s.ok)return i.warn("[AgentClient] \u62C9\u53D6\u63D2\u4EF6\u4E8B\u4EF6\u5931\u8D25: HTTP %s, url=%s",s.status,n),{revision:0,events:[],catalog:null,compactionSeq:0};const a=await s.json();return!a.ok||!Array.isArray(a.events)?(i.warn("[AgentClient] \u62C9\u53D6\u63D2\u4EF6\u4E8B\u4EF6\u54CD\u5E94\u5F02\u5E38: ok=%s",String(a.ok)),{revision:0,events:[],catalog:null,compactionSeq:0}):(i.debug("[AgentClient] \u62C9\u53D6\u63D2\u4EF6\u4E8B\u4EF6\u6210\u529F: %d \u6761\u4E8B\u4EF6, revision=%s, catalog=%s, compactionSeq=%s",a.events.length,String(a.revision??0),a.catalog?`${a.catalog.plugins.length} \u4E2A\u63D2\u4EF6`:"null",String(a.compactionSeq??0)),{revision:a.revision??0,events:a.events,catalog:a.catalog??null,compactionSeq:typeof a.compactionSeq=="number"&&Number.isFinite(a.compactionSeq)?a.compactionSeq:0})}catch(n){return i.warn("[AgentClient] \u62C9\u53D6\u63D2\u4EF6\u4E8B\u4EF6\u5F02\u5E38: %s",n instanceof Error?n.message:String(n)),{revision:0,events:[],catalog:null,compactionSeq:0}}}async notifyBridgeForceMessage(){const e=this.serverConfig.runtimeBridgeBaseUrl,t=this.agentId;if(!(!e||!t))try{const n=`${e}/runtime/sessions/${encodeURIComponent(t)}/notify-force-message`,r=this.serverConfig.runtimeAccessToken||"",s=await fetch(n,{method:"POST",headers:{"X-Runtime-Token":r},signal:AbortSignal.timeout(3e3)});s.ok||i.warn("[AgentClient] \u901A\u77E5 bridge \u5F3A\u5236\u6D88\u606F\u5931\u8D25: HTTP %s, url=%s",s.status,n)}catch(n){i.warn("[AgentClient] \u901A\u77E5 bridge \u5F3A\u5236\u6D88\u606F\u5F02\u5E38: %s",n instanceof Error?n.message:String(n))}}async fetchDirectMessagesWithRecovery(e,t,n,r=!1){if(e==="poll_message"){i.info("[AgentClient] fetchDirectMessagesWithRecovery \u5165\u53E3: tool=poll_message, pollMessageTimeoutMs=%s, agentId=%s",String(n??"(\u9ED8\u8BA4)"),String(t?.agentId??""));try{const s=await this.httpClient.callToolOnce(e,t,n);return i.info("[AgentClient] fetchDirectMessagesWithRecovery poll_message \u6210\u529F\u8FD4\u56DE: %s \u6761",Array.isArray(s?.messages)?s.messages.length:0),s}catch(s){if(this.isRecoverableLongPollError(s)){if(r)throw new T(s instanceof Error?s.message:String(s));return i.warn("[AgentClient] poll_message \u5355\u6B21\u957F\u8F6E\u8BE2\u8D85\u65F6\uFF0C\u6309\u7A7A\u7ED3\u679C\u9000\u907F\u540E\u7EE7\u7EED\u7B49\u5F85:",s),{messages:[]}}throw s}}return await this.httpClient.callTool(e,t)}isRecoverableLongPollError(e){return e instanceof Error?/MCP tool poll_message call failed: 503(?:\s|$)/.test(e.message)||/MCP tool poll_message timed out after \d+ms/.test(e.message):!1}normalizeGroupMessages(e){return Array.isArray(e.messages)?e.messages.filter(t=>!!(t&&typeof t=="object"&&typeof t.msgId=="number"&&typeof t.senderId=="string"&&typeof t.content=="string"&&typeof t.timestamp=="string")):[]}collectRoomIds(e,t){const n=e.groups.filter(r=>r.projectId===t).map(r=>r.id);return Array.from(new Set(n))}async getProfile(){this.ensureRegistered();const e=this.agentId;if(!e)throw new Error("Agent is not registered");return{...await this.getProfileByAgentId(e),describe:this.agentConfig.describe}}async getProfileByAgentId(e){return await this.httpClient.callTool("get_profile",{agentId:e})}async getMyTasks(){return this.ensureRegistered(),await this.httpClient.callTool("my_task",{agentId:this.agentId})}async listTaskNodeIterations(e={}){return this.ensureRegistered(),await this.httpClient.callTool("list_task_node_iterations",{agentId:this.agentId,...e})}async createTaskInstanceComment(e){this.ensureRegistered();const t={agentId:this.agentId,...e};return await this.httpClient.callTool("create_task_instance_comment",t)}async submitTaskResult(e,t,n,r,s){this.ensureRegistered();const a={agentId:this.agentId,nodeId:e,outputPayload:t};return(Array.isArray(n)&&n.length>0||typeof n=="string"&&n.trim().length>0)&&(a.changeLog=n),typeof r=="string"&&r.trim().length>0&&(a.handoverNote=r),s&&Array.isArray(s)&&s.length>0&&(a.deliverables=s),await this.httpClient.callTool("submit_task_result",a)}async startTaskRollback(e){return this.ensureRegistered(),await this.httpClient.callTool("start_task_rollback",{agentId:this.agentId,...e})}async finishTaskRollback(e){return this.ensureRegistered(),await this.httpClient.callTool("finish_task_rollback",{agentId:this.agentId,...e})}async getDebugLogConfig(){return await this.httpClient.callTool("get_debug_log_config",{agentId:this.agentId})}async queryDebugLogs(e){return this.ensureRegistered(),await this.httpClient.callTool("query_debug_logs",{...e})}async queryFileChangesHistory(e){return this.ensureRegistered(),await this.httpClient.callTool("query_file_changes_history",{...e})}async getRuntimeFeatures(){return await this.httpClient.fetchRuntimeFeatures()}async listLaunchConfigs(){return this.ensureRegistered(),await this.httpClient.callTool("launch_config_list",{})}async createLaunchConfig(e){return this.ensureRegistered(),await this.httpClient.callTool("launch_config_create",{...e})}async updateLaunchConfig(e){return this.ensureRegistered(),await this.httpClient.callTool("launch_config_update",{...e})}async deleteLaunchConfig(e){return this.ensureRegistered(),await this.httpClient.callTool("launch_config_delete",{configId:e})}async startLaunchConfig(e){this.ensureRegistered();const t=Math.max(0,Math.min(3e5,Number(e.wait_timeout_ms)||0));return t>0?await this.httpClient.callToolOnce("launch_config_start",e,t+6e4):await this.httpClient.callTool("launch_config_start",{...e})}async restartLaunchConfig(e){this.ensureRegistered();const t=Math.max(0,Math.min(3e5,Number(e.wait_timeout_ms)||0));return t>0?await this.httpClient.callToolOnce("launch_config_restart",e,t+6e4):await this.httpClient.callTool("launch_config_restart",{...e})}async stopLaunchConfig(e){return this.ensureRegistered(),await this.httpClient.callTool("launch_config_stop",{configId:e})}async getLaunchLogs(e){return this.ensureRegistered(),await this.httpClient.callTool("launch_config_logs",{...e})}async listLaunchRuns(){return this.ensureRegistered(),await this.httpClient.callTool("launch_config_status",{})}start(e,t){if(this.isRunning){i.warn("[AgentClient] \u6D88\u606F\u5FAA\u73AF\u5DF2\u5728\u8FD0\u884C\u4E2D");return}this.isDegradedMode||this.ensureRegistered(),this.messageHandler=e,this.profileHandler=t?.profileHandler||null,this.configHandler=t?.configHandler||null,this.systemNotifyHandler=t?.systemNotifyHandler||null,this.isRunning=!0,i.info(`[AgentClient] start() \u88AB\u8C03\u7528\uFF0CcachedProfile: ${this.cachedProfile?"\u5B58\u5728":"\u4E0D\u5B58\u5728"}, profileHandler: ${this.profileHandler?"\u5DF2\u8BBE\u7F6E":"\u672A\u8BBE\u7F6E"}, \u964D\u7EA7\u6A21\u5F0F: ${this.isDegradedMode?"\u662F":"\u5426"}`),this.cachedProfile&&this.profileHandler&&(i.info(`[AgentClient] \u5904\u7406\u7F13\u5B58\u7684 Profile \u4FE1\u606F: ${this.cachedProfile.displayName}`),this.profileHandler(this.cachedProfile),this.cachedProfile=null),t?.pollMode??!1?(i.warn("[AgentClient] \u542F\u52A8\u6D88\u606F\u4E3B\u5FAA\u73AF\uFF08HTTP\u8F6E\u8BE2\u6A21\u5F0F - \u4E0D\u63A8\u8350\uFF09"),this.messageLoop()):i.info("[AgentClient] \u542F\u52A8\u6D88\u606F\u4E3B\u5FAA\u73AF\uFF08WebSocket\u63A8\u9001\u6A21\u5F0F - \u63A8\u8350\uFF09")}stop(){this.isRunning=!1,this.pollTimer&&(clearTimeout(this.pollTimer),this.pollTimer=null),this.stopRuntimeTokenRefresh(),i.info("[AgentClient] \u6D88\u606F\u4E3B\u5FAA\u73AF\u5DF2\u505C\u6B62")}async messageLoop(){for(;this.isRunning;)try{await this.delay(I)}catch(e){i.error("[AgentClient] \u6D88\u606F\u5FAA\u73AF\u9519\u8BEF:",e),await this.delay(5e3)}}handleIncomingDm(e){e.senderId!==this.agentId&&this.processMessage(e)}handleIncomingGroup(e){e.senderId!==this.agentId&&this.processMessage(e)}handleIncomingMeeting(e){!e||e.senderId===this.agentId||this.processMessage(e)}handleProfileInfo(e){i.info(`[AgentClient] \u6536\u5230 Profile \u4FE1\u606F: ${e.displayName} (${e.roleName})`),e.projectId&&(this.projectId=e.projectId,i.info(`[AgentClient] \u66F4\u65B0\u6240\u5C5E\u9879\u76EE: ${this.projectId}`)),e.roleName&&e.roleName!==this.agentConfig.roleName&&(i.info(`[AgentClient] \u540C\u6B65\u89D2\u8272\u540D: "${this.agentConfig.roleName||"(\u7A7A)"}" -> "${e.roleName}"`),this.agentConfig.roleName=e.roleName),e.roleName&&u(e.roleName,e.instanceName||this.agentId||""),this.profileHandler?this.profileHandler(e):(i.info("[AgentClient] profileHandler \u672A\u8BBE\u7F6E\uFF0C\u7F13\u5B58 Profile \u4FE1\u606F"),this.cachedProfile=e)}async processMessage(e){if(!this.messageHandler)return;const t=typeof e.msgId=="string";i.info(`[AgentClient] \u6536\u5230${t?"\u79C1\u4FE1":"\u7FA4\u6D88\u606F"}\u6765\u81EA ${e.senderName}: ${e.content.substring(0,50)}...`);try{const n=await this.messageHandler(e);if(t){const r=e;r.requireReply&&r.callId&&await this.replyToCall(r.callId,r.senderId,n||"\u5DF2\u6536\u5230\u6D88\u606F\uFF0C\u6B63\u5728\u5904\u7406\u4E2D...")}}catch(n){const r=typeof e.msgId=="string";if(i.error("[AgentClient] \u5904\u7406\u6D88\u606F\u5931\u8D25: type=%s, senderId=%s, senderName=%s, msgId=%s, error=%s",r?"\u79C1\u4FE1":"\u7FA4\u6D88\u606F",e.senderId,e.senderName,e.msgId,n instanceof Error?n.message:String(n)),r){const s=e;s.requireReply&&s.callId&&await this.replyToCall(s.callId,s.senderId,`\u5904\u7406\u5931\u8D25: ${n}`)}}}ensureRegistered(){if(!this.agentId)throw new Error("Agent is not registered")}delay(e){return new Promise(t=>{this.pollTimer=setTimeout(t,e)})}onNewCharacter(e){this.newCharacterHandler=e}getState(){return{agentId:this.agentId,displayName:this.displayName,projectId:this.projectId,isConnected:this.wsClient.isConnected(),isRunning:this.isRunning}}getAgentConfig(){return this.agentConfig}getServerConfig(){return this.serverConfig}reloadConfig(){c.loadConfig(),this.agentConfig=c.getAgentConfig(),i.info(`[AgentClient] \u914D\u7F6E\u5DF2\u91CD\u65B0\u52A0\u8F7D\uFF0C\u89D2\u8272: ${this.agentConfig.roleName}`)}enterDegradedMode(){this.isDegradedMode=!0,i.warn("[AgentClient] \u8FDB\u5165\u964D\u7EA7\u6A21\u5F0F\uFF0C\u5C06\u5728\u540E\u53F0\u6301\u7EED\u5C1D\u8BD5\u91CD\u8FDE")}exitDegradedMode(){this.isDegradedMode=!1,i.info("[AgentClient] \u9000\u51FA\u964D\u7EA7\u6A21\u5F0F")}isInDegradedMode(){return this.isDegradedMode}async retryRegistrationInBackground(e,t){let n=0;(async()=>{for(;this.isDegradedMode;)try{i.info(`[AgentClient] \u964D\u7EA7\u6A21\u5F0F\uFF1A\u5C1D\u8BD5\u91CD\u65B0\u6CE8\u518C (${n+1}/${t===-1?"\u65E0\u9650":t})`);const s=await this.register();i.info(`[AgentClient] \u964D\u7EA7\u6A21\u5F0F\uFF1A\u6CE8\u518C\u6210\u529F - ${s.displayName} (${s.agentId})`),this.exitDegradedMode(),this.messageHandler&&this.start(this.messageHandler);return}catch(s){n++;const a=s instanceof Error?s.message:String(s);if(i.warn(`[AgentClient] \u964D\u7EA7\u6A21\u5F0F\uFF1A\u6CE8\u518C\u5931\u8D25 (${n}/${t===-1?"\u65E0\u9650":t}): ${a}`),t>0&&n>=t){i.error("[AgentClient] \u964D\u7EA7\u6A21\u5F0F\uFF1A\u8FBE\u5230\u6700\u5927\u91CD\u8BD5\u6B21\u6570\uFF0C\u505C\u6B62\u91CD\u8FDE"),this.isDegradedMode=!1;return}await new Promise(h=>setTimeout(h,e))}})().catch(s=>{i.error("[AgentClient] \u964D\u7EA7\u6A21\u5F0F\u540E\u53F0\u91CD\u8BD5\u5FAA\u73AF\u5F02\u5E38\u9000\u51FA: error=%s, stack=%s",s instanceof Error?s.message:String(s),s instanceof Error?s.stack:"(no stack)")})}initializeStatusReporter(){if(!this.agentId){i.warn("[AgentClient] \u65E0\u6CD5\u521D\u59CB\u5316\u72B6\u6001\u62A5\u544A\u5668\uFF1AagentId \u4E3A\u7A7A");return}this.statusReporter=new A({agentId:this.agentId,sendStatusUpdate:e=>{this.wsClient.send({type:"AGENT_STATUS",data:e,timestamp:new Date().toISOString()})}}),w(e=>this.reportMcpNodeLog(e)),this.startRuntimeTokenRefresh(),i.info("[AgentClient] \u72B6\u6001\u62A5\u544A\u5668\u5DF2\u521D\u59CB\u5316")}startRuntimeTokenRefresh(){this.stopRuntimeTokenRefresh();const e=this.serverConfig.runtimeTokenRefreshIntervalMs;if(!e||e<=0){i.warn("[AgentClient] runtimeTokenRefreshIntervalMs \u672A\u914D\u7F6E\u6216\u65E0\u6548\uFF0C\u8DF3\u8FC7\u4E3B\u52A8\u7EED\u671F");return}const t=this.agentId;if(!t){i.warn("[AgentClient] agentId \u4E3A\u7A7A\uFF0C\u8DF3\u8FC7\u4E3B\u52A8\u7EED\u671F");return}this.runtimeTokenRefreshTimer=setInterval(async()=>{try{await this.httpClient.refreshRuntimeAccessToken(t)&&i.info("[AgentClient] runtimeAccessToken \u5DF2\u4E3B\u52A8\u7EED\u671F")}catch(n){i.warn("[AgentClient] \u4E3B\u52A8\u7EED\u671F runtimeAccessToken \u5931\u8D25: %s",n instanceof Error?n.message:String(n)),n instanceof Error&&n.stack&&i.warn("[AgentClient] \u4E3B\u52A8\u7EED\u671F\u5F02\u5E38\u5806\u6808:",n.stack)}},e),this.runtimeTokenRefreshTimer.unref?.(),i.info(`[AgentClient] runtime token \u4E3B\u52A8\u7EED\u671F\u5DF2\u542F\u52A8\uFF0C\u95F4\u9694 ${e}ms`)}stopRuntimeTokenRefresh(){this.runtimeTokenRefreshTimer&&(clearInterval(this.runtimeTokenRefreshTimer),this.runtimeTokenRefreshTimer=null)}reportMcpNodeLog(e){const t=this.wsClient;!this.agentId||!this.wsClient.isConnected()||typeof t.sendMcpNodeLog!="function"||t.sendMcpNodeLog(e)}getStatusReporter(){return this.statusReporter}}export{N as AgentClient,T as PollLongPollTimeoutError};
2
2
 
@@ -144,5 +144,7 @@ export declare const LIST_EMAILS_TOOL: Tool;
144
144
  export declare const READ_EMAIL_TOOL: Tool;
145
145
 
146
146
  export declare const REPLY_EMAIL_TOOL: Tool;
147
+
148
+ export declare const ACK_EMAIL_TOOL: Tool;
147
149
  export declare const EMAIL_TOOL_NAMES: ReadonlySet<string>;
148
150
  export declare const MCP_TOOLS: Tool[];
@@ -1,11 +1,11 @@
1
- import{CREATE_MEMORY_TOOL as i,DELETE_MEMORY_TOOL as r,GET_MEMORY_STATS_TOOL as n,LIST_MEMORIES_TOOL as o,READ_MEMORY_TOOL as p,SEARCH_MEMORY_TOOL as s,UPDATE_MEMORY_TOOL as d,LIST_MEMORIES_BY_FILE_TOOL as a,ABANDON_MEMORY_UPDATE_TOOL as c,MEMORY_RECURRENCE_TOOL as l,MEMORY_RECURRENCE_COMPLETE_TOOL as m}from"./memory-tools.js";import{CREATE_MEMORY_TOOL as ot,DELETE_MEMORY_TOOL as pt,GET_MEMORY_STATS_TOOL as st,LIST_MEMORIES_TOOL as dt,READ_MEMORY_TOOL as at,SEARCH_MEMORY_TOOL as ct,UPDATE_MEMORY_TOOL as lt,LIST_MEMORIES_BY_FILE_TOOL as mt,ABANDON_MEMORY_UPDATE_TOOL as _t,MEMORY_RECURRENCE_TOOL as ut,MEMORY_RECURRENCE_COMPLETE_TOOL as gt}from"./memory-tools.js";const _={name:"get_colleague",description:"\u83B7\u53D6\u5F53\u524D Agent \u53EF\u89C1\u7684\u540C\u4E8B Agent \u5217\u8868\uFF0C\u5305\u542B\u5728\u7EBF\u548C\u79BB\u7EBF\u72B6\u6001\u3002\u6BCF\u4E2A\u540C\u4E8B\u8FD4\u56DE id\u3001\u663E\u793A\u540D\u79F0\uFF08displayName\uFF09\u3001\u89D2\u8272ID\uFF08roleId\uFF09\u3001\u89D2\u8272\u540D\u79F0\uFF08roleName\uFF09\u3001\u9879\u76EEID\u3001\u89D2\u8272\u63CF\u8FF0\uFF08description\uFF09\u3001\u6240\u5C5E bridge \u5B9E\u4F8B\uFF08bridgeId/bridgeName\uFF09\u3001\u4E0A\u7EBF\u65F6\u95F4\uFF08onlineSince\uFF09\uFF1B\u4E0D\u8FD4\u56DE\u5BF9\u65B9\u7684 prompt\u3002\u914D\u5408 query_file_changes_history \u53EF\u6309\u540C\u4E8B\u7684 roleId/agentId \u8FC7\u6EE4\u67E5\u8BE2\u5176\u6587\u4EF6\u53D8\u66F4\u5386\u53F2\u3002",inputSchema:{type:"object",properties:{},required:[]}},u={name:"get_group_rooms",description:"\u83B7\u53D6\u5F53\u524D Agent \u5728\u5173\u7CFB\u56FE\u4E2D\u53EF\u53D1\u73B0\u7684\u7FA4\u7EC4\u5217\u8868\uFF0C\u5305\u542B\u9879\u76EE\u516C\u5171\u7FA4\u804A\uFF08roomType=project\uFF09\u4EE5\u53CA\u81EA\u5DF1\u6240\u5728\u7684\u5C0F\u7EC4\u7FA4\uFF08roomType=inner_group\uFF09\u3002\u53D1\u9001\u7FA4\u6D88\u606F\u524D\u5E94\u5148\u8C03\u7528\u672C\u5DE5\u5177\u786E\u8BA4\u76EE\u6807\uFF1A\u4F18\u5148\u9009\u62E9\u8986\u76D6\u76EE\u6807\u53D7\u4F17\u7684\u6700\u5C0F\u7FA4\u7EC4\u2014\u2014\u6D88\u606F\u53EA\u6D89\u53CA\u67D0\u4E2A\u5C0F\u7EC4\u65F6\uFF0C\u5C31\u53D1\u8BE5\u5C0F\u7EC4\u7FA4\uFF08inner_group\uFF09\u7684\u623F\u95F4 id\uFF0C\u4E0D\u8981\u53D1\u5230\u9879\u76EE\u516C\u5171\u7FA4\u804A\uFF1B\u53EA\u6709\u9700\u8981\u901A\u77E5\u5168\u9879\u76EE\u65F6\u624D\u9009\u516C\u5171\u7FA4\u804A\u3002",inputSchema:{type:"object",properties:{},required:[]}},g={name:"list_project_members",description:"\u83B7\u53D6\u5F53\u524D Agent \u6240\u5C5E\u9879\u76EE\u7684\u5168\u90E8\u4EBA\u7C7B\u6210\u5458\u540D\u5355\uFF08\u771F\u4EBA\u7528\u6237\uFF09\uFF0C\u5305\u542B\u5F53\u524D\u79BB\u7EBF\u7684\u6210\u5458\u3002\u6BCF\u4E2A\u6210\u5458\u8FD4\u56DE userId\u3001\u6635\u79F0\uFF08nickname\uFF09\u3001\u9879\u76EE\u89D2\u8272\uFF08projectRole\uFF1AOWNER/ADMIN/MEMBER/GUEST\uFF09\u3001\u662F\u5426\u4E3A\u9879\u76EE\u521B\u5EFA\u8005\uFF08isOwner\uFF09\u4EE5\u53CA\u5F53\u524D\u662F\u5426\u5728\u7EBF\uFF08online\uFF09\u3002\u6210\u5458\u79BB\u7EBF\u65F6\u4F9D\u7136\u4F1A\u51FA\u73B0\u5728\u540D\u5355\u91CC\uFF0C\u53EA\u662F online \u4E3A false\u3002\u7528\u4E8E\u4E86\u89E3\u672C\u9879\u76EE\u6709\u54EA\u4E9B\u4EBA\u7C7B\u3001\u8BE5\u628A\u7ED3\u679C\u6C47\u62A5\u7ED9\u8C01\u3002\u8FD4\u56DE\u503C\u4E2D\u7684 userId \u53EF\u76F4\u63A5\u7528\u4E8E send_private \u5411\u8BE5\u4EBA\u7C7B\u53D1\u79C1\u4FE1\u3002",inputSchema:{type:"object",properties:{},required:[]}},y={name:"get_profile",description:`\u83B7\u53D6\u5F53\u524D Agent \u7684\u4E2A\u4EBA\u4FE1\u606F\uFF0C\u5305\u62EC ID\u3001\u89D2\u8272 ID/\u540D\u79F0\u3001\u663E\u793A\u540D\u79F0\u3001\u63D0\u793A\u8BCD\u3001\u6240\u5C5E bridge \u5B9E\u4F8B\uFF08bridgeId/bridgeName\uFF09\u7B49\u3002
1
+ import{CREATE_MEMORY_TOOL as i,DELETE_MEMORY_TOOL as r,GET_MEMORY_STATS_TOOL as n,LIST_MEMORIES_TOOL as o,READ_MEMORY_TOOL as p,SEARCH_MEMORY_TOOL as s,UPDATE_MEMORY_TOOL as d,LIST_MEMORIES_BY_FILE_TOOL as a,ABANDON_MEMORY_UPDATE_TOOL as c,MEMORY_RECURRENCE_TOOL as l,MEMORY_RECURRENCE_COMPLETE_TOOL as m}from"./memory-tools.js";import{CREATE_MEMORY_TOOL as pt,DELETE_MEMORY_TOOL as st,GET_MEMORY_STATS_TOOL as dt,LIST_MEMORIES_TOOL as at,READ_MEMORY_TOOL as ct,SEARCH_MEMORY_TOOL as lt,UPDATE_MEMORY_TOOL as mt,LIST_MEMORIES_BY_FILE_TOOL as _t,ABANDON_MEMORY_UPDATE_TOOL as ut,MEMORY_RECURRENCE_TOOL as gt,MEMORY_RECURRENCE_COMPLETE_TOOL as yt}from"./memory-tools.js";const _={name:"get_colleague",description:"\u83B7\u53D6\u5F53\u524D Agent \u53EF\u89C1\u7684\u540C\u4E8B Agent \u5217\u8868\uFF0C\u5305\u542B\u5728\u7EBF\u548C\u79BB\u7EBF\u72B6\u6001\u3002\u6BCF\u4E2A\u540C\u4E8B\u8FD4\u56DE id\u3001\u663E\u793A\u540D\u79F0\uFF08displayName\uFF09\u3001\u89D2\u8272ID\uFF08roleId\uFF09\u3001\u89D2\u8272\u540D\u79F0\uFF08roleName\uFF09\u3001\u9879\u76EEID\u3001\u89D2\u8272\u63CF\u8FF0\uFF08description\uFF09\u3001\u6240\u5C5E bridge \u5B9E\u4F8B\uFF08bridgeId/bridgeName\uFF09\u3001\u4E0A\u7EBF\u65F6\u95F4\uFF08onlineSince\uFF09\uFF1B\u4E0D\u8FD4\u56DE\u5BF9\u65B9\u7684 prompt\u3002\u914D\u5408 query_file_changes_history \u53EF\u6309\u540C\u4E8B\u7684 roleId/agentId \u8FC7\u6EE4\u67E5\u8BE2\u5176\u6587\u4EF6\u53D8\u66F4\u5386\u53F2\u3002",inputSchema:{type:"object",properties:{},required:[]}},u={name:"get_group_rooms",description:"\u83B7\u53D6\u5F53\u524D Agent \u5728\u5173\u7CFB\u56FE\u4E2D\u53EF\u53D1\u73B0\u7684\u7FA4\u7EC4\u5217\u8868\uFF0C\u5305\u542B\u9879\u76EE\u516C\u5171\u7FA4\u804A\uFF08roomType=project\uFF09\u4EE5\u53CA\u81EA\u5DF1\u6240\u5728\u7684\u5C0F\u7EC4\u7FA4\uFF08roomType=inner_group\uFF09\u3002\u53D1\u9001\u7FA4\u6D88\u606F\u524D\u5E94\u5148\u8C03\u7528\u672C\u5DE5\u5177\u786E\u8BA4\u76EE\u6807\uFF1A\u4F18\u5148\u9009\u62E9\u8986\u76D6\u76EE\u6807\u53D7\u4F17\u7684\u6700\u5C0F\u7FA4\u7EC4\u2014\u2014\u6D88\u606F\u53EA\u6D89\u53CA\u67D0\u4E2A\u5C0F\u7EC4\u65F6\uFF0C\u5C31\u53D1\u8BE5\u5C0F\u7EC4\u7FA4\uFF08inner_group\uFF09\u7684\u623F\u95F4 id\uFF0C\u4E0D\u8981\u53D1\u5230\u9879\u76EE\u516C\u5171\u7FA4\u804A\uFF1B\u53EA\u6709\u9700\u8981\u901A\u77E5\u5168\u9879\u76EE\u65F6\u624D\u9009\u516C\u5171\u7FA4\u804A\u3002",inputSchema:{type:"object",properties:{},required:[]}},g={name:"list_project_members",description:"\u83B7\u53D6\u5F53\u524D Agent \u6240\u5C5E\u9879\u76EE\u7684\u5168\u90E8\u4EBA\u7C7B\u6210\u5458\u540D\u5355\uFF08\u771F\u4EBA\u7528\u6237\uFF09\uFF0C\u5305\u542B\u5F53\u524D\u79BB\u7EBF\u7684\u6210\u5458\u3002\u6BCF\u4E2A\u6210\u5458\u8FD4\u56DE userId\u3001\u6635\u79F0\uFF08nickname\uFF09\u3001\u9879\u76EE\u89D2\u8272\uFF08projectRole\uFF1AOWNER/ADMIN/MEMBER/GUEST\uFF09\u3001\u662F\u5426\u4E3A\u9879\u76EE\u521B\u5EFA\u8005\uFF08isOwner\uFF09\u3001\u5F53\u524D\u662F\u5426\u5728\u7EBF\uFF08online\uFF09\uFF0C\u4EE5\u53CA\u7CFB\u7EDF\u5185\u4EBA\u7C7B\u57DF\u540D\u90AE\u7BB1 mailboxAddress\uFF08\u4EC5\u5728\u8BE5\u6210\u5458\u90AE\u7BB1\u5DF2\u5F00\u6237\u65F6\u8FD4\u56DE\uFF0C\u53EF\u76F4\u63A5\u7528\u4E8E send_email\uFF09\u3002\u6210\u5458\u79BB\u7EBF\u65F6\u4F9D\u7136\u4F1A\u51FA\u73B0\u5728\u540D\u5355\u91CC\uFF0C\u53EA\u662F online \u4E3A false\u3002\u7528\u4E8E\u4E86\u89E3\u672C\u9879\u76EE\u6709\u54EA\u4E9B\u4EBA\u7C7B\u3001\u8BE5\u628A\u7ED3\u679C\u6C47\u62A5\u7ED9\u8C01\u3002\u8FD4\u56DE\u503C\u4E2D\u7684 userId \u53EF\u76F4\u63A5\u7528\u4E8E send_private \u5411\u8BE5\u4EBA\u7C7B\u53D1\u79C1\u4FE1\u3002",inputSchema:{type:"object",properties:{},required:[]}},y={name:"get_profile",description:`\u83B7\u53D6\u5F53\u524D Agent \u7684\u4E2A\u4EBA\u4FE1\u606F\uFF0C\u5305\u62EC ID\u3001\u89D2\u8272 ID/\u540D\u79F0\u3001\u663E\u793A\u540D\u79F0\u3001\u63D0\u793A\u8BCD\u3001\u6240\u5C5E bridge \u5B9E\u4F8B\uFF08bridgeId/bridgeName\uFF09\u7B49\u3002
2
2
 
3
3
  \u3010\u7CFB\u7EDF\u63D0\u793A\u8BCD\u5206\u5C42\u7ED3\u6784\u3011
4
4
  \u8FD4\u56DE\u7684 prompt \u5B57\u6BB5\u662F\u89D2\u8272/\u5B9E\u4F8B\u63D0\u793A\u8BCD\uFF08System 2\uFF09\uFF0CglobalAgentPrompt \u662F\u5168\u5C40\u7CFB\u7EDF\u63D0\u793A\u8BCD\uFF08System 1\uFF09\u3002
5
5
  \u4E09\u5C42\u63D0\u793A\u8BCD\uFF08\u5168\u5C40\u2192\u89D2\u8272\u2192\u8BB0\u5FC6\uFF09\u7531 runtime adapter \u5728\u4F1A\u8BDD\u521B\u5EFA\u65F6\u6CE8\u5165\uFF0C
6
6
  ACode \u76F4\u63A5\u6CE8\u5165\u4E3A\u524D\u4E09\u6761 system role \u6D88\u606F\uFF0COpenCode/Claude \u5408\u5E76\u4E3A\u4E00\u6761 system prompt\u3002
7
7
  MCP \u5DE5\u5177\uFF08poll_message/get_message\uFF09\u4E0D\u518D\u8FD4\u56DE systemMessages\u3002`,inputSchema:{type:"object",properties:{},required:[]}},f={name:"hire_colleague",description:"\u5411\u4EBA\u4E8B\u90E8\u53D1\u8D77\u62DB\u8058\u540C\u4E8B\u8BF7\u6C42\uFF0C\u6309\u521B\u5EFA\u89D2\u8272\u5B9E\u4F8B\u6240\u9700\u53C2\u6570\u521B\u5EFA\u65B0\u7684 Agent \u540C\u4E8B\u3002\u652F\u6301\u5355\u4E2A\u62DB\u8058\uFF08\u9876\u5C42\u76F4\u63A5\u4F20\u521B\u5EFA\u53C2\u6570\uFF09\u4E0E\u6279\u91CF\u62DB\u8058\uFF08\u4F20 items \u6570\u7EC4\uFF0C\u4E00\u6B21\u63D0\u4EA4\u591A\u4E2A\u5F85\u5BA1\u6279\u62DB\u8058\u9879\uFF0C\u7531\u5BA1\u6279\u4EBA\u9010\u9879\u6279\u51C6\u6216\u62D2\u7EDD\u540E\u7EDF\u4E00\u8FD4\u56DE\u7ED3\u679C\uFF09\u3002",inputSchema:{type:"object",properties:{projectId:{type:"string",description:"\u9879\u76EE ID\uFF0C\u4E0D\u4F20\u65F6\u7531\u670D\u52A1\u7AEF\u6309\u9ED8\u8BA4\u903B\u8F91\u5904\u7406\u3002"},roleName:{type:"string",description:"\u89D2\u8272\u540D\u3002\u4E0E newRoleName \u4E8C\u9009\u4E00\uFF0C\u4F18\u5148\u6309\u670D\u52A1\u7AEF\u73B0\u6709\u521B\u5EFA\u89C4\u5219\u5904\u7406\u3002"},newRoleName:{type:"string",description:"\u65B0\u89D2\u8272\u540D\u3002\u7528\u4E8E\u9700\u8981\u663E\u5F0F\u521B\u5EFA\u65B0\u89D2\u8272\u5B9E\u4F8B\u65F6\u4F20\u5165\u3002"},displayName:{type:"string",description:"\u65B0\u540C\u4E8B\u663E\u793A\u540D\u3002"},description:{type:"string",description:"\u65B0\u540C\u4E8B\u89D2\u8272\u63CF\u8FF0\uFF08\u7B80\u77ED\uFF0C\u7528\u4E8E\u89D2\u8272\u5217\u8868\u4E0E\u5BA1\u6279\u5361\u7247\u5C55\u793A\uFF09\u3002"},prompt:{type:"string",description:"\u65B0\u540C\u4E8B\u804C\u8D23\u8BF4\u660E\u6216\u7CFB\u7EDF\u63D0\u793A\u8BCD\u3002"},workspacePath:{type:"string",description:"\u65B0\u540C\u4E8B\u5DE5\u4F5C\u76EE\u5F55\u3002"},myYmlPath:{type:"string",description:"my.yml \u8DEF\u5F84\uFF0C\u53EF\u9009\u3002"},myYmlContent:{type:"string",description:"my.yml \u5185\u5BB9\uFF0C\u53EF\u9009\u3002"},runtimeSkillEnabled:{type:"boolean",description:"\u662F\u5426\u542F\u7528 skill\u3002"},runtimeMcpEnabled:{type:"boolean",description:"\u662F\u5426\u542F\u7528 MCP\u3002"},runtimeCcSwitchEnabledTools:{type:"string",description:"\u521D\u59CB\u5316\u542F\u7528\u7684\u5DE5\u5177\u5217\u8868 JSON \u5B57\u7B26\u4E32\u3002"},items:{type:"array",description:"\u5F85\u6279\u91CF\u62DB\u8058\u7684\u540C\u4E8B\u5217\u8868\uFF08\u53EF\u9009\uFF09\u3002\u4E0D\u4F20\u65F6\u4E3A\u5355\u4E2A\u62DB\u8058\uFF08\u4F7F\u7528\u9876\u5C42\u53C2\u6570\uFF09\uFF1B\u4F20\u6B64\u6570\u7EC4\u65F6\u4E3A\u6279\u91CF\u62DB\u8058\uFF0C\u6BCF\u4E00\u9879\u5BF9\u5E94\u4E00\u4E2A\u5F85\u5BA1\u6279\u7684\u62DB\u8058\u8BF7\u6C42\uFF0C\u9876\u5C42\u5176\u4F59\u521B\u5EFA\u53C2\u6570\u5C06\u88AB\u5FFD\u7565\u3002",items:{type:"object",properties:{roleName:{type:"string",description:"\u89D2\u8272\u540D\u3002\u4E0E newRoleName \u4E8C\u9009\u4E00\uFF0C\u4F18\u5148\u6309\u670D\u52A1\u7AEF\u73B0\u6709\u521B\u5EFA\u89C4\u5219\u5904\u7406\u3002"},newRoleName:{type:"string",description:"\u65B0\u89D2\u8272\u540D\u3002\u7528\u4E8E\u9700\u8981\u663E\u5F0F\u521B\u5EFA\u65B0\u89D2\u8272\u5B9E\u4F8B\u65F6\u4F20\u5165\u3002"},displayName:{type:"string",description:"\u65B0\u540C\u4E8B\u663E\u793A\u540D\u3002"},description:{type:"string",description:"\u65B0\u540C\u4E8B\u89D2\u8272\u63CF\u8FF0\uFF08\u7B80\u77ED\uFF0C\u7528\u4E8E\u89D2\u8272\u5217\u8868\u4E0E\u5BA1\u6279\u5361\u7247\u5C55\u793A\uFF09\u3002"},prompt:{type:"string",description:"\u65B0\u540C\u4E8B\u804C\u8D23\u8BF4\u660E\u6216\u7CFB\u7EDF\u63D0\u793A\u8BCD\u3002"},workspacePath:{type:"string",description:"\u65B0\u540C\u4E8B\u5DE5\u4F5C\u76EE\u5F55\u3002"},myYmlPath:{type:"string",description:"my.yml \u8DEF\u5F84\uFF0C\u53EF\u9009\u3002"},myYmlContent:{type:"string",description:"my.yml \u5185\u5BB9\uFF0C\u53EF\u9009\u3002"},runtimeSkillEnabled:{type:"boolean",description:"\u662F\u5426\u542F\u7528 skill\u3002"},runtimeMcpEnabled:{type:"boolean",description:"\u662F\u5426\u542F\u7528 MCP\u3002"},runtimeCcSwitchEnabledTools:{type:"string",description:"\u521D\u59CB\u5316\u542F\u7528\u7684\u5DE5\u5177\u5217\u8868 JSON \u5B57\u7B26\u4E32\u3002"}},required:["workspacePath"]},minItems:1}}}},t={type:"array",items:{type:"object",properties:{messageId:{type:"string",description:"\u88AB\u5F15\u7528\u6D88\u606F\u7684\u7A33\u5B9A ID\uFF08\u6765\u81EA\u6D88\u606F\u7684 msgId\uFF1B\u79C1\u4FE1\u4E3A\u5B57\u7B26\u4E32 id\uFF0C\u7FA4\u6D88\u606F\u4E3A\u6570\u5B57 id \u7684\u5B57\u7B26\u4E32\u5F62\u5F0F\uFF09"},senderId:{type:"string",description:"\u88AB\u5F15\u7528\u6D88\u606F\u7684\u53D1\u9001\u8005 ID\uFF08senderId\uFF09"},senderName:{type:"string",description:"\u88AB\u5F15\u7528\u6D88\u606F\u7684\u53D1\u9001\u8005\u663E\u793A\u540D\uFF08\u7528\u4E8E\u6765\u6E90\u8FA8\u8BC6\u4E0E\u5F15\u7528\u5361\u7247\u5C55\u793A\uFF09"},snapshot:{type:"string",description:"\u88AB\u5F15\u7528\u7684\u539F\u6587\u5FEB\u7167\uFF08\u53EF\u9009\uFF0C\u5EFA\u8BAE \u2264200 \u5B57\u7B26\uFF0C\u670D\u52A1\u7AEF\u4F1A\u622A\u65AD\uFF09\u3002\u5F15\u7528\u7247\u6BB5\u65F6\u5FC5\u987B\u9010\u5B57\u6458\u5F55\u88AB\u5F15\u7528\u6D88\u606F\u4E2D\u7684\u8BE5\u7247\u6BB5\u2014\u2014\u7981\u6B62\u6539\u5199\u6216\u8F6C\u8FF0\uFF0C\u524D\u7AEF\u6309\u9010\u5B57\u5339\u914D\u5728\u539F\u6D88\u606F\u91CC\u5B9A\u4F4D\u5E76\u9AD8\u4EAE\u8FD9\u6BB5\u6587\u5B57\uFF1B\u5F15\u7528\u6574\u6761\u6D88\u606F\u65F6\u586B\u539F\u6587\u5F00\u5934\u6458\u8981\u3002\u539F\u6D88\u606F\u88AB\u64A4\u56DE\u6216\u65E0\u6743\u8BFB\u53D6\u65F6\u7528\u4E8E\u964D\u7EA7\u5C55\u793A\uFF0C\u4E0D\u4F2A\u9020\u5185\u5BB9\u3002"},prefix:{type:"string",description:"\u53EF\u9009\uFF08\u226416 \u5B57\u7B26\uFF0C\u9010\u5B57\u6458\u5F55\uFF09\uFF1A\u547D\u4E2D\u7247\u6BB5\u7D27\u90BB\u7684\u524D\u6587\u3002\u8BE5\u7247\u6BB5\u5728\u539F\u6D88\u606F\u4E2D\u591A\u6B21\u51FA\u73B0\u65F6\uFF08\u5982\u4E24\u4E2A\u300C\u4F60\u597D\u300D\uFF09\uFF0C\u7528\u4E8E\u7CBE\u786E\u5B9A\u4F4D\u4F60\u5F15\u7528\u7684\u662F\u54EA\u4E00\u6B21\uFF1B\u7701\u7565\u5219\u805A\u7126\u9996\u6B21\u51FA\u73B0\u3002"},suffix:{type:"string",description:"\u53EF\u9009\uFF08\u226416 \u5B57\u7B26\uFF0C\u9010\u5B57\u6458\u5F55\uFF09\uFF1A\u547D\u4E2D\u7247\u6BB5\u7D27\u90BB\u7684\u540E\u6587\uFF0C\u4E0E prefix \u914D\u5408\u5B9A\u4F4D\uFF08\u7247\u6BB5\u4F4D\u4E8E\u6D88\u606F\u5F00\u5934\u6CA1\u6709\u524D\u6587\u65F6\u9760 suffix \u6D88\u6B67\u4E49\uFF09\uFF1B\u7701\u7565\u5219\u805A\u7126\u9996\u6B21\u51FA\u73B0\u3002"},pos:{type:"number",description:"\u53EF\u9009\uFF08\u975E\u8D1F\u6574\u6570\uFF09\uFF1A\u5F15\u7528\u5361\u7247\u5728\u672C\u6D88\u606F\u6B63\u6587\u4E2D\u7684\u5B57\u7B26\u4F4D\u7F6E\uFF08\u4ECE 0 \u8BA1\uFF0C\u76F8\u5BF9\u7EAF\u6587\u672C\u6B63\u6587\uFF09\u3002\u5BF9\u65B9\u524D\u7AEF\u4F1A\u628A\u5F15\u7528\u5361\u5185\u8054\u63D2\u5165\u5230\u6B63\u6587\u8BE5\u4F4D\u7F6E\uFF08\u8FD8\u539F\u300Cxxx \u2192 \u5F15\u7528\u5361 \u2192 yyy\u300D\u7684\u6392\u5E03\uFF09\uFF1B\u7701\u7565\u6216\u975E\u6CD5\u65F6\u5F15\u7528\u5361\u663E\u793A\u5728\u6D88\u606F\u9876\u90E8\u3002"}},required:["messageId"]},description:"\u7ED3\u6784\u5316\u5F15\u7528\uFF08\u53EF\u9009\uFF09\uFF1A\u672C\u6D88\u606F\u5F15\u7528\u4E86\u54EA\u4E9B\u5386\u53F2\u6D88\u606F\uFF0C\u6574\u6761\u6216\u7247\u6BB5\u5747\u53EF\uFF08\u7247\u6BB5\u793A\u4F8B\uFF1A\u5F15\u7528\u300C\u4F60\u662F\u5C0F\u5E84\u5417\uFF1F\u300D\u4E2D\u7684\u201C\u5C0F\u5E84\u201D\u5E76\u8FFD\u95EE\u5176\u6307\u4EE3\uFF09\u3002\u7528\u4E8E\u8DE8 Agent \u8BA8\u8BBA\u3001\u4EFB\u52A1\u4EA4\u63A5\u3001\u4EE3\u7801\u5BA1\u67E5\u7B49\u573A\u666F\u2014\u2014\u5F15\u7528\u8868\u793A\u8BA8\u8BBA\u5173\u8054\uFF0C\u4E0D\u4EE3\u8868\u5FC5\u987B\u6267\u884C\u88AB\u5F15\u7528\u6D88\u606F\u4E2D\u7684\u6307\u4EE4\uFF1B\u4E0D\u8981\u628A\u5F15\u7528\u4E0E\u8C03\u7528\u5F0F\u56DE\u590D\uFF08replyToCallId\uFF09\u6DF7\u7528\u3002\u5BF9\u65B9\u70B9\u51FB\u5F15\u7528\u5361\u7247\u53EF\u8DF3\u8F6C\u5E76\u805A\u7126\u539F\u6D88\u606F\u6216\u5F15\u7528\u7247\u6BB5\u3002"},h={name:"send_group",description:"\u5411\u7FA4\u804A\u53D1\u9001\u6D88\u606F\uFF0C\u6240\u6709\u5728\u7EBF\u53C2\u4E0E\u8005\u90FD\u80FD\u6536\u5230\u3002\u9ED8\u8BA4\u53D1\u5230\u9879\u76EE\u516C\u5171\u7FA4\u804A\uFF08\u5168\u9879\u76EE\u53EF\u89C1\uFF09\uFF0C\u56E0\u6B64\u52A1\u5FC5\u5148\u9009\u597D\u76EE\u6807\u7FA4\uFF1A\u5148\u7528 get_group_rooms \u67E5\u770B\u53EF\u53D1\u73B0\u7684\u7FA4\u7EC4\uFF0C\u4F18\u5148\u9009\u62E9\u80FD\u8986\u76D6\u76EE\u6807\u53D7\u4F17\u7684\u6700\u5C0F\u7FA4\u7EC4\u2014\u2014\u53EA\u6D89\u53CA\u67D0\u4E2A\u5C0F\u7EC4/\u56E2\u961F\u65F6\uFF0C\u5FC5\u987B\u4F20\u8BE5\u5C0F\u7EC4\u7FA4\u7684 roomId\uFF08roomType=inner_group\uFF09\u53D1\u5230\u5C0F\u7EC4\u7FA4\uFF0C\u4E0D\u8981\u9ED8\u8BA4\u53D1\u5230\u9879\u76EE\u516C\u5171\u7FA4\uFF1B\u53EA\u6709\u786E\u5B9E\u8981\u901A\u77E5\u5168\u9879\u76EE\u65F6\u624D\u53D1\u516C\u5171\u7FA4\u804A\uFF08\u4E0D\u4F20 roomId\uFF09\u3002\u56DE\u590D\u7FA4\u6D88\u606F\u65F6\u5EFA\u8BAE\u4F20\u5165\u6D88\u606F\u4E2D\u7684 projectId \u4E0E roomId\uFF0C\u786E\u4FDD\u56DE\u590D\u5230\u6B63\u786E\u7684\u7FA4\u804A\u3002\u652F\u6301\u53D1\u9001 pencil/draw/office \u5361\u7247\uFF08pencil/draw \u6587\u6863\u5176\u4ED6 Agent \u62FF\u5230 docId \u5373\u53EF\u8BFB\u53D6\uFF1Boffice \u6587\u4EF6\u5361\u7247\u7528 card.filePath\uFF08\u5DE5\u4F5C\u533A\u6587\u6863\uFF09\u6216 card.docId\uFF08\u4E91\u6587\u6863\uFF09\u6307\u5B9A\u6587\u4EF6\uFF0C\u53D1\u9001\u524D\u4F1A\u6821\u9A8C\u6587\u4EF6\u5B58\u5728/\u4E91\u6587\u6863\u6709\u6548\uFF09\u3002",inputSchema:{type:"object",properties:{content:{type:"string",description:"\u6D88\u606F\u5185\u5BB9\u3002\u7EAF\u53D1\u9001\u6587\u4EF6\u65F6\u4F20\u7A7A\u5B57\u7B26\u4E32\uFF08content \u4E0E attachments \u81F3\u5C11\u5176\u4E00\u975E\u7A7A\uFF09"},projectId:{type:"string",description:"\u76EE\u6807\u9879\u76EE ID\uFF08\u53EF\u9009\uFF09\u3002\u4E0D\u4F20\u5219\u4F7F\u7528 Agent \u6240\u5C5E\u9879\u76EE\uFF08\u7531\u670D\u52A1\u7AEF\u51B3\u5B9A\uFF09\u3002\u56DE\u590D\u7FA4\u6D88\u606F\u65F6\u5E94\u4F20\u5165\u6D88\u606F\u4E2D\u7684 projectId\uFF0C\u786E\u4FDD\u56DE\u590D\u5230\u6B63\u786E\u7684\u9879\u76EE\u7FA4\u804A\u3002"},roomId:{type:"string",description:"\u76EE\u6807\u7FA4\u804A\u623F\u95F4 ID\uFF08\u53EF\u9009\uFF09\u3002\u4E0D\u4F20\u5219\u53D1\u5230\u9879\u76EE\u516C\u5171\u7FA4\u804A\uFF08\u5168\u9879\u76EE\u53EF\u89C1\uFF09\u3002\u9009\u62E9\u6700\u5C0F\u7FA4\u7EC4\uFF1A\u6D88\u606F\u53EA\u6D89\u53CA\u67D0\u4E2A\u5C0F\u7EC4/\u56E2\u961F\u65F6\uFF0C\u5FC5\u987B\u4F20\u8BE5\u5C0F\u7EC4\u7FA4\u7684 roomId\uFF08\u6765\u81EA get_group_rooms \u7684 inner_group \u7FA4\u7EC4\u6216\u7FA4\u6D88\u606F\u4E2D\u7684 roomId\uFF09\uFF0C\u907F\u514D\u628A\u5C0F\u7EC4\u6D88\u606F\u8BEF\u53D1\u5230\u9879\u76EE\u516C\u5171\u7FA4\uFF1B\u53EA\u6709\u9700\u8981\u901A\u77E5\u5168\u9879\u76EE\u65F6\u624D\u7701\u7565 roomId\u3002\u56DE\u590D\u7FA4\u6D88\u606F\u65F6\u5E94\u4F20\u5165\u8BE5\u6D88\u606F\u7684 roomId\u3002"},attachments:{type:"array",items:{type:"string"},description:"\u968F\u6D88\u606F\u53D1\u9001\u7684\u6587\u4EF6\u8DEF\u5F84\u5217\u8868\uFF08\u53EF\u9009\uFF09\u3002\u652F\u6301\u5DE5\u4F5C\u533A\u5185\u76F8\u5BF9\u8DEF\u5F84\uFF08\u5982 report.xlsx\u3001docs/\u62A5\u544A.pdf\uFF09\u6216\u672C\u673A\u7EDD\u5BF9\u8DEF\u5F84\uFF08\u53EF\u4E3A\u5DE5\u4F5C\u533A\u5916\u6587\u4EF6\uFF0C\u5982 D:/tmp/data.zip\uFF09\uFF0C\u6587\u4EF6\u5C06\u88AB\u4E0A\u4F20\u5E76\u4EE5\u6587\u4EF6\u94FE\u63A5\u5F62\u5F0F\u9644\u5728\u6D88\u606F\u4E2D\uFF0C\u63A5\u6536\u65B9\u53EF\u901A\u8FC7\u94FE\u63A5\u4E0B\u8F7D\u3002\u5355\u4E2A\u6587\u4EF6\u9ED8\u8BA4\u4E0D\u8D85\u8FC7 200MB\uFF08\u53D7\u670D\u52A1\u7AEF AWS_FILE_MAX_SIZE_BYTES \u7EA6\u675F\uFF09\u3002"},card:{type:"object",description:'\u5361\u7247\uFF1A\u6587\u6863/\u6587\u4EF6\u5F15\u7528\uFF08\u53EF\u9009\uFF09\u3002pencil/draw \u4F20 {type, docId}\uFF0C\u53D1\u9001\u540E\u5176\u4ED6 Agent \u62FF\u5230 docId \u5373\u53EF\u7528 pencil_get_tree/draw_get_diagram \u8BFB\u53D6\uFF0C\u65E0\u9700\u9080\u8BF7\uFF1Boffice \u4F20 {type:"office", filePath} \u6216 {type:"office", docId}\uFF08\u4E8C\u9009\u4E00\uFF0C\u4E0D\u53EF\u540C\u65F6\u4F20\uFF09\uFF0C\u628A Office \u6587\u6863\uFF08docx/xlsx/pptx\uFF09\u4F5C\u4E3A\u53EF\u4E0B\u8F7D+\u53EF\u5728\u7EBF\u9884\u89C8\u7684\u6587\u4EF6\u5361\u7247\u53D1\u9001\u3002filePath \u4E3A\u5DE5\u4F5C\u533A\u6587\u6863\u8DEF\u5F84\uFF08\u53D1\u9001\u524D\u6821\u9A8C\u6587\u4EF6\u5B58\u5728\u5E76\u4E0A\u4F20\uFF0C\u4E0D\u5B58\u5728\u5219\u53D1\u9001\u5931\u8D25\uFF09\uFF1BdocId \u4E3A\u4E91\u6587\u6863 id\uFF08\u53D1\u9001\u65F6\u670D\u52A1\u7AEF\u6821\u9A8C\u6709\u6548\u6027\uFF0C\u63A5\u6536\u65B9\u53EF\u76F4\u63A5\u5728 Office \u9762\u677F\u6253\u5F00\uFF09\uFF1B\u4E0D\u8981\u4F20 fileUrl/previewUrl\uFF1A\u6587\u4EF6\u5730\u5740\u4E0E\u5728\u7EBF\u9884\u89C8\u5730\u5740\u5747\u7531\u670D\u52A1\u7AEF\u6821\u9A8C/\u751F\u6210\u3002',properties:{type:{type:"string",enum:["pencil","draw","office"],description:"\u5361\u7247\u7C7B\u578B\uFF1Apencil \u8BBE\u8BA1\u753B\u5E03\u3001draw \u7ED8\u56FE\u6587\u6863 \u6216 office \u6587\u4EF6\uFF08Office \u6587\u6863\u4EE5\u6587\u4EF6\u5361\u7247\u5206\u4EAB\uFF09"},docId:{type:"string",description:"\u6587\u6863 ID\uFF1Apencil/draw \u5361\u7247\u5FC5\u586B\uFF08\u6765\u81EA pencil_create_document/draw_create_document \u6216 list \u5DE5\u5177\uFF09\uFF1Boffice \u5361\u7247\u4E0E filePath \u4E8C\u9009\u4E00\uFF08\u4E91\u6587\u6863 id\uFF0C\u5982 od-xxx\uFF0C\u53D1\u9001\u65F6\u670D\u52A1\u7AEF\u6821\u9A8C\u6709\u6548\u6027\uFF09"},filePath:{type:"string",description:"Office \u5361\u7247\u4E0E docId \u4E8C\u9009\u4E00\uFF1A\u5DE5\u4F5C\u533A Office \u6587\u6863\u8DEF\u5F84\uFF08\u5982 report.docx\uFF09\uFF0C\u53D1\u9001\u524D\u6821\u9A8C\u6587\u4EF6\u5B58\u5728\u5E76\u4E0A\u4F20\uFF0C\u4E0D\u5B58\u5728\u5219\u53D1\u9001\u5931\u8D25"},title:{type:"string",description:"\u5361\u7247\u6807\u9898\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4\u53D6\u6587\u6863\u540D\u79F0\uFF09"},description:{type:"string",description:"\u5361\u7247\u63CF\u8FF0\uFF08\u53EF\u9009\uFF09"}},required:["type"]},replyTo:t},required:["content"]}},b={name:"send_private",description:"\u53D1\u9001\u79C1\u4FE1\u7ED9\u6307\u5B9A\u7528\u6237\u3002\u652F\u6301\u4E24\u79CD\u6A21\u5F0F\uFF1A\u901A\u77E5\u5F0F\uFF08waitReply=false\uFF09\u548C\u8C03\u7528\u5F0F\uFF08waitReply=true\uFF0C\u963B\u585E\u7B49\u5F85\u56DE\u590D\uFF09\u3002\u652F\u6301\u53D1\u9001 pencil/draw/office \u5361\u7247\uFF08pencil/draw \u6587\u6863\u5176\u4ED6 Agent \u62FF\u5230 docId \u5373\u53EF\u8BFB\u53D6\uFF1Boffice \u6587\u4EF6\u5361\u7247\u7528 card.filePath\uFF08\u5DE5\u4F5C\u533A\u6587\u6863\uFF09\u6216 card.docId\uFF08\u4E91\u6587\u6863\uFF09\u6307\u5B9A\u6587\u4EF6\uFF0C\u53D1\u9001\u524D\u4F1A\u6821\u9A8C\u6587\u4EF6\u5B58\u5728/\u4E91\u6587\u6863\u6709\u6548\uFF09\u3002",inputSchema:{type:"object",properties:{targetId:{type:"string",description:"\u76EE\u6807\u7528\u6237ID"},content:{type:"string",description:"\u6D88\u606F\u5185\u5BB9\u3002\u7EAF\u53D1\u9001\u6587\u4EF6\u65F6\u4F20\u7A7A\u5B57\u7B26\u4E32\uFF08content \u4E0E attachments \u81F3\u5C11\u5176\u4E00\u975E\u7A7A\uFF09"},waitReply:{type:"boolean",description:"\u662F\u5426\u7B49\u5F85\u5BF9\u65B9\u56DE\u590D\uFF08\u8C03\u7528\u5F0F\uFF09\u3002\u4E3Atrue\u65F6\u4F1A\u963B\u585E\u7B49\u5F85\u56DE\u590D\uFF0C\u9ED8\u8BA4\u6C38\u4E45\u963B\u585E\u76F4\u5230\u6536\u5230\u56DE\u590D"},replyToCallId:{type:"string",description:"\u56DE\u590D\u7684\u8C03\u7528ID\uFF08\u7528\u4E8E\u56DE\u590D\u8C03\u7528\u5F0F\u6D88\u606F\uFF09"},timeoutMs:{type:"number",description:"\u7B49\u5F85\u56DE\u590D\u7684\u8D85\u65F6\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF0C\u53EF\u9009\uFF09\u3002\u672A\u6307\u5B9A\u6216\u22640\u65F6\u6C38\u4E45\u963B\u585E\u7B49\u5F85\uFF0C>0\u65F6\u6309\u6307\u5B9A\u65F6\u95F4\u8D85\u65F6"},attachments:{type:"array",items:{type:"string"},description:"\u968F\u6D88\u606F\u53D1\u9001\u7684\u6587\u4EF6\u8DEF\u5F84\u5217\u8868\uFF08\u53EF\u9009\uFF09\u3002\u652F\u6301\u5DE5\u4F5C\u533A\u5185\u76F8\u5BF9\u8DEF\u5F84\uFF08\u5982 report.xlsx\u3001docs/\u62A5\u544A.pdf\uFF09\u6216\u672C\u673A\u7EDD\u5BF9\u8DEF\u5F84\uFF08\u53EF\u4E3A\u5DE5\u4F5C\u533A\u5916\u6587\u4EF6\uFF0C\u5982 D:/tmp/data.zip\uFF09\uFF0C\u6587\u4EF6\u5C06\u88AB\u4E0A\u4F20\u5E76\u4EE5\u6587\u4EF6\u94FE\u63A5\u5F62\u5F0F\u9644\u5728\u6D88\u606F\u4E2D\uFF0C\u63A5\u6536\u65B9\u53EF\u901A\u8FC7\u94FE\u63A5\u4E0B\u8F7D\u3002\u5355\u4E2A\u6587\u4EF6\u9ED8\u8BA4\u4E0D\u8D85\u8FC7 200MB\uFF08\u53D7\u670D\u52A1\u7AEF AWS_FILE_MAX_SIZE_BYTES \u7EA6\u675F\uFF09\u3002"},card:{type:"object",description:'\u5361\u7247\uFF1A\u6587\u6863/\u6587\u4EF6\u5F15\u7528\uFF08\u53EF\u9009\uFF09\u3002pencil/draw \u4F20 {type, docId}\uFF0C\u53D1\u9001\u540E\u5176\u4ED6 Agent \u62FF\u5230 docId \u5373\u53EF\u7528 pencil_get_tree/draw_get_diagram \u8BFB\u53D6\uFF0C\u65E0\u9700\u9080\u8BF7\uFF1Boffice \u4F20 {type:"office", filePath} \u6216 {type:"office", docId}\uFF08\u4E8C\u9009\u4E00\uFF0C\u4E0D\u53EF\u540C\u65F6\u4F20\uFF09\uFF0C\u628A Office \u6587\u6863\uFF08docx/xlsx/pptx\uFF09\u4F5C\u4E3A\u53EF\u4E0B\u8F7D+\u53EF\u5728\u7EBF\u9884\u89C8\u7684\u6587\u4EF6\u5361\u7247\u53D1\u9001\u3002filePath \u4E3A\u5DE5\u4F5C\u533A\u6587\u6863\u8DEF\u5F84\uFF08\u53D1\u9001\u524D\u6821\u9A8C\u6587\u4EF6\u5B58\u5728\u5E76\u4E0A\u4F20\uFF0C\u4E0D\u5B58\u5728\u5219\u53D1\u9001\u5931\u8D25\uFF09\uFF1BdocId \u4E3A\u4E91\u6587\u6863 id\uFF08\u53D1\u9001\u65F6\u670D\u52A1\u7AEF\u6821\u9A8C\u6709\u6548\u6027\uFF0C\u63A5\u6536\u65B9\u53EF\u76F4\u63A5\u5728 Office \u9762\u677F\u6253\u5F00\uFF09\uFF1B\u4E0D\u8981\u4F20 fileUrl/previewUrl\uFF1A\u6587\u4EF6\u5730\u5740\u4E0E\u5728\u7EBF\u9884\u89C8\u5730\u5740\u5747\u7531\u670D\u52A1\u7AEF\u6821\u9A8C/\u751F\u6210\u3002',properties:{type:{type:"string",enum:["pencil","draw","office"],description:"\u5361\u7247\u7C7B\u578B\uFF1Apencil \u8BBE\u8BA1\u753B\u5E03\u3001draw \u7ED8\u56FE\u6587\u6863 \u6216 office \u6587\u4EF6\uFF08Office \u6587\u6863\u4EE5\u6587\u4EF6\u5361\u7247\u5206\u4EAB\uFF09"},docId:{type:"string",description:"\u6587\u6863 ID\uFF1Apencil/draw \u5361\u7247\u5FC5\u586B\uFF08\u6765\u81EA pencil_create_document/draw_create_document \u6216 list \u5DE5\u5177\uFF09\uFF1Boffice \u5361\u7247\u4E0E filePath \u4E8C\u9009\u4E00\uFF08\u4E91\u6587\u6863 id\uFF0C\u5982 od-xxx\uFF0C\u53D1\u9001\u65F6\u670D\u52A1\u7AEF\u6821\u9A8C\u6709\u6548\u6027\uFF09"},filePath:{type:"string",description:"Office \u5361\u7247\u4E0E docId \u4E8C\u9009\u4E00\uFF1A\u5DE5\u4F5C\u533A Office \u6587\u6863\u8DEF\u5F84\uFF08\u5982 report.docx\uFF09\uFF0C\u53D1\u9001\u524D\u6821\u9A8C\u6587\u4EF6\u5B58\u5728\u5E76\u4E0A\u4F20\uFF0C\u4E0D\u5B58\u5728\u5219\u53D1\u9001\u5931\u8D25"},title:{type:"string",description:"\u5361\u7247\u6807\u9898\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4\u53D6\u6587\u6863\u540D\u79F0\uFF09"},description:{type:"string",description:"\u5361\u7247\u63CF\u8FF0\uFF08\u53EF\u9009\uFF09"}},required:["type"]},replyTo:t},required:["targetId","content"]}},e=`\u6D88\u606F\u53EF\u80FD\u643A\u5E26 replyTo \u5B57\u6BB5\uFF08JSON \u6570\u7EC4 [{messageId,senderId,senderName,snapshot,prefix,suffix,pos}]\uFF09\uFF0C\u8868\u793A\u8BE5\u6D88\u606F\u5F15\u7528\u4E86\u54EA\u4E9B\u5386\u53F2\u6D88\u606F\uFF08\u8BA8\u8BBA\u5173\u8054\uFF0C\u4E0E replyToCallId \u8C03\u7528\u56DE\u6267\u65E0\u5173\uFF09\u3002
8
- \u3010\u5F15\u7528\u56DE\u6267\u3011\u56DE\u590D\u6216\u8FFD\u95EE\u67D0\u6761\u6D88\u606F\u65F6\uFF0C\u53EF\u5728 send_private/send_group \u7684 replyTo \u4E2D\u56DE\u4F20\u5F15\u7528\uFF08messageId \u53D6\u8BE5\u6D88\u606F\u7684 msgId\uFF09\uFF1A\u5F15\u7528\u6574\u6761\u6D88\u606F\u65F6 snapshot \u4F20\u539F\u6587\u5F00\u5934\u6458\u8981\uFF1B\u5F15\u7528\u7247\u6BB5\u65F6 snapshot \u5FC5\u987B\u9010\u5B57\u6458\u5F55\u88AB\u5F15\u7528\u6D88\u606F\u4E2D\u7684\u8BE5\u7247\u6BB5\uFF08\u2264200 \u5B57\u7B26\uFF0C\u7981\u6B62\u6539\u5199\u6216\u8F6C\u8FF0\uFF09\uFF0C\u5BF9\u65B9\u70B9\u51FB\u5F15\u7528\u5361\u7247\u5373\u53EF\u8DF3\u8F6C\u5E76\u805A\u7126\u539F\u6D88\u606F\u6216\u547D\u4E2D\u7247\u6BB5\u3002\u82E5\u8BE5\u7247\u6BB5\u5728\u539F\u6D88\u606F\u4E2D\u591A\u6B21\u51FA\u73B0\uFF08\u5982\u4E24\u4E2A\u300C\u4F60\u597D\u300D\uFF09\uFF0C\u518D\u9644\u4E0A\u7247\u6BB5\u524D\u540E\u5404 \u226416 \u5B57\u7B26\u7684\u539F\u6587\u4E0A\u4E0B\u6587 prefix/suffix\uFF08\u9010\u5B57\uFF09\u5373\u53EF\u7CBE\u786E\u5B9A\u4F4D\u5230\u4F60\u6307\u7684\u90A3\u6B21\uFF1B\u7701\u7565\u5219\u805A\u7126\u9996\u6B21\u51FA\u73B0\u3002\u82E5\u60F3\u8BA9\u5F15\u7528\u5361\u5185\u8054\u663E\u793A\u5728\u4F60\u6B63\u6587\u4E2D\u7684\u6307\u5B9A\u4F4D\u7F6E\uFF0C\u9644\u4E0A pos\uFF08\u4ECE 0 \u8BA1\u7684\u5B57\u7B26\u4F4D\u7F6E\uFF09\uFF1B\u7701\u7565\u6216\u975E\u6CD5\u65F6\u5361\u7247\u663E\u793A\u5728\u6D88\u606F\u9876\u90E8\u3002`,x={name:"poll_message",description:`\u83B7\u53D6\u672A\u8BFB\u6D88\u606F\uFF08\u5305\u62EC\u7FA4\u6D88\u606F\u548C\u79C1\u4FE1\uFF09\uFF0C\u6301\u7EED\u963B\u585E\u7B49\u5F85\u76F4\u5230\u6709\u65B0\u6D88\u606F\uFF0C\u8FD9\u662F\u83B7\u53D6\u6D88\u606F\u7684\u4E3B\u8981\u63A5\u53E3\u3002
8
+ \u3010\u5F15\u7528\u56DE\u6267\u3011\u56DE\u590D\u6216\u8FFD\u95EE\u67D0\u6761\u6D88\u606F\u65F6\uFF0C\u53EF\u5728 send_private/send_group \u7684 replyTo \u4E2D\u56DE\u4F20\u5F15\u7528\uFF08messageId \u53D6\u8BE5\u6D88\u606F\u7684 msgId\uFF09\uFF1A\u5F15\u7528\u6574\u6761\u6D88\u606F\u65F6 snapshot \u4F20\u539F\u6587\u5F00\u5934\u6458\u8981\uFF1B\u5F15\u7528\u7247\u6BB5\u65F6 snapshot \u5FC5\u987B\u9010\u5B57\u6458\u5F55\u88AB\u5F15\u7528\u6D88\u606F\u4E2D\u7684\u8BE5\u7247\u6BB5\uFF08\u2264200 \u5B57\u7B26\uFF0C\u7981\u6B62\u6539\u5199\u6216\u8F6C\u8FF0\uFF09\uFF0C\u5BF9\u65B9\u70B9\u51FB\u5F15\u7528\u5361\u7247\u5373\u53EF\u8DF3\u8F6C\u5E76\u805A\u7126\u539F\u6D88\u606F\u6216\u547D\u4E2D\u7247\u6BB5\u3002\u82E5\u8BE5\u7247\u6BB5\u5728\u539F\u6D88\u606F\u4E2D\u591A\u6B21\u51FA\u73B0\uFF08\u5982\u4E24\u4E2A\u300C\u4F60\u597D\u300D\uFF09\uFF0C\u518D\u9644\u4E0A\u7247\u6BB5\u524D\u540E\u5404 \u226416 \u5B57\u7B26\u7684\u539F\u6587\u4E0A\u4E0B\u6587 prefix/suffix\uFF08\u9010\u5B57\uFF09\u5373\u53EF\u7CBE\u786E\u5B9A\u4F4D\u5230\u4F60\u6307\u7684\u90A3\u6B21\uFF1B\u7701\u7565\u5219\u805A\u7126\u9996\u6B21\u51FA\u73B0\u3002\u82E5\u60F3\u8BA9\u5F15\u7528\u5361\u5185\u8054\u663E\u793A\u5728\u4F60\u6B63\u6587\u4E2D\u7684\u6307\u5B9A\u4F4D\u7F6E\uFF0C\u9644\u4E0A pos\uFF08\u4ECE 0 \u8BA1\u7684\u5B57\u7B26\u4F4D\u7F6E\uFF09\uFF1B\u7701\u7565\u6216\u975E\u6CD5\u65F6\u5361\u7247\u663E\u793A\u5728\u6D88\u606F\u9876\u90E8\u3002`,I={name:"poll_message",description:`\u83B7\u53D6\u672A\u8BFB\u6D88\u606F\uFF08\u5305\u62EC\u7FA4\u6D88\u606F\u548C\u79C1\u4FE1\uFF09\uFF0C\u6301\u7EED\u963B\u585E\u7B49\u5F85\u76F4\u5230\u6709\u65B0\u6D88\u606F\uFF0C\u8FD9\u662F\u83B7\u53D6\u6D88\u606F\u7684\u4E3B\u8981\u63A5\u53E3\u3002
9
9
 
10
10
  \u3010\u8FD4\u56DE\u503C\u8BF4\u660E\u3011
11
11
  - directMessages: \u79C1\u4FE1\u6D88\u606F
@@ -14,7 +14,7 @@ MCP \u5DE5\u5177\uFF08poll_message/get_message\uFF09\u4E0D\u518D\u8FD4\u56DE sys
14
14
  `+e+`
15
15
 
16
16
  \u7CFB\u7EDF\u63D0\u793A\u8BCD\uFF08\u5168\u5C40\u63D0\u793A\u8BCD + \u89D2\u8272\u63D0\u793A\u8BCD + \u542F\u52A8\u8BB0\u5FC6\uFF09\u5DF2\u7531 runtime adapter
17
- \u5728\u4F1A\u8BDD\u521B\u5EFA\u65F6\u6CE8\u5165\uFF0C\u65E0\u9700\u901A\u8FC7 MCP \u83B7\u53D6\u3002`,inputSchema:{type:"object",properties:{},required:[]}},I={name:"get_message",description:`\u83B7\u53D6\u672A\u8BFB\u6D88\u606F\uFF08\u975E\u963B\u585E\uFF09\uFF0C\u4ECE\u6D88\u606F\u7F13\u51B2\u533A\u83B7\u53D6\u6D88\u606F\uFF0C\u7ACB\u5373\u8FD4\u56DE\uFF0C\u82E5\u5F53\u524D\u6CA1\u6709\u4EFB\u52A1\u5E94\u4F7F\u7528 poll_message\u3002
17
+ \u5728\u4F1A\u8BDD\u521B\u5EFA\u65F6\u6CE8\u5165\uFF0C\u65E0\u9700\u901A\u8FC7 MCP \u83B7\u53D6\u3002`,inputSchema:{type:"object",properties:{},required:[]}},x={name:"get_message",description:`\u83B7\u53D6\u672A\u8BFB\u6D88\u606F\uFF08\u975E\u963B\u585E\uFF09\uFF0C\u4ECE\u6D88\u606F\u7F13\u51B2\u533A\u83B7\u53D6\u6D88\u606F\uFF0C\u7ACB\u5373\u8FD4\u56DE\uFF0C\u82E5\u5F53\u524D\u6CA1\u6709\u4EFB\u52A1\u5E94\u4F7F\u7528 poll_message\u3002
18
18
 
19
19
  \u3010\u8FD4\u56DE\u503C\u8BF4\u660E\u3011
20
20
  - directMessages: \u79C1\u4FE1\u6D88\u606F
@@ -32,7 +32,7 @@ MCP \u5DE5\u5177\uFF08poll_message/get_message\uFF09\u4E0D\u518D\u8FD4\u56DE sys
32
32
  \u82E5\u8FD4\u56DE requiredDeliverables\uFF08\u8BE5\u8282\u70B9\u76F4\u63A5\u5230\u8FBE\u58F0\u660E\u4E86\u4EA4\u4ED8\u7269\u8981\u6C42\u7684\u7ED3\u675F\u8282\u70B9\uFF09\uFF0C\u8BF7\u9010\u9879\u9605\u8BFB\u5176 description \u660E\u786E\u8981\u4EA4\u4ED8\u4EC0\u4E48\uFF0C\u5E76\u6309 key \u901A\u8FC7 submit_task_result \u7684 deliverables \u4EA4\u4ED8\u5BF9\u5E94\u6587\u4EF6/\u6587\u672C\uFF1B\u6587\u4EF6\u7C7B\u4EA4\u4ED8\u7269\u7684 maxSizeMb \u4E3A\u8BE5\u9879\u5355\u4E2A\u6587\u4EF6\u7684\u5927\u5C0F\u4E0A\u9650\uFF08MB\uFF09\uFF0C\u4EA7\u51FA\u7269\u4E0D\u5F97\u8D85\u8FC7\uFF0Crequired=true \u7684\u9879\u7F3A\u5931\u4F1A\u88AB\u62D2\u7EDD\u63D0\u4EA4\u3002
33
33
  \u4EA4\u63A5\u7ECF\u9A8C\uFF08\u5FAA\u73AF/\u56DE\u9000\u573A\u666F\uFF09\uFF1AiterationNumber \u4E3A\u5F53\u524D\u8F6E\u6B21\uFF08\u5DF2\u5B8C\u6210\u7684\u5FAA\u73AF\u6B21\u6570+1\uFF09\uFF0C\u63D0\u793A\u4F60\u5F53\u524D\u5904\u4E8E\u7B2C\u51E0\u8F6E\uFF1BrecentHandovers \u56FA\u5B9A\u8FD4\u56DE\u6700\u8FD1 3 \u8F6E\u7ECF\u9A8C\uFF08\u6700\u65B0\u5728\u524D\uFF0C\u6BCF\u9879\u542B iterationNumber/note/completedAt\uFF09\uFF0ChandoverCount \u4E3A\u8BE5\u8282\u70B9\u5386\u53F2\u7ECF\u9A8C\u603B\u6761\u6570\u3002\u5148\u8BFB recentHandovers \u518D\u5904\u7406\uFF1B\u82E5\u9700\u66F4\u65E9\u8F6E\u6B21\u7684\u7ECF\u9A8C\uFF08handoverCount > 3\uFF09\uFF0C\u7528 list_task_node_iterations \u6309 offset/limit \u4ECE\u6700\u8FD1\u4E00\u8F6E\u8D77\u7FFB\u9875\u62C9\u53D6\uFF0C\u907F\u514D\u5728\u957F\u671F\u7A7A\u8F6C\u7684\u5FAA\u73AF\u91CC\u91CD\u590D\u52B3\u52A8\u3002`,inputSchema:{type:"object",properties:{},required:[]}},S={name:"list_task_node_iterations",description:`\u67E5\u8BE2\u5F53\u524D Agent \u6B63\u5728\u5904\u7406\u7684\u6D41\u7A0B\u7EBF\u8282\u70B9\u66F4\u65E9\u8F6E\u6B21\u7684\u300C\u4EA4\u63A5\u7ECF\u9A8C\u300D\u5386\u53F2\u3002\u4EC5\u5728\u5DF2\u9605\u8BFB my_task.recentHandovers\uFF08\u6700\u8FD1 3 \u6761\uFF09\u540E\u4ECD\u9700\u66F4\u591A\u5386\u53F2\u65F6\u8C03\u7528\uFF1Bmy_task.handoverCount \u7ED9\u51FA\u603B\u6761\u6570\u3002
34
34
  \u5206\u9875\u53E3\u5F84\uFF1A\u4ECE\u6700\u8FD1\u4E00\u8F6E\u5F00\u59CB\u8BA1\u6570\uFF0Coffset=0 \u8868\u793A\u6700\u8FD1\u4E00\u6761\uFF0Coffset \u8D8A\u5927\u8D8A\u65E9\uFF08\u4E0D\u662F\u4ECE\u7B2C\u4E00\u6761\u5F00\u59CB\uFF09\u3002\u4F8B\u5982 offset:3&limit:3 \u53D6\u7B2C 4~6 \u8FD1\u7684\u7ECF\u9A8C\u3002
35
- \u4E0D\u4F20 nodeTemplateId \u65F6\u9ED8\u8BA4\u5F53\u524D\u5904\u7406\u4E2D\u7684\u8282\u70B9\u3002\u53EA\u8FD4\u56DE\u7ECF\u9A8C\u8F7B\u91CF\u5B57\u6BB5\uFF08iterationNumber/note/completedAt\uFF09\u4E0E total/offset/limit\uFF0C\u4E0D\u8FD4\u56DE\u5386\u53F2 input/output \u5927\u5B57\u6BB5\u3002`,inputSchema:{type:"object",properties:{offset:{type:"number",description:"\u4ECE\u6700\u8FD1\u4E00\u6761\u7B97\u8D77\u7684\u8D77\u70B9\uFF0C0=\u6700\u8FD1\u4E00\u6761\uFF08\u9ED8\u8BA4 0\uFF09"},limit:{type:"number",description:"\u672C\u6B21\u8FD4\u56DE\u6761\u6570\uFF08\u9ED8\u8BA4 3\uFF0C\u6700\u5927 50\uFF09"},nodeTemplateId:{type:"string",description:"\u53EF\u9009\u3002\u76EE\u6807\u8282\u70B9\u6A21\u677F ID\uFF1B\u4E0D\u4F20\u5219\u9ED8\u8BA4\u5F53\u524D Agent \u5904\u7406\u4E2D\u7684\u8282\u70B9"}},required:[]}},L={name:"create_task_instance_comment",description:"\u4E3A\u5F53\u524D\u6B63\u5728\u5904\u7406\u7684\u6D41\u7A0B\u7EBF\u5B9E\u4F8B\u521B\u5EFA\u4E00\u6761\u5B9E\u4F8B\u7EA7\u7559\u8A00\u3002\u4EC5\u5141\u8BB8\u7531\u540E\u53F0\u9759\u9ED8\u62A2\u5360\u540E\u6B63\u5728\u5904\u7406\u8BE5\u5B9E\u4F8B\u8282\u70B9\u7684 Agent \u8C03\u7528\uFF1B\u5F53\u9700\u8981\u544A\u77E5\u540E\u7EED\u8282\u70B9\u9700\u8981\u6CE8\u610F\u7684\u70B9\u65F6\u4F7F\u7528\u7559\u8A00\u8FDB\u884C\u7559\u8A00\uFF1B\u7559\u8A00\u4F1A\u5728\u5B9E\u4F8B\u5217\u8868\u201C\u67E5\u770B\u7559\u8A00\u201D\u548C\u540E\u7EED my_task \u8FD4\u56DE\u4E2D\u5C55\u793A\u3002",inputSchema:{type:"object",properties:{taskInstanceId:{type:"string",description:"\u6D41\u7A0B\u7EBF\u4EFB\u52A1\u5B9E\u4F8BID\uFF08\u4ECE my_task \u8FD4\u56DE\u4E2D\u83B7\u53D6\uFF09"},content:{type:"string",description:"\u7559\u8A00\u5185\u5BB9"}},required:["taskInstanceId","content"]}},A={name:"submit_task_result",description:`\u63D0\u4EA4\u6D41\u7A0B\u7EBF\u4EFB\u52A1\u7684\u6267\u884C\u7ED3\u679C\u3002\u5B8C\u6210\u4EFB\u52A1\u540E\u8C03\u7528\u6B64\u5DE5\u5177\uFF0C\u8F93\u51FA\u5C06\u4F20\u9012\u7ED9\u4E0B\u4E00\u4E2A\u8282\u70B9\u3002outputPayload \u5FC5\u987B\u9075\u5FAA my_task \u8FD4\u56DE\u7684 requiredOutput\uFF1A\u6709\u540E\u7EE7\u5206\u652F\u65F6\u5FC5\u987B\u662F JSON \u6570\u7EC4\uFF0C\u6BCF\u9879\u5305\u542B targetNodeId \u548C output\u3002\u82E5\u76EE\u6807\u5206\u652F\u662F HUMAN \u8282\u70B9\uFF0Coutput \u5FC5\u987B\u662F JSON \u5BF9\u8C61\u5E76\u5305\u542B\u975E\u7A7A questions \u6570\u7EC4\uFF0Cquestions \u81F3\u5C11\u4E00\u4E2A\u9898\u76EE\u5FC5\u987B\u5305\u542B\u5B57\u7B26\u4E32 question \u5B57\u6BB5\u3002
35
+ \u4E0D\u4F20 nodeTemplateId \u65F6\u9ED8\u8BA4\u5F53\u524D\u5904\u7406\u4E2D\u7684\u8282\u70B9\u3002\u53EA\u8FD4\u56DE\u7ECF\u9A8C\u8F7B\u91CF\u5B57\u6BB5\uFF08iterationNumber/note/completedAt\uFF09\u4E0E total/offset/limit\uFF0C\u4E0D\u8FD4\u56DE\u5386\u53F2 input/output \u5927\u5B57\u6BB5\u3002`,inputSchema:{type:"object",properties:{offset:{type:"number",description:"\u4ECE\u6700\u8FD1\u4E00\u6761\u7B97\u8D77\u7684\u8D77\u70B9\uFF0C0=\u6700\u8FD1\u4E00\u6761\uFF08\u9ED8\u8BA4 0\uFF09"},limit:{type:"number",description:"\u672C\u6B21\u8FD4\u56DE\u6761\u6570\uFF08\u9ED8\u8BA4 3\uFF0C\u6700\u5927 50\uFF09"},nodeTemplateId:{type:"string",description:"\u53EF\u9009\u3002\u76EE\u6807\u8282\u70B9\u6A21\u677F ID\uFF1B\u4E0D\u4F20\u5219\u9ED8\u8BA4\u5F53\u524D Agent \u5904\u7406\u4E2D\u7684\u8282\u70B9"}},required:[]}},A={name:"create_task_instance_comment",description:"\u4E3A\u5F53\u524D\u6B63\u5728\u5904\u7406\u7684\u6D41\u7A0B\u7EBF\u5B9E\u4F8B\u521B\u5EFA\u4E00\u6761\u5B9E\u4F8B\u7EA7\u7559\u8A00\u3002\u4EC5\u5141\u8BB8\u7531\u540E\u53F0\u9759\u9ED8\u62A2\u5360\u540E\u6B63\u5728\u5904\u7406\u8BE5\u5B9E\u4F8B\u8282\u70B9\u7684 Agent \u8C03\u7528\uFF1B\u5F53\u9700\u8981\u544A\u77E5\u540E\u7EED\u8282\u70B9\u9700\u8981\u6CE8\u610F\u7684\u70B9\u65F6\u4F7F\u7528\u7559\u8A00\u8FDB\u884C\u7559\u8A00\uFF1B\u7559\u8A00\u4F1A\u5728\u5B9E\u4F8B\u5217\u8868\u201C\u67E5\u770B\u7559\u8A00\u201D\u548C\u540E\u7EED my_task \u8FD4\u56DE\u4E2D\u5C55\u793A\u3002",inputSchema:{type:"object",properties:{taskInstanceId:{type:"string",description:"\u6D41\u7A0B\u7EBF\u4EFB\u52A1\u5B9E\u4F8BID\uFF08\u4ECE my_task \u8FD4\u56DE\u4E2D\u83B7\u53D6\uFF09"},content:{type:"string",description:"\u7559\u8A00\u5185\u5BB9"}},required:["taskInstanceId","content"]}},L={name:"submit_task_result",description:`\u63D0\u4EA4\u6D41\u7A0B\u7EBF\u4EFB\u52A1\u7684\u6267\u884C\u7ED3\u679C\u3002\u5B8C\u6210\u4EFB\u52A1\u540E\u8C03\u7528\u6B64\u5DE5\u5177\uFF0C\u8F93\u51FA\u5C06\u4F20\u9012\u7ED9\u4E0B\u4E00\u4E2A\u8282\u70B9\u3002outputPayload \u5FC5\u987B\u9075\u5FAA my_task \u8FD4\u56DE\u7684 requiredOutput\uFF1A\u6709\u540E\u7EE7\u5206\u652F\u65F6\u5FC5\u987B\u662F JSON \u6570\u7EC4\uFF0C\u6BCF\u9879\u5305\u542B targetNodeId \u548C output\u3002\u82E5\u76EE\u6807\u5206\u652F\u662F HUMAN \u8282\u70B9\uFF0Coutput \u5FC5\u987B\u662F JSON \u5BF9\u8C61\u5E76\u5305\u542B\u975E\u7A7A questions \u6570\u7EC4\uFF0Cquestions \u81F3\u5C11\u4E00\u4E2A\u9898\u76EE\u5FC5\u987B\u5305\u542B\u5B57\u7B26\u4E32 question \u5B57\u6BB5\u3002
36
36
  \u63D0\u4EA4\u5206\u652F\u89C4\u5219\uFF08\u52A1\u5FC5\u9075\u5B88\uFF0C\u5426\u5219\u4F1A\u88AB\u62D2\u7EDD\u63D0\u4EA4\uFF09\uFF1ArequiredOutput \u82E5\u4E3A\u300C\u8F93\u51FA\u5206\u7EC4\u300D\u7ED3\u6784\uFF08\u6BCF\u9879\u542B outputGroup \u4E0E outputs\uFF09\uFF0C\u6BCF\u6B21\u63D0\u4EA4\u53EA\u80FD\u9009\u4E2D\u4E00\u4E2A\u8F93\u51FA\u5206\u7EC4\uFF08\u7EC4\u95F4\u4E92\u65A5\u5355\u9009\uFF09\uFF1B\u9009\u4E2D\u5206\u7EC4\u5185 required=true \u7684\u7EBF\u5FC5\u987B\u5168\u90E8\u8F93\u51FA\uFF0C\u4E14\u8BE5\u5206\u7EC4\u81F3\u5C11\u8F93\u51FA 1 \u6761\uFF1B\u65E0\u5206\u7EC4\u4E14 required=true \u7684\u7EBF\u5FC5\u987B\u65E0\u6761\u4EF6\u8F93\u51FA\u3002\u653E\u884C\u4E0E\u6253\u56DE\u5C5E\u4E8E\u4E0D\u540C\u5206\u7EC4\u65F6\uFF0C\u4E00\u6B21\u53EA\u80FD\u63D0\u4EA4\u5176\u4E2D\u4E00\u4E2A\u5206\u7EC4\uFF0C\u4E0D\u8981\u540C\u65F6\u63D0\u4EA4\u5360\u4F4D\u5206\u652F\u3002\u540C\u65F6\u5B58\u5728\u300C\u65E0\u5206\u7EC4\u5FC5\u51FA\u7EBF\u300D\u4E0E\u300C\u5206\u7EC4\u7EBF\u300D\u4F1A\u88AB\u5224\u4E3A\u6DF7\u7528\u5E76\u62D2\u7EDD\u63D0\u4EA4\u3002
37
37
  \u82E5 my_task \u8FD4\u56DE requireHandover=true\uFF08\u8BE5\u8282\u70B9\u4F4D\u4E8E\u5FAA\u73AF\u8DEF\u5F84\uFF09\uFF0C\u63D0\u4EA4\u65F6\u5FC5\u987B\u4E00\u5E76\u4F20\u5165 handoverNote\uFF08\u4EA4\u63A5\u7ECF\u9A8C\uFF09\uFF1A\u8BF4\u660E\u672C\u8F6E\u5904\u7406\u7ED3\u8BBA\u3001\u9057\u7559\u95EE\u9898\u4E0E\u4E0B\u4E00\u8F6E\u9700\u8981\u6CE8\u610F\u7684\u8981\u70B9\uFF1B\u7F3A\u5931\u4F1A\u88AB\u62D2\u7EDD\u63D0\u4EA4\u3002
38
38
  \u82E5 my_task \u8FD4\u56DE requiredDeliverables\uFF08\u8BE5\u8282\u70B9\u76F4\u63A5\u5230\u8FBE\u67D0\u4E2A\u7ED3\u675F\u8282\u70B9\uFF0C\u4E14\u8BE5\u7ED3\u675F\u8282\u70B9\u58F0\u660E\u4E86\u4EA4\u4ED8\u7269\u8981\u6C42\uFF09\uFF0C\u8BF7\u5148\u9010\u9879\u9605\u8BFB\u5176 description\uFF08\u5199\u6E05\u4E86\u8981\u4EA4\u4ED8\u4EC0\u4E48\u3001\u5305\u542B\u54EA\u4E9B\u5185\u5BB9\uFF09\uFF0C\u518D\u901A\u8FC7 deliverables \u4EA4\u4ED8\u5BF9\u5E94\u5185\u5BB9\uFF1A\u6587\u4EF6\u7C7B\uFF08kind=file\uFF09\u7ED9\u51FA path \u6307\u5411\u5DE5\u4F5C\u533A\u5185\u7684\u4EA7\u51FA\u6587\u4EF6\uFF08\u4F1A\u81EA\u52A8\u4E0A\u4F20\uFF09\uFF0C\u6587\u672C\u7C7B\uFF08kind=text\uFF09\u7ED9\u51FA text\uFF1B\u6BCF\u9879\u5FC5\u987B\u5E26\u4E0A\u4E0E requiredDeliverables[].key \u4E00\u81F4\u7684 key\uFF1Brequired=true \u7684\u9879\u7F3A\u5931\u6216\u6587\u4EF6\u7C7B\u578B\u4E0D\u7B26\u4F1A\u88AB\u62D2\u7EDD\u63D0\u4EA4\u3002\u6587\u4EF6\u7C7B\u4EA4\u4ED8\u7269\u8FD8\u9700\u6CE8\u610F\u8BE5\u9879\u7684 maxSizeMb\uFF08\u5355\u4E2A\u6587\u4EF6\u5927\u5C0F\u4E0A\u9650\uFF0CMB\uFF09\uFF1A\u4EA7\u51FA\u7269\u4F53\u79EF\u4E0D\u5F97\u8D85\u8FC7\u8BE5\u503C\uFF0C\u5426\u5219\u4F1A\u88AB\u62D2\u7EDD\u63D0\u4EA4\u3002
@@ -54,9 +54,9 @@ MCP \u5DE5\u5177\uFF08poll_message/get_message\uFF09\u4E0D\u518D\u8FD4\u56DE sys
54
54
  \u5F53 logWriteKey \u975E\u7A7A\u65F6\uFF0C\u4E1A\u52A1\u9879\u76EE\u4F7F\u7528\u8BE5 key \u5373\u53EF\u4E0A\u62A5\u65E5\u5FD7\uFF0C\u65E0\u9700\u9879\u76EE\u6210\u5458\u6743\u9650\u3002
55
55
  \u5F53 logWriteKey \u4E3A\u7A7A\u65F6\uFF0C\u9700\u4F7F\u7528\u9879\u76EE\u6210\u5458\u7684 API Key\uFF08\u9700\u9879\u76EE\u6210\u5458\u6743\u9650\uFF09\u3002`,inputSchema:{type:"object",properties:{},required:[]}},v={name:"query_debug_logs",description:`\u5206\u9875\u67E5\u8BE2 Agent Debug \u65E5\u5FD7\uFF08\u6309\u65F6\u95F4\u5012\u5E8F\uFF09\u3002\u7528\u4E8E\u6392\u67E5\u4E1A\u52A1\u9879\u76EE\u8FD0\u884C\u65F6\u95EE\u9898\u3002
56
56
 
57
- \u8FD4\u56DE\u5B57\u6BB5\uFF1Aid\u3001projectId\u3001businessLine\u3001module\u3001level\u3001detail\u3001createdAt\u3002`,inputSchema:{type:"object",properties:{projectId:{type:"string",description:"\u9879\u76EE ID\uFF08\u5FC5\u586B\uFF09"},businessLine:{type:"string",description:"\u4E1A\u52A1\u7EBF\u540D\u79F0\uFF08\u5FC5\u586B\uFF09"},module:{type:"string",description:"\u6A21\u5757\u540D\uFF08\u53EF\u9009\uFF09"},level:{type:"string",description:"\u65E5\u5FD7\u7EA7\u522B\uFF1ADEBUG / INFO / WARN / ERROR\uFF08\u53EF\u9009\uFF09",enum:["DEBUG","INFO","WARN","ERROR"]},startTime:{type:"string",description:"\u8D77\u59CB\u65F6\u95F4\uFF0CISO \u683C\u5F0F\u5982 2026-08-01T00:00:00\uFF08\u53EF\u9009\uFF09"},endTime:{type:"string",description:"\u7ED3\u675F\u65F6\u95F4\uFF0CISO \u683C\u5F0F\u5982 2026-08-02T00:00:00\uFF08\u53EF\u9009\uFF09"},offset:{type:"number",description:"\u504F\u79FB\u91CF\uFF0C\u9ED8\u8BA4 0"},limit:{type:"number",description:"\u6BCF\u9875\u6761\u6570\uFF0C\u9ED8\u8BA4 20\uFF0C\u6700\u5927 200"}},required:["projectId","businessLine"]}},R={name:"query_file_changes_history",description:`\u5206\u9875\u67E5\u8BE2\u6587\u4EF6\u53D8\u66F4\u5386\u53F2\uFF08\u6309\u65F6\u95F4\u5012\u5E8F\uFF09\u3002\u7528\u4E8E\u4E86\u89E3\u5176\u5B83 Agent \u5BF9\u6587\u4EF6\u505A\u8FC7\u54EA\u4E9B\u4FEE\u6539\u3001\u4FEE\u6539\u539F\u56E0\u4E0E\u5F53\u524D\u72B6\u6001\uFF0C\u652F\u6301\u6309 \u89D2\u8272/\u5B9E\u4F8B/\u6587\u4EF6\u540D/\u76F8\u5BF9\u8DEF\u5F84/\u64CD\u4F5C/\u72B6\u6001/\u4EFB\u52A1\u5B9E\u4F8B/\u65F6\u95F4\u8303\u56F4 \u8FC7\u6EE4\u3002\u67E5\u8BE2\u8303\u56F4\u81EA\u52A8\u9650\u5B9A\u4E3A\u5F53\u524D Agent \u6240\u5C5E\u9879\u76EE\u3002
57
+ \u8FD4\u56DE\u5B57\u6BB5\uFF1Aid\u3001projectId\u3001businessLine\u3001module\u3001level\u3001detail\u3001createdAt\u3002`,inputSchema:{type:"object",properties:{projectId:{type:"string",description:"\u9879\u76EE ID\uFF08\u5FC5\u586B\uFF09"},businessLine:{type:"string",description:"\u4E1A\u52A1\u7EBF\u540D\u79F0\uFF08\u5FC5\u586B\uFF09"},module:{type:"string",description:"\u6A21\u5757\u540D\uFF08\u53EF\u9009\uFF09"},level:{type:"string",description:"\u65E5\u5FD7\u7EA7\u522B\uFF1ADEBUG / INFO / WARN / ERROR\uFF08\u53EF\u9009\uFF09",enum:["DEBUG","INFO","WARN","ERROR"]},startTime:{type:"string",description:"\u8D77\u59CB\u65F6\u95F4\uFF0CISO \u683C\u5F0F\u5982 2026-08-01T00:00:00\uFF08\u53EF\u9009\uFF09"},endTime:{type:"string",description:"\u7ED3\u675F\u65F6\u95F4\uFF0CISO \u683C\u5F0F\u5982 2026-08-02T00:00:00\uFF08\u53EF\u9009\uFF09"},offset:{type:"number",description:"\u504F\u79FB\u91CF\uFF0C\u9ED8\u8BA4 0"},limit:{type:"number",description:"\u6BCF\u9875\u6761\u6570\uFF0C\u9ED8\u8BA4 20\uFF0C\u6700\u5927 200"}},required:["projectId","businessLine"]}},P={name:"query_file_changes_history",description:`\u5206\u9875\u67E5\u8BE2\u6587\u4EF6\u53D8\u66F4\u5386\u53F2\uFF08\u6309\u65F6\u95F4\u5012\u5E8F\uFF09\u3002\u7528\u4E8E\u4E86\u89E3\u5176\u5B83 Agent \u5BF9\u6587\u4EF6\u505A\u8FC7\u54EA\u4E9B\u4FEE\u6539\u3001\u4FEE\u6539\u539F\u56E0\u4E0E\u5F53\u524D\u72B6\u6001\uFF0C\u652F\u6301\u6309 \u89D2\u8272/\u5B9E\u4F8B/\u6587\u4EF6\u540D/\u76F8\u5BF9\u8DEF\u5F84/\u64CD\u4F5C/\u72B6\u6001/\u4EFB\u52A1\u5B9E\u4F8B/\u65F6\u95F4\u8303\u56F4 \u8FC7\u6EE4\u3002\u67E5\u8BE2\u8303\u56F4\u81EA\u52A8\u9650\u5B9A\u4E3A\u5F53\u524D Agent \u6240\u5C5E\u9879\u76EE\u3002
58
58
 
59
- \u8FD4\u56DE\u5B57\u6BB5\uFF1Aid\u3001projectId\u3001roleName\u3001instanceName\u3001agentId\u3001operation\uFF08CREATE/UPDATE/DELETE\uFF09\u3001targetPath\u3001fullPath\u3001reason\u3001status\uFF08APPLIED/REVERTED/REVERT_FAILED\uFF09\u3001createdAt\u3001revertedAt\u3001revertedBy\u3002`,inputSchema:{type:"object",properties:{roleId:{type:"string",description:"\u89D2\u8272\u5B9A\u4E49 ID\uFF08\u53EF\u9009\uFF09"},agentId:{type:"string",description:"Agent \u5B9E\u4F8B ID\uFF08\u53EF\u9009\uFF1B\u4E0D\u4F20=\u67E5\u8BE2\u5F53\u524D\u9879\u76EE\u4E0B\u6240\u6709 Agent\uFF1B\u4F20\u5176\u5B83 Agent \u65F6\u670D\u52A1\u7AEF\u6821\u9A8C\u5176\u4E0E\u8C03\u7528\u8005\u540C\u9879\u76EE\uFF09"},fileName:{type:"string",description:"\u6587\u4EF6\u540D\uFF08\u53EF\u9009\uFF0C\u6309 basename \u6A21\u7CCA\u5339\u914D\uFF09"},filePath:{type:"string",description:"\u5DE5\u4F5C\u533A\u76F8\u5BF9\u8DEF\u5F84\uFF08\u53EF\u9009\uFF0C\u6309\u8D26\u672C\u8BB0\u5F55\u7684\u76F8\u5BF9\u8DEF\u5F84 targetPath \u5339\u914D\uFF0C\u542B\u76EE\u5F55\u524D\u7F00\u5339\u914D\uFF09\u3002\u652F\u6301 ./xx\u3001xx\u3001@/xx\u3001/xx \u7B49\u4EF7\u5199\u6CD5\uFF08@ \u89C6\u4E3A\u5DE5\u4F5C\u533A\u6839\u8DEF\u5F84\u522B\u540D\uFF09\u3002\u793A\u4F8B\uFF1A@/src/main.ts \u7CBE\u786E\u5339\u914D src/main.ts\uFF1B@/src \u5339\u914D src/ \u76EE\u5F55\u53CA\u5176\u4E0B\u6240\u6709\u6587\u4EF6\u7684\u53D8\u66F4\u3002\u4E0E fileName \u6B63\u4EA4\uFF1AfileName \u6309\u6587\u4EF6\u540D\u6A21\u7CCA\uFF0CfilePath \u6309\u76F8\u5BF9\u8DEF\u5F84\u5339\u914D\u3002"},operation:{type:"string",description:"\u64CD\u4F5C\u7C7B\u578B\uFF1ACREATE / UPDATE / DELETE\uFF08\u53EF\u9009\uFF09",enum:["CREATE","UPDATE","DELETE"]},status:{type:"string",description:"\u8BB0\u5F55\u72B6\u6001\uFF1AAPPLIED\uFF08\u5DF2\u751F\u6548\uFF09/ REVERTED\uFF08\u5DF2\u64A4\u9500\uFF09/ REVERT_FAILED\uFF08\u64A4\u9500\u5931\u8D25\uFF09\uFF08\u53EF\u9009\uFF09",enum:["APPLIED","REVERTED","REVERT_FAILED"]},taskInstanceId:{type:"string",description:"\u4EFB\u52A1\u5B9E\u4F8B ID\uFF08\u53EF\u9009\uFF09"},startTime:{type:"string",description:"\u8D77\u59CB\u65F6\u95F4\uFF0CISO \u683C\u5F0F\u5982 2026-08-01T00:00:00\uFF08\u53EF\u9009\uFF09"},endTime:{type:"string",description:"\u7ED3\u675F\u65F6\u95F4\uFF0CISO \u683C\u5F0F\u5982 2026-08-02T00:00:00\uFF08\u53EF\u9009\uFF09"},page:{type:"number",description:"\u9875\u7801\uFF0C\u9ED8\u8BA4 1"},pageSize:{type:"number",description:"\u6BCF\u9875\u6761\u6570\uFF0C\u9ED8\u8BA4 20"}},required:[]}},Ve=new Set(["create_memory","read_memory","update_memory","delete_memory","search_memory","list_memories","get_memory_stats","list_memories_by_file","memory_recurrence","memory_recurrence_complete"]),P={name:"launch_config_list",description:"\u67E5\u8BE2\u5F53\u524D Agent \u6240\u5C5E\u9879\u76EE\u4E0B\u7684\u542F\u52A8\u9879\uFF08\u7C7B IDEA Run Configuration\uFF09\u5217\u8868\u3002\u6BCF\u4E2A\u542F\u52A8\u9879\u542B id\u3001name\u3001type\uFF08generic/java/python/node/go/php\uFF09\u3001command\u3001cwd\u3001env\u3001jdkId\u3001groupId\u3001sortOrder\u3002\u67E5\u8BE2\u8303\u56F4\u81EA\u52A8\u9650\u5B9A\u4E3A\u5F53\u524D\u9879\u76EE\uFF0C\u65E0\u9700\u4F20 projectId\u3002",inputSchema:{type:"object",properties:{},required:[]}},M={name:"launch_config_create",description:"\u5728\u5F53\u524D Agent \u6240\u5C5E\u9879\u76EE\u4E0B\u65B0\u5EFA\u542F\u52A8\u9879\uFF08\u7C7B IDEA Run Configuration\uFF09\u3002\u521B\u5EFA\u524D\u5EFA\u8BAE\u5148 launch_config_list \u67E5\u770B\u73B0\u6709\u914D\u7F6E\u4E0E\u547D\u540D\u4E60\u60EF\u3002\u9879\u76EE\u8303\u56F4\u81EA\u52A8\u63A8\u5BFC\uFF0C\u65E0\u9700\u4F20 projectId\u3002\u521B\u5EFA\u6210\u529F\u540E\u8FD4\u56DE\u65B0\u542F\u52A8\u9879\u5B8C\u6574\u4FE1\u606F\uFF08\u542B id\uFF09\u3002",inputSchema:{type:"object",properties:{name:{type:"string",description:"\u542F\u52A8\u9879\u540D\u79F0\uFF08\u5FC5\u586B\uFF0C\u9879\u76EE\u5185\u552F\u4E00\uFF0C\u2264128 \u5B57\u7B26\uFF09"},type:{type:"string",description:"\u542F\u52A8\u9879\u7C7B\u578B\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 generic\uFF09\uFF1Ageneric / java / python / node / go / php",enum:["generic","java","python","node","go","php"]},command:{type:"string",description:"\u542F\u52A8\u547D\u4EE4\uFF08\u5FC5\u586B\uFF0C\u22648192 \u5B57\u7B26\uFF09\u3002\u652F\u6301\u5360\u4F4D\u7B26 ${WORKSPACE}\uFF08\u9879\u76EE\u5DE5\u4F5C\u533A\uFF09\u3001${JAVA_HOME}\uFF08\u6240\u9009 JDK\uFF09\u3001${VAR}\uFF08env \u4E2D\u5B9A\u4E49\u7684\u53D8\u91CF\uFF09\u3002\u793A\u4F8B\uFF1Anpm run dev\u3001python main.py\u3001mvn spring-boot:run"},cwd:{type:"string",description:"\u5DE5\u4F5C\u76EE\u5F55\uFF08\u5FC5\u586B\uFF0C\u2264512 \u5B57\u7B26\uFF09\u2014\u2014\u9879\u76EE\u5B9E\u9645\u4EE3\u7801/\u6784\u5EFA\u76EE\u5F55\u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u5982 D:/code/xxx/backend"},env:{type:"object",description:"\u989D\u5916\u73AF\u5883\u53D8\u91CF\uFF08\u53EF\u9009\uFF0C\u226464 \u9879\uFF09\uFF0C\u989D\u5916\u5C5E\u6027\uFF1A\u5B57\u7B26\u4E32\u503C",additionalProperties:{type:"string"}},jdkId:{type:"string",description:"\u9009\u4E2D\u7684 JDK ID\uFF08type=java \u65F6\u6709\u6548\uFF0C\u53EF\u9009\uFF09"},groupId:{type:"string",description:"\u6240\u5C5E\u542F\u52A8\u9879\u5206\u7EC4 ID\uFF08\u53EF\u9009\uFF0Cnull/\u7A7A=\u672A\u5206\u7EC4\uFF09"},sortOrder:{type:"number",description:"\u6392\u5E8F\u6743\u91CD\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4\u8FFD\u52A0\u5230\u6240\u5728\u5BB9\u5668\u672B\u5C3E\uFF09"},readinessPattern:{type:"string",description:'\u5C31\u7EEA\u65E5\u5FD7\u6B63\u5219\uFF08\u53EF\u9009\uFF0C\u2264512 \u5B57\u7B26\uFF0CJS RegExp \u8BED\u6CD5\uFF09\u3002\u8BBE\u7F6E\u540E wait_timeout_ms \u7B49\u5F85\u7684 ready \u4FE1\u53F7\u6539\u4E3A"\u8F93\u51FA\u884C\u547D\u4E2D\u8BE5\u6B63\u5219"\uFF08\u9002\u914D\u4E0D\u76D1\u542C\u7AEF\u53E3\u7684\u5E38\u9A7B\u8FDB\u7A0B\uFF0C\u5982 worker/\u6D88\u8D39\u8005\uFF09\u3002\u793A\u4F8B\uFF1A^Server ready|^Build (SUCCESS|successful)\u3002\u7559\u7A7A=\u7AEF\u53E3\u76D1\u542C\u63A2\u6D4B'}},required:["name","command","cwd"]}},D={name:"launch_config_update",description:"\u66F4\u65B0\u542F\u52A8\u9879\uFF08\u540D\u79F0/\u7C7B\u578B/\u547D\u4EE4/\u5DE5\u4F5C\u76EE\u5F55/\u73AF\u5883\u53D8\u91CF/JDK/\u5206\u7EC4/\u6392\u5E8F\uFF09\u3002\u672A\u4F20\u5B57\u6BB5\u4FDD\u6301\u539F\u503C\uFF1B\u4FEE\u6539\u540D\u79F0\u65F6\u9879\u76EE\u5185\u4E0D\u80FD\u91CD\u540D\u3002\u76EE\u6807\u542F\u52A8\u9879\u5FC5\u987B\u5C5E\u4E8E\u5F53\u524D\u9879\u76EE\uFF08\u670D\u52A1\u7AEF\u6821\u9A8C\uFF09\u3002\u8FD0\u884C\u4E2D\u7684\u542F\u52A8\u9879\uFF1A\u4FEE\u6539\u914D\u7F6E\u4E0D\u4F1A\u5F71\u54CD\u5DF2\u8FD0\u884C\u8FDB\u7A0B\uFF0C\u9700\u91CD\u542F\u540E\u751F\u6548\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5FC5\u586B\uFF09"},name:{type:"string",description:"\u542F\u52A8\u9879\u540D\u79F0\uFF08\u53EF\u9009\uFF0C\u2264128 \u5B57\u7B26\uFF09"},type:{type:"string",description:"\u542F\u52A8\u9879\u7C7B\u578B\uFF08\u53EF\u9009\uFF09\uFF1Ageneric / java / python / node / go / php",enum:["generic","java","python","node","go","php"]},command:{type:"string",description:"\u542F\u52A8\u547D\u4EE4\uFF08\u53EF\u9009\uFF0C\u22648192 \u5B57\u7B26\uFF09"},cwd:{type:"string",description:"\u5DE5\u4F5C\u76EE\u5F55\uFF08\u53EF\u9009\uFF09"},env:{type:"object",description:"\u989D\u5916\u73AF\u5883\u53D8\u91CF\uFF08\u53EF\u9009\uFF0C\u6574\u4F53\u8986\u76D6\u539F env\uFF09",additionalProperties:{type:"string"}},jdkId:{type:"string",description:"\u9009\u4E2D\u7684 JDK ID\uFF08type=java \u65F6\u6709\u6548\uFF0C\u53EF\u9009\uFF09"},groupId:{type:"string",description:"\u6240\u5C5E\u542F\u52A8\u9879\u5206\u7EC4 ID\uFF08\u53EF\u9009\uFF09"},clearGroupId:{type:"boolean",description:"\u663E\u5F0F\u6E05\u9664\u5206\u7EC4\uFF08\u79FB\u56DE\u9ED8\u8BA4\u5206\u7EC4\uFF0C\u53EF\u9009\uFF1B\u4E0D\u80FD\u4E0E groupId \u540C\u65F6\u4F20\uFF09"},sortOrder:{type:"number",description:"\u6392\u5E8F\u6743\u91CD\uFF08\u53EF\u9009\uFF09"},readinessPattern:{type:"string",description:"\u5C31\u7EEA\u65E5\u5FD7\u6B63\u5219\uFF08\u53EF\u9009\uFF0CJS RegExp \u8BED\u6CD5\uFF09\uFF1A\u8BBE\u7F6E\u540E\u542F\u52A8\u7B49\u5F85\u7684 ready \u4FE1\u53F7\u4E3A\u8F93\u51FA\u884C\u547D\u4E2D\u6B63\u5219\uFF08\u9002\u914D\u4E0D\u76D1\u542C\u7AEF\u53E3\u7684\u8FDB\u7A0B\uFF09\u3002\u7559\u7A7A=\u7AEF\u53E3\u76D1\u542C\u63A2\u6D4B"},clearReadinessPattern:{type:"boolean",description:"\u663E\u5F0F\u6E05\u9664\u5C31\u7EEA\u6B63\u5219\uFF0C\u6062\u590D\u7AEF\u53E3\u63A2\u6D4B\uFF08\u53EF\u9009\uFF1B\u4E0D\u80FD\u4E0E readinessPattern \u540C\u65F6\u4F20\uFF09"}},required:["configId"]}},k={name:"launch_config_delete",description:"\u5220\u9664\u542F\u52A8\u9879\u914D\u7F6E\u3002\u76EE\u6807\u542F\u52A8\u9879\u5FC5\u987B\u5C5E\u4E8E\u5F53\u524D\u9879\u76EE\uFF08\u670D\u52A1\u7AEF\u6821\u9A8C\uFF09\u3002\u6CE8\u610F\uFF1A\u82E5\u8BE5\u542F\u52A8\u9879\u6B63\u5728\u8FD0\u884C\uFF0C\u8BF7\u5148 launch_config_stop \u505C\u6B62\u8FDB\u7A0B\u518D\u5220\u9664\uFF08\u5220\u9664\u914D\u7F6E\u4E0D\u4F1A\u81EA\u52A8\u505C\u6B62\u5DF2\u8FD0\u884C\u8FDB\u7A0B\uFF09\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5FC5\u586B\uFF09"}},required:["configId"]}},j={name:"launch_config_start",description:"\u542F\u52A8\u542F\u52A8\u9879\uFF0C\u5728\u8C03\u7528\u8005\u6240\u5728 runtime-bridge \u673A\u5668\u4E0A\u62C9\u8D77\u8FDB\u7A0B\u3002\u652F\u6301\u5355\u9879\uFF08configId\uFF09\u4E0E\u6279\u91CF\uFF08configIds \u6570\u7EC4\uFF0C\u4E00\u6B21\u5E76\u884C\u62C9\u8D77\u591A\u4E2A\uFF09\uFF1A\u6279\u91CF\u65F6\u9010\u9879\u4EE5\u914D\u7F6E\u4E3A\u51C6\u5E76\u884C\u542F\u52A8\uFF0C\u5355\u9879\u5931\u8D25\u4E0D\u5F71\u54CD\u5176\u4F59\u9879\uFF0C\u8FD4\u56DE\u9010\u9879\u7ED3\u679C\u4E0E\u6C47\u603B\uFF08ready/exited/timeout/failed/skipped \u8BA1\u6570\uFF09\u3002\u82E5\u542F\u52A8\u9879\u5DF2\u5904\u4E8E\u8FD0\u884C/\u6B63\u5728\u542F\u52A8\u72B6\u6001\uFF08\u672A\u9000\u51FA/\u505C\u6B62\uFF09\uFF0C\u8C03\u7528\u4F1A\u8FD4\u56DE skipped=true\uFF08\u9644 message\u300C\u5F53\u524D\u5DF2\u5904\u4E8E\u542F\u52A8/\u6B63\u5728\u542F\u52A8\u72B6\u6001\uFF0C\u8DF3\u8FC7\u300D\u4E0E\u5F53\u524D run\uFF09\u800C\u975E\u62A5\u9519\uFF0C\u4E0D\u4F1A\u91CD\u590D\u62C9\u8D77\uFF0C\u4E5F\u65E0\u9700\u5148 launch_config_status \u786E\u8BA4\u3002\u9ED8\u8BA4\u4E0D\u7B49\u5F85\u7ACB\u5373\u8FD4\u56DE\uFF1B\u4F20 wait_timeout_ms > 0 \u65F6\u963B\u585E\u7B49\u5F85\u542F\u52A8\u7ED3\u679C\uFF08\u5355\u9879\u8FD4\u56DE wait \u5B57\u6BB5\uFF0C\u6279\u91CF\u5BF9\u6210\u529F\u62C9\u8D77\u9879\u5E76\u884C\u7B49\u5F85\u3001\u6574\u4F53\u8FD4\u56DE\u65F6\u95F4\u2248\u6700\u6162\u4E00\u9879\uFF1B\u88AB\u8DF3\u8FC7\u7684\u9879\u4E0D\u53C2\u4E0E\u7B49\u5F85\uFF09\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5355\u9879\u542F\u52A8\u65F6\u5FC5\u586B\uFF1B\u4E0E configIds \u4E8C\u9009\u4E00\uFF09"},configIds:{type:"array",items:{type:"string"},description:"\u6279\u91CF\u542F\u52A8\uFF1A\u542F\u52A8\u9879 ID \u6570\u7EC4\uFF081-20 \u4E2A\uFF0C\u81EA\u52A8\u53BB\u91CD\uFF1B\u4E0E configId \u4E8C\u9009\u4E00\uFF0C\u4F20\u4E86\u4F18\u5148\u8D70\u6279\u91CF\uFF09\u3002\u6279\u91CF\u6A21\u5F0F\u4EE5\u5404\u9879\u914D\u7F6E\u4E3A\u51C6\u542F\u52A8\uFF0C\u5FFD\u7565 command/cwd/env/readinessPattern \u8986\u76D6\u53C2\u6570\uFF1BworkspacePath/jdkPath \u4E0E wait_timeout_ms \u5BF9\u5168\u90E8\u9879\u751F\u6548"},command:{type:"string",description:"\u542F\u52A8\u547D\u4EE4\u8986\u76D6\uFF08\u53EF\u9009\uFF0C\u4EC5\u5355\u9879\u6A21\u5F0F\uFF09"},cwd:{type:"string",description:"\u5DE5\u4F5C\u76EE\u5F55\u8986\u76D6\uFF08\u53EF\u9009\uFF0C\u4EC5\u5355\u9879\u6A21\u5F0F\uFF09"},env:{type:"object",description:"\u73AF\u5883\u53D8\u91CF\u8986\u76D6\uFF08\u53EF\u9009\uFF0C\u6574\u4F53\u8986\u76D6\u914D\u7F6E env\uFF1B\u4EC5\u5355\u9879\u6A21\u5F0F\uFF09",additionalProperties:{type:"string"}},jdkPath:{type:"string",description:"JDK \u8DEF\u5F84\uFF08type=java \u65F6\u6709\u6548\uFF0C\u53EF\u9009\uFF1B\u5355\u9879=\u8BE5\u9879\u8986\u76D6\uFF0C\u6279\u91CF=\u5168\u90E8\u9879\u751F\u6548\uFF09"},workspacePath:{type:"string",description:"\u9879\u76EE\u5DE5\u4F5C\u533A\u8DEF\u5F84\uFF08\u53EF\u9009\uFF1B\u5355\u9879=\u8BE5\u9879\u8986\u76D6\uFF0C\u6279\u91CF=\u5168\u90E8\u9879\u751F\u6548\uFF09"},readinessPattern:{type:"string",description:"\u5C31\u7EEA\u65E5\u5FD7\u6B63\u5219\u8986\u76D6\uFF08\u53EF\u9009\uFF0C\u4EC5\u5355\u9879\u6A21\u5F0F\uFF0CJS RegExp \u8BED\u6CD5\uFF09\uFF1A\u8BBE\u7F6E\u540E\u542F\u52A8\u7B49\u5F85\u7684 ready \u4FE1\u53F7\u4E3A\u8F93\u51FA\u884C\u547D\u4E2D\u6B63\u5219\uFF08\u9002\u914D\u4E0D\u76D1\u542C\u7AEF\u53E3\u7684\u8FDB\u7A0B\uFF09\u3002\u7559\u7A7A=\u4EE5\u542F\u52A8\u9879\u914D\u7F6E\u4E3A\u51C6\uFF08\u9ED8\u8BA4\u7AEF\u53E3\u76D1\u542C\u63A2\u6D4B\uFF09"},wait_timeout_ms:{type:"number",description:"\u963B\u585E\u7B49\u5F85\u542F\u52A8\u7ED3\u679C\u7684\u8D85\u65F6\u6BEB\u79D2\u6570\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 0=\u4E0D\u7B49\u5F85\uFF0Cspawn \u540E\u7ACB\u5373\u8FD4\u56DE\uFF09\u3002>0 \u65F6\u672C\u6B21\u8C03\u7528\u963B\u585E\uFF0C\u76F4\u5230\u4EE5\u4E0B\u4FE1\u53F7\u6700\u5148\u5230\u8FBE\u5E76\u5728 wait \u5B57\u6BB5\u8FD4\u56DE\uFF1Aready=\u8FDB\u7A0B\u6811\u63A2\u6D4B\u5230\u76D1\u542C\u7AEF\u53E3\uFF08\u5E38\u9A7B\u670D\u52A1\u542F\u52A8\u6210\u529F\uFF0C\u9644 ports\uFF09\uFF0C\u6216\u8F93\u51FA\u884C\u547D\u4E2D\u5C31\u7EEA\u6B63\u5219\uFF08readinessPattern\uFF0C\u89C1\u4E0A\uFF09\uFF1Bexited=\u8FDB\u7A0B\u9000\u51FA\uFF08\u4E00\u6B21\u6027\u547D\u4EE4\u5B8C\u6210\u6216\u542F\u52A8\u5FEB\u901F\u5931\u8D25\uFF0CexitCode=0 \u4E3A\u6210\u529F\uFF0C\u975E 0 \u68C0\u67E5 logTail \u5B9A\u4F4D\u539F\u56E0\uFF09\uFF1Bstopped=\u7B49\u5F85\u671F\u95F4\u88AB\u505C\u6B62\uFF1Btimeout=\u8D85\u65F6\uFF0C\u8FDB\u7A0B\u4ECD\u5728\u8FD0\u884C\uFF08\u4E0D\u7B97\u9519\u8BEF\uFF0C\u6309 logTail \u81EA\u884C\u5224\u65AD\u6216\u7A0D\u540E launch_config_logs \u8F6E\u8BE2\uFF09\u3002\u4E0A\u9650 300000\uFF085 \u5206\u949F\uFF09\uFF0C\u6162\u542F\u52A8\u670D\u52A1\uFF08\u5982 Spring Boot\uFF09\u5EFA\u8BAE 60000-120000\u3002\u6279\u91CF\u6A21\u5F0F\u5BF9\u5168\u90E8\u6210\u529F\u9879\u5E76\u884C\u7B49\u5F85\uFF08\u6BCF\u9879\u72EC\u7ACB\u8BA1\u65F6\uFF09\u3002"}},required:[]}},q={name:"launch_config_restart",description:"\u91CD\u542F\u542F\u52A8\u9879\uFF08bridge \u5185\u539F\u5B50\u6267\u884C\u300C\u505C\u6B62\u65E7\u8FDB\u7A0B + \u91CD\u65B0\u62C9\u8D77\u300D\uFF0C\u4EE3\u7406\u5230\u8C03\u7528\u8005\u6240\u5728 runtime-bridge\uFF09\u3002\u76F8\u6BD4\u5148 launch_config_stop \u518D launch_config_start\uFF0C\u4E0D\u5B58\u5728 stop \u8BF7\u6C42\u4E22\u5931\u5BFC\u81F4 start \u649E\u4E0A\u4ECD\u5728\u8FD0\u884C\u65E7\u8FDB\u7A0B\u7684\u7ADE\u6001\u3002\u672A\u8FD0\u884C\u65F6\u7B49\u4EF7\u4E8E\u76F4\u63A5 start\u3002\u8986\u76D6\u53C2\u6570\uFF08command/cwd/env \u7B49\uFF09\u4E0E\u542F\u52A8\u7B49\u5F85\u8BED\u4E49\u540C launch_config_start\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5FC5\u586B\uFF09"},command:{type:"string",description:"\u542F\u52A8\u547D\u4EE4\u8986\u76D6\uFF08\u53EF\u9009\uFF09"},cwd:{type:"string",description:"\u5DE5\u4F5C\u76EE\u5F55\u8986\u76D6\uFF08\u53EF\u9009\uFF09"},env:{type:"object",description:"\u73AF\u5883\u53D8\u91CF\u8986\u76D6\uFF08\u53EF\u9009\uFF0C\u6574\u4F53\u8986\u76D6\u914D\u7F6E env\uFF09",additionalProperties:{type:"string"}},jdkPath:{type:"string",description:"JDK \u8DEF\u5F84\uFF08type=java \u65F6\u6709\u6548\uFF0C\u53EF\u9009\uFF09"},workspacePath:{type:"string",description:"\u9879\u76EE\u5DE5\u4F5C\u533A\u8DEF\u5F84\uFF08\u53EF\u9009\uFF09"},readinessPattern:{type:"string",description:"\u5C31\u7EEA\u65E5\u5FD7\u6B63\u5219\u8986\u76D6\uFF08\u53EF\u9009\uFF0CJS RegExp \u8BED\u6CD5\uFF09\uFF1A\u8BBE\u7F6E\u540E\u65B0\u8FDB\u7A0B\u542F\u52A8\u7B49\u5F85\u7684 ready \u4FE1\u53F7\u4E3A\u8F93\u51FA\u884C\u547D\u4E2D\u6B63\u5219\u3002\u7559\u7A7A=\u4EE5\u542F\u52A8\u9879\u914D\u7F6E\u4E3A\u51C6\uFF08\u9ED8\u8BA4\u7AEF\u53E3\u76D1\u542C\u63A2\u6D4B\uFF09"},wait_timeout_ms:{type:"number",description:"\u963B\u585E\u7B49\u5F85\u65B0\u8FDB\u7A0B\u542F\u52A8\u7ED3\u679C\u7684\u8D85\u65F6\u6BEB\u79D2\u6570\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 0=\u4E0D\u7B49\u5F85\uFF09\u3002\u8BED\u4E49\u540C launch_config_start\uFF1Aready=\u7AEF\u53E3\u5C31\u7EEA\u6216\u65E5\u5FD7\u547D\u4E2D\u5C31\u7EEA\u6B63\u5219 / exited=\u8FDB\u7A0B\u9000\u51FA / timeout=\u8D85\u65F6\uFF08\u8FDB\u7A0B\u4ECD\u5728\u8FD0\u884C\uFF0C\u975E\u9519\u8BEF\uFF09\u3002"}},required:["configId"]}},F={name:"launch_config_stop",description:"\u505C\u6B62\u542F\u52A8\u9879\u8FDB\u7A0B\uFF08\u542B\u8FDB\u7A0B\u6811\uFF0C\u4EE3\u7406\u5230\u8C03\u7528\u8005\u6240\u5728 runtime-bridge\uFF09\u3002\u76EE\u6807\u542F\u52A8\u9879\u5FC5\u987B\u5C5E\u4E8E\u5F53\u524D\u9879\u76EE\uFF08\u670D\u52A1\u7AEF\u6821\u9A8C\uFF09\u3002\u82E5\u8FDB\u7A0B\u5DF2\u9000\u51FA\uFF0C\u8FD4\u56DE\u5DF2\u505C\u6B62/\u65E0\u8FD0\u884C\u8FDB\u7A0B\u7684\u72B6\u6001\uFF0C\u4E0D\u62A5\u9519\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5FC5\u586B\uFF09"}},required:["configId"]}},G={name:"launch_config_logs",description:"\u589E\u91CF\u62C9\u53D6\u542F\u52A8\u9879\u8FD0\u884C\u65E5\u5FD7\uFF08\u6700\u8FD1 200 \u6761\u73AF\u5F62\u7F13\u51B2\uFF0C\u4EE3\u7406\u5230\u8C03\u7528\u8005\u6240\u5728 runtime-bridge\uFF09\u3002\u9996\u6B21\u8C03\u7528\u4E0D\u4F20 since \u83B7\u53D6\u5168\u90E8\u7F13\u51B2\u65E5\u5FD7\uFF1B\u540E\u7EED\u6BCF\u6B21\u628A\u8FD4\u56DE\u7684 nextSince \u4F5C\u4E3A since \u7EED\u62C9\u589E\u91CF\u3002\u8FD4\u56DE\u5B57\u6BB5\uFF1Alines\uFF08\u65E5\u5FD7\u884C\uFF09\u3001nextSince\uFF08\u4E0B\u6B21\u6E38\u6807\uFF09\u3001running\uFF08\u8FDB\u7A0B\u662F\u5426\u8FD0\u884C\u4E2D\uFF09\u3002\u76EE\u6807\u542F\u52A8\u9879\u5FC5\u987B\u5C5E\u4E8E\u5F53\u524D\u9879\u76EE\uFF08\u670D\u52A1\u7AEF\u6821\u9A8C\uFF09\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5FC5\u586B\uFF09"},since:{type:"number",description:"\u65E5\u5FD7\u6E38\u6807\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 0 = \u4ECE\u5934\u62C9\u53D6\uFF09"}},required:["configId"]}},U={name:"launch_config_status",description:"\u67E5\u8BE2\u8C03\u7528\u8005\u6240\u5728 bridge \u673A\u5668\u4E0A\u5F53\u524D\u9879\u76EE\u7684\u5168\u90E8\u542F\u52A8\u9879\u8FD0\u884C\u72B6\u6001\u3002\u8FD4\u56DE runs \u6570\u7EC4\uFF1A\u6BCF\u9879\u542B configId\u3001status\uFF08running/exited/stopped\uFF09\u3001pid\u3001startTime\u3001command \u7B49\u3002\u4EC5\u8FD4\u56DE\u5F53\u524D\u9879\u76EE\u914D\u7F6E\u7684\u542F\u52A8\u9879\uFF08\u670D\u52A1\u7AEF\u6309\u9879\u76EE\u8FC7\u6EE4\uFF09\u3002",inputSchema:{type:"object",properties:{},required:[]}},Ye=new Set(["launch_config_list","launch_config_create","launch_config_update","launch_config_delete","launch_config_start","launch_config_restart","launch_config_stop","launch_config_logs","launch_config_status"]),ze=new Set(["hire_colleague"]),H={name:"create_meeting",description:"\u521B\u5EFA\u65B0\u4F1A\u8BAE\u5E76\u9080\u8BF7\u6307\u5B9A\u89D2\u8272\uFF08\u542B Agent \u5B9E\u4F8B\uFF09\u3002\u6210\u5458\u5168\u90E8\u5230\u4F4D\u540E\u4F1A\u8BAE\u5F00\u59CB\uFF0C\u968F\u540E\u4F7F\u7528 meeting_speak \u53D1\u8A00 / poll_message \u7B49\u5F85\u5176\u5B83\u7528\u6237\u53D1\u8A00 / end_meeting \u7ED3\u675F\u4F1A\u8BAE\u3002\u963B\u585E\u578B\u5DE5\u5177\uFF1A\u5168\u5458\u5230\u4F4D\u6216\u7B49\u5F85\u8D85\u65F6\u540E\u624D\u8FD4\u56DE\u3002\u6301\u6709\u8FDB\u884C\u4E2D\u6D41\u7A0B\u4EFB\u52A1\u65F6\u540C\u6837\u53EF\u4EE5\u521B\u5EFA\u4F1A\u8BAE\uFF08\u4F8B\u5982\u4EFB\u52A1\u672C\u8EAB\u8981\u6C42\u5F00\u4F1A\u8BA8\u8BBA/\u534F\u8C03\u7684\u573A\u666F\uFF09\uFF0C\u4E0D\u4F1A\u88AB\u4EFB\u52A1\u62E6\u622A\uFF1B\u8FDB\u5165\u4F1A\u8BAE\u540E\u4EFB\u52A1\u63D0\u9192\u6682\u505C\uFF0C\u4F1A\u8BAE\u7ED3\u675F\u540E\u81EA\u52A8\u6062\u590D\u3002",inputSchema:{type:"object",properties:{topic:{type:"string",description:"\u4F1A\u8BAE\u4E3B\u9898\uFF08\u5FC5\u586B\uFF09"},description:{type:"string",description:"\u4F1A\u8BAE\u63CF\u8FF0\uFF08\u53EF\u9009\uFF09"},members:{type:"array",description:"\u53D7\u9080\u6210\u5458\uFF1A[{roleId, agentId?}, ...]\uFF0CagentId \u672A\u6307\u5B9A\u65F6\u670D\u52A1\u7AEF\u6309\u89D2\u8272\u81EA\u52A8\u9009\u53D6\u5B9E\u4F8B",items:{type:"object",properties:{roleId:{type:"string",description:"\u89D2\u8272 id\uFF08\u5FC5\u586B\uFF09"},agentId:{type:"string",description:"Agent \u5B9E\u4F8B id\uFF08\u53EF\u9009\uFF09"}},required:["roleId"]}},waitTimeoutMs:{type:"number",description:"\u7B49\u5F85\u5168\u5458\u5230\u4F4D\u7684\u8D85\u65F6\u65F6\u957F\uFF08\u6BEB\u79D2\uFF0C\u53EF\u9009\uFF0C\u9ED8\u8BA4/\u4E0A\u9650 270000\uFF09\u3002\u8D85\u65F6\u8FD4\u56DE WAITING \u72B6\u6001\u800C\u975E\u9519\u8BEF\uFF0C\u53EF\u7EE7\u7EED poll_message \u7B49\u5F85\u5168\u5458\u5230\u4F4D"}},required:["topic","members"]}},B={name:"leave_meeting",description:"\u9000\u51FA\u5F53\u524D\u52A0\u5165\u7684\u4F1A\u8BAE\u3002\u5DF2\u52A0\u5165\u6210\u5458\u6B63\u5F0F\u9000\u51FA\uFF1B\u672A\u52A0\u5165\u6210\u5458\u8C03\u7528\u89C6\u4E3A\u5A49\u62D2\u9080\u8BF7\u3002",inputSchema:{type:"object",properties:{meetingId:{type:"string",description:"\u4F1A\u8BAE ID\uFF08\u5FC5\u586B\uFF09"}},required:["meetingId"]}},W={name:"end_meeting",description:"\u7ED3\u675F\u6307\u5B9A\u4F1A\u8BAE\uFF08\u4EC5\u4F1A\u8BAE\u521B\u5EFA\u8005\u53EF\u8C03\u7528\uFF09\u3002\u7ED3\u675F\u540E\u6210\u5458\u53EF\u4F7F\u7528 get_meeting_info \u67E5\u770B\u5386\u53F2\u53D1\u8A00\u3002",inputSchema:{type:"object",properties:{meetingId:{type:"string",description:"\u4F1A\u8BAE ID\uFF08\u5FC5\u586B\uFF09"}},required:["meetingId"]}},V={name:"meeting_speak",description:"\u5411\u6D3B\u8DC3\u4F1A\u8BAE\u53D1\u8A00\uFF08\u4EC5\u5DF2\u52A0\u5165\u4E14\u4F1A\u8BAE\u5DF2 STARTED \u7684\u6210\u5458\u53EF\u7528\uFF09\u3002\u53D1\u8A00\u5B9E\u65F6\u5E7F\u64AD\u7ED9\u6240\u6709\u53C2\u4F1A\u6210\u5458\u3002",inputSchema:{type:"object",properties:{meetingId:{type:"string",description:"\u4F1A\u8BAE ID\uFF08\u5FC5\u586B\uFF09"},content:{type:"string",description:"\u53D1\u8A00\u5185\u5BB9\uFF08\u5FC5\u586B\uFF09"}},required:["meetingId","content"]}},Y={name:"get_meeting_info",description:"\u83B7\u53D6\u4F1A\u8BAE\u4FE1\u606F JSON\uFF1A\u4E3B\u9898/\u63CF\u8FF0/\u72B6\u6001/\u6210\u5458\u5217\u8868\uFF08\u521B\u5EFA\u4EBA\u6807\u6CE8 isCreator\uFF09/\u6700\u8FD1\u53D1\u8A00\u8BB0\u5F55\u3002\u53EF\u7528\u4E8E\u67E5\u770B\u81EA\u5DF1\u521B\u5EFA\u7684\u4F1A\u8BAE\u8FDB\u5EA6\u6216\u5DF2\u52A0\u5165\u4F1A\u8BAE\u7684\u8BE6\u60C5\u3002",inputSchema:{type:"object",properties:{meetingId:{type:"string",description:"\u4F1A\u8BAE ID\uFF08\u5FC5\u586B\uFF09"}},required:["meetingId"]}},z={name:"my_meetings",description:"\u67E5\u770B\u4E0E\u6211\u76F8\u5173\u7684\u4F1A\u8BAE\u5217\u8868\uFF08\u65E0\u9700 meetingId\uFF09\uFF1Aactive=\u5DF2\u52A0\u5165\u7684\u8FDB\u884C\u4E2D\u4F1A\u8BAE\uFF1Binvited=\u53D7\u9080\u5C1A\u672A\u52A0\u5165\u7684\u4F1A\u8BAE\u3002\u6BCF\u4E2A\u4F1A\u8BAE\u542B meetingId/\u4E3B\u9898/\u72B6\u6001/\u6210\u5458\u5230\u4F4D\u60C5\u51B5\uFF0C\u53EF\u5148\u7528\u672C\u5DE5\u5177\u83B7\u53D6 meetingId \u518D\u8C03\u7528 get_meeting_info\u3002\u52A0\u5165\u4F1A\u8BAE\u4E0D\u9700\u8981\u624B\u52A8\u5DE5\u5177\uFF1A\u53D7\u9080\u540E\u5C06\u5728 poll_message \u65F6\u81EA\u52A8\u52A0\u5165\u3002",inputSchema:{type:"object",properties:{},required:[]}},Ke=new Set(["create_meeting","leave_meeting","end_meeting","meeting_speak","get_meeting_info","my_meetings"]),Je=new Set(["my_task","list_task_node_iterations","submit_task_result","start_task_rollback","finish_task_rollback","create_task_instance_comment"]),Xe=new Set(["get_debug_log_config","query_debug_logs"]),$e=new Set(["query_file_changes_history"]),K={name:"pencil_create_document",description:"\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684\u8BBE\u8BA1\u753B\u5E03\u6587\u6863\uFF08\u7A7A\u767D\u5355\u9875\uFF09\u3002\u521B\u5EFA\u540E\u7528 pencil_open_document \u6253\u5F00\u5E76\u5728 dashboard \u9762\u677F\u6E32\u67D3\uFF0C\u518D\u7528 pencil_create_nodes \u6DFB\u52A0\u56FE\u5F62\u3002",inputSchema:{type:"object",properties:{name:{type:"string",description:"\u753B\u5E03\u540D\u79F0\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4\u300C\u672A\u547D\u540D\u753B\u5E03\u300D\uFF09"}},required:[]}},J={name:"pencil_list_documents",description:"\u5217\u51FA\u5F53\u524D Agent \u7684\u6240\u6709\u8BBE\u8BA1\u753B\u5E03\u6587\u6863\uFF08\u672C\u5730 + \u88AB\u9080\u8BF7\u534F\u4F5C\u7684\u6258\u7BA1\u753B\u5E03\uFF0C\u9644 permission \u4E0E shared \u6807\u8BB0\uFF09\u3002",inputSchema:{type:"object",properties:{},required:[]}},X={name:"pencil_open_document",description:"\u6253\u5F00\u4E00\u4E2A\u8BBE\u8BA1\u753B\u5E03\u6587\u6863\uFF08dashboard \u5C06\u5728\u753B\u5E03\u9762\u677F\u6E32\u67D3\u5B83\uFF0Cagent \u884C\u4E0A\u65B9\u51FA\u73B0\u753B\u5E03\u6807\u8BB0\uFF09\u3002docId \u6765\u81EA pencil_create_document \u6216 pencil_list_documents\uFF1B\u88AB\u9080\u8BF7\u534F\u4F5C\u7684\u753B\u5E03\u4E5F\u5728\u5217\u8868\u4E2D\uFF08shared=true\uFF0C\u9644\u672C\u4EBA permission\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"}},required:["docId"]}},$={name:"pencil_close_document",description:"\u5173\u95ED\u8BBE\u8BA1\u753B\u5E03\u9762\u677F\uFF08\u4EC5\u6536\u8D77 dashboard \u9762\u677F\uFF0C\u4E0D\u5F71\u54CD\u5FBD\u6807\u8BA1\u6570\uFF0C\u6587\u6863\u4FDD\u7559\uFF0C\u53EF\u968F\u65F6 pencil_open_document \u91CD\u65B0\u6253\u5F00\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"}},required:["docId"]}},Q={name:"pencil_get_tree",description:"\u8BFB\u53D6\u753B\u5E03\u7684\u8282\u70B9\u6811\u6458\u8981\uFF08id/\u7C7B\u578B/\u540D\u79F0/\u51E0\u4F55\u4F4D\u7F6E\uFF0C\u542B\u6587\u672C\u5185\u5BB9\u622A\u65AD\uFF0C\u8FD4\u56DE truncated \u6807\u8BB0\u662F\u5426\u88AB\u622A\u65AD\uFF09\u3002\u7528\u4E8E\u5728\u521B\u5EFA/\u4FEE\u6539\u524D\u4E86\u89E3\u753B\u5E03\u73B0\u72B6\uFF1B\u8FD4\u56DE\u7684 version \u53EF\u4F5C\u4E3A expectedVersion \u4E50\u89C2\u9501\u4F20\u5165\u5199\u5DE5\u5177\u3002\u6811\u4E2D\u5B50\u8282\u70B9\u7684 x/y \u4E3A\u76F8\u5BF9\u7236\u8282\u70B9\u7684\u5C40\u90E8\u5750\u6807\uFF08\u4E0E pencil_create_nodes \u4E00\u81F4\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"}},required:["docId"]}},Z={name:"pencil_get_changes",description:"\u8FFD\u8D76\u534F\u4F5C\u753B\u5E03\u81EA sinceVersion \u4EE5\u6765\u7684\u53D8\u66F4\uFF08\u9010\u7248\u672C\u6458\u8981\uFF1A\u8C01\u6539\u7684\u3001\u65B0\u589E/\u66F4\u65B0/\u5220\u9664\u4E86\u54EA\u4E9B\u8282\u70B9\u53CA\u65B0\u503C\uFF09\u3002\u6536\u5230\u300C\u8BBE\u8BA1\u753B\u5E03\u53D8\u66F4\u300D\u7CFB\u7EDF\u901A\u77E5\u540E\u8C03\u7528\uFF1Btruncated=true \u8868\u793A\u53D8\u66F4\u65E5\u5FD7\u5DF2\u88AB\u4FEE\u526A\uFF0C\u8BF7\u6539\u7528 pencil_open_document \u5168\u91CF\u91CD\u8BFB\u3002\u8BF7\u628A\u8FD4\u56DE\u7684 toVersion \u8BB0\u4E3A\u8BE5\u753B\u5E03\u4F60\u5DF2\u770B\u5230\u7684\u6700\u65B0\u7248\u672C\uFF1A\u540E\u7EED\u5199\u5DE5\u5177\u4F20\u5B83\u4F5C expectedVersion \u4E50\u89C2\u9501\uFF0C\u4E0B\u6B21\u8FFD\u8D76\u4F20\u5B83\u4F5C sinceVersion\u3002\u4F60\u4E0A\u6B21\u770B\u5230\u7684\u7248\u672C\u6765\u81EA\u9080\u8BF7\u901A\u77E5\u7684 version \u6216\u672C\u5DE5\u5177\u4E0A\u6B21\u8FD4\u56DE\u7684 toVersion\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"},sinceVersion:{type:"number",description:"\u4F60\u5DF2\u770B\u5230\u7684\u6700\u65B0\u753B\u5E03\u7248\u672C\uFF08\u7F3A\u7701 0 = \u4ECE\u5934\u8FFD\u8D76\uFF1B\u4F20\u5165\u9080\u8BF7\u901A\u77E5/\u4E0A\u4E00\u6B21\u8FFD\u8D76\u8FD4\u56DE\u7684\u7248\u672C\u53EF\u53EA\u62FF\u589E\u91CF\uFF09"}},required:["docId"]}},ee={name:"pencil_create_nodes",description:'\u5728\u8BBE\u8BA1\u753B\u5E03\u4E2D\u521B\u5EFA\u8282\u70B9\uFF08\u4E00\u6B21\u53EF\u521B\u5EFA\u591A\u4E2A\u3001\u4E0A\u9650 500 \u4E2A\uFF0C\u652F\u6301 frame/rect/ellipse/text/line/image\uFF09\u3002\u989C\u8272\u7528\u5341\u516D\u8FDB\u5236\uFF08#RRGGBB / #RRGGBBAA / none\uFF09\u3002\u5750\u6807\u7CFB\uFF1Ax/y \u4E3A\u76F8\u5BF9 parentId \u7684\u5C40\u90E8\u5750\u6807\u2014\u2014parentId \u7F3A\u7701\uFF08\u6302\u5230\u9875\u9762\uFF09\u65F6\u662F\u9875\u9762\u5750\u6807\uFF08\u5DE6\u4E0A\u89D2\u539F\u70B9\uFF09\uFF0C\u5D4C\u5957\u5230 frame \u5185\u65F6\u4ECE\u8BE5 frame \u7684\u5DE6\u4E0A\u89D2\u8D77\u7B97\u3002image \u7C7B\u578B\uFF1A\u4F20 type="image" + imageData\uFF08base64 \u7F16\u7801\u7684\u56FE\u7247\uFF09+ width/height\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 200\uFF09\uFF0C\u670D\u52A1\u7AEF\u81EA\u52A8\u521B\u5EFA\u77E9\u5F62\u8282\u70B9\u5E76\u5185\u5D4C\u56FE\u7247\u3002',inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"},parentId:{type:"string",description:"\u7236\u8282\u70B9 id\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4\u753B\u5E03\u7B2C\u4E00\u4E2A\u9875\u9762\uFF1B\u53EF\u4F20 frame \u8282\u70B9 id \u5B9E\u73B0\u5D4C\u5957\uFF0C\u6B64\u65F6 x/y \u76F8\u5BF9\u8BE5 frame\uFF09"},nodes:{type:"array",description:"\u8282\u70B9\u89C4\u683C\u6570\u7EC4",items:{type:"object",properties:{type:{type:"string",description:"frame | rect | ellipse | text | line | image"},name:{type:"string",description:"\u8282\u70B9\u540D\u79F0\uFF08\u53EF\u9009\uFF09"},x:{type:"number",description:"X \u5750\u6807\uFF08\u76F8\u5BF9 parentId \u5C40\u90E8\u5750\u6807\uFF09"},y:{type:"number",description:"Y \u5750\u6807\uFF08\u76F8\u5BF9 parentId \u5C40\u90E8\u5750\u6807\uFF09"},width:{type:"number",description:"\u5BBD\u5EA6\uFF08line \u9ED8\u8BA4 100\uFF1Bimage \u9ED8\u8BA4 200\uFF09"},height:{type:"number",description:"\u9AD8\u5EA6\uFF08line \u9ED8\u8BA4 0\uFF1Bimage \u9ED8\u8BA4 200\uFF09"},fill:{type:"string",description:"\u586B\u5145\u8272\u5341\u516D\u8FDB\u5236\uFF08\u5982 #4F8EF7\uFF0Cnone \u8868\u793A\u65E0\u586B\u5145\uFF09"},stroke:{type:"string",description:"\u63CF\u8FB9\u8272\u5341\u516D\u8FDB\u5236\uFF08\u53EF\u9009\uFF09"},strokeWeight:{type:"number",description:"\u63CF\u8FB9\u7C97\u7EC6\uFF08\u9ED8\u8BA4 1\uFF09"},cornerRadius:{type:"number",description:"\u5706\u89D2\u534A\u5F84"},opacity:{type:"number",description:"\u4E0D\u900F\u660E\u5EA6 0-1"},rotation:{type:"number",description:"\u65CB\u8F6C\u89D2\u5EA6"},visible:{type:"boolean",description:"\u662F\u5426\u53EF\u89C1\uFF08\u9ED8\u8BA4 true\uFF09"},imageData:{type:"string",description:"\u56FE\u7247 base64 \u7F16\u7801\uFF08type=image \u5FC5\u586B\uFF0C\u5982 data:image/png;base64,... \u6216\u88F8 base64\uFF09"},imageScaleMode:{type:"string",description:"\u56FE\u7247\u7F29\u653E\u6A21\u5F0F\uFF08type=image \u4F7F\u7528\uFF0C\u679A\u4E3E\uFF1AFILL / FIT / CROP / TILE\uFF0C\u9ED8\u8BA4 FILL\uFF09"},text:{type:"string",description:"text \u8282\u70B9\u7684\u6587\u672C\u5185\u5BB9"},fontSize:{type:"number",description:"\u5B57\u53F7\uFF08\u9ED8\u8BA4 14\uFF09"},fontWeight:{type:"number",description:"\u5B57\u91CD\uFF08\u9ED8\u8BA4 400\uFF09"},fontFamily:{type:"string",description:"\u5B57\u4F53\uFF08\u9ED8\u8BA4 Inter\uFF09"},fontColor:{type:"string",description:"\u6587\u672C\u989C\u8272\uFF08\u9ED8\u8BA4\u9ED1\uFF09"}},required:["type"]}},expectedVersion:{type:"number",description:"\u53EF\u9009\u4E50\u89C2\u9501\uFF1A\u4F20\u5165\u6700\u8FD1\u4E00\u6B21 pencil_get_tree / \u5199\u5DE5\u5177\u8FD4\u56DE\u7684 version\u3002\u753B\u5E03\u5728\u6B64\u671F\u95F4\u88AB\u4EBA\u6216\u5176\u4ED6 Agent \u4FEE\u6539\u65F6\u8FD4\u56DE\u7248\u672C\u51B2\u7A81\uFF08\u800C\u975E\u9759\u9ED8\u8986\u76D6\u5BF9\u65B9\u6539\u52A8\uFF09\uFF1B\u591A\u4EBA/\u591A Agent \u534F\u4F5C\u7F16\u8F91\u65F6\u5EFA\u8BAE\u4F20\u5165"}},required:["docId","nodes"]}},te={name:"pencil_update_nodes",description:"\u6279\u91CF\u66F4\u65B0\u753B\u5E03\u8282\u70B9\u5C5E\u6027\uFF08\u51E0\u4F55/\u586B\u5145/\u6587\u672C/\u900F\u660E\u5EA6/\u53EF\u89C1\u6027/\u540D\u79F0\u7B49\uFF09\u3002id \u53EF\u901A\u8FC7 pencil_get_tree \u83B7\u5F97\u3002\u4EC5\u652F\u6301\u767D\u540D\u5355\u5B57\u6BB5\uFF0C\u672A\u77E5\u5B57\u6BB5\u4F1A\u88AB\u62D2\u7EDD\uFF1Bid/parentId/childIds \u4E0D\u53EF\u901A\u8FC7\u672C\u5DE5\u5177\u4FEE\u6539\u3002image \u7C7B\u578B\u8282\u70B9\u53EF\u7528 imageScaleMode \u8C03\u6574\u56FE\u7247\u7F29\u653E\u6A21\u5F0F\uFF08FILL/FIT/CROP/TILE\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"},updates:{type:"array",description:"\u66F4\u65B0\u5217\u8868",items:{type:"object",properties:{id:{type:"string",description:"\u8282\u70B9 id"},props:{type:"object",description:"\u8981\u66F4\u65B0\u7684\u5C5E\u6027\uFF0C\u4EC5\u652F\u6301\u8FD9\u4E9B\u5B57\u6BB5\uFF08\u5176\u4ED6\u5B57\u6BB5\u4F1A\u88AB\u62D2\u7EDD\uFF09\uFF1Ax / y / width / height / rotation / opacity / visible / name / fill / stroke / strokeWeight / cornerRadius / text / fontSize / fontWeight / fontFamily / fontColor / imageData / imageScaleMode"}},required:["id","props"]}},expectedVersion:{type:"number",description:"\u53EF\u9009\u4E50\u89C2\u9501\uFF1A\u4F20\u5165\u6700\u8FD1\u4E00\u6B21 pencil_get_tree / \u5199\u5DE5\u5177\u8FD4\u56DE\u7684 version\u3002\u753B\u5E03\u5728\u6B64\u671F\u95F4\u88AB\u4EBA\u6216\u5176\u4ED6 Agent \u4FEE\u6539\u65F6\u8FD4\u56DE\u7248\u672C\u51B2\u7A81\uFF08\u800C\u975E\u9759\u9ED8\u8986\u76D6\u5BF9\u65B9\u6539\u52A8\uFF09\uFF1B\u591A\u4EBA/\u591A Agent \u534F\u4F5C\u7F16\u8F91\u65F6\u5EFA\u8BAE\u4F20\u5165"}},required:["docId","updates"]}},ie={name:"pencil_delete_nodes",description:"\u6279\u91CF\u5220\u9664\u753B\u5E03\u8282\u70B9\uFF08\u542B\u5176\u5168\u90E8\u5B50\u8282\u70B9\uFF09\u3002root/\u9875\u9762\u8282\u70B9\u4E0D\u53EF\u5220\u9664\u3002\u5220\u9664\u6574\u4E2A\u753B\u5E03\u7528 pencil_delete_document\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"},ids:{type:"array",items:{type:"string"},description:"\u8981\u5220\u9664\u7684\u8282\u70B9 id \u5217\u8868"},expectedVersion:{type:"number",description:"\u53EF\u9009\u4E50\u89C2\u9501\uFF1A\u4F20\u5165\u6700\u8FD1\u4E00\u6B21 pencil_get_tree / \u5199\u5DE5\u5177\u8FD4\u56DE\u7684 version\u3002\u753B\u5E03\u5728\u6B64\u671F\u95F4\u88AB\u4EBA\u6216\u5176\u4ED6 Agent \u4FEE\u6539\u65F6\u8FD4\u56DE\u7248\u672C\u51B2\u7A81\uFF08\u800C\u975E\u9759\u9ED8\u8986\u76D6\u5BF9\u65B9\u6539\u52A8\uFF09\uFF1B\u591A\u4EBA/\u591A Agent \u534F\u4F5C\u7F16\u8F91\u65F6\u5EFA\u8BAE\u4F20\u5165"}},required:["docId","ids"]}},re={name:"pencil_delete_document",description:"\u5220\u9664\u6574\u4E2A\u8BBE\u8BA1\u753B\u5E03\u6587\u6863\uFF08\u4EC5\u753B\u5E03\u62E5\u6709\u8005\u53EF\u8C03\u7528\uFF0C\u4E0D\u53EF\u6062\u590D\uFF1A\u6587\u6863\u3001\u5168\u90E8\u8282\u70B9\u4E0E\u534F\u4F5C\u8005\u4E00\u5E76\u6E05\u9664\uFF09\u3002\u7528\u4E8E\u6E05\u7406\u4E0D\u518D\u9700\u8981\u7684\u753B\u5E03\uFF1B\u53EA\u5220\u9664\u753B\u5E03\u91CC\u7684\u90E8\u5206\u8282\u70B9\u7528 pencil_delete_nodes\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"}},required:["docId"]}},ne={name:"pencil_rename_document",description:"\u91CD\u547D\u540D\u8BBE\u8BA1\u753B\u5E03\uFF08ACL write \u53EF\u8C03\u7528\uFF1A\u62E5\u6709\u8005\u6216 permission=write \u6210\u5458\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"},name:{type:"string",description:"\u65B0\u7684\u753B\u5E03\u540D\u79F0"},expectedVersion:{type:"number",description:"\u53EF\u9009\u4E50\u89C2\u9501\uFF1A\u4F20\u5165\u6700\u8FD1\u4E00\u6B21 pencil_get_tree / \u5199\u5DE5\u5177\u8FD4\u56DE\u7684 version\u3002\u753B\u5E03\u5728\u6B64\u671F\u95F4\u88AB\u4EBA\u6216\u5176\u4ED6 Agent \u4FEE\u6539\u65F6\u8FD4\u56DE\u7248\u672C\u51B2\u7A81\uFF08\u800C\u975E\u9759\u9ED8\u8986\u76D6\u5BF9\u65B9\u6539\u52A8\uFF09"}},required:["docId","name"]}},oe={name:"pencil_share_document",description:"\u5C06\u8BBE\u8BA1\u753B\u5E03\u5206\u4EAB\u7ED9\u5176\u5B83 Agent \u534F\u4F5C\uFF08\u6BCF\u4F4D\u88AB\u9080\u8BF7\u4EBA\u6307\u5B9A read=\u53EA\u8BFB \u6216 write=\u53EF\u5199\uFF09\u3002\u88AB\u9080\u8BF7\u4EBA\u5FC5\u987B\u5DF2\u5F00\u542F\u300C\u8BBE\u8BA1\u753B\u5E03 (Pencil)\u300D\u80FD\u529B\uFF0C\u5426\u5219\u5206\u4EAB\u4F1A\u88AB\u6574\u4F53\u62D2\u7EDD\u3002\u5206\u4EAB\u540E\u53CC\u65B9\u7EE7\u7EED\u7528 pencil_get_tree / pencil_update_nodes \u7B49\u5DE5\u5177\u534F\u4F5C\uFF1B\u88AB\u9080\u8BF7\u4EBA\u4F1A\u6536\u5230\u9080\u8BF7\u901A\u77E5\u3002\u64A4\u9500\u5206\u4EAB\u914D\u5BF9\u4F7F\u7528 pencil_revoke_share\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u8981\u5206\u4EAB\u7684\u753B\u5E03\u6587\u6863 id\uFF08\u987B\u4E3A\u672C Agent \u521B\u5EFA\u7684\u753B\u5E03\uFF09"},members:{type:"array",description:"\u88AB\u9080\u8BF7\u4EBA\u5217\u8868",items:{type:"object",properties:{agentId:{type:"string",description:"\u88AB\u9080\u8BF7 Agent \u7684\u5B9E\u4F8B id"},permission:{type:"string",enum:["read","write"],description:"\u534F\u4F5C\u6743\u9650\uFF1Aread=\u53EA\u8BFB\u67E5\u770B\uFF0Cwrite=\u53EF\u7F16\u8F91\uFF08\u7F3A\u7701 read\uFF09"}},required:["agentId"]}}},required:["docId","members"]}},pe={name:"pencil_revoke_share",description:"\u64A4\u9500\u753B\u5E03\u5206\u4EAB\uFF08\u4EC5\u753B\u5E03\u62E5\u6709\u8005\u53EF\u8C03\u7528\uFF0C\u4E0E pencil_share_document \u914D\u5BF9\u4F7F\u7528\uFF09\u3002agentIds \u7701\u7565\u65F6\u6574\u4F53\u64A4\u9500\uFF0C\u753B\u5E03\u56DE\u5230\u4EC5\u672C Agent \u79C1\u6709\uFF1B\u63D0\u4F9B agentIds \u65F6\u4EC5\u79FB\u9664\u6307\u5B9A\u534F\u4F5C\u8005\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"},agentIds:{type:"array",items:{type:"string"},description:"\u8981\u79FB\u9664\u7684\u534F\u4F5C\u8005 agentId \u5217\u8868\uFF08\u7701\u7565 = \u6574\u4F53\u64A4\u9500\u5206\u4EAB\uFF09"}},required:["docId"]}},se={name:"pencil_export_image",description:"\u5BFC\u51FA\u8BBE\u8BA1\u753B\u5E03\u4E3A PNG \u56FE\u7247\u5230\u6587\u4EF6\u5E76\u8FD4\u56DE\u6587\u4EF6\u8DEF\u5F84\u7B49\u5143\u4FE1\u606F\uFF08\u4E0D\u8FD4\u56DE\u56FE\u7247\u5185\u5BB9\uFF0C\u907F\u514D\u5927\u4F53\u79EF base64 \u5360\u7528\u4E0A\u4E0B\u6587\uFF09\u3002\u9700\u8981\u67E5\u770B\u753B\u5E03\u6548\u679C\u65F6\uFF0C\u7528\u6587\u4EF6\u8BFB\u53D6\u5DE5\u5177\u8BFB\u53D6\u8FD4\u56DE\u8DEF\u5F84\u7684 PNG \u5373\u53EF\u3002savePath \u901A\u5E38\u7701\u7565\uFF1A\u81EA\u52A8\u5BFC\u51FA\u5230\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55\uFF08\u4E34\u65F6\u6587\u4EF6\u53EF\u80FD\u88AB\u7CFB\u7EDF\u6E05\u7406\uFF0C\u4E0D\u8981\u957F\u671F\u5F15\u7528\uFF09\u3002\u4EC5\u5F53\u9700\u8981\u628A\u56FE\u7247\u4F5C\u4E3A\u4EA4\u4ED8\u7269\u4FDD\u5B58\u5230\u6307\u5B9A\u4F4D\u7F6E\u65F6\u624D\u4F20 savePath\u3002\u6E32\u67D3\u56FE\u7531 dashboard \u753B\u5E03\u9762\u677F\u81EA\u52A8\u751F\u6210\u5E76\u7F13\u5B58\uFF08\u753B\u5E03\u539F\u59CB\u5206\u8FA8\u7387\uFF0C\u6700\u957F\u8FB9 \u22648192 \u5185\u4E0D\u7F29\u653E\uFF09\uFF1B\u753B\u5E03\u521A\u88AB\u5DE5\u5177\u4FEE\u6539\u540E\u82E5\u7F13\u5B58\u843D\u540E\uFF0C\u4F1A\u7B49\u5F85\u9762\u677F\u8865\u6E32\uFF08\u7EA6\u6570\u79D2\uFF09\u3002\u753B\u5E03\u4ECE\u672A\u6E32\u67D3\u8FC7\uFF08dashboard \u9762\u677F\u672A\u6253\u5F00\u8FC7\uFF09\u4F1A\u8FD4\u56DE\u5931\u8D25\u5E76\u63D0\u793A\u5148\u6253\u5F00\u9762\u677F\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id\uFF08\u6765\u81EA pencil_create_document / pencil_list_documents\uFF09"},savePath:{type:"string",description:"\u53EF\u9009\uFF1APNG \u4FDD\u5B58\u8DEF\u5F84\uFF0C\u4E0D\u9650\u5236\u4FDD\u5B58\u4F4D\u7F6E\uFF08\u76F8\u5BF9\u8DEF\u5F84\u57FA\u4E8E\u5DE5\u4F5C\u533A\u6839\u89E3\u6790\uFF0C\u7EDD\u5BF9\u8DEF\u5F84\u76F4\u63A5\u4F7F\u7528\uFF09\uFF0C\u5982 design/hero.png \u6216 D:\\exports\\hero.png\u3002\u7701\u7565\u65F6\u5BFC\u51FA\u5230\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55\u5E76\u8FD4\u56DE\u4E34\u65F6\u8DEF\u5F84"},waitMs:{type:"number",description:"\u53EF\u9009\uFF1A\u7B49\u5F85\u9762\u677F\u8865\u6E32\u7684\u6700\u957F\u6BEB\u79D2\u6570\uFF08\u9ED8\u8BA4 8000\uFF0C\u4E0A\u9650 20000\uFF09"}},required:["docId"]}},de={name:"pencil_export_document",description:"\u628A\u8BBE\u8BA1\u753B\u5E03\u5BFC\u51FA\u4E3A\u6587\u4EF6\uFF08\u672C\u5730 headless \u5BFC\u51FA\u7BA1\u7EBF\uFF0C\u65E0\u9700\u6253\u5F00\u753B\u5E03\u9762\u677F\uFF09\u3002\u8FD4\u56DE\u5BFC\u51FA\u6587\u4EF6\u8DEF\u5F84\u7B49\u5143\u4FE1\u606F\uFF08\u4E0D\u8FD4\u56DE\u6587\u4EF6\u5185\u5BB9\uFF09\u3002format \u652F\u6301\u591A\u79CD\u6837\u5F0F\uFF1Asvg=\u77E2\u91CF\u56FE\uFF08\u63A8\u8350\uFF0C\u6587\u5B57\u4E3A\u771F\u6587\u672C\uFF09/ html=\u771F\u5B9E DOM+CSS \u7F51\u9875\uFF08standalone \u5355\u6587\u4EF6\uFF0C\u53EF\u76F4\u63A5\u6D4F\u89C8\u5668\u6253\u5F00\uFF09/ png|jpg|webp=\u4F4D\u56FE\uFF08scale \u63A7\u5236\u6E05\u6670\u5EA6\uFF09/ pptx=PowerPoint \u6F14\u793A\u7A3F / fig=Figma \u6587\u6863 / jsx=React \u7EC4\u4EF6\u4EE3\u7801\uFF08\u9700\u4F20 nodeId\uFF09\u3002\u7F3A\u7701\u5BFC\u51FA\u7B2C\u4E00\u9875\u5168\u90E8\u5185\u5BB9\uFF1B\u4F20 nodeId\uFF08\u6765\u81EA pencil_get_tree\uFF09\u53EF\u53EA\u5BFC\u51FA\u5355\u4E2A\u8282\u70B9\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id\uFF08\u6765\u81EA pencil_create_document / pencil_list_documents\uFF09"},format:{type:"string",enum:["svg","html","png","jpg","webp","pptx","fig","jsx"],description:"\u5BFC\u51FA\u683C\u5F0F\uFF08\u9ED8\u8BA4 svg\uFF09"},nodeId:{type:"string",description:"\u53EF\u9009\uFF1A\u53EA\u5BFC\u51FA\u5355\u4E2A\u8282\u70B9\uFF08jsx \u5FC5\u586B\uFF09\uFF1B\u7701\u7565=\u5BFC\u51FA\u7B2C\u4E00\u9875\u5168\u90E8\u5185\u5BB9"},scale:{type:"number",description:"\u53EF\u9009\uFF1Apng/jpg/webp \u7F29\u653E\u500D\u6570\uFF08\u9ED8\u8BA4 1\uFF09"},quality:{type:"number",description:"\u53EF\u9009\uFF1Ajpg/webp \u8D28\u91CF 0-100\uFF08\u9ED8\u8BA4 90\uFF09"},savePath:{type:"string",description:"\u53EF\u9009\uFF1A\u5BFC\u51FA\u6587\u4EF6\u4FDD\u5B58\u8DEF\u5F84\uFF0C\u4E0D\u9650\u5236\u4FDD\u5B58\u4F4D\u7F6E\uFF08\u76F8\u5BF9\u8DEF\u5F84\u57FA\u4E8E\u5DE5\u4F5C\u533A\u6839\u89E3\u6790\uFF0C\u7EDD\u5BF9\u8DEF\u5F84\u76F4\u63A5\u4F7F\u7528\uFF09\uFF0C\u5982 design/hero.svg \u6216 D:\\exports\\hero.svg\u3002\u7701\u7565\u65F6\u4FDD\u5B58\u5230\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55\u5E76\u8FD4\u56DE\u4E34\u65F6\u8DEF\u5F84"}},required:["docId"]}},Qe=new Set(["pencil_create_document","pencil_list_documents","pencil_open_document","pencil_close_document","pencil_get_tree","pencil_get_changes","pencil_create_nodes","pencil_update_nodes","pencil_delete_nodes","pencil_export_image","pencil_share_document","pencil_revoke_share","pencil_delete_document","pencil_rename_document","pencil_export_document"]),ae={name:"draw_create_document",description:"\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684\u7ED8\u56FE\u6587\u6863\uFF08\u7A7A\u767D draw.io \u753B\u5E03\uFF09\u3002\u521B\u5EFA\u540E\u7528 draw_open_document \u6253\u5F00\uFF0C\u518D\u7528 draw_create_cells \u6DFB\u52A0\u56FE\u5F62\uFF0C\u6216\u7528 draw_export_document \u5BFC\u51FA\u3002",inputSchema:{type:"object",properties:{name:{type:"string",description:"\u6587\u6863\u540D\u79F0\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4\u300C\u672A\u547D\u540D\u7ED8\u56FE\u300D\uFF09"}},required:[]}},ce={name:"draw_list_documents",description:"\u5217\u51FA\u5F53\u524D Agent \u7684\u6240\u6709\u7ED8\u56FE\u6587\u6863\uFF08\u672C\u5730 + \u88AB\u9080\u8BF7\u534F\u4F5C\u7684\u6258\u7BA1\u6587\u6863\uFF0C\u9644 permission \u4E0E shared \u6807\u8BB0\uFF09\u3002",inputSchema:{type:"object",properties:{},required:[]}},le={name:"draw_open_document",description:"\u6253\u5F00\u4E00\u4E2A\u7ED8\u56FE\u6587\u6863\uFF08docId \u6765\u81EA draw_create_document \u6216 draw_list_documents\uFF1B\u88AB\u9080\u8BF7\u534F\u4F5C\u7684\u6587\u6863\u4E5F\u5728\u5217\u8868\u4E2D\uFF0Cshared=true\uFF0C\u9644\u672C\u4EBA permission\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"}},required:["docId"]}},me={name:"draw_close_document",description:"\u5173\u95ED\u7ED8\u56FE\u6587\u6863\uFF08\u4EC5\u6536\u8D77\u67E5\u770B\uFF0C\u4E0D\u5F71\u54CD\u6587\u6863\u4FDD\u7559\uFF1B\u53EF\u968F\u65F6 draw_open_document \u91CD\u65B0\u6253\u5F00\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"}},required:["docId"]}},_e={name:"draw_get_diagram",description:"\u8BFB\u53D6\u7ED8\u56FE\u6587\u6863\u7684 cell \u6811\u6458\u8981\uFF08id/value/type/style/\u51E0\u4F55\uFF0C\u542B\u6587\u672C\u622A\u65AD\uFF0C\u8FD4\u56DE truncated \u6807\u8BB0\u662F\u5426\u88AB\u622A\u65AD\uFF09\u3002\u7528\u4E8E\u5728\u521B\u5EFA/\u4FEE\u6539\u524D\u4E86\u89E3\u6587\u6863\u73B0\u72B6\uFF1B\u8FD4\u56DE\u7684 version \u53EF\u4F5C\u4E3A expectedVersion \u4E50\u89C2\u9501\u4F20\u5165\u5199\u5DE5\u5177\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"}},required:["docId"]}},ue={name:"draw_get_changes",description:"\u8FFD\u8D76\u534F\u4F5C\u6587\u6863\u81EA sinceVersion \u4EE5\u6765\u7684\u53D8\u66F4\uFF08\u9010\u7248\u672C\u6458\u8981\uFF1A\u8C01\u6539\u7684\u3001\u65B0\u589E/\u66F4\u65B0/\u5220\u9664\u4E86\u54EA\u4E9B cell \u53CA\u65B0\u503C\uFF09\u3002\u6536\u5230\u300C\u7ED8\u56FE\u53D8\u66F4\u300D\u7CFB\u7EDF\u901A\u77E5\u540E\u8C03\u7528\uFF1Btruncated=true \u8868\u793A\u53D8\u66F4\u65E5\u5FD7\u5DF2\u88AB\u4FEE\u526A\uFF0C\u8BF7\u6539\u7528 draw_open_document \u5168\u91CF\u91CD\u8BFB\u3002\u8BF7\u628A\u8FD4\u56DE\u7684 toVersion \u8BB0\u4E3A\u8BE5\u6587\u6863\u4F60\u5DF2\u770B\u5230\u7684\u6700\u65B0\u7248\u672C\uFF1A\u540E\u7EED\u5199\u5DE5\u5177\u4F20\u5B83\u4F5C expectedVersion \u4E50\u89C2\u9501\uFF0C\u4E0B\u6B21\u8FFD\u8D76\u4F20\u5B83\u4F5C sinceVersion\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"},sinceVersion:{type:"number",description:"\u4F60\u5DF2\u770B\u5230\u7684\u6700\u65B0\u6587\u6863\u7248\u672C\uFF08\u7F3A\u7701 0 = \u4ECE\u5934\u8FFD\u8D76\uFF09"}},required:["docId"]}},ge={name:"draw_create_cells",description:"\u5728\u7ED8\u56FE\u6587\u6863\u4E2D\u521B\u5EFA cell\uFF08mxCell\uFF0C\u4E00\u6B21\u53EF\u521B\u5EFA\u591A\u4E2A\u3001\u4E0A\u9650 500 \u4E2A\uFF0C\u652F\u6301 vertex \u548C edge\uFF09\u3002vertex \u53EF\u5E26 value/style/x/y/width/height\uFF08\u751F\u6210 mxGeometry \u5B50\u8282\u70B9\uFF09\uFF1Bedge \u9700 source/target\u3002parent \u7F3A\u7701\u6302\u5728 root \u6839\u4E0B\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"},cells:{type:"array",description:"cell \u89C4\u683C\u6570\u7EC4",items:{type:"object",properties:{id:{type:"string",description:"cell id\uFF08\u53EF\u9009\uFF0C\u7F3A\u7701\u81EA\u52A8\u751F\u6210\uFF09"},value:{type:"string",description:"cell \u663E\u793A\u6587\u672C\uFF08\u5982\u8282\u70B9\u6807\u7B7E\uFF09"},style:{type:"string",description:"draw.io style\uFF08\u5982 shape=rectangle;fillColor=#4F8EF7\uFF09"},parent:{type:"string",description:"\u7236 cell id\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 root\uFF09"},vertex:{type:"boolean",description:"\u662F\u5426 vertex\uFF08\u9ED8\u8BA4 false\uFF09"},edge:{type:"boolean",description:"\u662F\u5426 edge\uFF08\u9ED8\u8BA4 false\uFF09"},source:{type:"string",description:"edge \u8D77\u70B9 cell id"},target:{type:"string",description:"edge \u7EC8\u70B9 cell id"},x:{type:"number",description:"mxGeometry.x\uFF08vertex\uFF09"},y:{type:"number",description:"mxGeometry.y\uFF08vertex\uFF09"},width:{type:"number",description:"mxGeometry.width\uFF08vertex\uFF09"},height:{type:"number",description:"mxGeometry.height\uFF08vertex\uFF09"},relative:{type:"number",description:"mxGeometry.relative\uFF08edge \u7528\uFF09"}},required:[]}},expectedVersion:{type:"number",description:"\u53EF\u9009\u4E50\u89C2\u9501\uFF1A\u4F20\u5165\u6700\u8FD1\u4E00\u6B21 draw_get_diagram / \u5199\u5DE5\u5177\u8FD4\u56DE\u7684 version\u3002\u6587\u6863\u5728\u6B64\u671F\u95F4\u88AB\u4EBA\u6216\u5176\u4ED6 Agent \u4FEE\u6539\u65F6\u8FD4\u56DE\u7248\u672C\u51B2\u7A81\uFF08\u800C\u975E\u9759\u9ED8\u8986\u76D6\u5BF9\u65B9\u6539\u52A8\uFF09\uFF1B\u591A\u4EBA/\u591A Agent \u534F\u4F5C\u7F16\u8F91\u65F6\u5EFA\u8BAE\u4F20\u5165"}},required:["docId","cells"]}},ye={name:"draw_update_cells",description:"\u6279\u91CF\u66F4\u65B0\u7ED8\u56FE\u6587\u6863 cell \u5C5E\u6027\uFF08value/style/geometry/vertex/edge/parent/source/target/x/y/width/height/relative\uFF09\u3002id \u53EF\u901A\u8FC7 draw_get_diagram \u83B7\u5F97\u3002\u4EC5\u652F\u6301\u767D\u540D\u5355\u5B57\u6BB5\uFF0C\u672A\u77E5\u5B57\u6BB5\u4F1A\u88AB\u62D2\u7EDD\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"},updates:{type:"array",description:"\u66F4\u65B0\u5217\u8868",items:{type:"object",properties:{id:{type:"string",description:"cell id"},props:{type:"object",description:"\u8981\u66F4\u65B0\u7684\u5C5E\u6027\uFF0C\u4EC5\u652F\u6301\u8FD9\u4E9B\u5B57\u6BB5\uFF08\u5176\u4ED6\u5B57\u6BB5\u4F1A\u88AB\u62D2\u7EDD\uFF09\uFF1Avalue / style / vertex / edge / parent / source / target / x / y / width / height / relative"}},required:["id","props"]}},expectedVersion:{type:"number",description:"\u53EF\u9009\u4E50\u89C2\u9501\uFF1A\u4F20\u5165\u6700\u8FD1\u4E00\u6B21 draw_get_diagram / \u5199\u5DE5\u5177\u8FD4\u56DE\u7684 version\u3002\u6587\u6863\u5728\u6B64\u671F\u95F4\u88AB\u4EBA\u6216\u5176\u4ED6 Agent \u4FEE\u6539\u65F6\u8FD4\u56DE\u7248\u672C\u51B2\u7A81\uFF08\u800C\u975E\u9759\u9ED8\u8986\u76D6\u5BF9\u65B9\u6539\u52A8\uFF09\uFF1B\u591A\u4EBA/\u591A Agent \u534F\u4F5C\u7F16\u8F91\u65F6\u5EFA\u8BAE\u4F20\u5165"}},required:["docId","updates"]}},fe={name:"draw_delete_cells",description:"\u6279\u91CF\u5220\u9664\u7ED8\u56FE\u6587\u6863 cell\uFF08mxCell\uFF09\u3002root/\u7ED3\u6784\u5355\u5143\u683C\u4E0D\u53EF\u5220\u9664\u3002\u5220\u9664\u6574\u4E2A\u6587\u6863\u7528 draw_delete_document\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"},ids:{type:"array",items:{type:"string"},description:"\u8981\u5220\u9664\u7684 cell id \u5217\u8868"},expectedVersion:{type:"number",description:"\u53EF\u9009\u4E50\u89C2\u9501\uFF1A\u4F20\u5165\u6700\u8FD1\u4E00\u6B21 draw_get_diagram / \u5199\u5DE5\u5177\u8FD4\u56DE\u7684 version\u3002\u6587\u6863\u5728\u6B64\u671F\u95F4\u88AB\u4EBA\u6216\u5176\u4ED6 Agent \u4FEE\u6539\u65F6\u8FD4\u56DE\u7248\u672C\u51B2\u7A81\uFF08\u800C\u975E\u9759\u9ED8\u8986\u76D6\u5BF9\u65B9\u6539\u52A8\uFF09\uFF1B\u591A\u4EBA/\u591A Agent \u534F\u4F5C\u7F16\u8F91\u65F6\u5EFA\u8BAE\u4F20\u5165"}},required:["docId","ids"]}},he={name:"draw_delete_document",description:"\u5220\u9664\u6574\u4E2A\u7ED8\u56FE\u6587\u6863\uFF08\u4EC5\u6587\u6863\u62E5\u6709\u8005\u53EF\u8C03\u7528\uFF0C\u4E0D\u53EF\u6062\u590D\uFF1A\u6587\u6863\u3001\u5168\u90E8 cell \u4E0E\u534F\u4F5C\u8005\u4E00\u5E76\u6E05\u9664\uFF09\u3002\u7528\u4E8E\u6E05\u7406\u4E0D\u518D\u9700\u8981\u7684\u6587\u6863\uFF1B\u53EA\u5220\u9664\u6587\u6863\u91CC\u7684\u90E8\u5206 cell \u7528 draw_delete_cells\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"}},required:["docId"]}},be={name:"draw_rename_document",description:"\u91CD\u547D\u540D\u7ED8\u56FE\u6587\u6863\uFF08ACL write \u53EF\u8C03\u7528\uFF1A\u62E5\u6709\u8005\u6216 permission=write \u6210\u5458\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"},name:{type:"string",description:"\u65B0\u7684\u6587\u6863\u540D\u79F0"},expectedVersion:{type:"number",description:"\u53EF\u9009\u4E50\u89C2\u9501\uFF1A\u4F20\u5165\u6700\u8FD1\u4E00\u6B21 draw_get_diagram / \u5199\u5DE5\u5177\u8FD4\u56DE\u7684 version\u3002\u6587\u6863\u5728\u6B64\u671F\u95F4\u88AB\u4EBA\u6216\u5176\u4ED6 Agent \u4FEE\u6539\u65F6\u8FD4\u56DE\u7248\u672C\u51B2\u7A81\uFF08\u800C\u975E\u9759\u9ED8\u8986\u76D6\u5BF9\u65B9\u6539\u52A8\uFF09"}},required:["docId","name"]}},xe={name:"draw_share_document",description:"\u5C06\u7ED8\u56FE\u6587\u6863\u5206\u4EAB\u7ED9\u5176\u5B83 Agent \u534F\u4F5C\uFF08\u6BCF\u4F4D\u88AB\u9080\u8BF7\u4EBA\u6307\u5B9A read=\u53EA\u8BFB \u6216 write=\u53EF\u5199\uFF09\u3002\u88AB\u9080\u8BF7\u4EBA\u5FC5\u987B\u5DF2\u5F00\u542F\u300C\u7ED8\u56FE (draw)\u300D\u80FD\u529B\uFF0C\u5426\u5219\u5206\u4EAB\u4F1A\u88AB\u6574\u4F53\u62D2\u7EDD\u3002\u5206\u4EAB\u540E\u53CC\u65B9\u7EE7\u7EED\u7528 draw_get_diagram / draw_update_cells \u7B49\u5DE5\u5177\u534F\u4F5C\uFF1B\u88AB\u9080\u8BF7\u4EBA\u4F1A\u6536\u5230\u9080\u8BF7\u901A\u77E5\u3002\u64A4\u9500\u5206\u4EAB\u914D\u5BF9\u4F7F\u7528 draw_revoke_share\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u8981\u5206\u4EAB\u7684\u7ED8\u56FE\u6587\u6863 id\uFF08\u987B\u4E3A\u672C Agent \u521B\u5EFA\u7684\u6587\u6863\uFF09"},members:{type:"array",description:"\u88AB\u9080\u8BF7\u4EBA\u5217\u8868",items:{type:"object",properties:{agentId:{type:"string",description:"\u88AB\u9080\u8BF7 Agent \u7684\u5B9E\u4F8B id"},permission:{type:"string",enum:["read","write"],description:"\u534F\u4F5C\u6743\u9650\uFF1Aread=\u53EA\u8BFB\u67E5\u770B\uFF0Cwrite=\u53EF\u7F16\u8F91\uFF08\u7F3A\u7701 read\uFF09"}},required:["agentId"]}}},required:["docId","members"]}},Ie={name:"draw_revoke_share",description:"\u64A4\u9500\u7ED8\u56FE\u6587\u6863\u5206\u4EAB\uFF08\u4EC5\u6587\u6863\u62E5\u6709\u8005\u53EF\u8C03\u7528\uFF0C\u4E0E draw_share_document \u914D\u5BF9\u4F7F\u7528\uFF09\u3002agentIds \u7701\u7565\u65F6\u6574\u4F53\u64A4\u9500\uFF0C\u6587\u6863\u56DE\u5230\u4EC5\u672C Agent \u79C1\u6709\uFF1B\u63D0\u4F9B agentIds \u65F6\u4EC5\u79FB\u9664\u6307\u5B9A\u534F\u4F5C\u8005\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"},agentIds:{type:"array",items:{type:"string"},description:"\u8981\u79FB\u9664\u7684\u534F\u4F5C\u8005 agentId \u5217\u8868\uFF08\u7701\u7565 = \u6574\u4F53\u64A4\u9500\u5206\u4EAB\uFF09"}},required:["docId"]}},Oe={name:"draw_export_image",description:"\u5BFC\u51FA\u7ED8\u56FE\u6587\u6863\u4E3A PNG \u56FE\u7247\u5230\u6587\u4EF6\u5E76\u8FD4\u56DE\u6587\u4EF6\u8DEF\u5F84\u7B49\u5143\u4FE1\u606F\uFF08\u4E0D\u8FD4\u56DE\u56FE\u7247\u5185\u5BB9\uFF0C\u907F\u514D\u5927\u4F53\u79EF base64 \u5360\u7528\u4E0A\u4E0B\u6587\uFF09\u3002draw.io \u4F4D\u56FE\u6E32\u67D3\u4E3A\u72EC\u7ACB\u80FD\u529B\uFF1A\u5E38\u6001\u4F18\u5148\u7528 draw_export_document \u5BFC\u51FA XML\uFF08<mxfile> \u539F\u6587\uFF09\uFF0C\u7528\u6587\u4EF6\u8BFB\u53D6\u5DE5\u5177\u67E5\u770B\u8FD4\u56DE\u8DEF\u5F84\u5373\u53EF\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id\uFF08\u6765\u81EA draw_create_document / draw_list_documents\uFF09"},savePath:{type:"string",description:"\u53EF\u9009\uFF1APNG \u4FDD\u5B58\u8DEF\u5F84\uFF0C\u4E0D\u9650\u5236\u4FDD\u5B58\u4F4D\u7F6E\uFF08\u76F8\u5BF9\u8DEF\u5F84\u57FA\u4E8E\u5DE5\u4F5C\u533A\u6839\u89E3\u6790\uFF0C\u7EDD\u5BF9\u8DEF\u5F84\u76F4\u63A5\u4F7F\u7528\uFF09\uFF0C\u5982 design/flow.png \u6216 D:\\exports\\flow.png\u3002\u7701\u7565\u65F6\u5BFC\u51FA\u5230\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55\u5E76\u8FD4\u56DE\u4E34\u65F6\u8DEF\u5F84"},waitMs:{type:"number",description:"\u53EF\u9009\uFF1A\u7B49\u5F85\u6E32\u67D3\u8865\u8D26\u7684\u6700\u957F\u6BEB\u79D2\u6570\uFF08\u9ED8\u8BA4 8000\uFF0C\u4E0A\u9650 20000\uFF09"}},required:["docId"]}},Ee={name:"draw_export_document",description:"\u628A\u7ED8\u56FE\u6587\u6863\u5BFC\u51FA\u4E3A draw.io <mxfile> XML \u6587\u4EF6\uFF08format=xml\uFF0C\u4E0E drawio \u7B49\u4EF7\uFF09\u3002svg/png/jpg/webp \u77E2\u91CF/\u4F4D\u56FE\u6E32\u67D3\u5C5E\u9636\u6BB5 2 \u80FD\u529B\uFF0C\u672C\u8F6E\u672A\u5B9E\u73B0\uFF0C\u8C03\u7528\u4F1A\u8FD4\u56DE\u660E\u786E\u9519\u8BEF\uFF0C\u8BF7\u7528 format=xml \u5BFC\u51FA\u539F\u6587\u3002\u8FD4\u56DE\u5BFC\u51FA\u6587\u4EF6\u8DEF\u5F84\u7B49\u5143\u4FE1\u606F\uFF08\u4E0D\u8FD4\u56DE\u6587\u4EF6\u5185\u5BB9\uFF09\u3002savePath \u7701\u7565\u65F6\u4FDD\u5B58\u5230\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55\u5E76\u8FD4\u56DE\u4E34\u65F6\u8DEF\u5F84\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id\uFF08\u6765\u81EA draw_create_document / draw_list_documents\uFF09"},format:{type:"string",enum:["xml","drawio"],description:"\u5BFC\u51FA\u683C\u5F0F\uFF08\u9ED8\u8BA4 xml\uFF0Cdrawio \u4E0E xml \u7B49\u4EF7\uFF09"},savePath:{type:"string",description:"\u53EF\u9009\uFF1A\u5BFC\u51FA\u6587\u4EF6\u4FDD\u5B58\u8DEF\u5F84\uFF0C\u4E0D\u9650\u5236\u4FDD\u5B58\u4F4D\u7F6E\uFF08\u76F8\u5BF9\u8DEF\u5F84\u57FA\u4E8E\u5DE5\u4F5C\u533A\u6839\u89E3\u6790\uFF0C\u7EDD\u5BF9\u8DEF\u5F84\u76F4\u63A5\u4F7F\u7528\uFF09\uFF0C\u5982 design/flow.xml \u6216 D:\\exports\\flow.svg\u3002\u7701\u7565\u65F6\u4FDD\u5B58\u5230\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55\u5E76\u8FD4\u56DE\u4E34\u65F6\u8DEF\u5F84"}},required:["docId"]}},Ze=new Set(["draw_create_document","draw_list_documents","draw_open_document","draw_close_document","draw_get_diagram","draw_get_changes","draw_create_cells","draw_update_cells","draw_delete_cells","draw_export_image","draw_share_document","draw_revoke_share","draw_delete_document","draw_rename_document","draw_export_document"]),Te={name:"office_create",description:`\u521B\u5EFA\u7A7A\u767D Office \u6587\u6863\uFF08\u6309\u6269\u5C55\u540D\u5206\u53D1\uFF1A.docx/.docm\u3001.xlsx/.xlsm\u3001.pptx/.pptm\uFF09\u3002\u65E7\u7248\u6269\u5C55\u540D\uFF08.doc/.xls/.ppt\uFF09\u65E0\u6CD5\u76F4\u63A5\u521B\u5EFA\uFF1A\u4F1A\u6309\u5BF9\u5E94\u73B0\u4EE3\u683C\u5F0F\uFF08.docx/.xlsx/.pptx\uFF09\u521B\u5EFA\uFF0C\u5E76\u8FD4\u56DE suggestedFileName\uFF0C\u8BF7\u6539\u7528\u8BE5\u65B0\u6587\u4EF6\u540D\u3002
59
+ \u8FD4\u56DE\u5B57\u6BB5\uFF1Aid\u3001projectId\u3001roleName\u3001instanceName\u3001agentId\u3001operation\uFF08CREATE/UPDATE/DELETE\uFF09\u3001targetPath\u3001fullPath\u3001reason\u3001status\uFF08APPLIED/REVERTED/REVERT_FAILED\uFF09\u3001createdAt\u3001revertedAt\u3001revertedBy\u3002`,inputSchema:{type:"object",properties:{roleId:{type:"string",description:"\u89D2\u8272\u5B9A\u4E49 ID\uFF08\u53EF\u9009\uFF09"},agentId:{type:"string",description:"Agent \u5B9E\u4F8B ID\uFF08\u53EF\u9009\uFF1B\u4E0D\u4F20=\u67E5\u8BE2\u5F53\u524D\u9879\u76EE\u4E0B\u6240\u6709 Agent\uFF1B\u4F20\u5176\u5B83 Agent \u65F6\u670D\u52A1\u7AEF\u6821\u9A8C\u5176\u4E0E\u8C03\u7528\u8005\u540C\u9879\u76EE\uFF09"},fileName:{type:"string",description:"\u6587\u4EF6\u540D\uFF08\u53EF\u9009\uFF0C\u6309 basename \u6A21\u7CCA\u5339\u914D\uFF09"},filePath:{type:"string",description:"\u5DE5\u4F5C\u533A\u76F8\u5BF9\u8DEF\u5F84\uFF08\u53EF\u9009\uFF0C\u6309\u8D26\u672C\u8BB0\u5F55\u7684\u76F8\u5BF9\u8DEF\u5F84 targetPath \u5339\u914D\uFF0C\u542B\u76EE\u5F55\u524D\u7F00\u5339\u914D\uFF09\u3002\u652F\u6301 ./xx\u3001xx\u3001@/xx\u3001/xx \u7B49\u4EF7\u5199\u6CD5\uFF08@ \u89C6\u4E3A\u5DE5\u4F5C\u533A\u6839\u8DEF\u5F84\u522B\u540D\uFF09\u3002\u793A\u4F8B\uFF1A@/src/main.ts \u7CBE\u786E\u5339\u914D src/main.ts\uFF1B@/src \u5339\u914D src/ \u76EE\u5F55\u53CA\u5176\u4E0B\u6240\u6709\u6587\u4EF6\u7684\u53D8\u66F4\u3002\u4E0E fileName \u6B63\u4EA4\uFF1AfileName \u6309\u6587\u4EF6\u540D\u6A21\u7CCA\uFF0CfilePath \u6309\u76F8\u5BF9\u8DEF\u5F84\u5339\u914D\u3002"},operation:{type:"string",description:"\u64CD\u4F5C\u7C7B\u578B\uFF1ACREATE / UPDATE / DELETE\uFF08\u53EF\u9009\uFF09",enum:["CREATE","UPDATE","DELETE"]},status:{type:"string",description:"\u8BB0\u5F55\u72B6\u6001\uFF1AAPPLIED\uFF08\u5DF2\u751F\u6548\uFF09/ REVERTED\uFF08\u5DF2\u64A4\u9500\uFF09/ REVERT_FAILED\uFF08\u64A4\u9500\u5931\u8D25\uFF09\uFF08\u53EF\u9009\uFF09",enum:["APPLIED","REVERTED","REVERT_FAILED"]},taskInstanceId:{type:"string",description:"\u4EFB\u52A1\u5B9E\u4F8B ID\uFF08\u53EF\u9009\uFF09"},startTime:{type:"string",description:"\u8D77\u59CB\u65F6\u95F4\uFF0CISO \u683C\u5F0F\u5982 2026-08-01T00:00:00\uFF08\u53EF\u9009\uFF09"},endTime:{type:"string",description:"\u7ED3\u675F\u65F6\u95F4\uFF0CISO \u683C\u5F0F\u5982 2026-08-02T00:00:00\uFF08\u53EF\u9009\uFF09"},page:{type:"number",description:"\u9875\u7801\uFF0C\u9ED8\u8BA4 1"},pageSize:{type:"number",description:"\u6BCF\u9875\u6761\u6570\uFF0C\u9ED8\u8BA4 20"}},required:[]}},Ye=new Set(["create_memory","read_memory","update_memory","delete_memory","search_memory","list_memories","get_memory_stats","list_memories_by_file","memory_recurrence","memory_recurrence_complete"]),R={name:"launch_config_list",description:"\u67E5\u8BE2\u5F53\u524D Agent \u6240\u5C5E\u9879\u76EE\u4E0B\u7684\u542F\u52A8\u9879\uFF08\u7C7B IDEA Run Configuration\uFF09\u5217\u8868\u3002\u6BCF\u4E2A\u542F\u52A8\u9879\u542B id\u3001name\u3001type\uFF08generic/java/python/node/go/php\uFF09\u3001command\u3001cwd\u3001env\u3001jdkId\u3001groupId\u3001sortOrder\u3002\u67E5\u8BE2\u8303\u56F4\u81EA\u52A8\u9650\u5B9A\u4E3A\u5F53\u524D\u9879\u76EE\uFF0C\u65E0\u9700\u4F20 projectId\u3002",inputSchema:{type:"object",properties:{},required:[]}},M={name:"launch_config_create",description:"\u5728\u5F53\u524D Agent \u6240\u5C5E\u9879\u76EE\u4E0B\u65B0\u5EFA\u542F\u52A8\u9879\uFF08\u7C7B IDEA Run Configuration\uFF09\u3002\u521B\u5EFA\u524D\u5EFA\u8BAE\u5148 launch_config_list \u67E5\u770B\u73B0\u6709\u914D\u7F6E\u4E0E\u547D\u540D\u4E60\u60EF\u3002\u9879\u76EE\u8303\u56F4\u81EA\u52A8\u63A8\u5BFC\uFF0C\u65E0\u9700\u4F20 projectId\u3002\u521B\u5EFA\u6210\u529F\u540E\u8FD4\u56DE\u65B0\u542F\u52A8\u9879\u5B8C\u6574\u4FE1\u606F\uFF08\u542B id\uFF09\u3002",inputSchema:{type:"object",properties:{name:{type:"string",description:"\u542F\u52A8\u9879\u540D\u79F0\uFF08\u5FC5\u586B\uFF0C\u9879\u76EE\u5185\u552F\u4E00\uFF0C\u2264128 \u5B57\u7B26\uFF09"},type:{type:"string",description:"\u542F\u52A8\u9879\u7C7B\u578B\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 generic\uFF09\uFF1Ageneric / java / python / node / go / php",enum:["generic","java","python","node","go","php"]},command:{type:"string",description:"\u542F\u52A8\u547D\u4EE4\uFF08\u5FC5\u586B\uFF0C\u22648192 \u5B57\u7B26\uFF09\u3002\u652F\u6301\u5360\u4F4D\u7B26 ${WORKSPACE}\uFF08\u9879\u76EE\u5DE5\u4F5C\u533A\uFF09\u3001${JAVA_HOME}\uFF08\u6240\u9009 JDK\uFF09\u3001${VAR}\uFF08env \u4E2D\u5B9A\u4E49\u7684\u53D8\u91CF\uFF09\u3002\u793A\u4F8B\uFF1Anpm run dev\u3001python main.py\u3001mvn spring-boot:run"},cwd:{type:"string",description:"\u5DE5\u4F5C\u76EE\u5F55\uFF08\u5FC5\u586B\uFF0C\u2264512 \u5B57\u7B26\uFF09\u2014\u2014\u9879\u76EE\u5B9E\u9645\u4EE3\u7801/\u6784\u5EFA\u76EE\u5F55\u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u5982 D:/code/xxx/backend"},env:{type:"object",description:"\u989D\u5916\u73AF\u5883\u53D8\u91CF\uFF08\u53EF\u9009\uFF0C\u226464 \u9879\uFF09\uFF0C\u989D\u5916\u5C5E\u6027\uFF1A\u5B57\u7B26\u4E32\u503C",additionalProperties:{type:"string"}},jdkId:{type:"string",description:"\u9009\u4E2D\u7684 JDK ID\uFF08type=java \u65F6\u6709\u6548\uFF0C\u53EF\u9009\uFF09"},groupId:{type:"string",description:"\u6240\u5C5E\u542F\u52A8\u9879\u5206\u7EC4 ID\uFF08\u53EF\u9009\uFF0Cnull/\u7A7A=\u672A\u5206\u7EC4\uFF09"},sortOrder:{type:"number",description:"\u6392\u5E8F\u6743\u91CD\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4\u8FFD\u52A0\u5230\u6240\u5728\u5BB9\u5668\u672B\u5C3E\uFF09"},readinessPattern:{type:"string",description:'\u5C31\u7EEA\u65E5\u5FD7\u6B63\u5219\uFF08\u53EF\u9009\uFF0C\u2264512 \u5B57\u7B26\uFF0CJS RegExp \u8BED\u6CD5\uFF09\u3002\u8BBE\u7F6E\u540E wait_timeout_ms \u7B49\u5F85\u7684 ready \u4FE1\u53F7\u6539\u4E3A"\u8F93\u51FA\u884C\u547D\u4E2D\u8BE5\u6B63\u5219"\uFF08\u9002\u914D\u4E0D\u76D1\u542C\u7AEF\u53E3\u7684\u5E38\u9A7B\u8FDB\u7A0B\uFF0C\u5982 worker/\u6D88\u8D39\u8005\uFF09\u3002\u793A\u4F8B\uFF1A^Server ready|^Build (SUCCESS|successful)\u3002\u7559\u7A7A=\u7AEF\u53E3\u76D1\u542C\u63A2\u6D4B'}},required:["name","command","cwd"]}},D={name:"launch_config_update",description:"\u66F4\u65B0\u542F\u52A8\u9879\uFF08\u540D\u79F0/\u7C7B\u578B/\u547D\u4EE4/\u5DE5\u4F5C\u76EE\u5F55/\u73AF\u5883\u53D8\u91CF/JDK/\u5206\u7EC4/\u6392\u5E8F\uFF09\u3002\u672A\u4F20\u5B57\u6BB5\u4FDD\u6301\u539F\u503C\uFF1B\u4FEE\u6539\u540D\u79F0\u65F6\u9879\u76EE\u5185\u4E0D\u80FD\u91CD\u540D\u3002\u76EE\u6807\u542F\u52A8\u9879\u5FC5\u987B\u5C5E\u4E8E\u5F53\u524D\u9879\u76EE\uFF08\u670D\u52A1\u7AEF\u6821\u9A8C\uFF09\u3002\u8FD0\u884C\u4E2D\u7684\u542F\u52A8\u9879\uFF1A\u4FEE\u6539\u914D\u7F6E\u4E0D\u4F1A\u5F71\u54CD\u5DF2\u8FD0\u884C\u8FDB\u7A0B\uFF0C\u9700\u91CD\u542F\u540E\u751F\u6548\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5FC5\u586B\uFF09"},name:{type:"string",description:"\u542F\u52A8\u9879\u540D\u79F0\uFF08\u53EF\u9009\uFF0C\u2264128 \u5B57\u7B26\uFF09"},type:{type:"string",description:"\u542F\u52A8\u9879\u7C7B\u578B\uFF08\u53EF\u9009\uFF09\uFF1Ageneric / java / python / node / go / php",enum:["generic","java","python","node","go","php"]},command:{type:"string",description:"\u542F\u52A8\u547D\u4EE4\uFF08\u53EF\u9009\uFF0C\u22648192 \u5B57\u7B26\uFF09"},cwd:{type:"string",description:"\u5DE5\u4F5C\u76EE\u5F55\uFF08\u53EF\u9009\uFF09"},env:{type:"object",description:"\u989D\u5916\u73AF\u5883\u53D8\u91CF\uFF08\u53EF\u9009\uFF0C\u6574\u4F53\u8986\u76D6\u539F env\uFF09",additionalProperties:{type:"string"}},jdkId:{type:"string",description:"\u9009\u4E2D\u7684 JDK ID\uFF08type=java \u65F6\u6709\u6548\uFF0C\u53EF\u9009\uFF09"},groupId:{type:"string",description:"\u6240\u5C5E\u542F\u52A8\u9879\u5206\u7EC4 ID\uFF08\u53EF\u9009\uFF09"},clearGroupId:{type:"boolean",description:"\u663E\u5F0F\u6E05\u9664\u5206\u7EC4\uFF08\u79FB\u56DE\u9ED8\u8BA4\u5206\u7EC4\uFF0C\u53EF\u9009\uFF1B\u4E0D\u80FD\u4E0E groupId \u540C\u65F6\u4F20\uFF09"},sortOrder:{type:"number",description:"\u6392\u5E8F\u6743\u91CD\uFF08\u53EF\u9009\uFF09"},readinessPattern:{type:"string",description:"\u5C31\u7EEA\u65E5\u5FD7\u6B63\u5219\uFF08\u53EF\u9009\uFF0CJS RegExp \u8BED\u6CD5\uFF09\uFF1A\u8BBE\u7F6E\u540E\u542F\u52A8\u7B49\u5F85\u7684 ready \u4FE1\u53F7\u4E3A\u8F93\u51FA\u884C\u547D\u4E2D\u6B63\u5219\uFF08\u9002\u914D\u4E0D\u76D1\u542C\u7AEF\u53E3\u7684\u8FDB\u7A0B\uFF09\u3002\u7559\u7A7A=\u7AEF\u53E3\u76D1\u542C\u63A2\u6D4B"},clearReadinessPattern:{type:"boolean",description:"\u663E\u5F0F\u6E05\u9664\u5C31\u7EEA\u6B63\u5219\uFF0C\u6062\u590D\u7AEF\u53E3\u63A2\u6D4B\uFF08\u53EF\u9009\uFF1B\u4E0D\u80FD\u4E0E readinessPattern \u540C\u65F6\u4F20\uFF09"}},required:["configId"]}},k={name:"launch_config_delete",description:"\u5220\u9664\u542F\u52A8\u9879\u914D\u7F6E\u3002\u76EE\u6807\u542F\u52A8\u9879\u5FC5\u987B\u5C5E\u4E8E\u5F53\u524D\u9879\u76EE\uFF08\u670D\u52A1\u7AEF\u6821\u9A8C\uFF09\u3002\u6CE8\u610F\uFF1A\u82E5\u8BE5\u542F\u52A8\u9879\u6B63\u5728\u8FD0\u884C\uFF0C\u8BF7\u5148 launch_config_stop \u505C\u6B62\u8FDB\u7A0B\u518D\u5220\u9664\uFF08\u5220\u9664\u914D\u7F6E\u4E0D\u4F1A\u81EA\u52A8\u505C\u6B62\u5DF2\u8FD0\u884C\u8FDB\u7A0B\uFF09\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5FC5\u586B\uFF09"}},required:["configId"]}},j={name:"launch_config_start",description:"\u542F\u52A8\u542F\u52A8\u9879\uFF0C\u5728\u8C03\u7528\u8005\u6240\u5728 runtime-bridge \u673A\u5668\u4E0A\u62C9\u8D77\u8FDB\u7A0B\u3002\u652F\u6301\u5355\u9879\uFF08configId\uFF09\u4E0E\u6279\u91CF\uFF08configIds \u6570\u7EC4\uFF0C\u4E00\u6B21\u5E76\u884C\u62C9\u8D77\u591A\u4E2A\uFF09\uFF1A\u6279\u91CF\u65F6\u9010\u9879\u4EE5\u914D\u7F6E\u4E3A\u51C6\u5E76\u884C\u542F\u52A8\uFF0C\u5355\u9879\u5931\u8D25\u4E0D\u5F71\u54CD\u5176\u4F59\u9879\uFF0C\u8FD4\u56DE\u9010\u9879\u7ED3\u679C\u4E0E\u6C47\u603B\uFF08ready/exited/timeout/failed/skipped \u8BA1\u6570\uFF09\u3002\u82E5\u542F\u52A8\u9879\u5DF2\u5904\u4E8E\u8FD0\u884C/\u6B63\u5728\u542F\u52A8\u72B6\u6001\uFF08\u672A\u9000\u51FA/\u505C\u6B62\uFF09\uFF0C\u8C03\u7528\u4F1A\u8FD4\u56DE skipped=true\uFF08\u9644 message\u300C\u5F53\u524D\u5DF2\u5904\u4E8E\u542F\u52A8/\u6B63\u5728\u542F\u52A8\u72B6\u6001\uFF0C\u8DF3\u8FC7\u300D\u4E0E\u5F53\u524D run\uFF09\u800C\u975E\u62A5\u9519\uFF0C\u4E0D\u4F1A\u91CD\u590D\u62C9\u8D77\uFF0C\u4E5F\u65E0\u9700\u5148 launch_config_status \u786E\u8BA4\u3002\u9ED8\u8BA4\u4E0D\u7B49\u5F85\u7ACB\u5373\u8FD4\u56DE\uFF1B\u4F20 wait_timeout_ms > 0 \u65F6\u963B\u585E\u7B49\u5F85\u542F\u52A8\u7ED3\u679C\uFF08\u5355\u9879\u8FD4\u56DE wait \u5B57\u6BB5\uFF0C\u6279\u91CF\u5BF9\u6210\u529F\u62C9\u8D77\u9879\u5E76\u884C\u7B49\u5F85\u3001\u6574\u4F53\u8FD4\u56DE\u65F6\u95F4\u2248\u6700\u6162\u4E00\u9879\uFF1B\u88AB\u8DF3\u8FC7\u7684\u9879\u4E0D\u53C2\u4E0E\u7B49\u5F85\uFF09\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5355\u9879\u542F\u52A8\u65F6\u5FC5\u586B\uFF1B\u4E0E configIds \u4E8C\u9009\u4E00\uFF09"},configIds:{type:"array",items:{type:"string"},description:"\u6279\u91CF\u542F\u52A8\uFF1A\u542F\u52A8\u9879 ID \u6570\u7EC4\uFF081-20 \u4E2A\uFF0C\u81EA\u52A8\u53BB\u91CD\uFF1B\u4E0E configId \u4E8C\u9009\u4E00\uFF0C\u4F20\u4E86\u4F18\u5148\u8D70\u6279\u91CF\uFF09\u3002\u6279\u91CF\u6A21\u5F0F\u4EE5\u5404\u9879\u914D\u7F6E\u4E3A\u51C6\u542F\u52A8\uFF0C\u5FFD\u7565 command/cwd/env/readinessPattern \u8986\u76D6\u53C2\u6570\uFF1BworkspacePath/jdkPath \u4E0E wait_timeout_ms \u5BF9\u5168\u90E8\u9879\u751F\u6548"},command:{type:"string",description:"\u542F\u52A8\u547D\u4EE4\u8986\u76D6\uFF08\u53EF\u9009\uFF0C\u4EC5\u5355\u9879\u6A21\u5F0F\uFF09"},cwd:{type:"string",description:"\u5DE5\u4F5C\u76EE\u5F55\u8986\u76D6\uFF08\u53EF\u9009\uFF0C\u4EC5\u5355\u9879\u6A21\u5F0F\uFF09"},env:{type:"object",description:"\u73AF\u5883\u53D8\u91CF\u8986\u76D6\uFF08\u53EF\u9009\uFF0C\u6574\u4F53\u8986\u76D6\u914D\u7F6E env\uFF1B\u4EC5\u5355\u9879\u6A21\u5F0F\uFF09",additionalProperties:{type:"string"}},jdkPath:{type:"string",description:"JDK \u8DEF\u5F84\uFF08type=java \u65F6\u6709\u6548\uFF0C\u53EF\u9009\uFF1B\u5355\u9879=\u8BE5\u9879\u8986\u76D6\uFF0C\u6279\u91CF=\u5168\u90E8\u9879\u751F\u6548\uFF09"},workspacePath:{type:"string",description:"\u9879\u76EE\u5DE5\u4F5C\u533A\u8DEF\u5F84\uFF08\u53EF\u9009\uFF1B\u5355\u9879=\u8BE5\u9879\u8986\u76D6\uFF0C\u6279\u91CF=\u5168\u90E8\u9879\u751F\u6548\uFF09"},readinessPattern:{type:"string",description:"\u5C31\u7EEA\u65E5\u5FD7\u6B63\u5219\u8986\u76D6\uFF08\u53EF\u9009\uFF0C\u4EC5\u5355\u9879\u6A21\u5F0F\uFF0CJS RegExp \u8BED\u6CD5\uFF09\uFF1A\u8BBE\u7F6E\u540E\u542F\u52A8\u7B49\u5F85\u7684 ready \u4FE1\u53F7\u4E3A\u8F93\u51FA\u884C\u547D\u4E2D\u6B63\u5219\uFF08\u9002\u914D\u4E0D\u76D1\u542C\u7AEF\u53E3\u7684\u8FDB\u7A0B\uFF09\u3002\u7559\u7A7A=\u4EE5\u542F\u52A8\u9879\u914D\u7F6E\u4E3A\u51C6\uFF08\u9ED8\u8BA4\u7AEF\u53E3\u76D1\u542C\u63A2\u6D4B\uFF09"},wait_timeout_ms:{type:"number",description:"\u963B\u585E\u7B49\u5F85\u542F\u52A8\u7ED3\u679C\u7684\u8D85\u65F6\u6BEB\u79D2\u6570\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 0=\u4E0D\u7B49\u5F85\uFF0Cspawn \u540E\u7ACB\u5373\u8FD4\u56DE\uFF09\u3002>0 \u65F6\u672C\u6B21\u8C03\u7528\u963B\u585E\uFF0C\u76F4\u5230\u4EE5\u4E0B\u4FE1\u53F7\u6700\u5148\u5230\u8FBE\u5E76\u5728 wait \u5B57\u6BB5\u8FD4\u56DE\uFF1Aready=\u8FDB\u7A0B\u6811\u63A2\u6D4B\u5230\u76D1\u542C\u7AEF\u53E3\uFF08\u5E38\u9A7B\u670D\u52A1\u542F\u52A8\u6210\u529F\uFF0C\u9644 ports\uFF09\uFF0C\u6216\u8F93\u51FA\u884C\u547D\u4E2D\u5C31\u7EEA\u6B63\u5219\uFF08readinessPattern\uFF0C\u89C1\u4E0A\uFF09\uFF1Bexited=\u8FDB\u7A0B\u9000\u51FA\uFF08\u4E00\u6B21\u6027\u547D\u4EE4\u5B8C\u6210\u6216\u542F\u52A8\u5FEB\u901F\u5931\u8D25\uFF0CexitCode=0 \u4E3A\u6210\u529F\uFF0C\u975E 0 \u68C0\u67E5 logTail \u5B9A\u4F4D\u539F\u56E0\uFF09\uFF1Bstopped=\u7B49\u5F85\u671F\u95F4\u88AB\u505C\u6B62\uFF1Btimeout=\u8D85\u65F6\uFF0C\u8FDB\u7A0B\u4ECD\u5728\u8FD0\u884C\uFF08\u4E0D\u7B97\u9519\u8BEF\uFF0C\u6309 logTail \u81EA\u884C\u5224\u65AD\u6216\u7A0D\u540E launch_config_logs \u8F6E\u8BE2\uFF09\u3002\u4E0A\u9650 300000\uFF085 \u5206\u949F\uFF09\uFF0C\u6162\u542F\u52A8\u670D\u52A1\uFF08\u5982 Spring Boot\uFF09\u5EFA\u8BAE 60000-120000\u3002\u6279\u91CF\u6A21\u5F0F\u5BF9\u5168\u90E8\u6210\u529F\u9879\u5E76\u884C\u7B49\u5F85\uFF08\u6BCF\u9879\u72EC\u7ACB\u8BA1\u65F6\uFF09\u3002"}},required:[]}},q={name:"launch_config_restart",description:"\u91CD\u542F\u542F\u52A8\u9879\uFF08bridge \u5185\u539F\u5B50\u6267\u884C\u300C\u505C\u6B62\u65E7\u8FDB\u7A0B + \u91CD\u65B0\u62C9\u8D77\u300D\uFF0C\u4EE3\u7406\u5230\u8C03\u7528\u8005\u6240\u5728 runtime-bridge\uFF09\u3002\u76F8\u6BD4\u5148 launch_config_stop \u518D launch_config_start\uFF0C\u4E0D\u5B58\u5728 stop \u8BF7\u6C42\u4E22\u5931\u5BFC\u81F4 start \u649E\u4E0A\u4ECD\u5728\u8FD0\u884C\u65E7\u8FDB\u7A0B\u7684\u7ADE\u6001\u3002\u672A\u8FD0\u884C\u65F6\u7B49\u4EF7\u4E8E\u76F4\u63A5 start\u3002\u8986\u76D6\u53C2\u6570\uFF08command/cwd/env \u7B49\uFF09\u4E0E\u542F\u52A8\u7B49\u5F85\u8BED\u4E49\u540C launch_config_start\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5FC5\u586B\uFF09"},command:{type:"string",description:"\u542F\u52A8\u547D\u4EE4\u8986\u76D6\uFF08\u53EF\u9009\uFF09"},cwd:{type:"string",description:"\u5DE5\u4F5C\u76EE\u5F55\u8986\u76D6\uFF08\u53EF\u9009\uFF09"},env:{type:"object",description:"\u73AF\u5883\u53D8\u91CF\u8986\u76D6\uFF08\u53EF\u9009\uFF0C\u6574\u4F53\u8986\u76D6\u914D\u7F6E env\uFF09",additionalProperties:{type:"string"}},jdkPath:{type:"string",description:"JDK \u8DEF\u5F84\uFF08type=java \u65F6\u6709\u6548\uFF0C\u53EF\u9009\uFF09"},workspacePath:{type:"string",description:"\u9879\u76EE\u5DE5\u4F5C\u533A\u8DEF\u5F84\uFF08\u53EF\u9009\uFF09"},readinessPattern:{type:"string",description:"\u5C31\u7EEA\u65E5\u5FD7\u6B63\u5219\u8986\u76D6\uFF08\u53EF\u9009\uFF0CJS RegExp \u8BED\u6CD5\uFF09\uFF1A\u8BBE\u7F6E\u540E\u65B0\u8FDB\u7A0B\u542F\u52A8\u7B49\u5F85\u7684 ready \u4FE1\u53F7\u4E3A\u8F93\u51FA\u884C\u547D\u4E2D\u6B63\u5219\u3002\u7559\u7A7A=\u4EE5\u542F\u52A8\u9879\u914D\u7F6E\u4E3A\u51C6\uFF08\u9ED8\u8BA4\u7AEF\u53E3\u76D1\u542C\u63A2\u6D4B\uFF09"},wait_timeout_ms:{type:"number",description:"\u963B\u585E\u7B49\u5F85\u65B0\u8FDB\u7A0B\u542F\u52A8\u7ED3\u679C\u7684\u8D85\u65F6\u6BEB\u79D2\u6570\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 0=\u4E0D\u7B49\u5F85\uFF09\u3002\u8BED\u4E49\u540C launch_config_start\uFF1Aready=\u7AEF\u53E3\u5C31\u7EEA\u6216\u65E5\u5FD7\u547D\u4E2D\u5C31\u7EEA\u6B63\u5219 / exited=\u8FDB\u7A0B\u9000\u51FA / timeout=\u8D85\u65F6\uFF08\u8FDB\u7A0B\u4ECD\u5728\u8FD0\u884C\uFF0C\u975E\u9519\u8BEF\uFF09\u3002"}},required:["configId"]}},F={name:"launch_config_stop",description:"\u505C\u6B62\u542F\u52A8\u9879\u8FDB\u7A0B\uFF08\u542B\u8FDB\u7A0B\u6811\uFF0C\u4EE3\u7406\u5230\u8C03\u7528\u8005\u6240\u5728 runtime-bridge\uFF09\u3002\u76EE\u6807\u542F\u52A8\u9879\u5FC5\u987B\u5C5E\u4E8E\u5F53\u524D\u9879\u76EE\uFF08\u670D\u52A1\u7AEF\u6821\u9A8C\uFF09\u3002\u82E5\u8FDB\u7A0B\u5DF2\u9000\u51FA\uFF0C\u8FD4\u56DE\u5DF2\u505C\u6B62/\u65E0\u8FD0\u884C\u8FDB\u7A0B\u7684\u72B6\u6001\uFF0C\u4E0D\u62A5\u9519\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5FC5\u586B\uFF09"}},required:["configId"]}},G={name:"launch_config_logs",description:"\u589E\u91CF\u62C9\u53D6\u542F\u52A8\u9879\u8FD0\u884C\u65E5\u5FD7\uFF08\u6700\u8FD1 200 \u6761\u73AF\u5F62\u7F13\u51B2\uFF0C\u4EE3\u7406\u5230\u8C03\u7528\u8005\u6240\u5728 runtime-bridge\uFF09\u3002\u9996\u6B21\u8C03\u7528\u4E0D\u4F20 since \u83B7\u53D6\u5168\u90E8\u7F13\u51B2\u65E5\u5FD7\uFF1B\u540E\u7EED\u6BCF\u6B21\u628A\u8FD4\u56DE\u7684 nextSince \u4F5C\u4E3A since \u7EED\u62C9\u589E\u91CF\u3002\u8FD4\u56DE\u5B57\u6BB5\uFF1Alines\uFF08\u65E5\u5FD7\u884C\uFF09\u3001nextSince\uFF08\u4E0B\u6B21\u6E38\u6807\uFF09\u3001running\uFF08\u8FDB\u7A0B\u662F\u5426\u8FD0\u884C\u4E2D\uFF09\u3002\u76EE\u6807\u542F\u52A8\u9879\u5FC5\u987B\u5C5E\u4E8E\u5F53\u524D\u9879\u76EE\uFF08\u670D\u52A1\u7AEF\u6821\u9A8C\uFF09\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5FC5\u586B\uFF09"},since:{type:"number",description:"\u65E5\u5FD7\u6E38\u6807\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 0 = \u4ECE\u5934\u62C9\u53D6\uFF09"}},required:["configId"]}},U={name:"launch_config_status",description:"\u67E5\u8BE2\u8C03\u7528\u8005\u6240\u5728 bridge \u673A\u5668\u4E0A\u5F53\u524D\u9879\u76EE\u7684\u5168\u90E8\u542F\u52A8\u9879\u8FD0\u884C\u72B6\u6001\u3002\u8FD4\u56DE runs \u6570\u7EC4\uFF1A\u6BCF\u9879\u542B configId\u3001status\uFF08running/exited/stopped\uFF09\u3001pid\u3001startTime\u3001command \u7B49\u3002\u4EC5\u8FD4\u56DE\u5F53\u524D\u9879\u76EE\u914D\u7F6E\u7684\u542F\u52A8\u9879\uFF08\u670D\u52A1\u7AEF\u6309\u9879\u76EE\u8FC7\u6EE4\uFF09\u3002",inputSchema:{type:"object",properties:{},required:[]}},ze=new Set(["launch_config_list","launch_config_create","launch_config_update","launch_config_delete","launch_config_start","launch_config_restart","launch_config_stop","launch_config_logs","launch_config_status"]),Ke=new Set(["hire_colleague"]),B={name:"create_meeting",description:"\u521B\u5EFA\u65B0\u4F1A\u8BAE\u5E76\u9080\u8BF7\u6307\u5B9A\u89D2\u8272\uFF08\u542B Agent \u5B9E\u4F8B\uFF09\u3002\u6210\u5458\u5168\u90E8\u5230\u4F4D\u540E\u4F1A\u8BAE\u5F00\u59CB\uFF0C\u968F\u540E\u4F7F\u7528 meeting_speak \u53D1\u8A00 / poll_message \u7B49\u5F85\u5176\u5B83\u7528\u6237\u53D1\u8A00 / end_meeting \u7ED3\u675F\u4F1A\u8BAE\u3002\u963B\u585E\u578B\u5DE5\u5177\uFF1A\u5168\u5458\u5230\u4F4D\u6216\u7B49\u5F85\u8D85\u65F6\u540E\u624D\u8FD4\u56DE\u3002\u6301\u6709\u8FDB\u884C\u4E2D\u6D41\u7A0B\u4EFB\u52A1\u65F6\u540C\u6837\u53EF\u4EE5\u521B\u5EFA\u4F1A\u8BAE\uFF08\u4F8B\u5982\u4EFB\u52A1\u672C\u8EAB\u8981\u6C42\u5F00\u4F1A\u8BA8\u8BBA/\u534F\u8C03\u7684\u573A\u666F\uFF09\uFF0C\u4E0D\u4F1A\u88AB\u4EFB\u52A1\u62E6\u622A\uFF1B\u8FDB\u5165\u4F1A\u8BAE\u540E\u4EFB\u52A1\u63D0\u9192\u6682\u505C\uFF0C\u4F1A\u8BAE\u7ED3\u675F\u540E\u81EA\u52A8\u6062\u590D\u3002",inputSchema:{type:"object",properties:{topic:{type:"string",description:"\u4F1A\u8BAE\u4E3B\u9898\uFF08\u5FC5\u586B\uFF09"},description:{type:"string",description:"\u4F1A\u8BAE\u63CF\u8FF0\uFF08\u53EF\u9009\uFF09"},members:{type:"array",description:"\u53D7\u9080\u6210\u5458\uFF1A[{roleId, agentId?}, ...]\uFF0CagentId \u672A\u6307\u5B9A\u65F6\u670D\u52A1\u7AEF\u6309\u89D2\u8272\u81EA\u52A8\u9009\u53D6\u5B9E\u4F8B",items:{type:"object",properties:{roleId:{type:"string",description:"\u89D2\u8272 id\uFF08\u5FC5\u586B\uFF09"},agentId:{type:"string",description:"Agent \u5B9E\u4F8B id\uFF08\u53EF\u9009\uFF09"}},required:["roleId"]}},waitTimeoutMs:{type:"number",description:"\u7B49\u5F85\u5168\u5458\u5230\u4F4D\u7684\u8D85\u65F6\u65F6\u957F\uFF08\u6BEB\u79D2\uFF0C\u53EF\u9009\uFF0C\u9ED8\u8BA4/\u4E0A\u9650 270000\uFF09\u3002\u8D85\u65F6\u8FD4\u56DE WAITING \u72B6\u6001\u800C\u975E\u9519\u8BEF\uFF0C\u53EF\u7EE7\u7EED poll_message \u7B49\u5F85\u5168\u5458\u5230\u4F4D"}},required:["topic","members"]}},H={name:"leave_meeting",description:"\u9000\u51FA\u5F53\u524D\u52A0\u5165\u7684\u4F1A\u8BAE\u3002\u5DF2\u52A0\u5165\u6210\u5458\u6B63\u5F0F\u9000\u51FA\uFF1B\u672A\u52A0\u5165\u6210\u5458\u8C03\u7528\u89C6\u4E3A\u5A49\u62D2\u9080\u8BF7\u3002",inputSchema:{type:"object",properties:{meetingId:{type:"string",description:"\u4F1A\u8BAE ID\uFF08\u5FC5\u586B\uFF09"}},required:["meetingId"]}},W={name:"end_meeting",description:"\u7ED3\u675F\u6307\u5B9A\u4F1A\u8BAE\uFF08\u4EC5\u4F1A\u8BAE\u521B\u5EFA\u8005\u53EF\u8C03\u7528\uFF09\u3002\u7ED3\u675F\u540E\u6210\u5458\u53EF\u4F7F\u7528 get_meeting_info \u67E5\u770B\u5386\u53F2\u53D1\u8A00\u3002",inputSchema:{type:"object",properties:{meetingId:{type:"string",description:"\u4F1A\u8BAE ID\uFF08\u5FC5\u586B\uFF09"}},required:["meetingId"]}},V={name:"meeting_speak",description:"\u5411\u6D3B\u8DC3\u4F1A\u8BAE\u53D1\u8A00\uFF08\u4EC5\u5DF2\u52A0\u5165\u4E14\u4F1A\u8BAE\u5DF2 STARTED \u7684\u6210\u5458\u53EF\u7528\uFF09\u3002\u53D1\u8A00\u5B9E\u65F6\u5E7F\u64AD\u7ED9\u6240\u6709\u53C2\u4F1A\u6210\u5458\u3002",inputSchema:{type:"object",properties:{meetingId:{type:"string",description:"\u4F1A\u8BAE ID\uFF08\u5FC5\u586B\uFF09"},content:{type:"string",description:"\u53D1\u8A00\u5185\u5BB9\uFF08\u5FC5\u586B\uFF09"}},required:["meetingId","content"]}},Y={name:"get_meeting_info",description:"\u83B7\u53D6\u4F1A\u8BAE\u4FE1\u606F JSON\uFF1A\u4E3B\u9898/\u63CF\u8FF0/\u72B6\u6001/\u6210\u5458\u5217\u8868\uFF08\u521B\u5EFA\u4EBA\u6807\u6CE8 isCreator\uFF09/\u6700\u8FD1\u53D1\u8A00\u8BB0\u5F55\u3002\u53EF\u7528\u4E8E\u67E5\u770B\u81EA\u5DF1\u521B\u5EFA\u7684\u4F1A\u8BAE\u8FDB\u5EA6\u6216\u5DF2\u52A0\u5165\u4F1A\u8BAE\u7684\u8BE6\u60C5\u3002",inputSchema:{type:"object",properties:{meetingId:{type:"string",description:"\u4F1A\u8BAE ID\uFF08\u5FC5\u586B\uFF09"}},required:["meetingId"]}},z={name:"my_meetings",description:"\u67E5\u770B\u4E0E\u6211\u76F8\u5173\u7684\u4F1A\u8BAE\u5217\u8868\uFF08\u65E0\u9700 meetingId\uFF09\uFF1Aactive=\u5DF2\u52A0\u5165\u7684\u8FDB\u884C\u4E2D\u4F1A\u8BAE\uFF1Binvited=\u53D7\u9080\u5C1A\u672A\u52A0\u5165\u7684\u4F1A\u8BAE\u3002\u6BCF\u4E2A\u4F1A\u8BAE\u542B meetingId/\u4E3B\u9898/\u72B6\u6001/\u6210\u5458\u5230\u4F4D\u60C5\u51B5\uFF0C\u53EF\u5148\u7528\u672C\u5DE5\u5177\u83B7\u53D6 meetingId \u518D\u8C03\u7528 get_meeting_info\u3002\u52A0\u5165\u4F1A\u8BAE\u4E0D\u9700\u8981\u624B\u52A8\u5DE5\u5177\uFF1A\u53D7\u9080\u540E\u5C06\u5728 poll_message \u65F6\u81EA\u52A8\u52A0\u5165\u3002",inputSchema:{type:"object",properties:{},required:[]}},Je=new Set(["create_meeting","leave_meeting","end_meeting","meeting_speak","get_meeting_info","my_meetings"]),Xe=new Set(["my_task","list_task_node_iterations","submit_task_result","start_task_rollback","finish_task_rollback","create_task_instance_comment"]),$e=new Set(["get_debug_log_config","query_debug_logs"]),Qe=new Set(["query_file_changes_history"]),K={name:"pencil_create_document",description:"\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684\u8BBE\u8BA1\u753B\u5E03\u6587\u6863\uFF08\u7A7A\u767D\u5355\u9875\uFF09\u3002\u521B\u5EFA\u540E\u7528 pencil_open_document \u6253\u5F00\u5E76\u5728 dashboard \u9762\u677F\u6E32\u67D3\uFF0C\u518D\u7528 pencil_create_nodes \u6DFB\u52A0\u56FE\u5F62\u3002",inputSchema:{type:"object",properties:{name:{type:"string",description:"\u753B\u5E03\u540D\u79F0\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4\u300C\u672A\u547D\u540D\u753B\u5E03\u300D\uFF09"}},required:[]}},J={name:"pencil_list_documents",description:"\u5217\u51FA\u5F53\u524D Agent \u7684\u6240\u6709\u8BBE\u8BA1\u753B\u5E03\u6587\u6863\uFF08\u672C\u5730 + \u88AB\u9080\u8BF7\u534F\u4F5C\u7684\u6258\u7BA1\u753B\u5E03\uFF0C\u9644 permission \u4E0E shared \u6807\u8BB0\uFF09\u3002",inputSchema:{type:"object",properties:{},required:[]}},X={name:"pencil_open_document",description:"\u6253\u5F00\u4E00\u4E2A\u8BBE\u8BA1\u753B\u5E03\u6587\u6863\uFF08dashboard \u5C06\u5728\u753B\u5E03\u9762\u677F\u6E32\u67D3\u5B83\uFF0Cagent \u884C\u4E0A\u65B9\u51FA\u73B0\u753B\u5E03\u6807\u8BB0\uFF09\u3002docId \u6765\u81EA pencil_create_document \u6216 pencil_list_documents\uFF1B\u88AB\u9080\u8BF7\u534F\u4F5C\u7684\u753B\u5E03\u4E5F\u5728\u5217\u8868\u4E2D\uFF08shared=true\uFF0C\u9644\u672C\u4EBA permission\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"}},required:["docId"]}},$={name:"pencil_close_document",description:"\u5173\u95ED\u8BBE\u8BA1\u753B\u5E03\u9762\u677F\uFF08\u4EC5\u6536\u8D77 dashboard \u9762\u677F\uFF0C\u4E0D\u5F71\u54CD\u5FBD\u6807\u8BA1\u6570\uFF0C\u6587\u6863\u4FDD\u7559\uFF0C\u53EF\u968F\u65F6 pencil_open_document \u91CD\u65B0\u6253\u5F00\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"}},required:["docId"]}},Q={name:"pencil_get_tree",description:"\u8BFB\u53D6\u753B\u5E03\u7684\u8282\u70B9\u6811\u6458\u8981\uFF08id/\u7C7B\u578B/\u540D\u79F0/\u51E0\u4F55\u4F4D\u7F6E\uFF0C\u542B\u6587\u672C\u5185\u5BB9\u622A\u65AD\uFF0C\u8FD4\u56DE truncated \u6807\u8BB0\u662F\u5426\u88AB\u622A\u65AD\uFF09\u3002\u7528\u4E8E\u5728\u521B\u5EFA/\u4FEE\u6539\u524D\u4E86\u89E3\u753B\u5E03\u73B0\u72B6\uFF1B\u8FD4\u56DE\u7684 version \u53EF\u4F5C\u4E3A expectedVersion \u4E50\u89C2\u9501\u4F20\u5165\u5199\u5DE5\u5177\u3002\u6811\u4E2D\u5B50\u8282\u70B9\u7684 x/y \u4E3A\u76F8\u5BF9\u7236\u8282\u70B9\u7684\u5C40\u90E8\u5750\u6807\uFF08\u4E0E pencil_create_nodes \u4E00\u81F4\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"}},required:["docId"]}},Z={name:"pencil_get_changes",description:"\u8FFD\u8D76\u534F\u4F5C\u753B\u5E03\u81EA sinceVersion \u4EE5\u6765\u7684\u53D8\u66F4\uFF08\u9010\u7248\u672C\u6458\u8981\uFF1A\u8C01\u6539\u7684\u3001\u65B0\u589E/\u66F4\u65B0/\u5220\u9664\u4E86\u54EA\u4E9B\u8282\u70B9\u53CA\u65B0\u503C\uFF09\u3002\u6536\u5230\u300C\u8BBE\u8BA1\u753B\u5E03\u53D8\u66F4\u300D\u7CFB\u7EDF\u901A\u77E5\u540E\u8C03\u7528\uFF1Btruncated=true \u8868\u793A\u53D8\u66F4\u65E5\u5FD7\u5DF2\u88AB\u4FEE\u526A\uFF0C\u8BF7\u6539\u7528 pencil_open_document \u5168\u91CF\u91CD\u8BFB\u3002\u8BF7\u628A\u8FD4\u56DE\u7684 toVersion \u8BB0\u4E3A\u8BE5\u753B\u5E03\u4F60\u5DF2\u770B\u5230\u7684\u6700\u65B0\u7248\u672C\uFF1A\u540E\u7EED\u5199\u5DE5\u5177\u4F20\u5B83\u4F5C expectedVersion \u4E50\u89C2\u9501\uFF0C\u4E0B\u6B21\u8FFD\u8D76\u4F20\u5B83\u4F5C sinceVersion\u3002\u4F60\u4E0A\u6B21\u770B\u5230\u7684\u7248\u672C\u6765\u81EA\u9080\u8BF7\u901A\u77E5\u7684 version \u6216\u672C\u5DE5\u5177\u4E0A\u6B21\u8FD4\u56DE\u7684 toVersion\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"},sinceVersion:{type:"number",description:"\u4F60\u5DF2\u770B\u5230\u7684\u6700\u65B0\u753B\u5E03\u7248\u672C\uFF08\u7F3A\u7701 0 = \u4ECE\u5934\u8FFD\u8D76\uFF1B\u4F20\u5165\u9080\u8BF7\u901A\u77E5/\u4E0A\u4E00\u6B21\u8FFD\u8D76\u8FD4\u56DE\u7684\u7248\u672C\u53EF\u53EA\u62FF\u589E\u91CF\uFF09"}},required:["docId"]}},ee={name:"pencil_create_nodes",description:'\u5728\u8BBE\u8BA1\u753B\u5E03\u4E2D\u521B\u5EFA\u8282\u70B9\uFF08\u4E00\u6B21\u53EF\u521B\u5EFA\u591A\u4E2A\u3001\u4E0A\u9650 500 \u4E2A\uFF0C\u652F\u6301 frame/rect/ellipse/text/line/image\uFF09\u3002\u989C\u8272\u7528\u5341\u516D\u8FDB\u5236\uFF08#RRGGBB / #RRGGBBAA / none\uFF09\u3002\u5750\u6807\u7CFB\uFF1Ax/y \u4E3A\u76F8\u5BF9 parentId \u7684\u5C40\u90E8\u5750\u6807\u2014\u2014parentId \u7F3A\u7701\uFF08\u6302\u5230\u9875\u9762\uFF09\u65F6\u662F\u9875\u9762\u5750\u6807\uFF08\u5DE6\u4E0A\u89D2\u539F\u70B9\uFF09\uFF0C\u5D4C\u5957\u5230 frame \u5185\u65F6\u4ECE\u8BE5 frame \u7684\u5DE6\u4E0A\u89D2\u8D77\u7B97\u3002image \u7C7B\u578B\uFF1A\u4F20 type="image" + imageData\uFF08base64 \u7F16\u7801\u7684\u56FE\u7247\uFF09+ width/height\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 200\uFF09\uFF0C\u670D\u52A1\u7AEF\u81EA\u52A8\u521B\u5EFA\u77E9\u5F62\u8282\u70B9\u5E76\u5185\u5D4C\u56FE\u7247\u3002',inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"},parentId:{type:"string",description:"\u7236\u8282\u70B9 id\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4\u753B\u5E03\u7B2C\u4E00\u4E2A\u9875\u9762\uFF1B\u53EF\u4F20 frame \u8282\u70B9 id \u5B9E\u73B0\u5D4C\u5957\uFF0C\u6B64\u65F6 x/y \u76F8\u5BF9\u8BE5 frame\uFF09"},nodes:{type:"array",description:"\u8282\u70B9\u89C4\u683C\u6570\u7EC4",items:{type:"object",properties:{type:{type:"string",description:"frame | rect | ellipse | text | line | image"},name:{type:"string",description:"\u8282\u70B9\u540D\u79F0\uFF08\u53EF\u9009\uFF09"},x:{type:"number",description:"X \u5750\u6807\uFF08\u76F8\u5BF9 parentId \u5C40\u90E8\u5750\u6807\uFF09"},y:{type:"number",description:"Y \u5750\u6807\uFF08\u76F8\u5BF9 parentId \u5C40\u90E8\u5750\u6807\uFF09"},width:{type:"number",description:"\u5BBD\u5EA6\uFF08line \u9ED8\u8BA4 100\uFF1Bimage \u9ED8\u8BA4 200\uFF09"},height:{type:"number",description:"\u9AD8\u5EA6\uFF08line \u9ED8\u8BA4 0\uFF1Bimage \u9ED8\u8BA4 200\uFF09"},fill:{type:"string",description:"\u586B\u5145\u8272\u5341\u516D\u8FDB\u5236\uFF08\u5982 #4F8EF7\uFF0Cnone \u8868\u793A\u65E0\u586B\u5145\uFF09"},stroke:{type:"string",description:"\u63CF\u8FB9\u8272\u5341\u516D\u8FDB\u5236\uFF08\u53EF\u9009\uFF09"},strokeWeight:{type:"number",description:"\u63CF\u8FB9\u7C97\u7EC6\uFF08\u9ED8\u8BA4 1\uFF09"},cornerRadius:{type:"number",description:"\u5706\u89D2\u534A\u5F84"},opacity:{type:"number",description:"\u4E0D\u900F\u660E\u5EA6 0-1"},rotation:{type:"number",description:"\u65CB\u8F6C\u89D2\u5EA6"},visible:{type:"boolean",description:"\u662F\u5426\u53EF\u89C1\uFF08\u9ED8\u8BA4 true\uFF09"},imageData:{type:"string",description:"\u56FE\u7247 base64 \u7F16\u7801\uFF08type=image \u5FC5\u586B\uFF0C\u5982 data:image/png;base64,... \u6216\u88F8 base64\uFF09"},imageScaleMode:{type:"string",description:"\u56FE\u7247\u7F29\u653E\u6A21\u5F0F\uFF08type=image \u4F7F\u7528\uFF0C\u679A\u4E3E\uFF1AFILL / FIT / CROP / TILE\uFF0C\u9ED8\u8BA4 FILL\uFF09"},text:{type:"string",description:"text \u8282\u70B9\u7684\u6587\u672C\u5185\u5BB9"},fontSize:{type:"number",description:"\u5B57\u53F7\uFF08\u9ED8\u8BA4 14\uFF09"},fontWeight:{type:"number",description:"\u5B57\u91CD\uFF08\u9ED8\u8BA4 400\uFF09"},fontFamily:{type:"string",description:"\u5B57\u4F53\uFF08\u9ED8\u8BA4 Inter\uFF09"},fontColor:{type:"string",description:"\u6587\u672C\u989C\u8272\uFF08\u9ED8\u8BA4\u9ED1\uFF09"}},required:["type"]}},expectedVersion:{type:"number",description:"\u53EF\u9009\u4E50\u89C2\u9501\uFF1A\u4F20\u5165\u6700\u8FD1\u4E00\u6B21 pencil_get_tree / \u5199\u5DE5\u5177\u8FD4\u56DE\u7684 version\u3002\u753B\u5E03\u5728\u6B64\u671F\u95F4\u88AB\u4EBA\u6216\u5176\u4ED6 Agent \u4FEE\u6539\u65F6\u8FD4\u56DE\u7248\u672C\u51B2\u7A81\uFF08\u800C\u975E\u9759\u9ED8\u8986\u76D6\u5BF9\u65B9\u6539\u52A8\uFF09\uFF1B\u591A\u4EBA/\u591A Agent \u534F\u4F5C\u7F16\u8F91\u65F6\u5EFA\u8BAE\u4F20\u5165"}},required:["docId","nodes"]}},te={name:"pencil_update_nodes",description:"\u6279\u91CF\u66F4\u65B0\u753B\u5E03\u8282\u70B9\u5C5E\u6027\uFF08\u51E0\u4F55/\u586B\u5145/\u6587\u672C/\u900F\u660E\u5EA6/\u53EF\u89C1\u6027/\u540D\u79F0\u7B49\uFF09\u3002id \u53EF\u901A\u8FC7 pencil_get_tree \u83B7\u5F97\u3002\u4EC5\u652F\u6301\u767D\u540D\u5355\u5B57\u6BB5\uFF0C\u672A\u77E5\u5B57\u6BB5\u4F1A\u88AB\u62D2\u7EDD\uFF1Bid/parentId/childIds \u4E0D\u53EF\u901A\u8FC7\u672C\u5DE5\u5177\u4FEE\u6539\u3002image \u7C7B\u578B\u8282\u70B9\u53EF\u7528 imageScaleMode \u8C03\u6574\u56FE\u7247\u7F29\u653E\u6A21\u5F0F\uFF08FILL/FIT/CROP/TILE\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"},updates:{type:"array",description:"\u66F4\u65B0\u5217\u8868",items:{type:"object",properties:{id:{type:"string",description:"\u8282\u70B9 id"},props:{type:"object",description:"\u8981\u66F4\u65B0\u7684\u5C5E\u6027\uFF0C\u4EC5\u652F\u6301\u8FD9\u4E9B\u5B57\u6BB5\uFF08\u5176\u4ED6\u5B57\u6BB5\u4F1A\u88AB\u62D2\u7EDD\uFF09\uFF1Ax / y / width / height / rotation / opacity / visible / name / fill / stroke / strokeWeight / cornerRadius / text / fontSize / fontWeight / fontFamily / fontColor / imageData / imageScaleMode"}},required:["id","props"]}},expectedVersion:{type:"number",description:"\u53EF\u9009\u4E50\u89C2\u9501\uFF1A\u4F20\u5165\u6700\u8FD1\u4E00\u6B21 pencil_get_tree / \u5199\u5DE5\u5177\u8FD4\u56DE\u7684 version\u3002\u753B\u5E03\u5728\u6B64\u671F\u95F4\u88AB\u4EBA\u6216\u5176\u4ED6 Agent \u4FEE\u6539\u65F6\u8FD4\u56DE\u7248\u672C\u51B2\u7A81\uFF08\u800C\u975E\u9759\u9ED8\u8986\u76D6\u5BF9\u65B9\u6539\u52A8\uFF09\uFF1B\u591A\u4EBA/\u591A Agent \u534F\u4F5C\u7F16\u8F91\u65F6\u5EFA\u8BAE\u4F20\u5165"}},required:["docId","updates"]}},ie={name:"pencil_delete_nodes",description:"\u6279\u91CF\u5220\u9664\u753B\u5E03\u8282\u70B9\uFF08\u542B\u5176\u5168\u90E8\u5B50\u8282\u70B9\uFF09\u3002root/\u9875\u9762\u8282\u70B9\u4E0D\u53EF\u5220\u9664\u3002\u5220\u9664\u6574\u4E2A\u753B\u5E03\u7528 pencil_delete_document\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"},ids:{type:"array",items:{type:"string"},description:"\u8981\u5220\u9664\u7684\u8282\u70B9 id \u5217\u8868"},expectedVersion:{type:"number",description:"\u53EF\u9009\u4E50\u89C2\u9501\uFF1A\u4F20\u5165\u6700\u8FD1\u4E00\u6B21 pencil_get_tree / \u5199\u5DE5\u5177\u8FD4\u56DE\u7684 version\u3002\u753B\u5E03\u5728\u6B64\u671F\u95F4\u88AB\u4EBA\u6216\u5176\u4ED6 Agent \u4FEE\u6539\u65F6\u8FD4\u56DE\u7248\u672C\u51B2\u7A81\uFF08\u800C\u975E\u9759\u9ED8\u8986\u76D6\u5BF9\u65B9\u6539\u52A8\uFF09\uFF1B\u591A\u4EBA/\u591A Agent \u534F\u4F5C\u7F16\u8F91\u65F6\u5EFA\u8BAE\u4F20\u5165"}},required:["docId","ids"]}},re={name:"pencil_delete_document",description:"\u5220\u9664\u6574\u4E2A\u8BBE\u8BA1\u753B\u5E03\u6587\u6863\uFF08\u4EC5\u753B\u5E03\u62E5\u6709\u8005\u53EF\u8C03\u7528\uFF0C\u4E0D\u53EF\u6062\u590D\uFF1A\u6587\u6863\u3001\u5168\u90E8\u8282\u70B9\u4E0E\u534F\u4F5C\u8005\u4E00\u5E76\u6E05\u9664\uFF09\u3002\u7528\u4E8E\u6E05\u7406\u4E0D\u518D\u9700\u8981\u7684\u753B\u5E03\uFF1B\u53EA\u5220\u9664\u753B\u5E03\u91CC\u7684\u90E8\u5206\u8282\u70B9\u7528 pencil_delete_nodes\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"}},required:["docId"]}},ne={name:"pencil_rename_document",description:"\u91CD\u547D\u540D\u8BBE\u8BA1\u753B\u5E03\uFF08ACL write \u53EF\u8C03\u7528\uFF1A\u62E5\u6709\u8005\u6216 permission=write \u6210\u5458\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"},name:{type:"string",description:"\u65B0\u7684\u753B\u5E03\u540D\u79F0"},expectedVersion:{type:"number",description:"\u53EF\u9009\u4E50\u89C2\u9501\uFF1A\u4F20\u5165\u6700\u8FD1\u4E00\u6B21 pencil_get_tree / \u5199\u5DE5\u5177\u8FD4\u56DE\u7684 version\u3002\u753B\u5E03\u5728\u6B64\u671F\u95F4\u88AB\u4EBA\u6216\u5176\u4ED6 Agent \u4FEE\u6539\u65F6\u8FD4\u56DE\u7248\u672C\u51B2\u7A81\uFF08\u800C\u975E\u9759\u9ED8\u8986\u76D6\u5BF9\u65B9\u6539\u52A8\uFF09"}},required:["docId","name"]}},oe={name:"pencil_share_document",description:"\u5C06\u8BBE\u8BA1\u753B\u5E03\u5206\u4EAB\u7ED9\u5176\u5B83 Agent \u534F\u4F5C\uFF08\u6BCF\u4F4D\u88AB\u9080\u8BF7\u4EBA\u6307\u5B9A read=\u53EA\u8BFB \u6216 write=\u53EF\u5199\uFF09\u3002\u88AB\u9080\u8BF7\u4EBA\u5FC5\u987B\u5DF2\u5F00\u542F\u300C\u8BBE\u8BA1\u753B\u5E03 (Pencil)\u300D\u80FD\u529B\uFF0C\u5426\u5219\u5206\u4EAB\u4F1A\u88AB\u6574\u4F53\u62D2\u7EDD\u3002\u5206\u4EAB\u540E\u53CC\u65B9\u7EE7\u7EED\u7528 pencil_get_tree / pencil_update_nodes \u7B49\u5DE5\u5177\u534F\u4F5C\uFF1B\u88AB\u9080\u8BF7\u4EBA\u4F1A\u6536\u5230\u9080\u8BF7\u901A\u77E5\u3002\u64A4\u9500\u5206\u4EAB\u914D\u5BF9\u4F7F\u7528 pencil_revoke_share\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u8981\u5206\u4EAB\u7684\u753B\u5E03\u6587\u6863 id\uFF08\u987B\u4E3A\u672C Agent \u521B\u5EFA\u7684\u753B\u5E03\uFF09"},members:{type:"array",description:"\u88AB\u9080\u8BF7\u4EBA\u5217\u8868",items:{type:"object",properties:{agentId:{type:"string",description:"\u88AB\u9080\u8BF7 Agent \u7684\u5B9E\u4F8B id"},permission:{type:"string",enum:["read","write"],description:"\u534F\u4F5C\u6743\u9650\uFF1Aread=\u53EA\u8BFB\u67E5\u770B\uFF0Cwrite=\u53EF\u7F16\u8F91\uFF08\u7F3A\u7701 read\uFF09"}},required:["agentId"]}}},required:["docId","members"]}},pe={name:"pencil_revoke_share",description:"\u64A4\u9500\u753B\u5E03\u5206\u4EAB\uFF08\u4EC5\u753B\u5E03\u62E5\u6709\u8005\u53EF\u8C03\u7528\uFF0C\u4E0E pencil_share_document \u914D\u5BF9\u4F7F\u7528\uFF09\u3002agentIds \u7701\u7565\u65F6\u6574\u4F53\u64A4\u9500\uFF0C\u753B\u5E03\u56DE\u5230\u4EC5\u672C Agent \u79C1\u6709\uFF1B\u63D0\u4F9B agentIds \u65F6\u4EC5\u79FB\u9664\u6307\u5B9A\u534F\u4F5C\u8005\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id"},agentIds:{type:"array",items:{type:"string"},description:"\u8981\u79FB\u9664\u7684\u534F\u4F5C\u8005 agentId \u5217\u8868\uFF08\u7701\u7565 = \u6574\u4F53\u64A4\u9500\u5206\u4EAB\uFF09"}},required:["docId"]}},se={name:"pencil_export_image",description:"\u5BFC\u51FA\u8BBE\u8BA1\u753B\u5E03\u4E3A PNG \u56FE\u7247\u5230\u6587\u4EF6\u5E76\u8FD4\u56DE\u6587\u4EF6\u8DEF\u5F84\u7B49\u5143\u4FE1\u606F\uFF08\u4E0D\u8FD4\u56DE\u56FE\u7247\u5185\u5BB9\uFF0C\u907F\u514D\u5927\u4F53\u79EF base64 \u5360\u7528\u4E0A\u4E0B\u6587\uFF09\u3002\u9700\u8981\u67E5\u770B\u753B\u5E03\u6548\u679C\u65F6\uFF0C\u7528\u6587\u4EF6\u8BFB\u53D6\u5DE5\u5177\u8BFB\u53D6\u8FD4\u56DE\u8DEF\u5F84\u7684 PNG \u5373\u53EF\u3002savePath \u901A\u5E38\u7701\u7565\uFF1A\u81EA\u52A8\u5BFC\u51FA\u5230\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55\uFF08\u4E34\u65F6\u6587\u4EF6\u53EF\u80FD\u88AB\u7CFB\u7EDF\u6E05\u7406\uFF0C\u4E0D\u8981\u957F\u671F\u5F15\u7528\uFF09\u3002\u4EC5\u5F53\u9700\u8981\u628A\u56FE\u7247\u4F5C\u4E3A\u4EA4\u4ED8\u7269\u4FDD\u5B58\u5230\u6307\u5B9A\u4F4D\u7F6E\u65F6\u624D\u4F20 savePath\u3002\u6E32\u67D3\u56FE\u7531 dashboard \u753B\u5E03\u9762\u677F\u81EA\u52A8\u751F\u6210\u5E76\u7F13\u5B58\uFF08\u753B\u5E03\u539F\u59CB\u5206\u8FA8\u7387\uFF0C\u6700\u957F\u8FB9 \u22648192 \u5185\u4E0D\u7F29\u653E\uFF09\uFF1B\u753B\u5E03\u521A\u88AB\u5DE5\u5177\u4FEE\u6539\u540E\u82E5\u7F13\u5B58\u843D\u540E\uFF0C\u4F1A\u7B49\u5F85\u9762\u677F\u8865\u6E32\uFF08\u7EA6\u6570\u79D2\uFF09\u3002\u753B\u5E03\u4ECE\u672A\u6E32\u67D3\u8FC7\uFF08dashboard \u9762\u677F\u672A\u6253\u5F00\u8FC7\uFF09\u4F1A\u8FD4\u56DE\u5931\u8D25\u5E76\u63D0\u793A\u5148\u6253\u5F00\u9762\u677F\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id\uFF08\u6765\u81EA pencil_create_document / pencil_list_documents\uFF09"},savePath:{type:"string",description:"\u53EF\u9009\uFF1APNG \u4FDD\u5B58\u8DEF\u5F84\uFF0C\u4E0D\u9650\u5236\u4FDD\u5B58\u4F4D\u7F6E\uFF08\u76F8\u5BF9\u8DEF\u5F84\u57FA\u4E8E\u5DE5\u4F5C\u533A\u6839\u89E3\u6790\uFF0C\u7EDD\u5BF9\u8DEF\u5F84\u76F4\u63A5\u4F7F\u7528\uFF09\uFF0C\u5982 design/hero.png \u6216 D:\\exports\\hero.png\u3002\u7701\u7565\u65F6\u5BFC\u51FA\u5230\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55\u5E76\u8FD4\u56DE\u4E34\u65F6\u8DEF\u5F84"},waitMs:{type:"number",description:"\u53EF\u9009\uFF1A\u7B49\u5F85\u9762\u677F\u8865\u6E32\u7684\u6700\u957F\u6BEB\u79D2\u6570\uFF08\u9ED8\u8BA4 8000\uFF0C\u4E0A\u9650 20000\uFF09"}},required:["docId"]}},de={name:"pencil_export_document",description:"\u628A\u8BBE\u8BA1\u753B\u5E03\u5BFC\u51FA\u4E3A\u6587\u4EF6\uFF08\u672C\u5730 headless \u5BFC\u51FA\u7BA1\u7EBF\uFF0C\u65E0\u9700\u6253\u5F00\u753B\u5E03\u9762\u677F\uFF09\u3002\u8FD4\u56DE\u5BFC\u51FA\u6587\u4EF6\u8DEF\u5F84\u7B49\u5143\u4FE1\u606F\uFF08\u4E0D\u8FD4\u56DE\u6587\u4EF6\u5185\u5BB9\uFF09\u3002format \u652F\u6301\u591A\u79CD\u6837\u5F0F\uFF1Asvg=\u77E2\u91CF\u56FE\uFF08\u63A8\u8350\uFF0C\u6587\u5B57\u4E3A\u771F\u6587\u672C\uFF09/ html=\u771F\u5B9E DOM+CSS \u7F51\u9875\uFF08standalone \u5355\u6587\u4EF6\uFF0C\u53EF\u76F4\u63A5\u6D4F\u89C8\u5668\u6253\u5F00\uFF09/ png|jpg|webp=\u4F4D\u56FE\uFF08scale \u63A7\u5236\u6E05\u6670\u5EA6\uFF09/ pptx=PowerPoint \u6F14\u793A\u7A3F / fig=Figma \u6587\u6863 / jsx=React \u7EC4\u4EF6\u4EE3\u7801\uFF08\u9700\u4F20 nodeId\uFF09\u3002\u7F3A\u7701\u5BFC\u51FA\u7B2C\u4E00\u9875\u5168\u90E8\u5185\u5BB9\uFF1B\u4F20 nodeId\uFF08\u6765\u81EA pencil_get_tree\uFF09\u53EF\u53EA\u5BFC\u51FA\u5355\u4E2A\u8282\u70B9\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u753B\u5E03\u6587\u6863 id\uFF08\u6765\u81EA pencil_create_document / pencil_list_documents\uFF09"},format:{type:"string",enum:["svg","html","png","jpg","webp","pptx","fig","jsx"],description:"\u5BFC\u51FA\u683C\u5F0F\uFF08\u9ED8\u8BA4 svg\uFF09"},nodeId:{type:"string",description:"\u53EF\u9009\uFF1A\u53EA\u5BFC\u51FA\u5355\u4E2A\u8282\u70B9\uFF08jsx \u5FC5\u586B\uFF09\uFF1B\u7701\u7565=\u5BFC\u51FA\u7B2C\u4E00\u9875\u5168\u90E8\u5185\u5BB9"},scale:{type:"number",description:"\u53EF\u9009\uFF1Apng/jpg/webp \u7F29\u653E\u500D\u6570\uFF08\u9ED8\u8BA4 1\uFF09"},quality:{type:"number",description:"\u53EF\u9009\uFF1Ajpg/webp \u8D28\u91CF 0-100\uFF08\u9ED8\u8BA4 90\uFF09"},savePath:{type:"string",description:"\u53EF\u9009\uFF1A\u5BFC\u51FA\u6587\u4EF6\u4FDD\u5B58\u8DEF\u5F84\uFF0C\u4E0D\u9650\u5236\u4FDD\u5B58\u4F4D\u7F6E\uFF08\u76F8\u5BF9\u8DEF\u5F84\u57FA\u4E8E\u5DE5\u4F5C\u533A\u6839\u89E3\u6790\uFF0C\u7EDD\u5BF9\u8DEF\u5F84\u76F4\u63A5\u4F7F\u7528\uFF09\uFF0C\u5982 design/hero.svg \u6216 D:\\exports\\hero.svg\u3002\u7701\u7565\u65F6\u4FDD\u5B58\u5230\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55\u5E76\u8FD4\u56DE\u4E34\u65F6\u8DEF\u5F84"}},required:["docId"]}},Ze=new Set(["pencil_create_document","pencil_list_documents","pencil_open_document","pencil_close_document","pencil_get_tree","pencil_get_changes","pencil_create_nodes","pencil_update_nodes","pencil_delete_nodes","pencil_export_image","pencil_share_document","pencil_revoke_share","pencil_delete_document","pencil_rename_document","pencil_export_document"]),ae={name:"draw_create_document",description:"\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684\u7ED8\u56FE\u6587\u6863\uFF08\u7A7A\u767D draw.io \u753B\u5E03\uFF09\u3002\u521B\u5EFA\u540E\u7528 draw_open_document \u6253\u5F00\uFF0C\u518D\u7528 draw_create_cells \u6DFB\u52A0\u56FE\u5F62\uFF0C\u6216\u7528 draw_export_document \u5BFC\u51FA\u3002",inputSchema:{type:"object",properties:{name:{type:"string",description:"\u6587\u6863\u540D\u79F0\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4\u300C\u672A\u547D\u540D\u7ED8\u56FE\u300D\uFF09"}},required:[]}},ce={name:"draw_list_documents",description:"\u5217\u51FA\u5F53\u524D Agent \u7684\u6240\u6709\u7ED8\u56FE\u6587\u6863\uFF08\u672C\u5730 + \u88AB\u9080\u8BF7\u534F\u4F5C\u7684\u6258\u7BA1\u6587\u6863\uFF0C\u9644 permission \u4E0E shared \u6807\u8BB0\uFF09\u3002",inputSchema:{type:"object",properties:{},required:[]}},le={name:"draw_open_document",description:"\u6253\u5F00\u4E00\u4E2A\u7ED8\u56FE\u6587\u6863\uFF08docId \u6765\u81EA draw_create_document \u6216 draw_list_documents\uFF1B\u88AB\u9080\u8BF7\u534F\u4F5C\u7684\u6587\u6863\u4E5F\u5728\u5217\u8868\u4E2D\uFF0Cshared=true\uFF0C\u9644\u672C\u4EBA permission\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"}},required:["docId"]}},me={name:"draw_close_document",description:"\u5173\u95ED\u7ED8\u56FE\u6587\u6863\uFF08\u4EC5\u6536\u8D77\u67E5\u770B\uFF0C\u4E0D\u5F71\u54CD\u6587\u6863\u4FDD\u7559\uFF1B\u53EF\u968F\u65F6 draw_open_document \u91CD\u65B0\u6253\u5F00\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"}},required:["docId"]}},_e={name:"draw_get_diagram",description:"\u8BFB\u53D6\u7ED8\u56FE\u6587\u6863\u7684 cell \u6811\u6458\u8981\uFF08id/value/type/style/\u51E0\u4F55\uFF0C\u542B\u6587\u672C\u622A\u65AD\uFF0C\u8FD4\u56DE truncated \u6807\u8BB0\u662F\u5426\u88AB\u622A\u65AD\uFF09\u3002\u7528\u4E8E\u5728\u521B\u5EFA/\u4FEE\u6539\u524D\u4E86\u89E3\u6587\u6863\u73B0\u72B6\uFF1B\u8FD4\u56DE\u7684 version \u53EF\u4F5C\u4E3A expectedVersion \u4E50\u89C2\u9501\u4F20\u5165\u5199\u5DE5\u5177\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"}},required:["docId"]}},ue={name:"draw_get_changes",description:"\u8FFD\u8D76\u534F\u4F5C\u6587\u6863\u81EA sinceVersion \u4EE5\u6765\u7684\u53D8\u66F4\uFF08\u9010\u7248\u672C\u6458\u8981\uFF1A\u8C01\u6539\u7684\u3001\u65B0\u589E/\u66F4\u65B0/\u5220\u9664\u4E86\u54EA\u4E9B cell \u53CA\u65B0\u503C\uFF09\u3002\u6536\u5230\u300C\u7ED8\u56FE\u53D8\u66F4\u300D\u7CFB\u7EDF\u901A\u77E5\u540E\u8C03\u7528\uFF1Btruncated=true \u8868\u793A\u53D8\u66F4\u65E5\u5FD7\u5DF2\u88AB\u4FEE\u526A\uFF0C\u8BF7\u6539\u7528 draw_open_document \u5168\u91CF\u91CD\u8BFB\u3002\u8BF7\u628A\u8FD4\u56DE\u7684 toVersion \u8BB0\u4E3A\u8BE5\u6587\u6863\u4F60\u5DF2\u770B\u5230\u7684\u6700\u65B0\u7248\u672C\uFF1A\u540E\u7EED\u5199\u5DE5\u5177\u4F20\u5B83\u4F5C expectedVersion \u4E50\u89C2\u9501\uFF0C\u4E0B\u6B21\u8FFD\u8D76\u4F20\u5B83\u4F5C sinceVersion\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"},sinceVersion:{type:"number",description:"\u4F60\u5DF2\u770B\u5230\u7684\u6700\u65B0\u6587\u6863\u7248\u672C\uFF08\u7F3A\u7701 0 = \u4ECE\u5934\u8FFD\u8D76\uFF09"}},required:["docId"]}},ge={name:"draw_create_cells",description:"\u5728\u7ED8\u56FE\u6587\u6863\u4E2D\u521B\u5EFA cell\uFF08mxCell\uFF0C\u4E00\u6B21\u53EF\u521B\u5EFA\u591A\u4E2A\u3001\u4E0A\u9650 500 \u4E2A\uFF0C\u652F\u6301 vertex \u548C edge\uFF09\u3002vertex \u53EF\u5E26 value/style/x/y/width/height\uFF08\u751F\u6210 mxGeometry \u5B50\u8282\u70B9\uFF09\uFF1Bedge \u9700 source/target\u3002parent \u7F3A\u7701\u6302\u5728 root \u6839\u4E0B\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"},cells:{type:"array",description:"cell \u89C4\u683C\u6570\u7EC4",items:{type:"object",properties:{id:{type:"string",description:"cell id\uFF08\u53EF\u9009\uFF0C\u7F3A\u7701\u81EA\u52A8\u751F\u6210\uFF09"},value:{type:"string",description:"cell \u663E\u793A\u6587\u672C\uFF08\u5982\u8282\u70B9\u6807\u7B7E\uFF09"},style:{type:"string",description:"draw.io style\uFF08\u5982 shape=rectangle;fillColor=#4F8EF7\uFF09"},parent:{type:"string",description:"\u7236 cell id\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 root\uFF09"},vertex:{type:"boolean",description:"\u662F\u5426 vertex\uFF08\u9ED8\u8BA4 false\uFF09"},edge:{type:"boolean",description:"\u662F\u5426 edge\uFF08\u9ED8\u8BA4 false\uFF09"},source:{type:"string",description:"edge \u8D77\u70B9 cell id"},target:{type:"string",description:"edge \u7EC8\u70B9 cell id"},x:{type:"number",description:"mxGeometry.x\uFF08vertex\uFF09"},y:{type:"number",description:"mxGeometry.y\uFF08vertex\uFF09"},width:{type:"number",description:"mxGeometry.width\uFF08vertex\uFF09"},height:{type:"number",description:"mxGeometry.height\uFF08vertex\uFF09"},relative:{type:"number",description:"mxGeometry.relative\uFF08edge \u7528\uFF09"}},required:[]}},expectedVersion:{type:"number",description:"\u53EF\u9009\u4E50\u89C2\u9501\uFF1A\u4F20\u5165\u6700\u8FD1\u4E00\u6B21 draw_get_diagram / \u5199\u5DE5\u5177\u8FD4\u56DE\u7684 version\u3002\u6587\u6863\u5728\u6B64\u671F\u95F4\u88AB\u4EBA\u6216\u5176\u4ED6 Agent \u4FEE\u6539\u65F6\u8FD4\u56DE\u7248\u672C\u51B2\u7A81\uFF08\u800C\u975E\u9759\u9ED8\u8986\u76D6\u5BF9\u65B9\u6539\u52A8\uFF09\uFF1B\u591A\u4EBA/\u591A Agent \u534F\u4F5C\u7F16\u8F91\u65F6\u5EFA\u8BAE\u4F20\u5165"}},required:["docId","cells"]}},ye={name:"draw_update_cells",description:"\u6279\u91CF\u66F4\u65B0\u7ED8\u56FE\u6587\u6863 cell \u5C5E\u6027\uFF08value/style/geometry/vertex/edge/parent/source/target/x/y/width/height/relative\uFF09\u3002id \u53EF\u901A\u8FC7 draw_get_diagram \u83B7\u5F97\u3002\u4EC5\u652F\u6301\u767D\u540D\u5355\u5B57\u6BB5\uFF0C\u672A\u77E5\u5B57\u6BB5\u4F1A\u88AB\u62D2\u7EDD\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"},updates:{type:"array",description:"\u66F4\u65B0\u5217\u8868",items:{type:"object",properties:{id:{type:"string",description:"cell id"},props:{type:"object",description:"\u8981\u66F4\u65B0\u7684\u5C5E\u6027\uFF0C\u4EC5\u652F\u6301\u8FD9\u4E9B\u5B57\u6BB5\uFF08\u5176\u4ED6\u5B57\u6BB5\u4F1A\u88AB\u62D2\u7EDD\uFF09\uFF1Avalue / style / vertex / edge / parent / source / target / x / y / width / height / relative"}},required:["id","props"]}},expectedVersion:{type:"number",description:"\u53EF\u9009\u4E50\u89C2\u9501\uFF1A\u4F20\u5165\u6700\u8FD1\u4E00\u6B21 draw_get_diagram / \u5199\u5DE5\u5177\u8FD4\u56DE\u7684 version\u3002\u6587\u6863\u5728\u6B64\u671F\u95F4\u88AB\u4EBA\u6216\u5176\u4ED6 Agent \u4FEE\u6539\u65F6\u8FD4\u56DE\u7248\u672C\u51B2\u7A81\uFF08\u800C\u975E\u9759\u9ED8\u8986\u76D6\u5BF9\u65B9\u6539\u52A8\uFF09\uFF1B\u591A\u4EBA/\u591A Agent \u534F\u4F5C\u7F16\u8F91\u65F6\u5EFA\u8BAE\u4F20\u5165"}},required:["docId","updates"]}},fe={name:"draw_delete_cells",description:"\u6279\u91CF\u5220\u9664\u7ED8\u56FE\u6587\u6863 cell\uFF08mxCell\uFF09\u3002root/\u7ED3\u6784\u5355\u5143\u683C\u4E0D\u53EF\u5220\u9664\u3002\u5220\u9664\u6574\u4E2A\u6587\u6863\u7528 draw_delete_document\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"},ids:{type:"array",items:{type:"string"},description:"\u8981\u5220\u9664\u7684 cell id \u5217\u8868"},expectedVersion:{type:"number",description:"\u53EF\u9009\u4E50\u89C2\u9501\uFF1A\u4F20\u5165\u6700\u8FD1\u4E00\u6B21 draw_get_diagram / \u5199\u5DE5\u5177\u8FD4\u56DE\u7684 version\u3002\u6587\u6863\u5728\u6B64\u671F\u95F4\u88AB\u4EBA\u6216\u5176\u4ED6 Agent \u4FEE\u6539\u65F6\u8FD4\u56DE\u7248\u672C\u51B2\u7A81\uFF08\u800C\u975E\u9759\u9ED8\u8986\u76D6\u5BF9\u65B9\u6539\u52A8\uFF09\uFF1B\u591A\u4EBA/\u591A Agent \u534F\u4F5C\u7F16\u8F91\u65F6\u5EFA\u8BAE\u4F20\u5165"}},required:["docId","ids"]}},he={name:"draw_delete_document",description:"\u5220\u9664\u6574\u4E2A\u7ED8\u56FE\u6587\u6863\uFF08\u4EC5\u6587\u6863\u62E5\u6709\u8005\u53EF\u8C03\u7528\uFF0C\u4E0D\u53EF\u6062\u590D\uFF1A\u6587\u6863\u3001\u5168\u90E8 cell \u4E0E\u534F\u4F5C\u8005\u4E00\u5E76\u6E05\u9664\uFF09\u3002\u7528\u4E8E\u6E05\u7406\u4E0D\u518D\u9700\u8981\u7684\u6587\u6863\uFF1B\u53EA\u5220\u9664\u6587\u6863\u91CC\u7684\u90E8\u5206 cell \u7528 draw_delete_cells\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"}},required:["docId"]}},be={name:"draw_rename_document",description:"\u91CD\u547D\u540D\u7ED8\u56FE\u6587\u6863\uFF08ACL write \u53EF\u8C03\u7528\uFF1A\u62E5\u6709\u8005\u6216 permission=write \u6210\u5458\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"},name:{type:"string",description:"\u65B0\u7684\u6587\u6863\u540D\u79F0"},expectedVersion:{type:"number",description:"\u53EF\u9009\u4E50\u89C2\u9501\uFF1A\u4F20\u5165\u6700\u8FD1\u4E00\u6B21 draw_get_diagram / \u5199\u5DE5\u5177\u8FD4\u56DE\u7684 version\u3002\u6587\u6863\u5728\u6B64\u671F\u95F4\u88AB\u4EBA\u6216\u5176\u4ED6 Agent \u4FEE\u6539\u65F6\u8FD4\u56DE\u7248\u672C\u51B2\u7A81\uFF08\u800C\u975E\u9759\u9ED8\u8986\u76D6\u5BF9\u65B9\u6539\u52A8\uFF09"}},required:["docId","name"]}},Ie={name:"draw_share_document",description:"\u5C06\u7ED8\u56FE\u6587\u6863\u5206\u4EAB\u7ED9\u5176\u5B83 Agent \u534F\u4F5C\uFF08\u6BCF\u4F4D\u88AB\u9080\u8BF7\u4EBA\u6307\u5B9A read=\u53EA\u8BFB \u6216 write=\u53EF\u5199\uFF09\u3002\u88AB\u9080\u8BF7\u4EBA\u5FC5\u987B\u5DF2\u5F00\u542F\u300C\u7ED8\u56FE (draw)\u300D\u80FD\u529B\uFF0C\u5426\u5219\u5206\u4EAB\u4F1A\u88AB\u6574\u4F53\u62D2\u7EDD\u3002\u5206\u4EAB\u540E\u53CC\u65B9\u7EE7\u7EED\u7528 draw_get_diagram / draw_update_cells \u7B49\u5DE5\u5177\u534F\u4F5C\uFF1B\u88AB\u9080\u8BF7\u4EBA\u4F1A\u6536\u5230\u9080\u8BF7\u901A\u77E5\u3002\u64A4\u9500\u5206\u4EAB\u914D\u5BF9\u4F7F\u7528 draw_revoke_share\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u8981\u5206\u4EAB\u7684\u7ED8\u56FE\u6587\u6863 id\uFF08\u987B\u4E3A\u672C Agent \u521B\u5EFA\u7684\u6587\u6863\uFF09"},members:{type:"array",description:"\u88AB\u9080\u8BF7\u4EBA\u5217\u8868",items:{type:"object",properties:{agentId:{type:"string",description:"\u88AB\u9080\u8BF7 Agent \u7684\u5B9E\u4F8B id"},permission:{type:"string",enum:["read","write"],description:"\u534F\u4F5C\u6743\u9650\uFF1Aread=\u53EA\u8BFB\u67E5\u770B\uFF0Cwrite=\u53EF\u7F16\u8F91\uFF08\u7F3A\u7701 read\uFF09"}},required:["agentId"]}}},required:["docId","members"]}},xe={name:"draw_revoke_share",description:"\u64A4\u9500\u7ED8\u56FE\u6587\u6863\u5206\u4EAB\uFF08\u4EC5\u6587\u6863\u62E5\u6709\u8005\u53EF\u8C03\u7528\uFF0C\u4E0E draw_share_document \u914D\u5BF9\u4F7F\u7528\uFF09\u3002agentIds \u7701\u7565\u65F6\u6574\u4F53\u64A4\u9500\uFF0C\u6587\u6863\u56DE\u5230\u4EC5\u672C Agent \u79C1\u6709\uFF1B\u63D0\u4F9B agentIds \u65F6\u4EC5\u79FB\u9664\u6307\u5B9A\u534F\u4F5C\u8005\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id"},agentIds:{type:"array",items:{type:"string"},description:"\u8981\u79FB\u9664\u7684\u534F\u4F5C\u8005 agentId \u5217\u8868\uFF08\u7701\u7565 = \u6574\u4F53\u64A4\u9500\u5206\u4EAB\uFF09"}},required:["docId"]}},Oe={name:"draw_export_image",description:"\u5BFC\u51FA\u7ED8\u56FE\u6587\u6863\u4E3A PNG \u56FE\u7247\u5230\u6587\u4EF6\u5E76\u8FD4\u56DE\u6587\u4EF6\u8DEF\u5F84\u7B49\u5143\u4FE1\u606F\uFF08\u4E0D\u8FD4\u56DE\u56FE\u7247\u5185\u5BB9\uFF0C\u907F\u514D\u5927\u4F53\u79EF base64 \u5360\u7528\u4E0A\u4E0B\u6587\uFF09\u3002draw.io \u4F4D\u56FE\u6E32\u67D3\u4E3A\u72EC\u7ACB\u80FD\u529B\uFF1A\u5E38\u6001\u4F18\u5148\u7528 draw_export_document \u5BFC\u51FA XML\uFF08<mxfile> \u539F\u6587\uFF09\uFF0C\u7528\u6587\u4EF6\u8BFB\u53D6\u5DE5\u5177\u67E5\u770B\u8FD4\u56DE\u8DEF\u5F84\u5373\u53EF\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id\uFF08\u6765\u81EA draw_create_document / draw_list_documents\uFF09"},savePath:{type:"string",description:"\u53EF\u9009\uFF1APNG \u4FDD\u5B58\u8DEF\u5F84\uFF0C\u4E0D\u9650\u5236\u4FDD\u5B58\u4F4D\u7F6E\uFF08\u76F8\u5BF9\u8DEF\u5F84\u57FA\u4E8E\u5DE5\u4F5C\u533A\u6839\u89E3\u6790\uFF0C\u7EDD\u5BF9\u8DEF\u5F84\u76F4\u63A5\u4F7F\u7528\uFF09\uFF0C\u5982 design/flow.png \u6216 D:\\exports\\flow.png\u3002\u7701\u7565\u65F6\u5BFC\u51FA\u5230\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55\u5E76\u8FD4\u56DE\u4E34\u65F6\u8DEF\u5F84"},waitMs:{type:"number",description:"\u53EF\u9009\uFF1A\u7B49\u5F85\u6E32\u67D3\u8865\u8D26\u7684\u6700\u957F\u6BEB\u79D2\u6570\uFF08\u9ED8\u8BA4 8000\uFF0C\u4E0A\u9650 20000\uFF09"}},required:["docId"]}},Ee={name:"draw_export_document",description:"\u628A\u7ED8\u56FE\u6587\u6863\u5BFC\u51FA\u4E3A draw.io <mxfile> XML \u6587\u4EF6\uFF08format=xml\uFF0C\u4E0E drawio \u7B49\u4EF7\uFF09\u3002svg/png/jpg/webp \u77E2\u91CF/\u4F4D\u56FE\u6E32\u67D3\u5C5E\u9636\u6BB5 2 \u80FD\u529B\uFF0C\u672C\u8F6E\u672A\u5B9E\u73B0\uFF0C\u8C03\u7528\u4F1A\u8FD4\u56DE\u660E\u786E\u9519\u8BEF\uFF0C\u8BF7\u7528 format=xml \u5BFC\u51FA\u539F\u6587\u3002\u8FD4\u56DE\u5BFC\u51FA\u6587\u4EF6\u8DEF\u5F84\u7B49\u5143\u4FE1\u606F\uFF08\u4E0D\u8FD4\u56DE\u6587\u4EF6\u5185\u5BB9\uFF09\u3002savePath \u7701\u7565\u65F6\u4FDD\u5B58\u5230\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55\u5E76\u8FD4\u56DE\u4E34\u65F6\u8DEF\u5F84\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u7ED8\u56FE\u6587\u6863 id\uFF08\u6765\u81EA draw_create_document / draw_list_documents\uFF09"},format:{type:"string",enum:["xml","drawio"],description:"\u5BFC\u51FA\u683C\u5F0F\uFF08\u9ED8\u8BA4 xml\uFF0Cdrawio \u4E0E xml \u7B49\u4EF7\uFF09"},savePath:{type:"string",description:"\u53EF\u9009\uFF1A\u5BFC\u51FA\u6587\u4EF6\u4FDD\u5B58\u8DEF\u5F84\uFF0C\u4E0D\u9650\u5236\u4FDD\u5B58\u4F4D\u7F6E\uFF08\u76F8\u5BF9\u8DEF\u5F84\u57FA\u4E8E\u5DE5\u4F5C\u533A\u6839\u89E3\u6790\uFF0C\u7EDD\u5BF9\u8DEF\u5F84\u76F4\u63A5\u4F7F\u7528\uFF09\uFF0C\u5982 design/flow.xml \u6216 D:\\exports\\flow.svg\u3002\u7701\u7565\u65F6\u4FDD\u5B58\u5230\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55\u5E76\u8FD4\u56DE\u4E34\u65F6\u8DEF\u5F84"}},required:["docId"]}},et=new Set(["draw_create_document","draw_list_documents","draw_open_document","draw_close_document","draw_get_diagram","draw_get_changes","draw_create_cells","draw_update_cells","draw_delete_cells","draw_export_image","draw_share_document","draw_revoke_share","draw_delete_document","draw_rename_document","draw_export_document"]),Te={name:"office_create",description:`\u521B\u5EFA\u7A7A\u767D Office \u6587\u6863\uFF08\u6309\u6269\u5C55\u540D\u5206\u53D1\uFF1A.docx/.docm\u3001.xlsx/.xlsm\u3001.pptx/.pptm\uFF09\u3002\u65E7\u7248\u6269\u5C55\u540D\uFF08.doc/.xls/.ppt\uFF09\u65E0\u6CD5\u76F4\u63A5\u521B\u5EFA\uFF1A\u4F1A\u6309\u5BF9\u5E94\u73B0\u4EE3\u683C\u5F0F\uFF08.docx/.xlsx/.pptx\uFF09\u521B\u5EFA\uFF0C\u5E76\u8FD4\u56DE suggestedFileName\uFF0C\u8BF7\u6539\u7528\u8BE5\u65B0\u6587\u4EF6\u540D\u3002
60
60
  docx \u9884\u7F6E Heading1-3 \u6807\u9898\u6837\u5F0F\uFF0Cxlsx \u9884\u7F6E Sheet1\uFF0Cpptx \u4E3A 16:9 \u9875\u9762\u3002\u6587\u4EF6\u76F8\u5BF9\u8DEF\u5F84\u57FA\u4E8E\u5DE5\u4F5C\u533A\u6839\u89E3\u6790\u3002\u521B\u5EFA\u540E\u6587\u6863\u81EA\u52A8\u6210\u4E3A\u4E91\u6587\u6863\uFF08\u8FD4\u56DE docId/fileUrl\uFF0C\u53EF\u5728 Dashboard \u9762\u677F\u4E2D\u67E5\u770B\u4E0E\u534F\u4F5C\uFF09\u3002\u521B\u5EFA\u540E\u7528 office_view \u4E86\u89E3\u7ED3\u6784\u3001office_edit \u5199\u5165\u5185\u5BB9\uFF1B\u60F3\u8BA9\u4EBA\u770B\u5230\u6548\u679C\u65F6\u7528 office_open_document \u5728\u9762\u677F\u4E2D\u6253\u5F00\uFF08\u7F16\u8F91\u540E\u9762\u677F\u4F1A\u81EA\u52A8\u5237\u65B0\uFF09\u3002
61
61
 
62
62
  \u3010Word \u6587\u6863\u8D28\u91CF\u8981\u6C42\u3011
@@ -84,7 +84,7 @@ docx \u9884\u7F6E Heading1-3 \u6807\u9898\u6837\u5F0F\uFF0Cxlsx \u9884\u7F6E She
84
84
  - \u5927\u53F7\u6570\u5B57 hero\uFF1A\u6570\u5B57\u6846\u5C45\u4E2D x=230, y=180, w=500, h=180\uFF0CfontSize 80-120\u3002
85
85
  \u4E0D\u8981\u4F20 w=8 \u8FD9\u7C7B\u5C0F\u6570\u503C\uFF08\u90A3\u662F\u82F1\u5BF8\u76F4\u89C9\uFF0C\u5B9E\u9645\u5355\u4F4D\u662F pt\uFF0C\u4F1A\u88AB\u5F3A\u5236\u94B3\u4F4D\u5230\u9ED8\u8BA4\u5BBD\u9AD8\uFF09\u3002`,inputSchema:{type:"object",properties:{file:{type:"string",description:"\u76EE\u6807\u6587\u4EF6\u8DEF\u5F84\uFF08\u5982 report.docx\u3001docs/\u6570\u636E.xlsx\u3001\u65B9\u6848.pptx\uFF09"},locale:{type:"string",description:"\u6587\u6863\u8BED\u8A00\uFF08\u53EF\u9009\uFF0C\u5982 zh-CN\u3001en-US\uFF09"},template:{type:"string",description:"docx \u9884\u7F6E\u6A21\u677F\uFF08\u53EF\u9009\uFF09\uFF1Acn-thesis = \u4E2D\u6587\u8BBA\u6587\uFF08A4+2.5cm \u8FB9\u8DDD+\u5B8B\u4F53\u5C0F\u56DB 1.5 \u500D\u884C\u8DDD\u6B63\u6587+\u9ED1\u4F53\u6807\u9898+\u300C\u7B2CX\u7AE0 / 1.1 / 1.1.1\u300D\u81EA\u52A8\u7F16\u53F7+\u9875\u811A\u9875\u7801\uFF09\uFF1B\u7F3A\u7701\u4E3A\u901A\u7528\u7A7A\u767D\u6587\u6863"}},required:["file"]}},Se={name:"office_view",description:`\u8BFB\u53D6 Office \u6587\u6863\u5185\u5BB9\uFF08\u4E0D\u4FEE\u6539\uFF09\u3002mode\uFF1Atext=\u7EAF\u6587\u672C\u3001annotated=\u5E26\u5143\u7D20\u8DEF\u5F84\u6807\u6CE8\u7684\u6587\u672C\u3001outline=\u7ED3\u6784\u5927\u7EB2\uFF08\u6807\u9898/\u5DE5\u4F5C\u8868/\u5E7B\u706F\u7247\uFF1BWord \u5927\u7EB2\u7684\u6807\u9898\u7EA7\u522B\u517C\u5BB9\u4E2D\u6587\u6837\u5F0F\u540D\u300C\u6807\u9898 N\u300D\u4E0E outlineLvl\uFF0C\u8868\u683C\u8282\u70B9\u9644\u5E26\u300CN \u884C \xD7 M \u5217\u300D\u4E0E\u9898\u6CE8\u6587\u672C\uFF09\u3001stats=\u7EDF\u8BA1\u3001issues=\u95EE\u9898\u6E05\u5355\u3001styles=\u6BCF\u6BB5/\u6BCF run \u7684\u6709\u6548\u683C\u5F0F\uFF08\u5B57\u4F53\u7EE7\u627F\u94FE\u89E3\u6790\u7ED3\u679C\uFF1AfontEa/fontAscii/sizePt/\u884C\u8DDD/\u7F29\u8FDB/\u5BF9\u9F50\uFF0C\u6539\u683C\u5F0F\u524D\u7528\u5B83\u786E\u8BA4\u5B9E\u9645\u751F\u6548\u503C\uFF09\u3001comments=\u6279\u6CE8\u6E05\u5355\u3001revisions=\u4FEE\u8BA2\u6E05\u5355\uFF08\u542B\u8DDF\u8E2A\u5F00\u5173\uFF09\u3001search=\u6309 query \u6587\u672C/\u6B63\u5219\u5B9A\u4F4D\uFF08\u8FD4\u56DE\u547D\u4E2D path \u4E0E\u4E0A\u4E0B\u6587\uFF09\u3001notes=PPT \u6F14\u8BB2\u8005\u5907\u6CE8\u3001layouts=PPT \u7248\u5F0F\u6E05\u5355\u3002
86
86
  \u65E7\u7248\u4E8C\u8FDB\u5236\u683C\u5F0F\uFF08.doc/.xls/.ppt\uFF09\u4F1A\u5148\u5C3D\u529B\u8F6C\u6362\u4E3A\u73B0\u4EE3\u683C\u5F0F\u518D\u8BFB\u53D6\uFF08\u8FD4\u56DE\u4F1A\u5E26 warnings \u8BF4\u660E\u4FDD\u771F\u5EA6\u635F\u5931\uFF09\u3002
87
- \u5143\u7D20\u8DEF\u5F84\u5BFB\u5740\u4E3A 1-based \u7C7B CSS \u8BED\u6CD5\uFF1A/body/p[3]\uFF08Word \u6BB5\u843D\uFF09\u3001/body/p[3]/run[2]\uFF08\u6BB5\u5185 run\uFF09\u3001/body/table[1]\uFF08Word \u8868\u683C\uFF09\u3001/body/table[1]/row[2]/cell[3]\uFF08\u8868\u683C\u5355\u5143\u683C\uFF09\u3001/Sheet1/A1\uFF08Excel \u5355\u5143\u683C\uFF09\u3001/slide[1]/shape[2]\uFF08PPT \u5F62\u72B6\uFF09\u3001/slide[1]/placeholder[title]\u3001/slide[1]/notes\u3001/slide[1]/shape[2]/cell[1][1]\u3002\u521B\u5EFA/\u4FEE\u6539\u524D\u5EFA\u8BAE\u5148 office_view \u4E86\u89E3\u73B0\u72B6\u3002`,inputSchema:{type:"object",properties:{file:{type:"string",description:"\u6587\u6863\u8DEF\u5F84"},mode:{type:"string",enum:["text","annotated","outline","stats","issues","styles","comments","revisions","search","notes","layouts","profile","selfcheck"],description:"\u8BFB\u53D6\u6A21\u5F0F\uFF08\u9ED8\u8BA4 text\uFF09\uFF1Aprofile=\u4ECE\u6A21\u677F docx \u63D0\u53D6\u6837\u5F0F Profile\uFF08\u6309\u89D2\u8272\u805A\u5408\u7684\u683C\u5F0F\u89C4\u5219\uFF0C\u542B page(\u7EB8\u5F20/\u8FB9\u8DDD/\u5206\u680F/\u9875\u7801/\u6587\u6863\u7F51\u683C) \u4E0E\u53EF\u9009 numbering\uFF1B\u8F93\u51FA\u53EF\u76F4\u63A5\u4F5C\u4E3A office_format \u7684 rules \u4F20\u5165\uFF0C\u4E5F\u53EF\u4F5C\u4E3A office_apply_profile \u7684 profile \u4F20\u5165\uFF09\uFF1Bselfcheck=\u6E32\u67D3\u81EA\u68C0\uFF08\u9010\u9875\u6587\u672C\u6458\u8981\uFF0C\u8BC6\u522B\u663E\u5F0F\u5206\u9875\u7B26/\u6BB5\u524D\u5206\u9875/\u5206\u8282\u7B26\uFF1B\u6807\u9898\u987A\u5E8F\u8DF3\u8DC3\u68C0\u67E5\u517C\u5BB9\u300C\u6807\u9898 N\u300D\u6837\u5F0F\u540D\u4E0E outlineLvl\uFF1B\u56FE\u7247/\u5BBD\u8868\u6EA2\u51FA\u63D0\u793A\uFF1B\u5E76\u590D\u7528 cn-thesis \u9884\u7F6E\u89C4\u5219\u81EA\u67E5\uFF09"},start:{type:"number",description:"\u8D77\u59CB\u884C\u53F7\uFF08\u53EF\u9009\uFF0Ctext/annotated \u6A21\u5F0F\uFF09"},maxLines:{type:"number",description:"\u6700\u591A\u8FD4\u56DE\u884C\u6570\uFF08\u53EF\u9009\uFF0Ctext/annotated \u6A21\u5F0F\uFF09"},limit:{type:"number",description:"\u6700\u591A\u8FD4\u56DE\u6761\u6570\uFF08\u53EF\u9009\uFF09"},query:{type:"string",description:"search \u6A21\u5F0F\u7684\u641C\u7D22\u8BCD\uFF08\u6587\u672C\u6216\u6B63\u5219\uFF0C1-based \u5B9A\u4F4D\u5230 path\uFF09"},paths:{type:"array",items:{type:"string"},description:"\u6BB5\u843D\u767D\u540D\u5355\uFF08\u53EF\u9009\uFF0C\u4EC5 styles/profile/selfcheck \u751F\u6548\uFF09\uFF1A\u53EA\u8FD4\u56DE/\u53EA\u805A\u5408\u8FD9\u4E9B\u6BB5\u843D\uFF0C\u652F\u6301\u5355\u4E2A /body/p[7] \u4E0E\u533A\u95F4 /body/p[5]-p[11]\uFF08\u4E5F\u63A5\u53D7 /body/p[5..11]\uFF09\u3002\u5927\u6587\u6863\uFF08\u51E0\u767E\u6BB5\uFF09\u4E0B\u6392\u67E5\u5C40\u90E8\u65F6\u7528\u5B83\u628A\u8FD4\u56DE\u91CF\u4ECE\u6574\u7BC7\u538B\u5230\u51E0\u6BB5\uFF1Bprofile \u6A21\u5F0F\u4E0B page/numbering \u4ECD\u6309\u6574\u7BC7\u63D0\u53D6\uFF08\u5B83\u4EEC\u6765\u81EA\u6587\u6863\u7EA7\u90E8\u4EF6\uFF09\uFF0C\u4EC5\u6B63\u6587\u53D6\u6837\u53D7\u9650\uFF1Bselfcheck \u6A21\u5F0F\u4E0B pageNo \u4ECD\u4E3A\u771F\u5B9E\u9875\u7801\uFF0C\u65E0\u547D\u4E2D\u5185\u5BB9\u7684\u9875\u4E0D\u8F93\u51FA\u3002"}},required:["file"]}},Le={name:"office_edit",description:`\u6279\u91CF\u539F\u5B50\u7F16\u8F91 Office \u6587\u6863\uFF08\u4E00\u6B21\u4F20\u591A\u6761\u547D\u4EE4\uFF0C\u9ED8\u8BA4\u5168\u90E8\u6210\u529F\u6216\u5168\u90E8\u56DE\u6EDA\uFF09\u3002
87
+ \u5143\u7D20\u8DEF\u5F84\u5BFB\u5740\u4E3A 1-based \u7C7B CSS \u8BED\u6CD5\uFF1A/body/p[3]\uFF08Word \u6BB5\u843D\uFF09\u3001/body/p[3]/run[2]\uFF08\u6BB5\u5185 run\uFF09\u3001/body/table[1]\uFF08Word \u8868\u683C\uFF09\u3001/body/table[1]/row[2]/cell[3]\uFF08\u8868\u683C\u5355\u5143\u683C\uFF09\u3001/Sheet1/A1\uFF08Excel \u5355\u5143\u683C\uFF09\u3001/slide[1]/shape[2]\uFF08PPT \u5F62\u72B6\uFF09\u3001/slide[1]/placeholder[title]\u3001/slide[1]/notes\u3001/slide[1]/shape[2]/cell[1][1]\u3002\u521B\u5EFA/\u4FEE\u6539\u524D\u5EFA\u8BAE\u5148 office_view \u4E86\u89E3\u73B0\u72B6\u3002`,inputSchema:{type:"object",properties:{file:{type:"string",description:"\u6587\u6863\u8DEF\u5F84"},mode:{type:"string",enum:["text","annotated","outline","stats","issues","styles","comments","revisions","search","notes","layouts","profile","selfcheck"],description:"\u8BFB\u53D6\u6A21\u5F0F\uFF08\u9ED8\u8BA4 text\uFF09\uFF1Aprofile=\u4ECE\u6A21\u677F docx \u63D0\u53D6\u6837\u5F0F Profile\uFF08\u6309\u89D2\u8272\u805A\u5408\u7684\u683C\u5F0F\u89C4\u5219\uFF0C\u542B page(\u7EB8\u5F20/\u8FB9\u8DDD/\u5206\u680F/\u9875\u7801/\u6587\u6863\u7F51\u683C) \u4E0E\u53EF\u9009 numbering\uFF1B\u8F93\u51FA\u53EF\u76F4\u63A5\u4F5C\u4E3A office_format \u7684 rules \u4F20\u5165\uFF0C\u4E5F\u53EF\u4F5C\u4E3A office_apply_profile \u7684 profile \u4F20\u5165\uFF09\uFF1Bselfcheck=\u6E32\u67D3\u81EA\u68C0\uFF08\u9010\u9875\u6587\u672C\u6458\u8981\uFF0C\u8BC6\u522B\u663E\u5F0F\u5206\u9875\u7B26/\u6BB5\u524D\u5206\u9875/\u5206\u8282\u7B26\uFF1B\u6807\u9898\u987A\u5E8F\u8DF3\u8DC3\u68C0\u67E5\u517C\u5BB9\u300C\u6807\u9898 N\u300D\u6837\u5F0F\u540D\u4E0E outlineLvl\uFF1B\u56FE\u7247/\u5BBD\u8868\u6EA2\u51FA\u63D0\u793A\uFF1B\u5E76\u590D\u7528 cn-thesis \u9884\u7F6E\u89C4\u5219\u81EA\u67E5\uFF09"},start:{type:"number",description:"\u8D77\u59CB\u884C\u53F7\uFF08\u53EF\u9009\uFF0Ctext/annotated \u6A21\u5F0F\uFF09"},maxLines:{type:"number",description:"\u6700\u591A\u8FD4\u56DE\u884C\u6570\uFF08\u53EF\u9009\uFF0Ctext/annotated \u6A21\u5F0F\uFF09"},limit:{type:"number",description:"\u6700\u591A\u8FD4\u56DE\u6761\u6570\uFF08\u53EF\u9009\uFF09"},query:{type:"string",description:"search \u6A21\u5F0F\u7684\u641C\u7D22\u8BCD\uFF08\u6587\u672C\u6216\u6B63\u5219\uFF0C1-based \u5B9A\u4F4D\u5230 path\uFF09"},paths:{type:"array",items:{type:"string"},description:"\u6BB5\u843D\u767D\u540D\u5355\uFF08\u53EF\u9009\uFF0C\u4EC5 styles/profile/selfcheck \u751F\u6548\uFF09\uFF1A\u53EA\u8FD4\u56DE/\u53EA\u805A\u5408\u8FD9\u4E9B\u6BB5\u843D\uFF0C\u652F\u6301\u5355\u4E2A /body/p[7] \u4E0E\u533A\u95F4 /body/p[5]-p[11]\uFF08\u4E5F\u63A5\u53D7 /body/p[5..11]\uFF09\u3002\u5927\u6587\u6863\uFF08\u51E0\u767E\u6BB5\uFF09\u4E0B\u6392\u67E5\u5C40\u90E8\u65F6\u7528\u5B83\u628A\u8FD4\u56DE\u91CF\u4ECE\u6574\u7BC7\u538B\u5230\u51E0\u6BB5\uFF1Bprofile \u6A21\u5F0F\u4E0B page/numbering \u4ECD\u6309\u6574\u7BC7\u63D0\u53D6\uFF08\u5B83\u4EEC\u6765\u81EA\u6587\u6863\u7EA7\u90E8\u4EF6\uFF09\uFF0C\u4EC5\u6B63\u6587\u53D6\u6837\u53D7\u9650\uFF1Bselfcheck \u6A21\u5F0F\u4E0B pageNo \u4ECD\u4E3A\u771F\u5B9E\u9875\u7801\uFF0C\u65E0\u547D\u4E2D\u5185\u5BB9\u7684\u9875\u4E0D\u8F93\u51FA\u3002"}},required:["file"]}},Ae={name:"office_edit",description:`\u6279\u91CF\u539F\u5B50\u7F16\u8F91 Office \u6587\u6863\uFF08\u4E00\u6B21\u4F20\u591A\u6761\u547D\u4EE4\uFF0C\u9ED8\u8BA4\u5168\u90E8\u6210\u529F\u6216\u5168\u90E8\u56DE\u6EDA\uFF09\u3002
88
88
  op\uFF1Aset=\u6539\u5C5E\u6027\u3001add=\u52A0\u5143\u7D20\u3001remove=\u5220\u9664\u3001replace=\u67E5\u627E\u66FF\u6362\uFF08\u8DE8 run \u4FDD\u683C\u5F0F\uFF09\u3001comment=\u5199/\u5220\u6279\u6CE8\u3001numbering=\u6807\u9898\u7F16\u53F7/\u6E05\u9664\u7F16\u53F7\u3001accept/reject=\u63A5\u53D7/\u62D2\u7EDD\u5168\u90E8\u4FEE\u8BA2\u3002props \u4E3A\u5C5E\u6027\u952E\u503C\u5BF9\u8C61\uFF1B\u901A\u7528\u5B57\u7B26\u5C5E\u6027\uFF1Atext/bold/italic/underline/color/fontSize/font/alignment/fillColor/fontEa(\u4E2D\u6587\u5B57\u4F53)/fontAscii(\u897F\u6587\u5B57\u4F53)/highlight/strike/vertAlign(superscript|subscript)/charSpacing\u3002\u989C\u8272\u503C\u53D6 "FF0000"(# \u53EF\u9009) \u6216\u8272\u540D(black/white/red/green/blue/gray/orange/purple/yellow)\uFF1Bdocx \u53E6\u63A5\u53D7 "auto"(\u81EA\u52A8\u914D\u8272\uFF0C\u8DDF\u968F\u4E3B\u9898\uFF0C\u6E05\u9664\u624B\u52A8\u8BBE\u8272\u7528\u8FD9\u4E2A)\u3002
89
89
  \u6BB5\u843D\u5757\u7EA7\u5916\u89C2\uFF1Ashading(6 \u4F4D\u5341\u516D\u8FDB\u5236\u5E95\u7EB9\uFF0C\u5982 "F6F8FA")/paragraphBorder(true \u52A0\u7EC6\u8FB9\u6846)+borderColor\u3002
90
90
  \u7F16\u8F91\u540E\u5EFA\u8BAE office_validate + office_view \u81EA\u68C0\uFF1B\u7528 office_open_document \u6253\u5F00\u7684\u9762\u677F\u4F1A\u968F\u5199\u5165\u81EA\u52A8\u5237\u65B0\uFF0C\u65E0\u9700\u622A\u56FE\u3002\u53D1\u9001\u5206\u4EAB\u524D office_preview \u751F\u6210\u9884\u89C8\u3002
@@ -174,7 +174,7 @@ source \u652F\u6301\u4E09\u79CD\u6765\u6E90\uFF1A
174
174
  1. \u5148\u89C4\u5212\u7ED3\u6784\uFF1A\u4E00\u4EFD\u9AD8\u8D28\u91CF\u6587\u6863\u9700\u8981\u591A\u6B21 office_edit \u8C03\u7528\u9010\u6B65\u6784\u5EFA\u3002\u5EFA\u8BAE\u987A\u5E8F\uFF1A\u521B\u5EFA\u7A7A\u767D\u6587\u6863\u2192add \u6807\u9898/\u7AE0\u8282\u9AA8\u67B6\u2192\u9010\u6BB5\u5199\u5165\u6B63\u6587\u2192\u6DFB\u52A0/\u8C03\u6574\u8868\u683C\u2192\u63D2\u56FE\u2192\u8BBE\u7F6E\u683C\u5F0F\u3002
175
175
  2. \u6BCF\u6B21\u8C03\u7528\u4F20 1-5 \u6761\u547D\u4EE4\u3002
176
176
  3. \u5199\u5165\u540E\u52A1\u5FC5 office_view(outline) \u68C0\u67E5\u7ED3\u6784\u3002
177
- 4. \u6D89\u53CA\u5916\u90E8\u6570\u636E\u65F6\u5148\u7528 web_search \u83B7\u53D6\u771F\u5B9E\u6570\u636E\u518D\u5199\u5165\uFF0C\u7EDD\u4E0D\u634F\u9020\u6570\u5B57\u3002`,inputSchema:{type:"object",properties:{file:{type:"string",description:"\u6587\u6863\u8DEF\u5F84"},docId:{type:"string",description:"\u4E91\u6587\u6863 id\uFF08\u53EF\u9009\uFF0C\u4F20\u4E86\u5219\u540C\u6B65\u66F4\u65B0\u4E91\u526F\u672C\uFF1B\u4E0D\u4F20\u5219\u6309 fileName \u53CD\u67E5\u540C\u540D\u4E91\u6587\u6863\u5C3D\u529B\u540C\u6B65\uFF09"},commands:{type:"array",description:"\u7F16\u8F91\u547D\u4EE4\u6570\u7EC4\uFF08\u539F\u5B50\u6267\u884C\uFF09",items:{type:"object",properties:{op:{type:"string",enum:["set","add","remove","move","swap","replace","comment","numbering","accept","reject","clone"],description:"\u64CD\u4F5C\u7C7B\u578B\uFF1Aset=\u6539\u5C5E\u6027\u3001add=\u52A0\u5143\u7D20\u3001remove=\u5220\u9664\u3001move/swap=\u91CD\u6392\uFF08**\u4EC5 pptx**\uFF0Cdocx/xlsx \u4F1A\u62A5\u9519\uFF09\u3001replace=\u67E5\u627E\u66FF\u6362\u3001comment=\u6279\u6CE8\uFF08docx\uFF09\u3001numbering=\u6807\u9898\u7F16\u53F7\uFF08docx\uFF09\u3001accept/reject=\u63A5\u53D7/\u62D2\u7EDD\u5168\u90E8\u4FEE\u8BA2\uFF08docx\uFF09\u3001clone=\u514B\u9686\u5E7B\u706F\u7247\uFF08**\u4EC5 pptx**\uFF09"},path:{type:"string",description:"\u76EE\u6807\u5143\u7D20\u8DEF\u5F84\uFF08set/remove \u5FC5\u586B\uFF09\u3002docx\uFF1A/body/p[1]\u3001/body/p[1]/run[1]\u3001/body/table[1]\u3001/body/table[1]/row[1]\u3001/body/table[1]/row[1]/cell[1]\u3001/body/sectPr\u3001/body/style[Heading1]\u3001/body/header\u3001/body/footer\u3001/body\uFF1Bxlsx\uFF1A/Sheet1/A1\uFF1Bpptx\uFF1A/slide[1]\u3001/slide[1]/shape[M]"},parent:{type:"string",description:"\u7236\u5143\u7D20\u8DEF\u5F84\uFF08add \u5FC5\u586B\uFF0C\u5982 /body\u3001/body/p[3]\u3001/body/table[1]\u3001/Sheet1\u3001/\u3001/slide[N]\uFF09"},type:{type:"string",description:"add \u65F6\u7684\u5143\u7D20\u7C7B\u578B\u3002docx\uFF1Ap/paragraph\u3001table\u3001image\u3001pageBreak\u3001sectionBreak\u3001row\u3001merge\u3001comment\u3001toc\u3001field\u3001bookmark\u3001hyperlink\u3001equation\u3001footnote\u3001endnote\u3001code\u3001captioned_image\u3001captioned_table\uFF1Bxlsx\uFF1Arow/sheet/merge/image/chart/comment/validation/cformat/definedName\uFF1Bpptx\uFF1Aslide/textbox/image/shape/table"},props:{type:"object",description:"\u5C5E\u6027\u952E\u503C\u5BF9\u8C61\uFF1A\u6587\u6863\u516C\u5171\u6837\u5F0F\uFF08text/bold/italic/underline/color/fontSize/sizePt/font/alignment/fillColor\uFF09;\u8868\u683C rows/cols/data/header\uFF1B\u884C values\uFF1Bdocx \u5217\u8868 list(bullet|number)+level(0-2)/pageBreakBefore;docx \u5206\u9875\u63A7\u5236 keepNext/keepLines/widowControl/contextualSpacing\uFF1Bdocx \u4E2D\u6587\u6392\u7248 autoSpaceDE/autoSpaceDN/kinsoku/overflowPunct/snapToGrid/adjustRightInd/suppressAutoHyphens/textAlignment;docx \u5B57\u7B26\u6269\u5C55 dstrike/smallCaps/allCaps/vanish/emboss/imprint/kernPt/positionPt/charScale/sizeCsPt/fontHint/rStyle;docx \u8868\u683C\u7248\u5F0F tableLayout(fixed|autofit)/cellMarginCm/cellMarginTopCm/cellMarginBottomCm/cellMarginLeftCm/cellMarginRightCm/tableIndentCm/borderStyle/borderSz/borderColor/insideBorderStyle/insideBorderSz/insideBorderColor;docx \u8868\u683C\u884C rowHeightCm/rowHeightRule/cantSplit/headerRow;docx \u8282\u5C5E\u6027 paper/orientation/marginCm/topCm/bottomCm/leftCm/rightCm/headerCm/footerCm/gutterCm/columns/columnSpacingCm/columnSeparator/columnWidthsCm/pageNumberFormat/pageNumberStart/docGridType/docGridLinePitch/docGridCharSpace/titlePg;docx \u6837\u5F0F\u5B9A\u4E49 name/basedOn/next/link/outlineLevel/quickFormat/styleType;docx \u4EE3\u7801\u5757 code(\u6587\u672C)+font/sizePt/shading/borderColor/border/alignment\uFF08add type=code \u6216 set \u6BB5\u843D\u7528\uFF09;docx \u6BB5\u843D\u5757\u7EA7\u5916\u89C2 shading/paragraphBorder/borderColor;\u56FE\u7247 source(\u5DE5\u4F5C\u533A\u8DEF\u5F84/http URL/data URL)+widthPt/heightPt+fit(contain|cover|stretch);\u6587\u672C\u6846 x/y/w/h \u5355\u4F4D pt \u753B\u5E03 960\xD7540;\u5F62\u72B6 shapeType/fillColor/lineColor/lineWidth/valign/rotation/zOrder;xlsx \u5355\u5143\u683C numberFormat/border/borderColor/wrapText/valign/runs(\u5BCC\u6587\u672C);xlsx \u5DE5\u4F5C\u8868 colWidth/rowHeight/freeze/orientation/fitToWidth/printHeight/printArea/autoFilter/hidden+target;xlsx \u56FE\u8868 chartType/category/series/anchorCell/widthCm/heightCm\uFF1B\u9A8C\u8BC1 validationType/values/formula1/formula2\uFF1B\u6761\u4EF6\u683C\u5F0F kind/operator/formula/text;pptx \u5E7B\u706F\u7247 background/layout/layoutIndex/notes(clone \u7528 from/to)"},after:{type:"string",description:"\u5728\u8BE5\u5143\u7D20\u8DEF\u5F84\u4E4B\u540E\u63D2\u5165\uFF08\u53EF\u9009\uFF0Cdocx\uFF09"},before:{type:"string",description:"\u5728\u8BE5\u5143\u7D20\u8DEF\u5F84\u4E4B\u524D\u63D2\u5165\uFF08\u53EF\u9009\uFF0Cdocx\uFF09"},index:{type:"number",description:"\u63D2\u5165\u4F4D\u7F6E\u5E8F\u53F7\uFF08\u53EF\u9009\uFF0C1-based\uFF09"},to:{type:"string",description:"\u79FB\u52A8/\u4EA4\u6362\u7684\u76EE\u6807\u8DEF\u5F84\uFF08pptx move/swap\uFF09"}},required:["op"]}},bestEffort:{type:"boolean",description:"\u4E3A true \u65F6\u5355\u6761\u5931\u8D25\u4E0D\u56DE\u6EDA\u6574\u6279\uFF08\u9ED8\u8BA4 false\uFF1A\u539F\u5B50\u6267\u884C\uFF0C\u4EFB\u4E00\u5931\u8D25\u5168\u90E8\u56DE\u6EDA\uFF09"}},required:["file","commands"]}},Ae={name:"office_validate",description:"\u6821\u9A8C\u6587\u6863\u7ED3\u6784\u5B8C\u6574\u6027\uFF0C\u8FD4\u56DE\u95EE\u9898\u6E05\u5355\uFF08\u7A7A = \u901A\u8FC7\uFF09\u3002docx \u989D\u5916\u505A OOXML \u7ED3\u6784\u68C0\u67E5\uFF1A\u6279\u6CE8\u8303\u56F4\u914D\u5BF9\u4E0E\u6279\u6CE8\u6761\u76EE\u5B58\u5728\u6027\u3001w:del/w:ins \u4FEE\u8BA2\u6807\u8BB0\u89C4\u8303\u3001\u9996\u5C3E\u7A7A\u767D w:t \u7684 xml:space\uFF1Bpptx \u989D\u5916\u505A\u6587\u672C\u6846\u6EA2\u51FA\u542F\u53D1\u5F0F\u68C0\u67E5\uFF08\u4F30\u7B97\u503C\uFF0C\u660E\u786E\u6807\u6CE8\uFF09\u3002\u4EA4\u4ED8\u6D41\u7A0B\uFF1A\u7F16\u8F91\u540E\u5148 validate\uFF0C\u518D office_view \u6838\u5BF9\u5185\u5BB9\uFF0C\u6700\u540E office_preview \u751F\u6210\u9884\u89C8\u81EA\u68C0\u3002",inputSchema:{type:"object",properties:{file:{type:"string",description:"\u6587\u6863\u8DEF\u5F84"}},required:["file"]}},we={name:"office_preview",description:"\u751F\u6210\u6587\u6863\u7684\u81EA\u5305\u542B HTML \u9884\u89C8\u9875\uFF08Word \u6BB5\u843D/\u8868\u683C\u7248\u5F0F\u3001Excel \u5DE5\u4F5C\u8868\u8868\u683C\u3001PPT \u6309\u951A\u70B9\u5B9A\u4F4D\u7684\u5E7B\u706F\u7247\u9875\uFF09\uFF0C\u5B58\u5165\u670D\u52A1\u7AEF\u901A\u7528\u6587\u4EF6\u670D\u52A1\u5E76\u8FD4\u56DE\u5728\u7EBF\u9884\u89C8\u5730\u5740 previewUrl\uFF08\u81EA\u68C0/\u7559\u6863\u7528\uFF09\u3002\u5206\u4EAB\u5230\u6D88\u606F\u5361\u7247\u65F6\u65E0\u9700\u4F20\u8BE5\u5730\u5740\uFF1A\u5361\u7247\uFF08card.filePath \u6216 card.docId\uFF09\u7684\u300C\u5728\u7EBF\u9884\u89C8\u300D\u5730\u5740\u7531\u670D\u52A1\u7AEF\u6309\u5361\u7247\u5F15\u7528\u7684\u6587\u4EF6\u6743\u5A01\u751F\u6210\u3002\u5206\u4EAB\u524D\u5EFA\u8BAE\u5148\u7528 office_validate + office_view \u81EA\u68C0\u5185\u5BB9\u3002",inputSchema:{type:"object",properties:{file:{type:"string",description:"\u6587\u6863\u8DEF\u5F84"}},required:["file"]}},Ce={name:"office_format",description:`\u6309\u683C\u5F0F\u89C4\u8303\u68C0\u67E5/\u4FEE\u6B63 Word \u6587\u6863\uFF08docx\uFF09\uFF0C\u5B9E\u73B0\u300C\u683C\u5F0F\u5BA1\u67E5 + \u4E00\u952E\u4FEE\u6B63\u300D\u3002
177
+ 4. \u6D89\u53CA\u5916\u90E8\u6570\u636E\u65F6\u5148\u7528 web_search \u83B7\u53D6\u771F\u5B9E\u6570\u636E\u518D\u5199\u5165\uFF0C\u7EDD\u4E0D\u634F\u9020\u6570\u5B57\u3002`,inputSchema:{type:"object",properties:{file:{type:"string",description:"\u6587\u6863\u8DEF\u5F84"},docId:{type:"string",description:"\u4E91\u6587\u6863 id\uFF08\u53EF\u9009\uFF0C\u4F20\u4E86\u5219\u540C\u6B65\u66F4\u65B0\u4E91\u526F\u672C\uFF1B\u4E0D\u4F20\u5219\u6309 fileName \u53CD\u67E5\u540C\u540D\u4E91\u6587\u6863\u5C3D\u529B\u540C\u6B65\uFF09"},commands:{type:"array",description:"\u7F16\u8F91\u547D\u4EE4\u6570\u7EC4\uFF08\u539F\u5B50\u6267\u884C\uFF09",items:{type:"object",properties:{op:{type:"string",enum:["set","add","remove","move","swap","replace","comment","numbering","accept","reject","clone"],description:"\u64CD\u4F5C\u7C7B\u578B\uFF1Aset=\u6539\u5C5E\u6027\u3001add=\u52A0\u5143\u7D20\u3001remove=\u5220\u9664\u3001move/swap=\u91CD\u6392\uFF08**\u4EC5 pptx**\uFF0Cdocx/xlsx \u4F1A\u62A5\u9519\uFF09\u3001replace=\u67E5\u627E\u66FF\u6362\u3001comment=\u6279\u6CE8\uFF08docx\uFF09\u3001numbering=\u6807\u9898\u7F16\u53F7\uFF08docx\uFF09\u3001accept/reject=\u63A5\u53D7/\u62D2\u7EDD\u5168\u90E8\u4FEE\u8BA2\uFF08docx\uFF09\u3001clone=\u514B\u9686\u5E7B\u706F\u7247\uFF08**\u4EC5 pptx**\uFF09"},path:{type:"string",description:"\u76EE\u6807\u5143\u7D20\u8DEF\u5F84\uFF08set/remove \u5FC5\u586B\uFF09\u3002docx\uFF1A/body/p[1]\u3001/body/p[1]/run[1]\u3001/body/table[1]\u3001/body/table[1]/row[1]\u3001/body/table[1]/row[1]/cell[1]\u3001/body/sectPr\u3001/body/style[Heading1]\u3001/body/header\u3001/body/footer\u3001/body\uFF1Bxlsx\uFF1A/Sheet1/A1\uFF1Bpptx\uFF1A/slide[1]\u3001/slide[1]/shape[M]"},parent:{type:"string",description:"\u7236\u5143\u7D20\u8DEF\u5F84\uFF08add \u5FC5\u586B\uFF0C\u5982 /body\u3001/body/p[3]\u3001/body/table[1]\u3001/Sheet1\u3001/\u3001/slide[N]\uFF09"},type:{type:"string",description:"add \u65F6\u7684\u5143\u7D20\u7C7B\u578B\u3002docx\uFF1Ap/paragraph\u3001table\u3001image\u3001pageBreak\u3001sectionBreak\u3001row\u3001merge\u3001comment\u3001toc\u3001field\u3001bookmark\u3001hyperlink\u3001equation\u3001footnote\u3001endnote\u3001code\u3001captioned_image\u3001captioned_table\uFF1Bxlsx\uFF1Arow/sheet/merge/image/chart/comment/validation/cformat/definedName\uFF1Bpptx\uFF1Aslide/textbox/image/shape/table"},props:{type:"object",description:"\u5C5E\u6027\u952E\u503C\u5BF9\u8C61\uFF1A\u6587\u6863\u516C\u5171\u6837\u5F0F\uFF08text/bold/italic/underline/color/fontSize/sizePt/font/alignment/fillColor\uFF09;\u8868\u683C rows/cols/data/header\uFF1B\u884C values\uFF1Bdocx \u5217\u8868 list(bullet|number)+level(0-2)/pageBreakBefore;docx \u5206\u9875\u63A7\u5236 keepNext/keepLines/widowControl/contextualSpacing\uFF1Bdocx \u4E2D\u6587\u6392\u7248 autoSpaceDE/autoSpaceDN/kinsoku/overflowPunct/snapToGrid/adjustRightInd/suppressAutoHyphens/textAlignment;docx \u5B57\u7B26\u6269\u5C55 dstrike/smallCaps/allCaps/vanish/emboss/imprint/kernPt/positionPt/charScale/sizeCsPt/fontHint/rStyle;docx \u8868\u683C\u7248\u5F0F tableLayout(fixed|autofit)/cellMarginCm/cellMarginTopCm/cellMarginBottomCm/cellMarginLeftCm/cellMarginRightCm/tableIndentCm/borderStyle/borderSz/borderColor/insideBorderStyle/insideBorderSz/insideBorderColor;docx \u8868\u683C\u884C rowHeightCm/rowHeightRule/cantSplit/headerRow;docx \u8282\u5C5E\u6027 paper/orientation/marginCm/topCm/bottomCm/leftCm/rightCm/headerCm/footerCm/gutterCm/columns/columnSpacingCm/columnSeparator/columnWidthsCm/pageNumberFormat/pageNumberStart/docGridType/docGridLinePitch/docGridCharSpace/titlePg;docx \u6837\u5F0F\u5B9A\u4E49 name/basedOn/next/link/outlineLevel/quickFormat/styleType;docx \u4EE3\u7801\u5757 code(\u6587\u672C)+font/sizePt/shading/borderColor/border/alignment\uFF08add type=code \u6216 set \u6BB5\u843D\u7528\uFF09;docx \u6BB5\u843D\u5757\u7EA7\u5916\u89C2 shading/paragraphBorder/borderColor;\u56FE\u7247 source(\u5DE5\u4F5C\u533A\u8DEF\u5F84/http URL/data URL)+widthPt/heightPt+fit(contain|cover|stretch);\u6587\u672C\u6846 x/y/w/h \u5355\u4F4D pt \u753B\u5E03 960\xD7540;\u5F62\u72B6 shapeType/fillColor/lineColor/lineWidth/valign/rotation/zOrder;xlsx \u5355\u5143\u683C numberFormat/border/borderColor/wrapText/valign/runs(\u5BCC\u6587\u672C);xlsx \u5DE5\u4F5C\u8868 colWidth/rowHeight/freeze/orientation/fitToWidth/printHeight/printArea/autoFilter/hidden+target;xlsx \u56FE\u8868 chartType/category/series/anchorCell/widthCm/heightCm\uFF1B\u9A8C\u8BC1 validationType/values/formula1/formula2\uFF1B\u6761\u4EF6\u683C\u5F0F kind/operator/formula/text;pptx \u5E7B\u706F\u7247 background/layout/layoutIndex/notes(clone \u7528 from/to)"},after:{type:"string",description:"\u5728\u8BE5\u5143\u7D20\u8DEF\u5F84\u4E4B\u540E\u63D2\u5165\uFF08\u53EF\u9009\uFF0Cdocx\uFF09"},before:{type:"string",description:"\u5728\u8BE5\u5143\u7D20\u8DEF\u5F84\u4E4B\u524D\u63D2\u5165\uFF08\u53EF\u9009\uFF0Cdocx\uFF09"},index:{type:"number",description:"\u63D2\u5165\u4F4D\u7F6E\u5E8F\u53F7\uFF08\u53EF\u9009\uFF0C1-based\uFF09"},to:{type:"string",description:"\u79FB\u52A8/\u4EA4\u6362\u7684\u76EE\u6807\u8DEF\u5F84\uFF08pptx move/swap\uFF09"}},required:["op"]}},bestEffort:{type:"boolean",description:"\u4E3A true \u65F6\u5355\u6761\u5931\u8D25\u4E0D\u56DE\u6EDA\u6574\u6279\uFF08\u9ED8\u8BA4 false\uFF1A\u539F\u5B50\u6267\u884C\uFF0C\u4EFB\u4E00\u5931\u8D25\u5168\u90E8\u56DE\u6EDA\uFF09"}},required:["file","commands"]}},Le={name:"office_validate",description:"\u6821\u9A8C\u6587\u6863\u7ED3\u6784\u5B8C\u6574\u6027\uFF0C\u8FD4\u56DE\u95EE\u9898\u6E05\u5355\uFF08\u7A7A = \u901A\u8FC7\uFF09\u3002docx \u989D\u5916\u505A OOXML \u7ED3\u6784\u68C0\u67E5\uFF1A\u6279\u6CE8\u8303\u56F4\u914D\u5BF9\u4E0E\u6279\u6CE8\u6761\u76EE\u5B58\u5728\u6027\u3001w:del/w:ins \u4FEE\u8BA2\u6807\u8BB0\u89C4\u8303\u3001\u9996\u5C3E\u7A7A\u767D w:t \u7684 xml:space\uFF1Bpptx \u989D\u5916\u505A\u6587\u672C\u6846\u6EA2\u51FA\u542F\u53D1\u5F0F\u68C0\u67E5\uFF08\u4F30\u7B97\u503C\uFF0C\u660E\u786E\u6807\u6CE8\uFF09\u3002\u4EA4\u4ED8\u6D41\u7A0B\uFF1A\u7F16\u8F91\u540E\u5148 validate\uFF0C\u518D office_view \u6838\u5BF9\u5185\u5BB9\uFF0C\u6700\u540E office_preview \u751F\u6210\u9884\u89C8\u81EA\u68C0\u3002",inputSchema:{type:"object",properties:{file:{type:"string",description:"\u6587\u6863\u8DEF\u5F84"}},required:["file"]}},we={name:"office_preview",description:"\u751F\u6210\u6587\u6863\u7684\u81EA\u5305\u542B HTML \u9884\u89C8\u9875\uFF08Word \u6BB5\u843D/\u8868\u683C\u7248\u5F0F\u3001Excel \u5DE5\u4F5C\u8868\u8868\u683C\u3001PPT \u6309\u951A\u70B9\u5B9A\u4F4D\u7684\u5E7B\u706F\u7247\u9875\uFF09\uFF0C\u5B58\u5165\u670D\u52A1\u7AEF\u901A\u7528\u6587\u4EF6\u670D\u52A1\u5E76\u8FD4\u56DE\u5728\u7EBF\u9884\u89C8\u5730\u5740 previewUrl\uFF08\u81EA\u68C0/\u7559\u6863\u7528\uFF09\u3002\u5206\u4EAB\u5230\u6D88\u606F\u5361\u7247\u65F6\u65E0\u9700\u4F20\u8BE5\u5730\u5740\uFF1A\u5361\u7247\uFF08card.filePath \u6216 card.docId\uFF09\u7684\u300C\u5728\u7EBF\u9884\u89C8\u300D\u5730\u5740\u7531\u670D\u52A1\u7AEF\u6309\u5361\u7247\u5F15\u7528\u7684\u6587\u4EF6\u6743\u5A01\u751F\u6210\u3002\u5206\u4EAB\u524D\u5EFA\u8BAE\u5148\u7528 office_validate + office_view \u81EA\u68C0\u5185\u5BB9\u3002",inputSchema:{type:"object",properties:{file:{type:"string",description:"\u6587\u6863\u8DEF\u5F84"}},required:["file"]}},Ce={name:"office_format",description:`\u6309\u683C\u5F0F\u89C4\u8303\u68C0\u67E5/\u4FEE\u6B63 Word \u6587\u6863\uFF08docx\uFF09\uFF0C\u5B9E\u73B0\u300C\u683C\u5F0F\u5BA1\u67E5 + \u4E00\u952E\u4FEE\u6B63\u300D\u3002
178
178
  rules \u4E09\u9009\u4E00\uFF1Apreset \u9884\u7F6E\u540D\uFF08cn-thesis \u4E2D\u6587\u5B66\u4F4D\u8BBA\u6587 / cn-report \u516C\u6587\u62A5\u544A\uFF09\u3001
179
179
  rulesFile \u5DE5\u4F5C\u533A\u89C4\u5219\u6587\u4EF6\u8DEF\u5F84\uFF08YAML/JSON\uFF09\u3001rules \u5185\u8054\u89C4\u5219\u5BF9\u8C61\u3002
180
180
  \u89C4\u5219\u6A21\u578B\uFF08v1\uFF09\uFF1A{ roles: { \u89D2\u8272\u540D: { match: \u5339\u914D\u5668 } }, rules: [ { role, props: {\u671F\u671B\u683C\u5F0F}, checks: [...] } ],
@@ -225,10 +225,10 @@ fix \u65F6\u989D\u5916\u8FD4\u56DE converged(\u662F\u5426\u5DF2\u6536\u655B) \u4
225
225
  - table: { rows, cols, data, header?, tableStyle?, columns? }
226
226
  - pageBreak: {}
227
227
 
228
- \u3010\u6837\u5F0F profile\uFF08\u53EF\u9009\uFF09\u3011\u7EC8\u7A3F\u65F6\u81EA\u52A8\u5E94\u7528\uFF0C\u4E0E office_apply_profile \u540C\u8BED\u4E49\u3002`,inputSchema:{type:"object",properties:{file:{type:"string",description:"\u6A21\u677F docx \u8DEF\u5F84\uFF08\u542B {{\u5360\u4F4D\u7B26}} \u7684\u5185\u5BB9\uFF09"},variables:{type:"object",description:"\u53D8\u91CF\u5B57\u5178 {key: value}"},content:{type:"array",items:{type:"object"},description:"\u5185\u5BB9\u6E05\u5355\u6570\u7EC4"},profile:{type:"object",description:"\u6837\u5F0F Profile\uFF08\u53EF\u9009\uFF09"},outputFile:{type:"string",description:"\u8F93\u51FA\u8DEF\u5F84\uFF08\u9ED8\u8BA4\u8986\u76D6\u6A21\u677F\u6587\u4EF6\uFF1B\u6307\u5B9A\u65F6\u6A21\u677F\u4FDD\u6301\u4E0D\u53D8\uFF0C\u4EA7\u7269\u5199\u5165\u8BE5\u8DEF\u5F84\uFF09"}},required:["file"]}},Re={name:"office_open_document",description:`\u6253\u5F00 Office \u6587\u6863\u5E76\u5728 Dashboard \u9762\u677F\u4E2D\u5B9E\u65F6\u9884\u89C8\uFF08\u540C\u65F6\u628A\u5DE5\u4F5C\u533A\u6587\u4EF6\u4E0A\u4F20\u4E3A\u4E91\u6587\u6863\uFF09\u3002\u8C03\u7528\u540E Dashboard \u7528\u6237\u7AEF\u9762\u677F\u5373\u6E32\u67D3\u8BE5\u6587\u6863\uFF08docx/xlsx/pptx \u5206\u522B\u4F7F\u7528\u539F\u751F\u6E32\u67D3\u5E93\uFF09\uFF0C\u6587\u4EF6\u88AB office_edit \u4FEE\u6539\u540E\u9762\u677F\u81EA\u52A8\u5237\u65B0\uFF0Cagent \u65E0\u9700\u53E6\u622A\u56FE\u3002\u8FD9\u662F\u672C Agent \u4E91\u6587\u6863\u7684\u767B\u8BB0\u5165\u53E3\uFF1A\u4E0A\u4F20\u540E\u8FD4\u56DE docId\uFF0C\u540E\u7EED\u53EF\u7528 docId \u53C2\u4E0E\u534F\u4F5C\uFF08office_share_document \u9080\u8BF7\u4ED6\u4EBA\u3001office_get_changes \u8FFD\u6539\u53D8\u66F4\uFF09\u3002
228
+ \u3010\u6837\u5F0F profile\uFF08\u53EF\u9009\uFF09\u3011\u7EC8\u7A3F\u65F6\u81EA\u52A8\u5E94\u7528\uFF0C\u4E0E office_apply_profile \u540C\u8BED\u4E49\u3002`,inputSchema:{type:"object",properties:{file:{type:"string",description:"\u6A21\u677F docx \u8DEF\u5F84\uFF08\u542B {{\u5360\u4F4D\u7B26}} \u7684\u5185\u5BB9\uFF09"},variables:{type:"object",description:"\u53D8\u91CF\u5B57\u5178 {key: value}"},content:{type:"array",items:{type:"object"},description:"\u5185\u5BB9\u6E05\u5355\u6570\u7EC4"},profile:{type:"object",description:"\u6837\u5F0F Profile\uFF08\u53EF\u9009\uFF09"},outputFile:{type:"string",description:"\u8F93\u51FA\u8DEF\u5F84\uFF08\u9ED8\u8BA4\u8986\u76D6\u6A21\u677F\u6587\u4EF6\uFF1B\u6307\u5B9A\u65F6\u6A21\u677F\u4FDD\u6301\u4E0D\u53D8\uFF0C\u4EA7\u7269\u5199\u5165\u8BE5\u8DEF\u5F84\uFF09"}},required:["file"]}},Pe={name:"office_open_document",description:`\u6253\u5F00 Office \u6587\u6863\u5E76\u5728 Dashboard \u9762\u677F\u4E2D\u5B9E\u65F6\u9884\u89C8\uFF08\u540C\u65F6\u628A\u5DE5\u4F5C\u533A\u6587\u4EF6\u4E0A\u4F20\u4E3A\u4E91\u6587\u6863\uFF09\u3002\u8C03\u7528\u540E Dashboard \u7528\u6237\u7AEF\u9762\u677F\u5373\u6E32\u67D3\u8BE5\u6587\u6863\uFF08docx/xlsx/pptx \u5206\u522B\u4F7F\u7528\u539F\u751F\u6E32\u67D3\u5E93\uFF09\uFF0C\u6587\u4EF6\u88AB office_edit \u4FEE\u6539\u540E\u9762\u677F\u81EA\u52A8\u5237\u65B0\uFF0Cagent \u65E0\u9700\u53E6\u622A\u56FE\u3002\u8FD9\u662F\u672C Agent \u4E91\u6587\u6863\u7684\u767B\u8BB0\u5165\u53E3\uFF1A\u4E0A\u4F20\u540E\u8FD4\u56DE docId\uFF0C\u540E\u7EED\u53EF\u7528 docId \u53C2\u4E0E\u534F\u4F5C\uFF08office_share_document \u9080\u8BF7\u4ED6\u4EBA\u3001office_get_changes \u8FFD\u6539\u53D8\u66F4\uFF09\u3002
229
229
 
230
230
  \u3010\u4F55\u65F6\u8C03\u7528\u3011\u6BCF\u6B21\u5B8C\u6210\u4E00\u8F6E\u7F16\u8F91\u540E\u8C03\u7528\u672C\u5DE5\u5177\u6253\u5F00\u6587\u4EF6\uFF0C\u8BA9\u7528\u6237\u80FD\u5B9E\u65F6\u770B\u5230\u6548\u679C\u2014\u2014\u4E0D\u8981\u5199\u5B8C\u6587\u6863\u5C31\u53EA\u8BF4\u300C\u5DF2\u521B\u5EFA\u300D\uFF0C\u8C03\u7528 office_open_document \u6253\u5F00\u5B83\uFF0C\u7528\u6237\u9762\u677F\u4F1A\u7ACB\u5373\u663E\u793A\u3002
231
231
  \u3010\u672C\u5730\u6587\u4EF6\u4E0E\u4E91\u6587\u6863\u7684\u5173\u7CFB\u3011\u4E91\u6587\u6863\u662F\u4E0A\u4F20\u65F6\u7684\u526F\u672C\u5FEB\u7167\uFF1B\u672C\u5DE5\u5177\u4E0D\u4F1A\u8986\u76D6\u672C\u5730\u6587\u4EF6\uFF0C\u672C\u5730\u7F16\u8F91\uFF08office_edit / office_create \u7B49\uFF09\u4E5F\u4E0D\u4F1A\u81EA\u52A8\u56DE\u5199\u4E91\u6587\u6863\u2014\u2014\u5982\u9700\u8BA9\u672C\u5730\u6587\u4EF6\u8986\u76D6\u4E91\u6587\u6863\uFF0C\u7F16\u8F91\u597D\u540E\u91CD\u65B0\u8C03\u7528\u672C\u5DE5\u5177\u4E0A\u4F20\u5373\u53EF\u3002
232
232
  \u3010\u65E7\u7248\u683C\u5F0F\u3011.doc/.xls/.ppt \u4F1A\u5148\u5C3D\u529B\u8F6C\u6362\u4E3A\u73B0\u4EE3\u683C\u5F0F\uFF08.docx/.xlsx/.pptx\uFF09\u518D\u4E0A\u4F20\u4E3A\u4E91\u6587\u6863\uFF0C\u9762\u677F\u6253\u5F00\u7684\u662F\u8F6C\u6362\u540E\u7684\u526F\u672C\uFF08\u8FD4\u56DE convertedFrom/suggestedFileName/warnings\uFF09\uFF0C\u539F\u6587\u4EF6\u4E0D\u88AB\u4FEE\u6539\u3002
233
- \u5173\u95ED\u9762\u677F\u7528 office_close_document\u3002`,inputSchema:{type:"object",properties:{file:{type:"string",description:"\u6587\u6863\u8DEF\u5F84\uFF08\u5DE5\u4F5C\u533A\u76F8\u5BF9\u8DEF\u5F84\uFF0C\u5982 docs/\u62A5\u544A.docx\uFF09"}},required:["file"]}},Pe={name:"office_close_document",description:"\u5173\u95ED Dashboard \u4E2D\u5F53\u524D\u6253\u5F00\u7684 Office \u6587\u6863\u9884\u89C8\u9762\u677F\u3002\u4EC5\u6536\u8D77\u9762\u677F\uFF0C\u6587\u6863\u4FDD\u7559\u5728\u5DE5\u4F5C\u533A\u4E0D\u53D8\uFF0C\u53EF\u968F\u65F6 office_open_document \u91CD\u65B0\u6253\u5F00\u3002",inputSchema:{type:"object",properties:{}}},Me={name:"office_list_open",description:"\u5217\u51FA\u5F53\u524D Agent \u5728\u672C\u4F1A\u8BDD\u4E2D\u901A\u8FC7 office_open_document \u6253\u5F00\u7684 Office \u6587\u4EF6\u3002\u8FD4\u56DE\u6BCF\u4EFD\u6587\u4EF6\u7684\u8DEF\u5F84\u3001\u7C7B\u578B\uFF08docx/xlsx/pptx\uFF09\u3001\u5927\u5C0F\u3002",inputSchema:{type:"object",properties:{}}},De={name:"office_list_documents",description:"\u5217\u51FA\u5F53\u524D Agent \u7684\u5168\u90E8\u4E91\u6587\u6863\uFF08\u81EA\u5DF1\u521B\u5EFA\u7684 + \u88AB\u9080\u8BF7\u534F\u4F5C\u7684\uFF09\u3002\u8FD4\u56DE\u6BCF\u4EFD\u6587\u6863\u7684 docId\u3001fileName\u3001kind\uFF08docx/xlsx/pptx\uFF09\u3001source\uFF08cloud=\u521B\u5EFA\u5373\u4E91\u6587\u6863 / local=\u7531\u5DE5\u4F5C\u533A\u6587\u4EF6\u4E0A\u4F20\uFF09\u3001version\u3001\u62E5\u6709\u8005\u4E0E\u534F\u4F5C\u6743\u9650\u7B49\u5143\u4FE1\u606F\u3002\u4E91\u6587\u6863\u5728 office_create / office_open_document \u65F6\u81EA\u52A8\u5EFA\u7ACB\uFF1B\u62FF\u5230 docId \u540E\u53EF\u7528 office_edit \u5B9A\u5411\u540C\u6B65\u3001office_share_document \u9080\u8BF7\u534F\u4F5C\u3001office_get_changes \u8FFD\u6539\u53D8\u66F4\u3002",inputSchema:{type:"object",properties:{},required:[]}},ke={name:"office_delete_document",description:"\u5220\u9664\u4E00\u4EFD\u4E91\u6587\u6863\uFF08\u4EC5\u62E5\u6709\u8005\u53EF\u8C03\u7528\uFF0C\u4E0D\u53EF\u6062\u590D\uFF1A\u6587\u6863\u4E0E\u5176\u534F\u4F5C\u5173\u7CFB\u4E00\u5E76\u6E05\u9664\uFF09\u3002\u6CE8\u610F\uFF1A\u4E91\u6587\u6863\u662F\u5DE5\u4F5C\u533A\u6587\u4EF6\u7684\u526F\u672C\uFF0C\u5220\u9664\u4E91\u6587\u6863\u4E0D\u4F1A\u5F71\u54CD\u672C\u5730\u5DE5\u4F5C\u533A\u6587\u4EF6\u2014\u2014\u672C\u5730\u6587\u4EF6\u4ECD\u4FDD\u7559\u5728\u78C1\u76D8\u4E0A\uFF0C\u9700\u8981\u65F6\u53EF\u518D\u6B21 office_open_document \u4E0A\u4F20\u91CD\u5EFA\u4E91\u6587\u6863\u3002\u53EA\u6E05\u7406\u4E91\u526F\u672C\u65F6\u7528\u672C\u5DE5\u5177\uFF08\u5982\u672C\u5730\u6587\u4EF6\u5DF2\u5E9F\u5F03\u3001\u6216\u60F3\u64A4\u9500\u5DF2\u5931\u6548\u7684\u5171\u4EAB\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u4E91\u6587\u6863 id\uFF08\u6765\u81EA office_create / office_open_document / office_list_documents\uFF09"}},required:["docId"]}},je={name:"office_share_document",description:"\u628A\u4E91\u6587\u6863\u5206\u4EAB\u7ED9\u5176\u4ED6 Agent \u534F\u4F5C\uFF08\u6BCF\u4F4D\u88AB\u9080\u8BF7\u4EBA\u6307\u5B9A read=\u53EA\u8BFB \u6216 write=\u53EF\u5199\uFF09\u3002docId \u6765\u81EA office_create / office_open_document / office_list_documents\uFF1B\u53EF\u9009 name \u4E3A\u5206\u4EAB\u5907\u6CE8\uFF08\u4FBF\u4E8E\u5BF9\u65B9\u8BC6\u522B\u6587\u6863\u7528\u9014\uFF09\u3002\u5206\u4EAB\u540E\u5BF9\u65B9\u4F1A\u6536\u5230\u9080\u8BF7\u901A\u77E5\uFF0C\u53EF\u7528 office_get_changes \u8FFD\u8D76\u6587\u6863\u53D8\u66F4\u3002\u64A4\u9500\u5206\u4EAB\u914D\u5BF9\u4F7F\u7528 office_unshare_document\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u8981\u5206\u4EAB\u7684\u4E91\u6587\u6863 id\uFF08\u987B\u4E3A\u672C Agent \u62E5\u6709\uFF09"},members:{type:"array",description:"\u88AB\u9080\u8BF7\u4EBA\u5217\u8868\uFF08\u81F3\u5C11\u4E00\u4F4D\uFF09",items:{type:"object",properties:{agentId:{type:"string",description:"\u88AB\u9080\u8BF7 Agent \u7684\u5B9E\u4F8B id"},permission:{type:"string",enum:["read","write"],description:"\u534F\u4F5C\u6743\u9650\uFF1Aread=\u53EA\u8BFB\u67E5\u770B\uFF0Cwrite=\u53EF\u7F16\u8F91\uFF08\u7F3A\u7701 read\uFF09"}},required:["agentId"]}},name:{type:"string",description:"\u5206\u4EAB\u5907\u6CE8\u540D\uFF08\u53EF\u9009\uFF0C\u4FBF\u4E8E\u88AB\u9080\u8BF7\u65B9\u8BC6\u522B\u6587\u6863\uFF09"}},required:["docId","members"]}},qe={name:"office_unshare_document",description:"\u64A4\u9500\u4E91\u6587\u6863\u5206\u4EAB\uFF08\u4EC5\u6587\u6863\u62E5\u6709\u8005\u53EF\u8C03\u7528\uFF0C\u4E0E office_share_document \u914D\u5BF9\uFF09\u3002agentIds \u7701\u7565\u65F6\u6574\u4F53\u64A4\u9500\uFF08\u6E05\u7A7A\u5168\u90E8\u534F\u4F5C\u8005\uFF0C\u6587\u6863\u56DE\u5230\u4EC5\u672C Agent \u79C1\u6709\uFF09\uFF1B\u63D0\u4F9B agentIds \u65F6\u4EC5\u79FB\u9664\u6307\u5B9A\u534F\u4F5C\u8005\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u4E91\u6587\u6863 id"},agentIds:{type:"array",items:{type:"string"},description:"\u8981\u79FB\u9664\u7684\u534F\u4F5C\u8005 agentId \u5217\u8868\uFF08\u7701\u7565 = \u6E05\u7A7A\u5168\u90E8\u534F\u4F5C\u8005\uFF09"}},required:["docId"]}},Fe={name:"office_get_changes",description:"\u8FFD\u8D76\u67D0\u4E91\u6587\u6863\u81EA sinceVersion \u4EE5\u6765\u7684\u53D8\u66F4\uFF08\u9010\u7248\u672C\u6458\u8981\uFF1A\u8C01\u6539\u7684\u3001\u6539\u4E86\u54EA\u4E9B\u5185\u5BB9\uFF09\u3002\u6536\u5230\u300C\u4E91\u6587\u6863\u53D8\u66F4\u300D\u901A\u77E5\u3001\u6216\u9700\u8981\u4E86\u89E3\u4ED6\u4EBA\u534F\u4F5C\u8FDB\u5C55\u65F6\u8C03\u7528\u3002\u8BF7\u628A\u8FD4\u56DE\u7684 toVersion \u8BB0\u4E3A\u4F60\u5DF2\u770B\u5230\u7684\u6700\u65B0\u7248\u672C\uFF0C\u4E0B\u6B21\u8FFD\u8D76\u4F20\u5B83\u4F5C sinceVersion\uFF1Btruncated=true \u8868\u793A\u53D8\u66F4\u65E5\u5FD7\u5DF2\u88AB\u4FEE\u526A\uFF0C\u8BF7\u6539\u7528 office_open_document / office_list_documents \u5168\u91CF\u91CD\u8BFB\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u4E91\u6587\u6863 id"},sinceVersion:{type:"number",description:"\u4F60\u5DF2\u770B\u5230\u7684\u6700\u65B0\u6587\u6863\u7248\u672C\uFF08\u7F3A\u7701 0 = \u4ECE\u5934\u8FFD\u8D76\uFF1B\u4F20\u5165\u4E0A\u6B21\u8FD4\u56DE\u7684 toVersion \u53EF\u53EA\u62FF\u589E\u91CF\uFF09"}},required:["docId"]}},et=new Set(["office_create","office_view","office_edit","office_validate","office_preview","office_format","office_apply_profile","office_generate_from_template","office_open_document","office_close_document","office_list_open","office_list_documents","office_delete_document","office_share_document","office_unshare_document","office_get_changes"]),Ge={name:"send_email",description:"\u4EE5\u4F60\u7684\u89D2\u8272\u5B9E\u4F8B\u57DF\u540D\u90AE\u7BB1\u53D1\u4FE1\uFF08\u5730\u5740\u5F62\u5982 {agentId}@{\u57DF\u540D}\uFF09\u3002to/cc/bcc \u652F\u6301\u9017\u53F7\u5206\u9694\u591A\u5730\u5740\uFF1Btext \u4E0E html \u81F3\u5C11\u63D0\u4F9B\u4E00\u4E2A\uFF1B\u9644\u4EF6\u4EE5 base64 \u5185\u8054\u4F20\u9012\u3002\u56DE\u590D\u6536\u5230\u7684\u90AE\u4EF6\u8BF7\u6539\u7528 reply_email\uFF08\u81EA\u52A8\u5E26\u4E0A\u7EBF\u7A0B\u5934\uFF09\u3002",inputSchema:{type:"object",properties:{to:{type:"string",description:"\u6536\u4EF6\u4EBA\u90AE\u7BB1\u5730\u5740\uFF0C\u591A\u4E2A\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\uFF08\u5982 a@x.com,b@y.com\uFF09"},subject:{type:"string",description:"\u90AE\u4EF6\u4E3B\u9898"},text:{type:"string",description:"\u7EAF\u6587\u672C\u6B63\u6587\uFF08\u4E0E html \u81F3\u5C11\u63D0\u4F9B\u4E00\u4E2A\uFF1B\u540C\u65F6\u63D0\u4F9B\u65F6\u6309 multipart/alternative \u53D1\u9001\uFF09"},html:{type:"string",description:"HTML \u6B63\u6587\uFF08\u4E0E text \u81F3\u5C11\u63D0\u4F9B\u4E00\u4E2A\uFF09"},cc:{type:"string",description:"\u6284\u9001\u5730\u5740\uFF0C\u591A\u4E2A\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\uFF08\u53EF\u9009\uFF09"},bcc:{type:"string",description:"\u5BC6\u9001\u5730\u5740\uFF0C\u591A\u4E2A\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\uFF08\u53EF\u9009\uFF09"},attachments:{type:"array",description:"\u9644\u4EF6\u5217\u8868\uFF08\u53EF\u9009\uFF0C\u5185\u5BB9\u4EE5 base64 \u5185\u8054\u4F20\u9012\uFF09",items:{type:"object",properties:{filename:{type:"string",description:"\u9644\u4EF6\u6587\u4EF6\u540D\uFF08\u542B\u6269\u5C55\u540D\uFF09"},contentBase64:{type:"string",description:"\u9644\u4EF6\u5185\u5BB9\u7684 Base64 \u7F16\u7801"},contentType:{type:"string",description:"MIME \u7C7B\u578B\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 application/octet-stream\uFF09"}},required:["filename","contentBase64"]}},replyToThreadId:{type:"string",description:"\u56DE\u590D\u7684\u7EBF\u7A0B ID\uFF08t_mail_event.thread_id\uFF0C\u53EF\u9009\uFF09\u3002\u63D0\u4F9B\u540E\u81EA\u52A8\u8865 In-Reply-To/References\uFF0C\u4F7F\u56DE\u4FE1\u5F52\u5E76\u5230\u540C\u4E00\u90AE\u4EF6\u7EBF\u7A0B\uFF1B\u4E00\u822C\u7531 reply_email \u81EA\u52A8\u586B\u5199\uFF0C\u65E0\u9700\u624B\u5DE5\u4F20\u3002"}},required:["to"]}},Ue={name:"list_emails",description:"\u5217\u51FA\u4F60\u7684\u57DF\u540D\u90AE\u7BB1\u6536\u4EF6\u7BB1\u90AE\u4EF6\uFF08\u4E0D\u542B\u6B63\u6587\uFF0C\u5217\u8868\u9879\u4EC5\u542B\u4E3B\u9898/\u53D1\u4EF6\u4EBA/\u65F6\u95F4/\u662F\u5426\u5DF2\u8BFB/\u6709\u65E0\u9644\u4EF6\uFF09\u3002\u8FD4\u56DE\u7684 mailId\uFF08\u683C\u5F0F folder:uid\uFF0C\u5982 INBOX:42\uFF09\u53EF\u7528\u4E8E read_email / reply_email \u7CBE\u786E\u5B9A\u4F4D\u90AE\u4EF6\u3002",inputSchema:{type:"object",properties:{limit:{type:"number",description:"\u8FD4\u56DE\u6700\u8FD1\u90AE\u4EF6\u7684\u6570\u91CF\uFF08\u9ED8\u8BA4 20\uFF09"},since:{type:"string",description:"\u8D77\u59CB\u65F6\u95F4\uFF08ISO 8601 \u683C\u5F0F\uFF0C\u53EF\u9009\uFF09\u3002\u65E9\u4E8E\u8BE5\u65F6\u95F4\u7684\u90AE\u4EF6\u4E0D\u4F1A\u8FD4\u56DE\u3002"},unreadOnly:{type:"boolean",description:"\u662F\u5426\u53EA\u8FD4\u56DE\u672A\u8BFB\u90AE\u4EF6\uFF08\u9ED8\u8BA4 false\uFF09"}},required:[]}},He={name:"read_email",description:"\u8BFB\u53D6\u5355\u5C01\u90AE\u4EF6\u7684\u6B63\u6587\u4E0E\u9644\u4EF6\u5143\u4FE1\u606F\uFF08\u9644\u4EF6\u5185\u5BB9\u7ECF\u8FD4\u56DE\u7684\u4E0B\u8F7D\u5730\u5740\u83B7\u53D6\uFF0C\u4E0D\u56DE\u4F20\u5B57\u8282\uFF09\u3002\u8BFB\u53D6\u540E\u670D\u52A1\u7AEF\u4F1A\u5C06\u8BE5\u90AE\u4EF6\u6807\u8BB0\u4E3A\u5DF2\u8BFB\u3002mailId \u53D6\u81EA list_emails \u8FD4\u56DE\u9879\uFF08\u683C\u5F0F folder:uid\uFF09\u3002",inputSchema:{type:"object",properties:{mailId:{type:"string",description:"\u90AE\u4EF6\u7A33\u5B9A\u6807\u8BC6\uFF0C\u683C\u5F0F folder:uid\uFF08\u5982 INBOX:42\uFF09\uFF0C\u6765\u81EA list_emails"}},required:["mailId"]}},Be={name:"reply_email",description:"\u56DE\u590D\u4E00\u5C01\u6536\u5230\u7684\u90AE\u4EF6\uFF1A\u81EA\u52A8\u6309 mailId \u8BFB\u53D6\u539F\u90AE\u4EF6\uFF0C\u53D6\u539F\u53D1\u4EF6\u4EBA\u5730\u5740\u4E0E\u7EBF\u7A0B ID\uFF0C\u4EE5\u4F60\u7684\u57DF\u540D\u90AE\u7BB1\u56DE\u4FE1\u5E76\u5E26\u4E0A\u7EBF\u7A0B\u5934\uFF08\u5BF9\u65B9\u5BA2\u6237\u7AEF\u6B63\u786E\u5F52\u5E76\u7EBF\u7A0B\uFF09\u3002text \u4E0E html \u81F3\u5C11\u63D0\u4F9B\u4E00\u4E2A\uFF1B\u9644\u4EF6\u4EE5 base64 \u5185\u8054\u4F20\u9012\u3002",inputSchema:{type:"object",properties:{mailId:{type:"string",description:"\u88AB\u56DE\u590D\u90AE\u4EF6\u7684\u7A33\u5B9A\u6807\u8BC6\uFF0C\u683C\u5F0F folder:uid\uFF08\u5982 INBOX:42\uFF09\uFF0C\u6765\u81EA list_emails"},text:{type:"string",description:"\u7EAF\u6587\u672C\u6B63\u6587\uFF08\u4E0E html \u81F3\u5C11\u63D0\u4F9B\u4E00\u4E2A\uFF09"},html:{type:"string",description:"HTML \u6B63\u6587\uFF08\u4E0E text \u81F3\u5C11\u63D0\u4F9B\u4E00\u4E2A\uFF09"},attachments:{type:"array",description:"\u9644\u4EF6\u5217\u8868\uFF08\u53EF\u9009\uFF0C\u5185\u5BB9\u4EE5 base64 \u5185\u8054\u4F20\u9012\uFF09",items:{type:"object",properties:{filename:{type:"string",description:"\u9644\u4EF6\u6587\u4EF6\u540D\uFF08\u542B\u6269\u5C55\u540D\uFF09"},contentBase64:{type:"string",description:"\u9644\u4EF6\u5185\u5BB9\u7684 Base64 \u7F16\u7801"},contentType:{type:"string",description:"MIME \u7C7B\u578B\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 application/octet-stream\uFF09"}},required:["filename","contentBase64"]}}},required:["mailId"]}},tt=new Set(["send_email","list_emails","read_email","reply_email"]),it=[_,u,g,y,f,h,b,x,I,O,E,T,S,L,A,w,C,i,p,d,r,s,o,n,a,c,l,m,N,v,R,P,M,D,k,j,q,F,G,U,H,B,W,V,Y,z,K,J,X,$,Q,Z,ee,te,ie,se,oe,pe,re,ne,de,ae,ce,le,me,_e,ue,ge,ye,fe,Oe,xe,Ie,he,be,Ee,Te,Se,Le,Ae,we,Ce,Ne,ve,Re,Pe,Me,De,ke,je,qe,Fe,Ge,Ue,He,Be];export{_t as ABANDON_MEMORY_UPDATE_TOOL,H as CREATE_MEETING_TOOL,ot as CREATE_MEMORY_TOOL,L as CREATE_TASK_INSTANCE_COMMENT_TOOL,Xe as DEBUG_LOG_TOOL_NAMES,pt as DELETE_MEMORY_TOOL,me as DRAW_CLOSE_DOCUMENT_TOOL,ge as DRAW_CREATE_CELLS_TOOL,ae as DRAW_CREATE_DOCUMENT_TOOL,fe as DRAW_DELETE_CELLS_TOOL,he as DRAW_DELETE_DOCUMENT_TOOL,Ee as DRAW_EXPORT_DOCUMENT_TOOL,Oe as DRAW_EXPORT_IMAGE_TOOL,ue as DRAW_GET_CHANGES_TOOL,_e as DRAW_GET_DIAGRAM_TOOL,ce as DRAW_LIST_DOCUMENTS_TOOL,le as DRAW_OPEN_DOCUMENT_TOOL,be as DRAW_RENAME_DOCUMENT_TOOL,Ie as DRAW_REVOKE_SHARE_TOOL,xe as DRAW_SHARE_DOCUMENT_TOOL,Ze as DRAW_TOOL_NAMES,ye as DRAW_UPDATE_CELLS_TOOL,tt as EMAIL_TOOL_NAMES,W as END_MEETING_TOOL,$e as FILE_CHANGES_HISTORY_TOOL_NAMES,C as FINISH_TASK_ROLLBACK_TOOL,_ as GET_COLLEAGUE_TOOL,N as GET_DEBUG_LOG_CONFIG_TOOL,O as GET_DM_HISTORY_TOOL,E as GET_GROUP_HISTORY_TOOL,u as GET_GROUP_ROOMS_TOOL,Y as GET_MEETING_INFO_TOOL,st as GET_MEMORY_STATS_TOOL,I as GET_MESSAGE_TOOL,y as GET_PROFILE_TOOL,f as HIRE_COLLEAGUE_TOOL,ze as HIRE_TOOL_NAMES,M as LAUNCH_CONFIG_CREATE_TOOL,k as LAUNCH_CONFIG_DELETE_TOOL,P as LAUNCH_CONFIG_LIST_TOOL,G as LAUNCH_CONFIG_LOGS_TOOL,q as LAUNCH_CONFIG_RESTART_TOOL,j as LAUNCH_CONFIG_START_TOOL,U as LAUNCH_CONFIG_STATUS_TOOL,F as LAUNCH_CONFIG_STOP_TOOL,Ye as LAUNCH_CONFIG_TOOL_NAMES,D as LAUNCH_CONFIG_UPDATE_TOOL,B as LEAVE_MEETING_TOOL,Ue as LIST_EMAILS_TOOL,mt as LIST_MEMORIES_BY_FILE_TOOL,dt as LIST_MEMORIES_TOOL,g as LIST_PROJECT_MEMBERS_TOOL,S as LIST_TASK_NODE_ITERATIONS_TOOL,it as MCP_TOOLS,V as MEETING_SPEAK_TOOL,Ke as MEETING_TOOL_NAMES,gt as MEMORY_RECURRENCE_COMPLETE_TOOL,ut as MEMORY_RECURRENCE_TOOL,Ve as MEMORY_TOOL_NAMES,z as MY_MEETINGS_TOOL,T as MY_TASK_TOOL,Ne as OFFICE_APPLY_PROFILE_TOOL,Pe as OFFICE_CLOSE_DOCUMENT_TOOL,Te as OFFICE_CREATE_TOOL,ke as OFFICE_DELETE_DOCUMENT_TOOL,Le as OFFICE_EDIT_TOOL,Ce as OFFICE_FORMAT_TOOL,ve as OFFICE_GENERATE_FROM_TEMPLATE_TOOL,Fe as OFFICE_GET_CHANGES_TOOL,De as OFFICE_LIST_DOCUMENTS_TOOL,Me as OFFICE_LIST_OPEN_TOOL,Re as OFFICE_OPEN_DOCUMENT_TOOL,we as OFFICE_PREVIEW_TOOL,je as OFFICE_SHARE_DOCUMENT_TOOL,et as OFFICE_TOOL_NAMES,qe as OFFICE_UNSHARE_DOCUMENT_TOOL,Ae as OFFICE_VALIDATE_TOOL,Se as OFFICE_VIEW_TOOL,$ as PENCIL_CLOSE_DOCUMENT_TOOL,K as PENCIL_CREATE_DOCUMENT_TOOL,ee as PENCIL_CREATE_NODES_TOOL,re as PENCIL_DELETE_DOCUMENT_TOOL,ie as PENCIL_DELETE_NODES_TOOL,de as PENCIL_EXPORT_DOCUMENT_TOOL,se as PENCIL_EXPORT_IMAGE_TOOL,Z as PENCIL_GET_CHANGES_TOOL,Q as PENCIL_GET_TREE_TOOL,J as PENCIL_LIST_DOCUMENTS_TOOL,X as PENCIL_OPEN_DOCUMENT_TOOL,ne as PENCIL_RENAME_DOCUMENT_TOOL,pe as PENCIL_REVOKE_SHARE_TOOL,oe as PENCIL_SHARE_DOCUMENT_TOOL,Qe as PENCIL_TOOL_NAMES,te as PENCIL_UPDATE_NODES_TOOL,x as POLL_MESSAGE_TOOL,v as QUERY_DEBUG_LOGS_TOOL,R as QUERY_FILE_CHANGES_HISTORY_TOOL,He as READ_EMAIL_TOOL,at as READ_MEMORY_TOOL,Be as REPLY_EMAIL_TOOL,ct as SEARCH_MEMORY_TOOL,Ge as SEND_EMAIL_TOOL,h as SEND_GROUP_TOOL,b as SEND_PRIVATE_TOOL,w as START_TASK_ROLLBACK_TOOL,A as SUBMIT_TASK_RESULT_TOOL,Je as TASK_TOOL_NAMES,lt as UPDATE_MEMORY_TOOL};
233
+ \u5173\u95ED\u9762\u677F\u7528 office_close_document\u3002`,inputSchema:{type:"object",properties:{file:{type:"string",description:"\u6587\u6863\u8DEF\u5F84\uFF08\u5DE5\u4F5C\u533A\u76F8\u5BF9\u8DEF\u5F84\uFF0C\u5982 docs/\u62A5\u544A.docx\uFF09"}},required:["file"]}},Re={name:"office_close_document",description:"\u5173\u95ED Dashboard \u4E2D\u5F53\u524D\u6253\u5F00\u7684 Office \u6587\u6863\u9884\u89C8\u9762\u677F\u3002\u4EC5\u6536\u8D77\u9762\u677F\uFF0C\u6587\u6863\u4FDD\u7559\u5728\u5DE5\u4F5C\u533A\u4E0D\u53D8\uFF0C\u53EF\u968F\u65F6 office_open_document \u91CD\u65B0\u6253\u5F00\u3002",inputSchema:{type:"object",properties:{}}},Me={name:"office_list_open",description:"\u5217\u51FA\u5F53\u524D Agent \u5728\u672C\u4F1A\u8BDD\u4E2D\u901A\u8FC7 office_open_document \u6253\u5F00\u7684 Office \u6587\u4EF6\u3002\u8FD4\u56DE\u6BCF\u4EFD\u6587\u4EF6\u7684\u8DEF\u5F84\u3001\u7C7B\u578B\uFF08docx/xlsx/pptx\uFF09\u3001\u5927\u5C0F\u3002",inputSchema:{type:"object",properties:{}}},De={name:"office_list_documents",description:"\u5217\u51FA\u5F53\u524D Agent \u7684\u5168\u90E8\u4E91\u6587\u6863\uFF08\u81EA\u5DF1\u521B\u5EFA\u7684 + \u88AB\u9080\u8BF7\u534F\u4F5C\u7684\uFF09\u3002\u8FD4\u56DE\u6BCF\u4EFD\u6587\u6863\u7684 docId\u3001fileName\u3001kind\uFF08docx/xlsx/pptx\uFF09\u3001source\uFF08cloud=\u521B\u5EFA\u5373\u4E91\u6587\u6863 / local=\u7531\u5DE5\u4F5C\u533A\u6587\u4EF6\u4E0A\u4F20\uFF09\u3001version\u3001\u62E5\u6709\u8005\u4E0E\u534F\u4F5C\u6743\u9650\u7B49\u5143\u4FE1\u606F\u3002\u4E91\u6587\u6863\u5728 office_create / office_open_document \u65F6\u81EA\u52A8\u5EFA\u7ACB\uFF1B\u62FF\u5230 docId \u540E\u53EF\u7528 office_edit \u5B9A\u5411\u540C\u6B65\u3001office_share_document \u9080\u8BF7\u534F\u4F5C\u3001office_get_changes \u8FFD\u6539\u53D8\u66F4\u3002",inputSchema:{type:"object",properties:{},required:[]}},ke={name:"office_delete_document",description:"\u5220\u9664\u4E00\u4EFD\u4E91\u6587\u6863\uFF08\u4EC5\u62E5\u6709\u8005\u53EF\u8C03\u7528\uFF0C\u4E0D\u53EF\u6062\u590D\uFF1A\u6587\u6863\u4E0E\u5176\u534F\u4F5C\u5173\u7CFB\u4E00\u5E76\u6E05\u9664\uFF09\u3002\u6CE8\u610F\uFF1A\u4E91\u6587\u6863\u662F\u5DE5\u4F5C\u533A\u6587\u4EF6\u7684\u526F\u672C\uFF0C\u5220\u9664\u4E91\u6587\u6863\u4E0D\u4F1A\u5F71\u54CD\u672C\u5730\u5DE5\u4F5C\u533A\u6587\u4EF6\u2014\u2014\u672C\u5730\u6587\u4EF6\u4ECD\u4FDD\u7559\u5728\u78C1\u76D8\u4E0A\uFF0C\u9700\u8981\u65F6\u53EF\u518D\u6B21 office_open_document \u4E0A\u4F20\u91CD\u5EFA\u4E91\u6587\u6863\u3002\u53EA\u6E05\u7406\u4E91\u526F\u672C\u65F6\u7528\u672C\u5DE5\u5177\uFF08\u5982\u672C\u5730\u6587\u4EF6\u5DF2\u5E9F\u5F03\u3001\u6216\u60F3\u64A4\u9500\u5DF2\u5931\u6548\u7684\u5171\u4EAB\uFF09\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u4E91\u6587\u6863 id\uFF08\u6765\u81EA office_create / office_open_document / office_list_documents\uFF09"}},required:["docId"]}},je={name:"office_share_document",description:"\u628A\u4E91\u6587\u6863\u5206\u4EAB\u7ED9\u5176\u4ED6 Agent \u534F\u4F5C\uFF08\u6BCF\u4F4D\u88AB\u9080\u8BF7\u4EBA\u6307\u5B9A read=\u53EA\u8BFB \u6216 write=\u53EF\u5199\uFF09\u3002docId \u6765\u81EA office_create / office_open_document / office_list_documents\uFF1B\u53EF\u9009 name \u4E3A\u5206\u4EAB\u5907\u6CE8\uFF08\u4FBF\u4E8E\u5BF9\u65B9\u8BC6\u522B\u6587\u6863\u7528\u9014\uFF09\u3002\u5206\u4EAB\u540E\u5BF9\u65B9\u4F1A\u6536\u5230\u9080\u8BF7\u901A\u77E5\uFF0C\u53EF\u7528 office_get_changes \u8FFD\u8D76\u6587\u6863\u53D8\u66F4\u3002\u64A4\u9500\u5206\u4EAB\u914D\u5BF9\u4F7F\u7528 office_unshare_document\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u8981\u5206\u4EAB\u7684\u4E91\u6587\u6863 id\uFF08\u987B\u4E3A\u672C Agent \u62E5\u6709\uFF09"},members:{type:"array",description:"\u88AB\u9080\u8BF7\u4EBA\u5217\u8868\uFF08\u81F3\u5C11\u4E00\u4F4D\uFF09",items:{type:"object",properties:{agentId:{type:"string",description:"\u88AB\u9080\u8BF7 Agent \u7684\u5B9E\u4F8B id"},permission:{type:"string",enum:["read","write"],description:"\u534F\u4F5C\u6743\u9650\uFF1Aread=\u53EA\u8BFB\u67E5\u770B\uFF0Cwrite=\u53EF\u7F16\u8F91\uFF08\u7F3A\u7701 read\uFF09"}},required:["agentId"]}},name:{type:"string",description:"\u5206\u4EAB\u5907\u6CE8\u540D\uFF08\u53EF\u9009\uFF0C\u4FBF\u4E8E\u88AB\u9080\u8BF7\u65B9\u8BC6\u522B\u6587\u6863\uFF09"}},required:["docId","members"]}},qe={name:"office_unshare_document",description:"\u64A4\u9500\u4E91\u6587\u6863\u5206\u4EAB\uFF08\u4EC5\u6587\u6863\u62E5\u6709\u8005\u53EF\u8C03\u7528\uFF0C\u4E0E office_share_document \u914D\u5BF9\uFF09\u3002agentIds \u7701\u7565\u65F6\u6574\u4F53\u64A4\u9500\uFF08\u6E05\u7A7A\u5168\u90E8\u534F\u4F5C\u8005\uFF0C\u6587\u6863\u56DE\u5230\u4EC5\u672C Agent \u79C1\u6709\uFF09\uFF1B\u63D0\u4F9B agentIds \u65F6\u4EC5\u79FB\u9664\u6307\u5B9A\u534F\u4F5C\u8005\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u4E91\u6587\u6863 id"},agentIds:{type:"array",items:{type:"string"},description:"\u8981\u79FB\u9664\u7684\u534F\u4F5C\u8005 agentId \u5217\u8868\uFF08\u7701\u7565 = \u6E05\u7A7A\u5168\u90E8\u534F\u4F5C\u8005\uFF09"}},required:["docId"]}},Fe={name:"office_get_changes",description:"\u8FFD\u8D76\u67D0\u4E91\u6587\u6863\u81EA sinceVersion \u4EE5\u6765\u7684\u53D8\u66F4\uFF08\u9010\u7248\u672C\u6458\u8981\uFF1A\u8C01\u6539\u7684\u3001\u6539\u4E86\u54EA\u4E9B\u5185\u5BB9\uFF09\u3002\u6536\u5230\u300C\u4E91\u6587\u6863\u53D8\u66F4\u300D\u901A\u77E5\u3001\u6216\u9700\u8981\u4E86\u89E3\u4ED6\u4EBA\u534F\u4F5C\u8FDB\u5C55\u65F6\u8C03\u7528\u3002\u8BF7\u628A\u8FD4\u56DE\u7684 toVersion \u8BB0\u4E3A\u4F60\u5DF2\u770B\u5230\u7684\u6700\u65B0\u7248\u672C\uFF0C\u4E0B\u6B21\u8FFD\u8D76\u4F20\u5B83\u4F5C sinceVersion\uFF1Btruncated=true \u8868\u793A\u53D8\u66F4\u65E5\u5FD7\u5DF2\u88AB\u4FEE\u526A\uFF0C\u8BF7\u6539\u7528 office_open_document / office_list_documents \u5168\u91CF\u91CD\u8BFB\u3002",inputSchema:{type:"object",properties:{docId:{type:"string",description:"\u4E91\u6587\u6863 id"},sinceVersion:{type:"number",description:"\u4F60\u5DF2\u770B\u5230\u7684\u6700\u65B0\u6587\u6863\u7248\u672C\uFF08\u7F3A\u7701 0 = \u4ECE\u5934\u8FFD\u8D76\uFF1B\u4F20\u5165\u4E0A\u6B21\u8FD4\u56DE\u7684 toVersion \u53EF\u53EA\u62FF\u589E\u91CF\uFF09"}},required:["docId"]}},tt=new Set(["office_create","office_view","office_edit","office_validate","office_preview","office_format","office_apply_profile","office_generate_from_template","office_open_document","office_close_document","office_list_open","office_list_documents","office_delete_document","office_share_document","office_unshare_document","office_get_changes"]),Ge={name:"send_email",description:"\u4EE5\u4F60\u7684\u89D2\u8272\u5B9E\u4F8B\u57DF\u540D\u90AE\u7BB1\u53D1\u4FE1\uFF08\u5730\u5740\u5F62\u5982 {agentId}@{\u57DF\u540D}\uFF09\u3002to/cc/bcc \u652F\u6301\u9017\u53F7\u5206\u9694\u591A\u5730\u5740\uFF1Btext \u4E0E html \u81F3\u5C11\u63D0\u4F9B\u4E00\u4E2A\uFF1B\u9644\u4EF6\u4EE5 base64 \u5185\u8054\u4F20\u9012\u3002\u56DE\u590D\u6536\u5230\u7684\u90AE\u4EF6\u8BF7\u6539\u7528 reply_email\uFF08\u81EA\u52A8\u5E26\u4E0A\u7EBF\u7A0B\u5934\uFF09\u3002",inputSchema:{type:"object",properties:{to:{type:"string",description:"\u6536\u4EF6\u4EBA\u90AE\u7BB1\u5730\u5740\uFF0C\u591A\u4E2A\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\uFF08\u5982 a@x.com,b@y.com\uFF09"},subject:{type:"string",description:"\u90AE\u4EF6\u4E3B\u9898"},text:{type:"string",description:"\u7EAF\u6587\u672C\u6B63\u6587\uFF08\u4E0E html \u81F3\u5C11\u63D0\u4F9B\u4E00\u4E2A\uFF1B\u540C\u65F6\u63D0\u4F9B\u65F6\u6309 multipart/alternative \u53D1\u9001\uFF09"},html:{type:"string",description:"HTML \u6B63\u6587\uFF08\u4E0E text \u81F3\u5C11\u63D0\u4F9B\u4E00\u4E2A\uFF09"},cc:{type:"string",description:"\u6284\u9001\u5730\u5740\uFF0C\u591A\u4E2A\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\uFF08\u53EF\u9009\uFF09"},bcc:{type:"string",description:"\u5BC6\u9001\u5730\u5740\uFF0C\u591A\u4E2A\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\uFF08\u53EF\u9009\uFF09"},attachments:{type:"array",description:"\u9644\u4EF6\u5217\u8868\uFF08\u53EF\u9009\uFF0C\u5185\u5BB9\u4EE5 base64 \u5185\u8054\u4F20\u9012\uFF09",items:{type:"object",properties:{filename:{type:"string",description:"\u9644\u4EF6\u6587\u4EF6\u540D\uFF08\u542B\u6269\u5C55\u540D\uFF09"},contentBase64:{type:"string",description:"\u9644\u4EF6\u5185\u5BB9\u7684 Base64 \u7F16\u7801"},contentType:{type:"string",description:"MIME \u7C7B\u578B\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 application/octet-stream\uFF09"}},required:["filename","contentBase64"]}},replyToThreadId:{type:"string",description:"\u56DE\u590D\u7684\u7EBF\u7A0B ID\uFF08t_mail_event.thread_id\uFF0C\u53EF\u9009\uFF09\u3002\u63D0\u4F9B\u540E\u81EA\u52A8\u8865 In-Reply-To/References\uFF0C\u4F7F\u56DE\u4FE1\u5F52\u5E76\u5230\u540C\u4E00\u90AE\u4EF6\u7EBF\u7A0B\uFF1B\u4E00\u822C\u7531 reply_email \u81EA\u52A8\u586B\u5199\uFF0C\u65E0\u9700\u624B\u5DE5\u4F20\u3002"}},required:["to"]}},Ue={name:"list_emails",description:"\u5217\u51FA\u4F60\u7684\u57DF\u540D\u90AE\u7BB1\u6536\u4EF6\u7BB1\u90AE\u4EF6\uFF08\u4E0D\u542B\u6B63\u6587\uFF0C\u5217\u8868\u9879\u4EC5\u542B\u4E3B\u9898/\u53D1\u4EF6\u4EBA/\u65F6\u95F4/\u662F\u5426\u5DF2\u8BFB/\u6709\u65E0\u9644\u4EF6\uFF09\u3002\u8FD4\u56DE\u7684 mailId\uFF08\u683C\u5F0F folder:uid\uFF0C\u5982 INBOX:42\uFF09\u53EF\u7528\u4E8E read_email / reply_email \u7CBE\u786E\u5B9A\u4F4D\u90AE\u4EF6\u3002",inputSchema:{type:"object",properties:{limit:{type:"number",description:"\u8FD4\u56DE\u6700\u8FD1\u90AE\u4EF6\u7684\u6570\u91CF\uFF08\u9ED8\u8BA4 20\uFF09"},since:{type:"string",description:"\u8D77\u59CB\u65F6\u95F4\uFF08ISO 8601 \u683C\u5F0F\uFF0C\u53EF\u9009\uFF09\u3002\u65E9\u4E8E\u8BE5\u65F6\u95F4\u7684\u90AE\u4EF6\u4E0D\u4F1A\u8FD4\u56DE\u3002"},unreadOnly:{type:"boolean",description:"\u662F\u5426\u53EA\u8FD4\u56DE\u672A\u8BFB\u90AE\u4EF6\uFF08\u9ED8\u8BA4 false\uFF09"}},required:[]}},Be={name:"read_email",description:"\u8BFB\u53D6\u5355\u5C01\u90AE\u4EF6\u7684\u6B63\u6587\u4E0E\u9644\u4EF6\u5143\u4FE1\u606F\uFF08\u9644\u4EF6\u5185\u5BB9\u7ECF\u8FD4\u56DE\u7684\u4E0B\u8F7D\u5730\u5740\u83B7\u53D6\uFF0C\u4E0D\u56DE\u4F20\u5B57\u8282\uFF09\u3002\u8BFB\u53D6\u540E\u670D\u52A1\u7AEF\u4F1A\u5C06\u8BE5\u90AE\u4EF6\u6807\u8BB0\u4E3A\u5DF2\u8BFB\u3002mailId \u53D6\u81EA list_emails \u8FD4\u56DE\u9879\uFF08\u683C\u5F0F folder:uid\uFF09\u3002",inputSchema:{type:"object",properties:{mailId:{type:"string",description:"\u90AE\u4EF6\u7A33\u5B9A\u6807\u8BC6\uFF0C\u683C\u5F0F folder:uid\uFF08\u5982 INBOX:42\uFF09\uFF0C\u6765\u81EA list_emails"}},required:["mailId"]}},He={name:"reply_email",description:"\u56DE\u590D\u4E00\u5C01\u6536\u5230\u7684\u90AE\u4EF6\uFF1A\u81EA\u52A8\u6309 mailId \u8BFB\u53D6\u539F\u90AE\u4EF6\uFF0C\u53D6\u539F\u53D1\u4EF6\u4EBA\u5730\u5740\u4E0E\u7EBF\u7A0B ID\uFF0C\u4EE5\u4F60\u7684\u57DF\u540D\u90AE\u7BB1\u56DE\u4FE1\u5E76\u5E26\u4E0A\u7EBF\u7A0B\u5934\uFF08\u5BF9\u65B9\u5BA2\u6237\u7AEF\u6B63\u786E\u5F52\u5E76\u7EBF\u7A0B\uFF09\u3002text \u4E0E html \u81F3\u5C11\u63D0\u4F9B\u4E00\u4E2A\uFF1B\u9644\u4EF6\u4EE5 base64 \u5185\u8054\u4F20\u9012\u3002",inputSchema:{type:"object",properties:{mailId:{type:"string",description:"\u88AB\u56DE\u590D\u90AE\u4EF6\u7684\u7A33\u5B9A\u6807\u8BC6\uFF0C\u683C\u5F0F folder:uid\uFF08\u5982 INBOX:42\uFF09\uFF0C\u6765\u81EA list_emails"},text:{type:"string",description:"\u7EAF\u6587\u672C\u6B63\u6587\uFF08\u4E0E html \u81F3\u5C11\u63D0\u4F9B\u4E00\u4E2A\uFF09"},html:{type:"string",description:"HTML \u6B63\u6587\uFF08\u4E0E text \u81F3\u5C11\u63D0\u4F9B\u4E00\u4E2A\uFF09"},attachments:{type:"array",description:"\u9644\u4EF6\u5217\u8868\uFF08\u53EF\u9009\uFF0C\u5185\u5BB9\u4EE5 base64 \u5185\u8054\u4F20\u9012\uFF09",items:{type:"object",properties:{filename:{type:"string",description:"\u9644\u4EF6\u6587\u4EF6\u540D\uFF08\u542B\u6269\u5C55\u540D\uFF09"},contentBase64:{type:"string",description:"\u9644\u4EF6\u5185\u5BB9\u7684 Base64 \u7F16\u7801"},contentType:{type:"string",description:"MIME \u7C7B\u578B\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 application/octet-stream\uFF09"}},required:["filename","contentBase64"]}}},required:["mailId"]}},We={name:"ack_email",description:"\u786E\u8BA4\u4E00\u5C01\u90AE\u4EF6\u5DF2\u7ECF\u5B8C\u6210\u4E1A\u52A1\u6D88\u8D39\uFF08\u5199\u5165 consumed_at\u3001\u5C06\u8BE5\u90AE\u4EF6\u7684 mail_received \u6307\u9488\u901A\u77E5\u6807\u5DF2\u8BFB\uFF0C\u5E76\u8BBE\u7F6E IMAP Seen\uFF09\u3002read_email \u6210\u529F\u8BFB\u53D6\u3001reply_email \u6210\u529F\u56DE\u4FE1\u540E\u4F1A\u81EA\u52A8\u786E\u8BA4\uFF1B\u4EC5\u5728\u672A\u8BFB\u6B63\u6587\u3001\u672A\u56DE\u4FE1\u4F46\u5DF2\u7ECF\u5B8C\u6210\u5904\u7406\u65F6\u663E\u5F0F\u8C03\u7528\u3002",inputSchema:{type:"object",properties:{mailId:{type:"string",description:"\u90AE\u4EF6\u7A33\u5B9A\u6807\u8BC6\uFF0C\u683C\u5F0F folder:uid\uFF08\u5982 INBOX:42\uFF09\uFF0C\u6765\u81EA\u901A\u77E5\u6216 list_emails"}},required:["mailId"]}},it=new Set(["send_email","list_emails","read_email","reply_email","ack_email"]),rt=[_,u,g,y,f,h,b,I,x,O,E,T,S,A,L,w,C,i,p,d,r,s,o,n,a,c,l,m,N,v,P,R,M,D,k,j,q,F,G,U,B,H,W,V,Y,z,K,J,X,$,Q,Z,ee,te,ie,se,oe,pe,re,ne,de,ae,ce,le,me,_e,ue,ge,ye,fe,Oe,Ie,xe,he,be,Ee,Te,Se,Ae,Le,we,Ce,Ne,ve,Pe,Re,Me,De,ke,je,qe,Fe,Ge,Ue,Be,He,We];export{ut as ABANDON_MEMORY_UPDATE_TOOL,We as ACK_EMAIL_TOOL,B as CREATE_MEETING_TOOL,pt as CREATE_MEMORY_TOOL,A as CREATE_TASK_INSTANCE_COMMENT_TOOL,$e as DEBUG_LOG_TOOL_NAMES,st as DELETE_MEMORY_TOOL,me as DRAW_CLOSE_DOCUMENT_TOOL,ge as DRAW_CREATE_CELLS_TOOL,ae as DRAW_CREATE_DOCUMENT_TOOL,fe as DRAW_DELETE_CELLS_TOOL,he as DRAW_DELETE_DOCUMENT_TOOL,Ee as DRAW_EXPORT_DOCUMENT_TOOL,Oe as DRAW_EXPORT_IMAGE_TOOL,ue as DRAW_GET_CHANGES_TOOL,_e as DRAW_GET_DIAGRAM_TOOL,ce as DRAW_LIST_DOCUMENTS_TOOL,le as DRAW_OPEN_DOCUMENT_TOOL,be as DRAW_RENAME_DOCUMENT_TOOL,xe as DRAW_REVOKE_SHARE_TOOL,Ie as DRAW_SHARE_DOCUMENT_TOOL,et as DRAW_TOOL_NAMES,ye as DRAW_UPDATE_CELLS_TOOL,it as EMAIL_TOOL_NAMES,W as END_MEETING_TOOL,Qe as FILE_CHANGES_HISTORY_TOOL_NAMES,C as FINISH_TASK_ROLLBACK_TOOL,_ as GET_COLLEAGUE_TOOL,N as GET_DEBUG_LOG_CONFIG_TOOL,O as GET_DM_HISTORY_TOOL,E as GET_GROUP_HISTORY_TOOL,u as GET_GROUP_ROOMS_TOOL,Y as GET_MEETING_INFO_TOOL,dt as GET_MEMORY_STATS_TOOL,x as GET_MESSAGE_TOOL,y as GET_PROFILE_TOOL,f as HIRE_COLLEAGUE_TOOL,Ke as HIRE_TOOL_NAMES,M as LAUNCH_CONFIG_CREATE_TOOL,k as LAUNCH_CONFIG_DELETE_TOOL,R as LAUNCH_CONFIG_LIST_TOOL,G as LAUNCH_CONFIG_LOGS_TOOL,q as LAUNCH_CONFIG_RESTART_TOOL,j as LAUNCH_CONFIG_START_TOOL,U as LAUNCH_CONFIG_STATUS_TOOL,F as LAUNCH_CONFIG_STOP_TOOL,ze as LAUNCH_CONFIG_TOOL_NAMES,D as LAUNCH_CONFIG_UPDATE_TOOL,H as LEAVE_MEETING_TOOL,Ue as LIST_EMAILS_TOOL,_t as LIST_MEMORIES_BY_FILE_TOOL,at as LIST_MEMORIES_TOOL,g as LIST_PROJECT_MEMBERS_TOOL,S as LIST_TASK_NODE_ITERATIONS_TOOL,rt as MCP_TOOLS,V as MEETING_SPEAK_TOOL,Je as MEETING_TOOL_NAMES,yt as MEMORY_RECURRENCE_COMPLETE_TOOL,gt as MEMORY_RECURRENCE_TOOL,Ye as MEMORY_TOOL_NAMES,z as MY_MEETINGS_TOOL,T as MY_TASK_TOOL,Ne as OFFICE_APPLY_PROFILE_TOOL,Re as OFFICE_CLOSE_DOCUMENT_TOOL,Te as OFFICE_CREATE_TOOL,ke as OFFICE_DELETE_DOCUMENT_TOOL,Ae as OFFICE_EDIT_TOOL,Ce as OFFICE_FORMAT_TOOL,ve as OFFICE_GENERATE_FROM_TEMPLATE_TOOL,Fe as OFFICE_GET_CHANGES_TOOL,De as OFFICE_LIST_DOCUMENTS_TOOL,Me as OFFICE_LIST_OPEN_TOOL,Pe as OFFICE_OPEN_DOCUMENT_TOOL,we as OFFICE_PREVIEW_TOOL,je as OFFICE_SHARE_DOCUMENT_TOOL,tt as OFFICE_TOOL_NAMES,qe as OFFICE_UNSHARE_DOCUMENT_TOOL,Le as OFFICE_VALIDATE_TOOL,Se as OFFICE_VIEW_TOOL,$ as PENCIL_CLOSE_DOCUMENT_TOOL,K as PENCIL_CREATE_DOCUMENT_TOOL,ee as PENCIL_CREATE_NODES_TOOL,re as PENCIL_DELETE_DOCUMENT_TOOL,ie as PENCIL_DELETE_NODES_TOOL,de as PENCIL_EXPORT_DOCUMENT_TOOL,se as PENCIL_EXPORT_IMAGE_TOOL,Z as PENCIL_GET_CHANGES_TOOL,Q as PENCIL_GET_TREE_TOOL,J as PENCIL_LIST_DOCUMENTS_TOOL,X as PENCIL_OPEN_DOCUMENT_TOOL,ne as PENCIL_RENAME_DOCUMENT_TOOL,pe as PENCIL_REVOKE_SHARE_TOOL,oe as PENCIL_SHARE_DOCUMENT_TOOL,Ze as PENCIL_TOOL_NAMES,te as PENCIL_UPDATE_NODES_TOOL,I as POLL_MESSAGE_TOOL,v as QUERY_DEBUG_LOGS_TOOL,P as QUERY_FILE_CHANGES_HISTORY_TOOL,Be as READ_EMAIL_TOOL,ct as READ_MEMORY_TOOL,He as REPLY_EMAIL_TOOL,lt as SEARCH_MEMORY_TOOL,Ge as SEND_EMAIL_TOOL,h as SEND_GROUP_TOOL,b as SEND_PRIVATE_TOOL,w as START_TASK_ROLLBACK_TOOL,L as SUBMIT_TASK_RESULT_TOOL,Xe as TASK_TOOL_NAMES,mt as UPDATE_MEMORY_TOOL};
234
234
 
@@ -1,3 +1,3 @@
1
- import{DEBUG_LOG_TOOL_NAMES as n,DRAW_TOOL_NAMES as s,EMAIL_TOOL_NAMES as u,FILE_CHANGES_HISTORY_TOOL_NAMES as i,HIRE_TOOL_NAMES as d,LAUNCH_CONFIG_TOOL_NAMES as f,MEETING_TOOL_NAMES as p,OFFICE_TOOL_NAMES as c,PENCIL_TOOL_NAMES as m,TASK_TOOL_NAMES as y}from"./mcp-tools.js";const b=new Set(["disabled","collapsed","expanded"]);function T(e){if(e===!0)return"expanded";if(e===!1)return"disabled";if(typeof e=="string"&&b.has(e))return e}const a=[{key:"launch",label:"\u542F\u52A8\u9879\u7BA1\u7406",featureKey:"agentSys.launchItem",toolNames:f,collapsible:!0,defaultState:"collapsed",summary:"\u7BA1\u7406\u9879\u76EE\u4E2D\u4E1A\u52A1\u7A0B\u5E8F\u7684\u8D77\u505C\uFF0C\u82E5\u540E\u9762\u9700\u8981\u542F\u52A8\u9879\u76EE\u5E94\u4F7F\u7528\u6B64\u5DE5\u5177"},{key:"hire",label:"\u62DB\u8058\u5DE5\u5177",featureKey:"agentSys.hire",toolNames:d,collapsible:!0,defaultState:"collapsed",summary:"\u62DB\u8058\u65B0\u7684\u540C\u4E8B Agent\uFF08\u5355\u4E2A\u6216\u6279\u91CF\uFF09"},{key:"pencil",label:"\u8BBE\u8BA1\u753B\u5E03(pencil)",featureKey:"pencil",toolNames:m,collapsible:!0,defaultState:"collapsed",summary:"UI design editor. Open-source Figma alternative."},{key:"draw",label:"\u7ED8\u56FE",featureKey:"draw",toolNames:s,collapsible:!0,defaultState:"collapsed",summary:"\u7ED8\u5236 draw.io \u6D41\u7A0B\u56FE / \u6CF3\u9053\u56FE\uFF0C\u5BFC\u51FA XML"},{key:"office",label:"Office \u6587\u4EF6",featureKey:"office",toolNames:c,collapsible:!0,defaultState:"collapsed",summary:"\u521B\u5EFA\u4E0E\u7F16\u8F91 Word/Excel/PowerPoint\uFF08docx/xlsx/pptx\uFF0CApache POI \u683C\u5F0F\u5C42\uFF09\uFF1AWord \u652F\u6301 run/\u5355\u5143\u683C\u7EA7\u7CBE\u51C6\u7F16\u8F91\u3001\u6279\u6CE8\u3001\u4FEE\u8BA2\u3001\u516C\u5F0F\u3001\u76EE\u5F55\u9875\u7801\u3001\u4E09\u7EBF\u8868\u3001\u6807\u9898\u7F16\u53F7\u4E0E\u683C\u5F0F\u89C4\u8303\u68C0\u67E5/\u4E00\u952E\u4FEE\u6B63\uFF1B\u6821\u9A8C\u3001\u751F\u6210 HTML \u9884\u89C8\u3001\u5728 Dashboard \u9762\u677F\u4E2D\u5B9E\u65F6\u67E5\u770B\uFF0C\u53EF\u53D1\u6D88\u606F\u5361\u7247\u5206\u4EAB\u6587\u4EF6\uFF1B\u6587\u6863\u81EA\u52A8\u767B\u8BB0\u4E3A\u4E91\u6587\u6863\uFF0C\u652F\u6301\u5217\u51FA/\u5206\u4EAB\u7ED9\u5176\u4ED6 Agent \u534F\u4F5C\uFF08read|write\uFF09\u4E0E\u8FFD\u8D76\u53D8\u66F4"},{key:"task",label:"\u6D41\u7A0B\u4EFB\u52A1",featureKey:"collaboration.task",toolNames:y,collapsible:!0,defaultState:"collapsed",summary:"\u5904\u7406\u6D41\u7A0B\u7EBF\u4EFB\u52A1\uFF1A\u67E5\u770B\u5F53\u524D\u4EFB\u52A1\u3001\u63D0\u4EA4\u6267\u884C\u7ED3\u679C\u3001\u56DE\u9000\u4EFB\u52A1\u3001\u7ED9\u6D41\u7A0B\u5B9E\u4F8B\u7559\u8A00"},{key:"meeting",label:"\u4F1A\u8BAE",featureKey:"collaboration.meeting",toolNames:p,collapsible:!0,defaultState:"collapsed",summary:"\u521B\u5EFA/\u52A0\u5165\u4F1A\u8BAE\u3001\u53D1\u8A00\u3001\u67E5\u770B\u4F1A\u8BAE\u4FE1\u606F\u3001\u79BB\u5F00/\u7ED3\u675F\u4F1A\u8BAE"},{key:"debug",label:"\u8C03\u8BD5\u65E5\u5FD7",featureKey:"collaboration.debug",toolNames:n,collapsible:!0,defaultState:"collapsed",summary:"\u6309\u6761\u4EF6\u5206\u9875\u67E5\u8BE2 Debug \u65E5\u5FD7\u4E0E\u83B7\u53D6\u65E5\u5FD7\u4E0A\u62A5\u914D\u7F6E"},{key:"fileHistory",label:"\u6587\u4EF6\u53D8\u66F4\u5386\u53F2",featureKey:"collaboration.fileHistory",toolNames:i,collapsible:!0,defaultState:"collapsed",summary:"\u6309\u89D2\u8272/\u5B9E\u4F8B/\u6587\u4EF6\u8DEF\u5F84\u8FC7\u6EE4\u67E5\u8BE2\u6587\u4EF6\u53D8\u66F4\u5386\u53F2"},{key:"email",label:"\u90AE\u7BB1",featureKey:"email",toolNames:u,collapsible:!0,defaultState:"collapsed",summary:"\u6536\u53D1\u89D2\u8272\u5B9E\u4F8B\u57DF\u540D\u90AE\u7BB1\uFF08xxxxx@\u57DF\u540D\uFF09\uFF1A\u53D1\u4FE1\u3001\u5217\u90AE\u4EF6\u3001\u8BFB\u6B63\u6587\u4E0E\u9644\u4EF6\u3001\u56DE\u4FE1\u4FDD\u6301\u7EBF\u7A0B"}],_=new Map(a.map(e=>[e.key,e])),O=(()=>{const e=new Map;for(const t of a)for(const l of t.toolNames)e.set(l,t);return e})();function x(e){return _.get(e)}const r=[{key:"browser",label:"\u6D4F\u89C8\u5668\u64CD\u4F5C",featureKey:"browser",defaultState:"collapsed",summary:"\u542F\u52A8\u6D4F\u89C8\u5668\u4F1A\u8BDD\u3001\u5BFC\u822A\u3001\u622A\u56FE\u4E0E\u9875\u9762\u4EA4\u4E92"},{key:"desktop",label:"\u684C\u9762\u64CD\u4F5C",featureKey:"desktop",defaultState:"disabled",summary:"\u622A\u5C4F\u3001\u9F20\u6807\u952E\u76D8\u63A7\u5236\u4E0E UI \u81EA\u52A8\u5316\uFF08Computer Use\uFF09"}];function E(e){return r.find(t=>t.key===e)}function A(e){return O.get(e)}function L(e){const t=a.find(o=>o.featureKey===e);return t?t.defaultState:r.find(o=>o.featureKey===e)?.defaultState}function k(e){return r.find(t=>e.startsWith(`${t.key}_`))}function M(){return a.filter(e=>e.collapsible).map(e=>e.key)}const S="ACODE_TOOL_GROUPS_V1:";function I(){const e=a.filter(t=>t.collapsible).map(t=>({key:t.key,label:t.label,toolNames:[...t.toolNames]}));return`${S}${JSON.stringify({groups:e})}`}function K(e,t,l){return e.featureKey&&t==="disabled"?"disabled":e.collapsible&&t==="collapsed"&&!l?"collapsed":"expanded"}function g(e){return e.length===0?void 0:["## \u6309\u9700\u5DE5\u5177\u96C6","","\u4EE5\u4E0B\u5DE5\u5177\u96C6\u9ED8\u8BA4\u6536\u8D77\u4EE5\u4FDD\u6301\u5DE5\u5177\u5217\u8868\u7A33\u5B9A\u5E76\u8282\u7701\u4E0A\u4E0B\u6587\u3002\u5F53\u4EFB\u52A1\u9700\u8981\u65F6\uFF0C\u5148\u8C03\u7528 expand_tools \u5C55\u5F00\uFF0C","\u5DE5\u5177\u5B9A\u4E49\uFF08\u540D\u79F0/\u8BF4\u660E/\u53C2\u6570 schema\uFF09\u968F expand_tools \u7684\u8FD4\u56DE\u7ED3\u679C\u4E0B\u53D1\uFF0C\u5F53\u8F6E\u5373\u53EF\u7ECF call_tool \u8C03\u7528\uFF1A",'call_tool({ name: "<\u5DE5\u5177\u540D>", arguments: {...} })',"",...e.map(l=>`- ${l.key}\uFF08${l.label}\uFF09\uFF1A${l.summary}`),"",'\u793A\u4F8B\uFF1Aexpand_tools({ group: "pencil" })'].join(`
1
+ import{DEBUG_LOG_TOOL_NAMES as n,DRAW_TOOL_NAMES as s,EMAIL_TOOL_NAMES as u,FILE_CHANGES_HISTORY_TOOL_NAMES as i,HIRE_TOOL_NAMES as d,LAUNCH_CONFIG_TOOL_NAMES as f,MEETING_TOOL_NAMES as p,OFFICE_TOOL_NAMES as c,PENCIL_TOOL_NAMES as m,TASK_TOOL_NAMES as y}from"./mcp-tools.js";const b=new Set(["disabled","collapsed","expanded"]);function T(e){if(e===!0)return"expanded";if(e===!1)return"disabled";if(typeof e=="string"&&b.has(e))return e}const a=[{key:"launch",label:"\u542F\u52A8\u9879\u7BA1\u7406",featureKey:"agentSys.launchItem",toolNames:f,collapsible:!0,defaultState:"collapsed",summary:"\u7BA1\u7406\u9879\u76EE\u4E2D\u4E1A\u52A1\u7A0B\u5E8F\u7684\u8D77\u505C\uFF0C\u82E5\u540E\u9762\u9700\u8981\u542F\u52A8\u9879\u76EE\u5E94\u4F7F\u7528\u6B64\u5DE5\u5177"},{key:"hire",label:"\u62DB\u8058\u5DE5\u5177",featureKey:"agentSys.hire",toolNames:d,collapsible:!0,defaultState:"collapsed",summary:"\u62DB\u8058\u65B0\u7684\u540C\u4E8B Agent\uFF08\u5355\u4E2A\u6216\u6279\u91CF\uFF09"},{key:"pencil",label:"\u8BBE\u8BA1\u753B\u5E03(pencil)",featureKey:"pencil",toolNames:m,collapsible:!0,defaultState:"collapsed",summary:"UI design editor. Open-source Figma alternative."},{key:"draw",label:"\u7ED8\u56FE",featureKey:"draw",toolNames:s,collapsible:!0,defaultState:"collapsed",summary:"\u7ED8\u5236 draw.io \u6D41\u7A0B\u56FE / \u6CF3\u9053\u56FE\uFF0C\u5BFC\u51FA XML"},{key:"office",label:"Office \u6587\u4EF6",featureKey:"office",toolNames:c,collapsible:!0,defaultState:"collapsed",summary:"\u521B\u5EFA\u4E0E\u7F16\u8F91 Word/Excel/PowerPoint\uFF08docx/xlsx/pptx\uFF0CApache POI \u683C\u5F0F\u5C42\uFF09\uFF1AWord \u652F\u6301 run/\u5355\u5143\u683C\u7EA7\u7CBE\u51C6\u7F16\u8F91\u3001\u6279\u6CE8\u3001\u4FEE\u8BA2\u3001\u516C\u5F0F\u3001\u76EE\u5F55\u9875\u7801\u3001\u4E09\u7EBF\u8868\u3001\u6807\u9898\u7F16\u53F7\u4E0E\u683C\u5F0F\u89C4\u8303\u68C0\u67E5/\u4E00\u952E\u4FEE\u6B63\uFF1B\u6821\u9A8C\u3001\u751F\u6210 HTML \u9884\u89C8\u3001\u5728 Dashboard \u9762\u677F\u4E2D\u5B9E\u65F6\u67E5\u770B\uFF0C\u53EF\u53D1\u6D88\u606F\u5361\u7247\u5206\u4EAB\u6587\u4EF6\uFF1B\u6587\u6863\u81EA\u52A8\u767B\u8BB0\u4E3A\u4E91\u6587\u6863\uFF0C\u652F\u6301\u5217\u51FA/\u5206\u4EAB\u7ED9\u5176\u4ED6 Agent \u534F\u4F5C\uFF08read|write\uFF09\u4E0E\u8FFD\u8D76\u53D8\u66F4"},{key:"task",label:"\u6D41\u7A0B\u4EFB\u52A1",featureKey:"collaboration.task",toolNames:y,collapsible:!0,defaultState:"collapsed",summary:"\u5904\u7406\u6D41\u7A0B\u7EBF\u4EFB\u52A1\uFF1A\u67E5\u770B\u5F53\u524D\u4EFB\u52A1\u3001\u63D0\u4EA4\u6267\u884C\u7ED3\u679C\u3001\u56DE\u9000\u4EFB\u52A1\u3001\u7ED9\u6D41\u7A0B\u5B9E\u4F8B\u7559\u8A00"},{key:"meeting",label:"\u4F1A\u8BAE",featureKey:"collaboration.meeting",toolNames:p,collapsible:!0,defaultState:"collapsed",summary:"\u521B\u5EFA/\u52A0\u5165\u4F1A\u8BAE\u3001\u53D1\u8A00\u3001\u67E5\u770B\u4F1A\u8BAE\u4FE1\u606F\u3001\u79BB\u5F00/\u7ED3\u675F\u4F1A\u8BAE"},{key:"debug",label:"\u8C03\u8BD5\u65E5\u5FD7",featureKey:"collaboration.debug",toolNames:n,collapsible:!0,defaultState:"collapsed",summary:"\u6309\u6761\u4EF6\u5206\u9875\u67E5\u8BE2 Debug \u65E5\u5FD7\u4E0E\u83B7\u53D6\u65E5\u5FD7\u4E0A\u62A5\u914D\u7F6E"},{key:"fileHistory",label:"\u6587\u4EF6\u53D8\u66F4\u5386\u53F2",featureKey:"collaboration.fileHistory",toolNames:i,collapsible:!0,defaultState:"collapsed",summary:"\u6309\u89D2\u8272/\u5B9E\u4F8B/\u6587\u4EF6\u8DEF\u5F84\u8FC7\u6EE4\u67E5\u8BE2\u6587\u4EF6\u53D8\u66F4\u5386\u53F2"},{key:"email",label:"\u90AE\u7BB1",featureKey:"email",toolNames:u,collapsible:!0,defaultState:"collapsed",summary:"\u6536\u53D1\u89D2\u8272\u5B9E\u4F8B\u57DF\u540D\u90AE\u7BB1\uFF08xxxxx@\u57DF\u540D\uFF09\uFF1A\u53D1\u4FE1\u3001\u5217\u90AE\u4EF6\u3001\u8BFB\u6B63\u6587\u4E0E\u9644\u4EF6\u3001\u56DE\u4FE1\u4FDD\u6301\u7EBF\u7A0B\u3001\u786E\u8BA4\u4E1A\u52A1\u6D88\u8D39"}],_=new Map(a.map(e=>[e.key,e])),O=(()=>{const e=new Map;for(const t of a)for(const l of t.toolNames)e.set(l,t);return e})();function x(e){return _.get(e)}const r=[{key:"browser",label:"\u6D4F\u89C8\u5668\u64CD\u4F5C",featureKey:"browser",defaultState:"collapsed",summary:"\u542F\u52A8\u6D4F\u89C8\u5668\u4F1A\u8BDD\u3001\u5BFC\u822A\u3001\u622A\u56FE\u4E0E\u9875\u9762\u4EA4\u4E92"},{key:"desktop",label:"\u684C\u9762\u64CD\u4F5C",featureKey:"desktop",defaultState:"disabled",summary:"\u622A\u5C4F\u3001\u9F20\u6807\u952E\u76D8\u63A7\u5236\u4E0E UI \u81EA\u52A8\u5316\uFF08Computer Use\uFF09"}];function E(e){return r.find(t=>t.key===e)}function A(e){return O.get(e)}function L(e){const t=a.find(o=>o.featureKey===e);return t?t.defaultState:r.find(o=>o.featureKey===e)?.defaultState}function k(e){return r.find(t=>e.startsWith(`${t.key}_`))}function M(){return a.filter(e=>e.collapsible).map(e=>e.key)}const S="ACODE_TOOL_GROUPS_V1:";function I(){const e=a.filter(t=>t.collapsible).map(t=>({key:t.key,label:t.label,toolNames:[...t.toolNames]}));return`${S}${JSON.stringify({groups:e})}`}function K(e,t,l){return e.featureKey&&t==="disabled"?"disabled":e.collapsible&&t==="collapsed"&&!l?"collapsed":"expanded"}function g(e){return e.length===0?void 0:["## \u6309\u9700\u5DE5\u5177\u96C6","","\u4EE5\u4E0B\u5DE5\u5177\u96C6\u9ED8\u8BA4\u6536\u8D77\u4EE5\u4FDD\u6301\u5DE5\u5177\u5217\u8868\u7A33\u5B9A\u5E76\u8282\u7701\u4E0A\u4E0B\u6587\u3002\u5F53\u4EFB\u52A1\u9700\u8981\u65F6\uFF0C\u5148\u8C03\u7528 expand_tools \u5C55\u5F00\uFF0C","\u5DE5\u5177\u5B9A\u4E49\uFF08\u540D\u79F0/\u8BF4\u660E/\u53C2\u6570 schema\uFF09\u968F expand_tools \u7684\u8FD4\u56DE\u7ED3\u679C\u4E0B\u53D1\uFF0C\u5F53\u8F6E\u5373\u53EF\u7ECF call_tool \u8C03\u7528\uFF1A",'call_tool({ name: "<\u5DE5\u5177\u540D>", arguments: {...} })',"",...e.map(l=>`- ${l.key}\uFF08${l.label}\uFF09\uFF1A${l.summary}`),"",'\u793A\u4F8B\uFF1Aexpand_tools({ group: "pencil" })'].join(`
2
2
  `)}export{r as BRIDGE_LAZY_CAPABILITIES,a as TOOL_GROUPS,S as TOOL_GROUP_MANIFEST_PREFIX,I as buildToolGroupManifest,g as buildToolGroupPrompt,M as collapsibleToolGroupKeys,L as defaultStateForFeatureKey,k as findBridgeCapabilityByToolName,E as findBridgeLazyCapability,x as findToolGroup,A as findToolGroupByToolName,T as normalizeFeatureState,K as resolveToolGroupState};
3
3
 
@@ -185,6 +185,8 @@ export interface ProjectHumanMember {
185
185
 
186
186
  online: boolean;
187
187
  avatarUrl?: string;
188
+
189
+ mailboxAddress?: string;
188
190
  }
189
191
  export interface ProjectMembersResponse {
190
192
  projectId: string | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aws-runtime-bridge",
3
- "version": "1.9.168",
3
+ "version": "1.9.169",
4
4
  "description": "AgentsWorkStudio runtime bridge service for machine-level agent runtime integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",