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.
Files changed (81) hide show
  1. package/CHANGELOG.md +560 -0
  2. package/dist/adapter/AcodeSdkAdapter.d.ts +51 -1
  3. package/dist/adapter/AcodeSdkAdapter.js +6 -5
  4. package/dist/adapter/prompts.d.ts +1 -1
  5. package/dist/adapter/prompts.js +1 -1
  6. package/dist/desktop/built-in-desktop-tools.js +1 -1
  7. package/dist/routes/acode-todos.js +1 -1
  8. package/dist/routes/ltr.js +1 -1
  9. package/dist/routes/sessions.d.ts +31 -0
  10. package/dist/routes/sessions.js +1 -1
  11. package/dist/routes/terminal.d.ts +8 -0
  12. package/dist/routes/terminal.js +25 -25
  13. package/dist/services/instance-features.d.ts +25 -1
  14. package/dist/services/instance-features.js +1 -1
  15. package/dist/services/workspace-files.js +1 -1
  16. package/dist/services/workspace-watch.js +1 -1
  17. package/dist/utils/file-utils.d.ts +2 -0
  18. package/dist/utils/file-utils.js +2 -2
  19. package/package/acode/dist/ask-user-question-tool.js +1 -1
  20. package/package/acode/dist/await-complete-tool.js +1 -1
  21. package/package/acode/dist/background-command-manager.js +1 -1
  22. package/package/acode/dist/background-command-tools.js +1 -1
  23. package/package/acode/dist/built-in-file-tools.d.ts +18 -2
  24. package/package/acode/dist/built-in-file-tools.js +2 -2
  25. package/package/acode/dist/built-in-symbols-tool.js +1 -1
  26. package/package/acode/dist/context-overflow.d.ts +19 -0
  27. package/package/acode/dist/context-overflow.js +2 -0
  28. package/package/acode/dist/grammars/grammars/tree-sitter-lua.wasm +0 -0
  29. package/package/acode/dist/index.d.ts +3 -1
  30. package/package/acode/dist/index.js +1 -1
  31. package/package/acode/dist/parsers/ast-cache.d.ts +12 -1
  32. package/package/acode/dist/parsers/ast-cache.js +1 -1
  33. package/package/acode/dist/parsers/language-queries.js +1 -1
  34. package/package/acode/dist/parsers/symbol-extractor.js +2 -2
  35. package/package/acode/dist/parsers/tree-sitter-loader.d.ts +1 -1
  36. package/package/acode/dist/parsers/tree-sitter-loader.js +1 -1
  37. package/package/acode/dist/plugin-types.d.ts +5 -0
  38. package/package/acode/dist/plugin-types.js +1 -0
  39. package/package/acode/dist/read-file-state.d.ts +48 -0
  40. package/package/acode/dist/read-file-state.js +2 -0
  41. package/package/acode/dist/runtime.d.ts +63 -3
  42. package/package/acode/dist/runtime.js +30 -26
  43. package/package/acode/dist/skill-tool.js +3 -3
  44. package/package/acode/dist/sub-agent-manager.js +1 -1
  45. package/package/acode/dist/sub-agent-tools.js +5 -5
  46. package/package/acode/dist/todo-tool.js +3 -3
  47. package/package/acode/dist/tool-concurrency/index.d.ts +5 -0
  48. package/package/acode/dist/tool-concurrency/index.js +2 -0
  49. package/package/acode/dist/tool-concurrency/observability.d.ts +46 -0
  50. package/package/acode/dist/tool-concurrency/observability.js +3 -0
  51. package/package/acode/dist/tool-concurrency/resource-lock.d.ts +25 -0
  52. package/package/acode/dist/tool-concurrency/resource-lock.js +2 -0
  53. package/package/acode/dist/tool-concurrency/scheduler.d.ts +30 -0
  54. package/package/acode/dist/tool-concurrency/scheduler.js +2 -0
  55. package/package/acode/dist/tool-concurrency/types.d.ts +80 -0
  56. package/package/acode/dist/tool-concurrency/types.js +2 -0
  57. package/package/acode/dist/tool-group-manager.d.ts +116 -0
  58. package/package/acode/dist/tool-group-manager.js +14 -0
  59. package/package/acode/dist/types.d.ts +14 -1
  60. package/package/acode/package.json +2 -2
  61. package/package/aws-client-agent-mcp/dist/agent-client.d.ts +4 -4
  62. package/package/aws-client-agent-mcp/dist/agent-client.js +1 -1
  63. package/package/aws-client-agent-mcp/dist/http-client.d.ts +1 -1
  64. package/package/aws-client-agent-mcp/dist/http-client.js +1 -1
  65. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +62 -17
  66. package/package/aws-client-agent-mcp/dist/mcp-server.js +29 -29
  67. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +46 -0
  68. package/package/aws-client-agent-mcp/dist/mcp-tools.js +149 -7
  69. package/package/aws-client-agent-mcp/dist/office/office-equation.d.ts +5 -0
  70. package/package/aws-client-agent-mcp/dist/office/office-equation.js +2 -0
  71. package/package/aws-client-agent-mcp/dist/office/office-image.d.ts +12 -0
  72. package/package/aws-client-agent-mcp/dist/office/office-image.js +2 -0
  73. package/package/aws-client-agent-mcp/dist/office/office-workspace.d.ts +25 -0
  74. package/package/aws-client-agent-mcp/dist/office/office-workspace.js +2 -0
  75. package/package/aws-client-agent-mcp/dist/tool-groups.d.ts +57 -0
  76. package/package/aws-client-agent-mcp/dist/tool-groups.js +3 -0
  77. package/package/aws-client-agent-mcp/dist/types.d.ts +27 -0
  78. package/package/aws-client-agent-mcp/package.json +2 -1
  79. package/package.json +1 -1
  80. package/package/acode/dist/plugin-tools.d.ts +0 -14
  81. package/package/acode/dist/plugin-tools.js +0 -9
@@ -0,0 +1,5 @@
1
+
2
+
3
+ export declare function latexToOmml(latex: string, displayMode?: boolean): string;
4
+
5
+ export declare function prepareOfficeEquationCommands(commands: unknown[]): void;
@@ -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,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}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/*.test.js",
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,6 +1,6 @@
1
1
  {
2
2
  "name": "aws-runtime-bridge",
3
- "version": "1.9.151",
3
+ "version": "1.9.162",
4
4
  "description": "AgentsWorkStudio runtime bridge service for machine-level agent runtime integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -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
-