aws-runtime-bridge 1.9.151 → 1.9.162
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 +560 -0
- package/dist/adapter/AcodeSdkAdapter.d.ts +51 -1
- package/dist/adapter/AcodeSdkAdapter.js +6 -5
- package/dist/adapter/prompts.d.ts +1 -1
- package/dist/adapter/prompts.js +1 -1
- package/dist/desktop/built-in-desktop-tools.js +1 -1
- package/dist/routes/acode-todos.js +1 -1
- package/dist/routes/ltr.js +1 -1
- package/dist/routes/sessions.d.ts +31 -0
- package/dist/routes/sessions.js +1 -1
- package/dist/routes/terminal.d.ts +8 -0
- package/dist/routes/terminal.js +25 -25
- package/dist/services/instance-features.d.ts +25 -1
- package/dist/services/instance-features.js +1 -1
- package/dist/services/workspace-files.js +1 -1
- package/dist/services/workspace-watch.js +1 -1
- package/dist/utils/file-utils.d.ts +2 -0
- package/dist/utils/file-utils.js +2 -2
- package/package/acode/dist/ask-user-question-tool.js +1 -1
- package/package/acode/dist/await-complete-tool.js +1 -1
- package/package/acode/dist/background-command-manager.js +1 -1
- package/package/acode/dist/background-command-tools.js +1 -1
- package/package/acode/dist/built-in-file-tools.d.ts +18 -2
- package/package/acode/dist/built-in-file-tools.js +2 -2
- package/package/acode/dist/built-in-symbols-tool.js +1 -1
- package/package/acode/dist/context-overflow.d.ts +19 -0
- package/package/acode/dist/context-overflow.js +2 -0
- package/package/acode/dist/grammars/grammars/tree-sitter-lua.wasm +0 -0
- package/package/acode/dist/index.d.ts +3 -1
- package/package/acode/dist/index.js +1 -1
- package/package/acode/dist/parsers/ast-cache.d.ts +12 -1
- package/package/acode/dist/parsers/ast-cache.js +1 -1
- package/package/acode/dist/parsers/language-queries.js +1 -1
- package/package/acode/dist/parsers/symbol-extractor.js +2 -2
- package/package/acode/dist/parsers/tree-sitter-loader.d.ts +1 -1
- package/package/acode/dist/parsers/tree-sitter-loader.js +1 -1
- package/package/acode/dist/plugin-types.d.ts +5 -0
- package/package/acode/dist/plugin-types.js +1 -0
- package/package/acode/dist/read-file-state.d.ts +48 -0
- package/package/acode/dist/read-file-state.js +2 -0
- package/package/acode/dist/runtime.d.ts +63 -3
- package/package/acode/dist/runtime.js +30 -26
- package/package/acode/dist/skill-tool.js +3 -3
- package/package/acode/dist/sub-agent-manager.js +1 -1
- package/package/acode/dist/sub-agent-tools.js +5 -5
- package/package/acode/dist/todo-tool.js +3 -3
- package/package/acode/dist/tool-concurrency/index.d.ts +5 -0
- package/package/acode/dist/tool-concurrency/index.js +2 -0
- package/package/acode/dist/tool-concurrency/observability.d.ts +46 -0
- package/package/acode/dist/tool-concurrency/observability.js +3 -0
- package/package/acode/dist/tool-concurrency/resource-lock.d.ts +25 -0
- package/package/acode/dist/tool-concurrency/resource-lock.js +2 -0
- package/package/acode/dist/tool-concurrency/scheduler.d.ts +30 -0
- package/package/acode/dist/tool-concurrency/scheduler.js +2 -0
- package/package/acode/dist/tool-concurrency/types.d.ts +80 -0
- package/package/acode/dist/tool-concurrency/types.js +2 -0
- package/package/acode/dist/tool-group-manager.d.ts +116 -0
- package/package/acode/dist/tool-group-manager.js +14 -0
- package/package/acode/dist/types.d.ts +14 -1
- package/package/acode/package.json +2 -2
- package/package/aws-client-agent-mcp/dist/agent-client.d.ts +4 -4
- package/package/aws-client-agent-mcp/dist/agent-client.js +1 -1
- package/package/aws-client-agent-mcp/dist/http-client.d.ts +1 -1
- package/package/aws-client-agent-mcp/dist/http-client.js +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +62 -17
- package/package/aws-client-agent-mcp/dist/mcp-server.js +29 -29
- package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +46 -0
- package/package/aws-client-agent-mcp/dist/mcp-tools.js +149 -7
- package/package/aws-client-agent-mcp/dist/office/office-equation.d.ts +5 -0
- package/package/aws-client-agent-mcp/dist/office/office-equation.js +2 -0
- package/package/aws-client-agent-mcp/dist/office/office-image.d.ts +12 -0
- package/package/aws-client-agent-mcp/dist/office/office-image.js +2 -0
- package/package/aws-client-agent-mcp/dist/office/office-workspace.d.ts +25 -0
- package/package/aws-client-agent-mcp/dist/office/office-workspace.js +2 -0
- package/package/aws-client-agent-mcp/dist/tool-groups.d.ts +57 -0
- package/package/aws-client-agent-mcp/dist/tool-groups.js +3 -0
- package/package/aws-client-agent-mcp/dist/types.d.ts +27 -0
- package/package/aws-client-agent-mcp/package.json +2 -1
- package/package.json +1 -1
- package/package/acode/dist/plugin-tools.d.ts +0 -14
- package/package/acode/dist/plugin-tools.js +0 -9
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import S from"temml";const O="http://schemas.openxmlformats.org/officeDocument/2006/math",b=new Set(["\u2211","\u220F","\u2210","\u222B","\u222C","\u222D","\u222E","\u222F","\u22C3","\u22C2","\u2A04","\u2A01","\u2A02","\u2A00"]),T=new Set(["lim","max","min","sup","inf","det","dim","gcd","lcm","lg","ln","log"]),L=new Set(["\u02C6","~","\u203E","\u2192","\u2190","\u2194","\u02D9","\xA8","\u02D8","\u02C7","`","\xB4","\u23DE","\u23DF","\u20D7"]);function C(r){let e=0;const t={tag:"#root",attrs:{},children:[],text:""},m=[t];for(;e<r.length;){const n=r.indexOf("<",e);if(n<0){w(m[m.length-1],r.slice(e));break}n>e&&w(m[m.length-1],r.slice(e,n));const c=r.indexOf(">",n);if(c<0)break;const i=r.slice(n+1,c).trim();if(i.startsWith("?")||i.startsWith("!")){e=c+1;continue}if(i.startsWith("/")){const P=i.slice(1).trim();m.length>1&&m[m.length-1].tag===P&&m.pop(),e=c+1;continue}const o=i.endsWith("/"),u=o?i.slice(0,-1).trim():i,a=u.search(/\s/),h=a<0?u:u.slice(0,a),v=a<0?"":u.slice(a+1),$={tag:h,attrs:E(v),children:[],text:""};m[m.length-1].children.push($),o||m.push($),e=c+1}return t}function w(r,e){e&&(r.text+=e)}function E(r){const e={},t=/([\w:.-]+)\s*=\s*"([^"]*)"|([\w:.-]+)\s*=\s*'([^']*)'/g;let m;for(;(m=t.exec(r))!==null;)m[1]?e[m[1]]=m[2]??"":m[3]&&(e[m[3]]=m[4]??"");return e}function l(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function f(r){let e=r.text;for(const t of r.children)e+=f(t);return e}function d(r){return r.children.filter(e=>e.tag!=="mspace"&&!(e.tag==="#text"&&!e.text.trim()))}function s(r){switch(r.tag){case"math":case"mrow":case"semantics":return p(r);case"annotation":case"annotation-xml":return"";case"mi":case"mn":case"mo":case"mtext":{const e=f(r);return e?x(e,r.tag==="mi"&&/^[A-Za-z]$/.test(e)?"i":"p"):""}case"msup":return g(r,"sup");case"msub":return g(r,"sub");case"msubsup":return g(r,"subsup");case"mfrac":{const e=d(r),t=e[0]?s(e[0]):"",m=e[1]?s(e[1]):"";return`<m:f><m:fPr/><m:num>${t}</m:num><m:den>${m}</m:den></m:f>`}case"msqrt":return`<m:rad><m:radPr><m:degHide m:val="1"/></m:radPr><m:deg/><m:e>${p(r)}</m:e></m:rad>`;case"mroot":{const e=d(r),t=e[0]?s(e[0]):"";return`<m:rad><m:radPr/><m:deg>${e[1]?s(e[1]):""}</m:deg><m:e>${t}</m:e></m:rad>`}case"mover":case"munder":case"munderover":return X(r);case"mtable":return`<m:m>${M(r)}</m:m>`;case"mfenced":{const e=r.attrs.open??"(",t=r.attrs.close??")",m=p(r);return`<m:d><m:dPr><m:begChr m:val="${l(e)}"/><m:endChr m:val="${l(t)}"/></m:dPr><m:e>${m}</m:e></m:d>`}case"mspace":return"";case"mpadded":case"mstyle":case"menclose":return p(r);default:return p(r)}}function p(r){let e="";r.text.trim()&&(e+=x(r.text,"p"));const t=r.children;let m=0;for(;m<t.length;){const n=t[m];if(y(n)){const c=A(t,m+1);if(c>m){const o=f(n).trim(),u=f(t[c]).trim();let a="";for(let h=m+1;h<c;h++)a+=s(t[h]);e+=`<m:d><m:dPr><m:begChr m:val="${l(o)}"/><m:endChr m:val="${l(u)}"/></m:dPr><m:e>${a}</m:e></m:d>`,m=c+1;continue}if(n.attrs.stretchy==="true"&&c<0){const o=f(n).trim();let u="";for(let a=m+1;a<t.length;a++)u+=s(t[a]);e+=`<m:d><m:dPr><m:begChr m:val="${l(o)}"/><m:endChr m:val=""/></m:dPr><m:e>${u}</m:e></m:d>`,m=t.length;continue}}e+=s(n),m++}return e}function y(r){if(r.tag!=="mo")return!1;const e=f(r).trim();return["(","[","{","|","\u2016","\u27E8","\u230A","\u2308"].includes(e)?r.attrs.fence==="true"||r.attrs.stretchy==="true":!1}function A(r,e){let t=0;for(let m=e;m<r.length;m++){const n=r[m];if(y(n)){t++;continue}if(n.tag==="mo"&&n.attrs.fence==="true"&&n.attrs.form==="postfix"){if(t===0)return m;t--}}return-1}function x(r,e="p"){if(!r)return"";const t=r.replace(/\u2061|\u2062|\u2063|\u2064/g,"");return t?`<m:r><m:rPr><m:sty m:val="${e}"/></m:rPr><m:t xml:space="preserve">${l(t)}</m:t></m:r>`:""}function g(r,e){const t=d(r),m=t[0]?s(t[0]):"",n=t[0]?f(t[0]).trim():"";if(b.has(n)){const o=e!=="sup"&&t[1]?s(t[1]):"",u=e==="sup"?t[1]?s(t[1]):"":t[2]?s(t[2]):"";return`<m:nary><m:naryPr><m:chr m:val="${l(n)}"/><m:limLoc m:val="undOvr"/></m:naryPr><m:sub>${o}</m:sub><m:sup>${u}</m:sup><m:e/></m:nary>`}if(e==="sub"&&t[0]?.tag==="mi"&&T.has(n)){const o=t[1]?s(t[1]):"";return`<m:limLow><m:e>${m}</m:e><m:lim>${o}</m:lim></m:limLow>`}if(e==="sup"){const o=t[1]?s(t[1]):"";return`<m:sSup><m:e>${m}</m:e><m:sup>${o}</m:sup></m:sSup>`}if(e==="sub"){const o=t[1]?s(t[1]):"";return`<m:sSub><m:e>${m}</m:e><m:sub>${o}</m:sub></m:sSub>`}const c=t[1]?s(t[1]):"",i=t[2]?s(t[2]):"";return`<m:sSubSup><m:e>${m}</m:e><m:sub>${c}</m:sub><m:sup>${i}</m:sup></m:sSubSup>`}function X(r){const e=d(r),t=e[0],m=r.tag==="munderover"||r.tag==="munder"?e[1]:void 0,n=r.tag==="munderover"?e[2]:r.tag==="mover"?e[1]:void 0,c=t?f(t).trim():"";if(b.has(c)){const o=m?s(m):"",u=n?s(n):"";return`<m:nary><m:naryPr><m:chr m:val="${l(c)}"/><m:limLoc m:val="undOvr"/></m:naryPr><m:sub>${o}</m:sub><m:sup>${u}</m:sup><m:e/></m:nary>`}const i=n?f(n).trim():"";return n&&(L.has(i)||n.attrs.stretchy==="false")?`<m:acc><m:accPr><m:chr m:val="${l(i||"\u0302")}"/></m:accPr><m:e>${t?s(t):""}</m:e></m:acc>`:m&&n?`<m:limLow><m:e><m:limUpp><m:e>${t?s(t):""}</m:e><m:lim>${s(n)}</m:lim></m:limUpp></m:e><m:lim>${s(m)}</m:lim></m:limLow>`:m?`<m:limLow><m:e>${t?s(t):""}</m:e><m:lim>${s(m)}</m:lim></m:limLow>`:n?`<m:limUpp><m:e>${t?s(t):""}</m:e><m:lim>${s(n)}</m:lim></m:limUpp>`:t?s(t):""}function M(r){let e="";for(const t of r.children){if(t.tag!=="mtr")continue;const m=t.children.filter(n=>n.tag==="mtd");if(m.length===0){e+=`<m:mr><m:e>${p(t)}</m:e></m:mr>`;continue}e+="<m:mr>";for(const n of m)e+=`<m:e>${p(n)}</m:e>`;e+="</m:mr>"}return e}function R(r,e=!1){if(!r||!r.trim())throw new Error("\u516C\u5F0F LaTeX \u4E0D\u80FD\u4E3A\u7A7A");let t;try{t=S.renderToString(r,{displayMode:e,throwOnError:!0})}catch(i){throw new Error(`LaTeX \u89E3\u6790\u5931\u8D25: ${i instanceof Error?i.message:String(i)}\uFF08\u516C\u5F0F\uFF1A${r.slice(0,80)}\uFF09`)}const n=C(t).children.find(i=>i.tag==="math");if(!n)throw new Error(`LaTeX \u8F6C\u6362\u7ED3\u679C\u7F3A\u5C11 math \u6839\u5143\u7D20\uFF08\u516C\u5F0F\uFF1A${r.slice(0,80)}\uFF09`);const c=s(n);if(!c.trim())throw new Error(`\u516C\u5F0F\u8F6C\u6362\u7ED3\u679C\u4E3A\u7A7A\uFF08\u516C\u5F0F\uFF1A${r.slice(0,80)}\uFF09`);return`<m:oMath xmlns:m="${O}">${c}</m:oMath>`}function I(r){if(Array.isArray(r))for(const e of r){if(!e||typeof e!="object")continue;const t=e.props;if(!t||typeof t!="object")continue;const m=t.latex;!m||typeof m!="string"||!m.trim()||typeof t.omml=="string"&&t.omml.trim()||(t.omml=R(m,t.displayMode===!0))}}export{R as latexToOmml,I as prepareOfficeEquationCommands};
|
|
2
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
export interface ResolvedImage {
|
|
4
|
+
bytes: Buffer;
|
|
5
|
+
base64: string;
|
|
6
|
+
ext: string;
|
|
7
|
+
name: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export declare function officeResolveImageSource(source: string, workspaceRoot?: string): Promise<ResolvedImage>;
|
|
11
|
+
|
|
12
|
+
export declare function prepareOfficeImageCommands(commands: unknown[], workspaceRoot?: string): Promise<void>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import x from"node:fs";import h from"node:path";import{officeWorkspaceRoot as u}from"./office-workspace.js";const c=8*1024*1024,l=[{magic:[137,80,78,71,13,10,26,10],ext:"png",mime:"image/png"},{magic:[255,216,255],ext:"jpg",mime:"image/jpeg"},{magic:[71,73,70,56,55,97],ext:"gif",mime:"image/gif"},{magic:[71,73,70,56,57,97],ext:"gif",mime:"image/gif"},{magic:[66,77],ext:"bmp",mime:"image/bmp"},{magic:[73,73,42,0],ext:"tif",mime:"image/tiff"},{magic:[77,77,0,42],ext:"tif",mime:"image/tiff"}],M=[82,73,70,70],d=15e3;async function E(t,o){if(!t||typeof t!="string"||!t.trim())throw new Error("\u56FE\u7247 source \u4E0D\u80FD\u4E3A\u7A7A\u3002\u6765\u6E90\uFF1A\u5DE5\u4F5C\u533A\u8DEF\u5F84\u3001http(s) URL\u3001data:image URL");const e=t.trim();if(e.startsWith("data:")){const m=/^data:image\/([a-zA-Z0-9+.-]+)(?:;base64)?,(.+)$/.exec(e);if(!m)throw new Error("data:image URL \u683C\u5F0F\u4E0D\u5408\u6CD5\uFF08\u9700\u8981 data:image/xxx;base64,...\uFF09");const a=m[1]?.toLowerCase().replace("jpeg","jpg")||"png";if(a==="webp"||a==="svg"||a==="ico")throw new Error(`\u4E0D\u652F\u6301\u7684\u56FE\u7247\u683C\u5F0F: ${a}\uFF0C\u4EC5\u652F\u6301 PNG/JPEG/GIF/BMP/TIFF`);const i=m[2]?.trim();if(!i)throw new Error("data:image URL \u5185\u5BB9\u4E3A\u7A7A");const s=Buffer.from(i,"base64");return w(s,a,`image.${a}`)}if(/^https?:\/\//i.test(e)){const m=await $(e);return p(m,e)}const r=o||u(),n=h.resolve(r,e);if(!x.existsSync(n))throw new Error(`\u56FE\u7247\u6587\u4EF6\u4E0D\u5B58\u5728: ${e}\uFF08\u89E3\u6790\u4E3A ${n}\uFF09`);const f=x.statSync(n);if(!f.isFile())throw new Error(`\u4E0D\u662F\u666E\u901A\u6587\u4EF6: ${e}`);if(f.size>c)throw new Error(`\u56FE\u7247\u6587\u4EF6\u8D85\u9650\uFF08\u4E0A\u9650 ${c/1024/1024}MB\uFF09: ${e}`);const g=x.readFileSync(n);return p(g,h.basename(n))}async function $(t){let o;try{o=new URL(t)}catch{throw new Error(`\u65E0\u6548\u7684\u56FE\u7247 URL: ${t}`)}if(o.protocol!=="http:"&&o.protocol!=="https:")throw new Error(`\u4E0D\u652F\u6301\u7684 URL \u534F\u8BAE: ${o.protocol}\uFF08\u4EC5\u652F\u6301 http/https\uFF09`);let e;try{e=await fetch(t,{signal:AbortSignal.timeout(d)})}catch(i){throw new Error(`\u56FE\u7247\u4E0B\u8F7D\u5931\u8D25: ${t}\uFF08${i instanceof Error?i.message:String(i)}\uFF09`)}if(!e.ok)throw new Error(`\u56FE\u7247\u4E0B\u8F7D\u5931\u8D25: ${t}\uFF08HTTP ${e.status}\uFF09`);const r=(e.headers.get("content-type")||"").split(";")[0]?.trim().toLowerCase()||"";if(r&&!r.startsWith("image/"))throw new Error(`URL \u8FD4\u56DE\u7684\u4E0D\u662F\u56FE\u7247\uFF08content-type: ${r}\uFF09: ${t}`);const n=Number(e.headers.get("content-length")||"");if(Number.isFinite(n)&&n>c)throw new Error(`\u56FE\u7247\u592A\u5927: ${t}\uFF08${n} > ${c} \u5B57\u8282\uFF09`);const f=e.body;if(!f){const i=Buffer.from(await e.arrayBuffer());if(i.length>c)throw new Error(`\u56FE\u7247\u592A\u5927: ${t}\uFF08${i.length} > ${c} \u5B57\u8282\uFF09`);return i}const g=f.getReader(),m=[];let a=0;for(;;){const{done:i,value:s}=await g.read();if(i)break;if(s){if(a+=s.byteLength,a>c)throw g.cancel().catch(()=>{}),new Error(`\u56FE\u7247\u592A\u5927: ${t}\uFF08> ${c/1024/1024}MB\uFF09`);m.push(Buffer.from(s))}}return Buffer.concat(m,a)}function p(t,o){if(t.length===0)throw new Error("\u56FE\u7247\u5185\u5BB9\u4E3A\u7A7A");if(t.length>c)throw new Error(`\u56FE\u7247\u8D85\u9650\uFF08\u4E0A\u9650 ${c/1024/1024}MB\uFF09`);const e=B(t);if(!e){const r=t.length>0?`0x${t.slice(0,4).toString("hex").toUpperCase()}`:"";throw new Error(`\u4E0D\u652F\u6301\u7684\u56FE\u7247\u683C\u5F0F\uFF08\u9B54\u6570 ${r}\uFF09\uFF0C\u4EC5\u652F\u6301 PNG/JPEG/GIF/BMP/TIFF`)}return w(t,e,o)}function w(t,o,e){return{bytes:t,base64:t.toString("base64"),ext:o,name:e.match(/[\w.-]+$/)?e:`image.${o}`}}function B(t){if(t.length<4||t[0]===82&&t[1]===73&&t[2]===70&&t[3]===70&&t.length>=12&&t[8]===87&&t[9]===69&&t[10]===66&&t[11]===80)return null;for(const o of l)if(t.length>=o.magic.length){let e=!0;for(let r=0;r<o.magic.length;r++)if(t[r]!==o.magic[r]){e=!1;break}if(e)return o.ext}return null}async function A(t,o){if(Array.isArray(t))for(const e of t){if(!e||typeof e!="object")continue;const r=e.props;if(!r||typeof r!="object")continue;const n=r.source;if(!n||typeof n!="string"||!n.trim()||r.imageBase64)continue;const f=await E(n,o);r.imageBase64=f.base64,r.imageName||(r.imageName=f.name)}}export{E as officeResolveImageSource,A as prepareOfficeImageCommands};
|
|
2
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
export declare function officeKindOf(filePath: string): "docx" | "xlsx" | "pptx" | null;
|
|
4
|
+
|
|
5
|
+
export declare function officeWorkspaceRoot(): string;
|
|
6
|
+
|
|
7
|
+
export declare function resolveOfficeFile(rawFile: string, workspaceRoot?: string): string;
|
|
8
|
+
|
|
9
|
+
export interface PackedOfficeFile {
|
|
10
|
+
|
|
11
|
+
absolutePath: string;
|
|
12
|
+
|
|
13
|
+
fileName: string;
|
|
14
|
+
|
|
15
|
+
fileBase64: string;
|
|
16
|
+
|
|
17
|
+
sizeKb: number;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export declare function packOfficeFile(rawFile: string, workspaceRoot?: string): PackedOfficeFile;
|
|
21
|
+
|
|
22
|
+
export declare function writeOfficeFileAtomic(rawFile: string, fileBase64: string, workspaceRoot?: string): {
|
|
23
|
+
absolutePath: string;
|
|
24
|
+
sizeKb: number;
|
|
25
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import i from"node:fs";import o from"node:path";const h={".docx":"docx",".docm":"docx",".xlsx":"xlsx",".xlsm":"xlsx",".pptx":"pptx",".pptm":"pptx"};function x(t){return h[o.extname(t).toLowerCase()]??null}function p(){return o.resolve(process.env.AWS_WORKSPACE_PATH||process.cwd())}function l(t,s=p()){const e=t.trim();if(!e)throw new Error("file \u4E0D\u80FD\u4E3A\u7A7A");return o.resolve(s,e)}const m=16*1024*1024;function E(t,s=p()){const e=l(t,s),n=o.basename(e);if(!x(e))throw new Error(`\u4E0D\u652F\u6301\u7684\u6587\u6863\u7C7B\u578B: ${t}\uFF08\u4EC5\u652F\u6301 .docx/.docm\u3001.xlsx/.xlsm\u3001.pptx/.pptm\uFF09`);let r;try{r=i.statSync(e)}catch{throw new Error(`\u6587\u4EF6\u4E0D\u5B58\u5728: ${t}\uFF08\u89E3\u6790\u4E3A ${e}\uFF09`)}if(!r.isFile())throw new Error(`\u4E0D\u662F\u666E\u901A\u6587\u4EF6: ${t}`);if(r.size>m)throw new Error(`\u6587\u4EF6\u8FC7\u5927\uFF08\u4E0A\u9650 ${Math.floor(m/1024/1024)}MB\uFF09: ${t}`);const c=i.readFileSync(e);return{absolutePath:e,fileName:n,fileBase64:c.toString("base64"),sizeKb:Math.ceil(c.length/1024)}}function d(t,s,e=p()){const n=l(t,e),r=typeof s=="string"?s.trim():"";if(!r)throw new Error("\u8FD4\u56DE\u7684\u6587\u4EF6\u5185\u5BB9\u4E3A\u7A7A\uFF0C\u5DF2\u653E\u5F03\u5199\u56DE");if(!/^[A-Za-z0-9+/]+={0,2}$/.test(r)||r.length%4!==0)throw new Error("\u8FD4\u56DE\u7684 fileBase64 \u4E0D\u662F\u5408\u6CD5 Base64 \u5185\u5BB9");const c=Buffer.from(r,"base64");if(c.length===0)throw new Error("\u8FD4\u56DE\u7684\u6587\u4EF6\u5185\u5BB9\u4E3A\u7A7A\uFF0C\u5DF2\u653E\u5F03\u5199\u56DE");i.mkdirSync(o.dirname(n),{recursive:!0});const f=o.join(o.dirname(n),`.${o.basename(n)}.${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}.tmp`);i.writeFileSync(f,c);try{i.renameSync(f,n)}catch(a){try{i.rmSync(f,{force:!0})}catch{}throw new Error(`\u5199\u56DE\u5931\u8D25\uFF08\u6587\u4EF6\u53EF\u80FD\u6B63\u88AB\u5176\u4ED6\u7A0B\u5E8F\u5360\u7528\uFF09: ${t} - ${a instanceof Error?a.message:String(a)}`)}return{absolutePath:n,sizeKb:Math.ceil(c.length/1024)}}export{x as officeKindOf,p as officeWorkspaceRoot,E as packOfficeFile,l as resolveOfficeFile,d as writeOfficeFileAtomic};
|
|
2
|
+
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
export type ToolGroupState = "disabled" | "collapsed" | "expanded";
|
|
4
|
+
|
|
5
|
+
export type FeatureState = "disabled" | "collapsed" | "expanded";
|
|
6
|
+
|
|
7
|
+
export declare function normalizeFeatureState(raw: unknown): FeatureState | undefined;
|
|
8
|
+
|
|
9
|
+
export interface ToolGroupDef {
|
|
10
|
+
|
|
11
|
+
key: string;
|
|
12
|
+
|
|
13
|
+
label: string;
|
|
14
|
+
|
|
15
|
+
featureKey?: string;
|
|
16
|
+
|
|
17
|
+
toolNames: ReadonlySet<string>;
|
|
18
|
+
|
|
19
|
+
collapsible: boolean;
|
|
20
|
+
|
|
21
|
+
defaultState: FeatureState;
|
|
22
|
+
|
|
23
|
+
summary: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export declare const TOOL_GROUPS: readonly ToolGroupDef[];
|
|
27
|
+
|
|
28
|
+
export declare function findToolGroup(key: string): ToolGroupDef | undefined;
|
|
29
|
+
|
|
30
|
+
export interface BridgeLazyCapability {
|
|
31
|
+
|
|
32
|
+
key: string;
|
|
33
|
+
|
|
34
|
+
label: string;
|
|
35
|
+
|
|
36
|
+
featureKey: string;
|
|
37
|
+
|
|
38
|
+
defaultState: FeatureState;
|
|
39
|
+
|
|
40
|
+
summary: string;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export declare const BRIDGE_LAZY_CAPABILITIES: readonly BridgeLazyCapability[];
|
|
44
|
+
|
|
45
|
+
export declare function findBridgeLazyCapability(key: string): BridgeLazyCapability | undefined;
|
|
46
|
+
|
|
47
|
+
export declare function findToolGroupByToolName(toolName: string): ToolGroupDef | undefined;
|
|
48
|
+
|
|
49
|
+
export declare function defaultStateForFeatureKey(featureKey: string): FeatureState | undefined;
|
|
50
|
+
|
|
51
|
+
export declare function findBridgeCapabilityByToolName(toolName: string): BridgeLazyCapability | undefined;
|
|
52
|
+
|
|
53
|
+
export declare function collapsibleToolGroupKeys(): string[];
|
|
54
|
+
|
|
55
|
+
export declare function resolveToolGroupState(group: ToolGroupDef, configState: FeatureState, expanded: boolean): ToolGroupState;
|
|
56
|
+
|
|
57
|
+
export declare function buildToolGroupPrompt(collapsedGroups: readonly ToolGroupDef[]): string | undefined;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{DEBUG_LOG_TOOL_NAMES as n,DRAW_TOOL_NAMES as u,FILE_CHANGES_HISTORY_TOOL_NAMES as s,HIRE_TOOL_NAMES as i,LAUNCH_CONFIG_TOOL_NAMES as d,MEETING_TOOL_NAMES as f,OFFICE_TOOL_NAMES as p,PENCIL_TOOL_NAMES as c,TASK_TOOL_NAMES as y}from"./mcp-tools.js";const m=new Set(["disabled","collapsed","expanded"]);function O(e){if(e===!0)return"expanded";if(e===!1)return"disabled";if(typeof e=="string"&&m.has(e))return e}const a=[{key:"launch",label:"\u542F\u52A8\u9879\u7BA1\u7406",featureKey:"agentSys.launchItem",toolNames:d,collapsible:!0,defaultState:"collapsed",summary:"\u7BA1\u7406\u5F00\u53D1\u670D\u52A1\u8FDB\u7A0B\uFF08\u542F\u52A8/\u505C\u6B62/\u91CD\u542F/\u67E5\u770B\u65E5\u5FD7\uFF09"},{key:"hire",label:"\u62DB\u8058\u5DE5\u5177",featureKey:"agentSys.hire",toolNames:i,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:c,collapsible:!0,defaultState:"collapsed",summary:"UI design editor. Open-source Figma alternative."},{key:"draw",label:"\u7ED8\u56FE",featureKey:"draw",toolNames:u,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:p,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\u62D2\u7EDD/\u7EC8\u6B62/\u56DE\u9000\u4EFB\u52A1\u3001\u7ED9\u6D41\u7A0B\u5B9E\u4F8B\u7559\u8A00"},{key:"meeting",label:"\u4F1A\u8BAE",featureKey:"collaboration.meeting",toolNames:f,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:s,collapsible:!0,defaultState:"collapsed",summary:"\u6309\u89D2\u8272/\u5B9E\u4F8B/\u6587\u4EF6\u8DEF\u5F84\u8FC7\u6EE4\u67E5\u8BE2\u6587\u4EF6\u53D8\u66F4\u5386\u53F2"}],b=new Map(a.map(e=>[e.key,e])),_=(()=>{const e=new Map;for(const t of a)for(const l of t.toolNames)e.set(l,t);return e})();function N(e){return b.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 T(e){return r.find(t=>t.key===e)}function E(e){return _.get(e)}function x(e){const t=a.find(o=>o.featureKey===e);return t?t.defaultState:r.find(o=>o.featureKey===e)?.defaultState}function A(e){return r.find(t=>e.startsWith(`${t.key}_`))}function k(){return a.filter(e=>e.collapsible).map(e=>e.key)}function L(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
|
+
`)}export{r as BRIDGE_LAZY_CAPABILITIES,a as TOOL_GROUPS,g as buildToolGroupPrompt,k as collapsibleToolGroupKeys,x as defaultStateForFeatureKey,A as findBridgeCapabilityByToolName,T as findBridgeLazyCapability,N as findToolGroup,E as findToolGroupByToolName,O as normalizeFeatureState,L as resolveToolGroupState};
|
|
3
|
+
|
|
@@ -428,6 +428,23 @@ export interface HireBatchResult {
|
|
|
428
428
|
|
|
429
429
|
export type McpToolName = "get_colleague" | "get_group_rooms" | "get_profile" | "hire_colleague" | "send_group" | "send_private" | "poll_message" | "get_message" | "get_dm_history" | "get_group_history" | "start_listening" | "stop_listening";
|
|
430
430
|
|
|
431
|
+
export type CardType = "pencil" | "draw" | "office";
|
|
432
|
+
|
|
433
|
+
export interface Card {
|
|
434
|
+
|
|
435
|
+
type: CardType;
|
|
436
|
+
|
|
437
|
+
docId?: string;
|
|
438
|
+
|
|
439
|
+
filePath?: string;
|
|
440
|
+
|
|
441
|
+
previewUrl?: string;
|
|
442
|
+
|
|
443
|
+
title?: string;
|
|
444
|
+
|
|
445
|
+
description?: string;
|
|
446
|
+
}
|
|
447
|
+
|
|
431
448
|
export interface SendPrivateArgs {
|
|
432
449
|
targetId: string;
|
|
433
450
|
content: string;
|
|
@@ -436,6 +453,8 @@ export interface SendPrivateArgs {
|
|
|
436
453
|
timeoutMs?: number;
|
|
437
454
|
|
|
438
455
|
attachments?: string[];
|
|
456
|
+
|
|
457
|
+
card?: Card;
|
|
439
458
|
}
|
|
440
459
|
|
|
441
460
|
export interface SendGroupArgs {
|
|
@@ -444,6 +463,8 @@ export interface SendGroupArgs {
|
|
|
444
463
|
roomId?: string;
|
|
445
464
|
|
|
446
465
|
attachments?: string[];
|
|
466
|
+
|
|
467
|
+
card?: Card;
|
|
447
468
|
}
|
|
448
469
|
|
|
449
470
|
export interface GetDmHistoryArgs {
|
|
@@ -505,3 +526,9 @@ export interface AgentStatusUpdate {
|
|
|
505
526
|
actionId?: string;
|
|
506
527
|
timestamp: string;
|
|
507
528
|
}
|
|
529
|
+
|
|
530
|
+
export interface BridgeToolManifest {
|
|
531
|
+
name: string;
|
|
532
|
+
description?: string;
|
|
533
|
+
inputSchema?: unknown;
|
|
534
|
+
}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"build": "tsc && node ../../scripts/minify-dist.mjs",
|
|
16
16
|
"dev": "tsc --watch",
|
|
17
17
|
"start": "node dist/index.js",
|
|
18
|
-
"test": "npm run build && tsc -p tsconfig.test.json && node --test --test-timeout=60000 dist-test
|
|
18
|
+
"test": "npm run build && tsc -p tsconfig.test.json && node --test --test-timeout=60000 \"dist-test/**/*.test.js\"",
|
|
19
19
|
"prepare": "npm run build",
|
|
20
20
|
"lint": "eslint src --max-warnings 0",
|
|
21
21
|
"lint:fix": "eslint src --fix",
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
36
36
|
"aws-runtime-bridge": "file:../..",
|
|
37
|
+
"temml": "^0.13.5",
|
|
37
38
|
"ws": "^8.14.2",
|
|
38
39
|
"yaml": "^2.3.4"
|
|
39
40
|
},
|
package/package.json
CHANGED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import type { ACodeBuiltInTool } from "./built-in-file-tools.js";
|
|
3
|
-
import type { ACodePluginBridge } from "./plugin-types.js";
|
|
4
|
-
export interface PluginToolsDeps {
|
|
5
|
-
pluginBridge?: ACodePluginBridge;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export declare function splitQualifiedToolName(qualifiedName: string): {
|
|
9
|
-
plugin: string;
|
|
10
|
-
tool: string;
|
|
11
|
-
} | null;
|
|
12
|
-
export declare function createPluginTools(deps: PluginToolsDeps): ACodeBuiltInTool[];
|
|
13
|
-
|
|
14
|
-
export declare function buildPluginPrompt(): string;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
const h=/^[a-z0-9][a-z0-9-]*$/,d=`\u8C03\u7528\u63D2\u4EF6\u5C42\u6CE8\u5165\u7684\u5DE5\u5177\uFF08\u4E09\u65B9\u5DE5\u5177\u7ECF\u63D2\u4EF6\u63A5\u5165\u540E\u7684\u7EDF\u4E00\u8C03\u7528\u5165\u53E3\uFF09\u3002
|
|
2
|
-
\u63D2\u4EF6\u5DE5\u5177\u4E0D\u5728\u4F60\u7684\u9759\u6001\u5DE5\u5177\u5217\u8868\u4E2D\uFF1A\u53EF\u7528\u5DE5\u5177\u7684\u7D27\u51D1\u76EE\u5F55\u968F poll_message \u7ED3\u679C\u7684 pluginCatalog \u5B57\u6BB5\u8FD4\u56DE\uFF08\u542B\u63D2\u4EF6\u540D\u3001\u5DE5\u5177\u540D\u3001\u4E00\u53E5\u8BDD\u63CF\u8FF0\u3001\u5FC5\u586B\u53C2\u6570\uFF09\uFF0C\u63D2\u4EF6\u4E8B\u4EF6\u6D88\u606F\u5C3E\u90E8\u4F1A\u9644 toolHints \u63D0\u793A\u5EFA\u8BAE\u8C03\u7528\u7684\u5DE5\u5177\u3002
|
|
3
|
-
\u7528\u6CD5\uFF1A
|
|
4
|
-
- action=call\uFF08\u9ED8\u8BA4\uFF09\uFF1Atool \u4F20\u9650\u5B9A\u540D "\u63D2\u4EF6\u540D.\u5DE5\u5177\u540D"\uFF08\u5982 "wechat-cli.send_msg"\uFF09\uFF0Cparams \u4F20\u52A8\u6001\u53C2\u6570\u5BF9\u8C61\uFF1B\u53C2\u6570\u6309\u63D2\u4EF6\u58F0\u660E\u7684 JSON Schema \u6821\u9A8C\uFF0C\u6821\u9A8C\u5931\u8D25\u65F6\u8FD4\u56DE\u7ED3\u679C\u4F1A\u9644\u5E26\u5B8C\u6574 inputSchema\uFF0C\u8BF7\u4FEE\u6B63\u540E\u91CD\u8BD5\u3002
|
|
5
|
-
- action=schema\uFF1Atool \u4F20\u9650\u5B9A\u540D\uFF08\u652F\u6301 "\u63D2\u4EF6\u540D.*"\uFF09\uFF0C\u8FD4\u56DE\u8BE5\u5DE5\u5177\uFF08\u6216\u63D2\u4EF6\u5168\u90E8\u5DE5\u5177\uFF09\u7684\u5B8C\u6574 JSON Schema \u5B9A\u4E49\u3002\u76EE\u5F55\u63CF\u8FF0\u4E0D\u591F\u7528\u3001\u6216\u53C2\u6570\u6821\u9A8C\u53CD\u590D\u5931\u8D25\u65F6\u5148\u53D6 schema\u3002
|
|
6
|
-
- action=catalog\uFF1A\u8FD4\u56DE\u5F53\u524D\u5168\u90E8\u63D2\u4EF6\u7684\u7D27\u51D1\u76EE\u5F55\uFF08\u5B89\u88C5\u65B0\u63D2\u4EF6\u540E\u53EF\u7528\u5B83\u7ACB\u5373\u611F\u77E5\uFF09\u3002
|
|
7
|
-
\u6CE8\u610F\uFF1A\u63D2\u4EF6\u672A\u5B89\u88C5/\u5DF2\u505C\u7528/\u5DE5\u5177\u4E0D\u5B58\u5728\u65F6\u8FD4\u56DE\u660E\u786E\u9519\u8BEF\uFF0C\u4E0D\u8981\u51ED\u7A7A\u7F16\u9020\u5DE5\u5177\u540D\u3002`;function _(o){const t=o.indexOf(".");if(t<=0||t>=o.length-1)return null;const c=o.slice(0,t),a=o.slice(t+1);return!h.test(c)||!a.trim()?null:{plugin:c,tool:a.trim()}}function S(o){const t=o.pluginBridge;return t?[y(t)]:[]}function y(o){return{kind:"builtin",toolName:"function_call",exposedName:"function_call",category:"plugin",description:d,inputSchema:{type:"object",properties:{action:{type:"string",enum:["call","schema","catalog"],default:"call",description:"call=\u8C03\u7528\u63D2\u4EF6\u5DE5\u5177\uFF1Bschema=\u53D6\u5B8C\u6574\u53C2\u6570\u5B9A\u4E49\uFF1Bcatalog=\u53D6\u63D2\u4EF6\u5DE5\u5177\u76EE\u5F55"},tool:{type:"string",description:'\u9650\u5B9A\u540D "\u63D2\u4EF6\u540D.\u5DE5\u5177\u540D"\uFF08\u5982 "wechat-cli.send_msg"\uFF09\uFF1Baction=schema \u65F6\u652F\u6301 "\u63D2\u4EF6\u540D.*" \u53D6\u6574\u7EC4\u5B9A\u4E49'},params:{type:"object",description:"call \u7684\u52A8\u6001\u53C2\u6570\u5BF9\u8C61\uFF0C\u6309\u63D2\u4EF6\u58F0\u660E\u7684 inputSchema \u6821\u9A8C"}},required:["tool"],additionalProperties:!1},async execute(t,c){const a=typeof t.action=="string"?t.action:"call",n=typeof t.tool=="string"?t.tool.trim():"";try{if(a==="catalog")return await o.getCatalog();if(!n)return{error:'\u7F3A\u5C11 tool \u53C2\u6570\uFF08\u9650\u5B9A\u540D "\u63D2\u4EF6\u540D.\u5DE5\u5177\u540D"\uFF09'};if(a==="schema"){if(n.endsWith(".*")){const i=n.slice(0,-2),m=await o.getCatalog(),g=m.plugins.find(s=>s.plugin===i);if(!g)return{error:`\u63D2\u4EF6 ${i} \u672A\u5B89\u88C5\u6216\u5DF2\u505C\u7528`,catalog:m.plugins};const f=await Promise.all(g.tools.map(s=>o.getToolSchema(`${i}.${s.name}`)));return{plugin:i,schemas:f.filter(Boolean)}}const p=await o.getToolSchema(n);return p||{error:`\u672A\u77E5\u63D2\u4EF6\u5DE5\u5177: ${n}\uFF08\u53EF\u5148 action=catalog \u67E5\u770B\u76EE\u5F55\uFF09`}}if(a!=="call")return{error:`\u672A\u77E5 action: ${a}\uFF08\u5141\u8BB8\uFF1Acall / schema / catalog\uFF09`};const e=_(n);if(!e)return{error:`tool \u9650\u5B9A\u540D\u4E0D\u5408\u6CD5: ${n}\uFF08\u5E94\u4E3A "\u63D2\u4EF6\u540D.\u5DE5\u5177\u540D"\uFF0C\u63D2\u4EF6\u540D\u4E3A kebab-case\uFF09`};const u=t.params&&typeof t.params=="object"&&!Array.isArray(t.params)?t.params:{},l=await o.invokeTool(e.plugin,e.tool,u,{toolCallId:c?.toolCallId});if(l.ok)return l.result??{ok:!0};const r={error:l.error??"\u63D2\u4EF6\u5DE5\u5177\u8C03\u7528\u5931\u8D25"};return l.inputSchema!==void 0&&(r.inputSchema=l.inputSchema),typeof l.durationMs=="number"&&(r.durationMs=l.durationMs),r}catch(e){return{error:`function_call \u5931\u8D25: ${e instanceof Error?e.message:String(e)}`}}}}}function C(){return["## \u63D2\u4EF6\u7CFB\u7EDF",'- \u4E09\u65B9\u5DE5\u5177\u4EE5\u63D2\u4EF6\u5F62\u5F0F\u63A5\u5165\u3002\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 function_call \u8C03\u7528\uFF08tool="\u63D2\u4EF6\u540D.\u5DE5\u5177\u540D"\uFF0Cparams \u4E3A\u52A8\u6001\u53C2\u6570\uFF09\u3002','- \u53C2\u6570\u4E0D\u7B26\u5408\u63D2\u4EF6 schema \u65F6\uFF0Cfunction_call \u4F1A\u8FD4\u56DE\u9519\u8BEF\u5E76\u9644\u5B8C\u6574 inputSchema\uFF0C\u8BF7\u4FEE\u6B63\u540E\u91CD\u8BD5\uFF1B\u76EE\u5F55\u63CF\u8FF0\u4E0D\u8DB3\u65F6\u7528 function_call {action:"schema"} \u53D6\u5B8C\u6574\u5B9A\u4E49\u3002',"- \u63D2\u4EF6\u4E8B\u4EF6\u4EE5 [plugin-event] \u5F00\u5934\u7684\u6D88\u606F\u51FA\u73B0\u5728 poll_message \u7ED3\u679C\u4E2D\uFF0C\u6D88\u606F\u5C3E\u90E8\u6709 toolHints\uFF08\u5EFA\u8BAE\u8C03\u7528\u7684\u5DE5\u5177\uFF09\u4E0E payload\uFF08\u4E8B\u4EF6\u6570\u636E\uFF09\uFF0C\u6309\u63D0\u793A\u7528 function_call \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 function_call \u8C03\u7528\u5185\u7F6E\u63D2\u4EF6 plugin-manager \u7684 manage \u5DE5\u5177\uFF0C\u5373 function_call {tool:"plugin-manager.manage", params:{action:"...", ...}}\uFF08plugin-manager \u5728 pluginCatalog \u4E2D\u53EF\u67E5\uFF09\u3002\u672A\u7ECF\u7528\u6237\u660E\u786E\u8981\u6C42\u4E0D\u8981\u5B89\u88C5\u6216\u5378\u8F7D\u63D2\u4EF6\u3002\u5F00\u53D1\u63D2\u4EF6\u5148\u7528\u5185\u7F6E /create-plugin \u547D\u4EE4\u83B7\u53D6\u5F00\u53D1\u89C4\u8303\uFF0C\u5199\u5B8C\u63D2\u4EF6\u76EE\u5F55\u540E\u518D\u7528 function_call \u8C03 plugin-manager.manage install \u751F\u6548\u3002'].join(`
|
|
8
|
-
`)}export{C as buildPluginPrompt,S as createPluginTools,_ as splitQualifiedToolName};
|
|
9
|
-
|