solace-agent-mesh 1.3.3__py3-none-any.whl → 1.4.0__py3-none-any.whl

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.

Potentially problematic release.


This version of solace-agent-mesh might be problematic. Click here for more details.

Files changed (80) hide show
  1. solace_agent_mesh/agent/adk/setup.py +183 -8
  2. solace_agent_mesh/agent/sac/app.py +337 -622
  3. solace_agent_mesh/agent/sac/component.py +47 -1
  4. solace_agent_mesh/agent/tools/dynamic_tool.py +36 -5
  5. solace_agent_mesh/agent/tools/tool_config_types.py +58 -0
  6. solace_agent_mesh/assets/docs/404.html +3 -3
  7. solace_agent_mesh/assets/docs/assets/js/42b3f8d8.508ae8db.js +1 -0
  8. solace_agent_mesh/assets/docs/assets/js/9a09e75d.92de8cf5.js +1 -0
  9. solace_agent_mesh/assets/docs/assets/js/{main.e82b32e6.js → main.1de3da6a.js} +2 -2
  10. solace_agent_mesh/assets/docs/assets/js/{runtime~main.aad1f874.js → runtime~main.3188e049.js} +1 -1
  11. solace_agent_mesh/assets/docs/docs/documentation/Enterprise/installation/index.html +3 -3
  12. solace_agent_mesh/assets/docs/docs/documentation/Enterprise/single-sign-on/index.html +3 -3
  13. solace_agent_mesh/assets/docs/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-gateway-upgrade-to-0.3.0/index.html +3 -3
  14. solace_agent_mesh/assets/docs/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-technical-migration-map/index.html +3 -3
  15. solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +3 -3
  16. solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +3 -3
  17. solace_agent_mesh/assets/docs/docs/documentation/concepts/cli/index.html +3 -3
  18. solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +3 -3
  19. solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +3 -3
  20. solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +3 -3
  21. solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +3 -3
  22. solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +3 -3
  23. solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +3 -3
  24. solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +3 -3
  25. solace_agent_mesh/assets/docs/docs/documentation/getting-started/configurations/index.html +3 -3
  26. solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +3 -3
  27. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +3 -3
  28. solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +3 -3
  29. solace_agent_mesh/assets/docs/docs/documentation/tutorials/bedrock-agents/index.html +3 -3
  30. solace_agent_mesh/assets/docs/docs/documentation/tutorials/custom-agent/index.html +3 -3
  31. solace_agent_mesh/assets/docs/docs/documentation/tutorials/event-mesh-gateway/index.html +3 -3
  32. solace_agent_mesh/assets/docs/docs/documentation/tutorials/mcp-integration/index.html +3 -3
  33. solace_agent_mesh/assets/docs/docs/documentation/tutorials/mongodb-integration/index.html +3 -3
  34. solace_agent_mesh/assets/docs/docs/documentation/tutorials/rag-integration/index.html +3 -3
  35. solace_agent_mesh/assets/docs/docs/documentation/tutorials/rest-gateway/index.html +3 -3
  36. solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +3 -3
  37. solace_agent_mesh/assets/docs/docs/documentation/tutorials/sql-database/index.html +3 -3
  38. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/artifact-management/index.html +3 -3
  39. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/audio-tools/index.html +3 -3
  40. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/data-analysis-tools/index.html +3 -3
  41. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/embeds/index.html +3 -3
  42. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/index.html +3 -3
  43. solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-agents/index.html +5 -5
  44. solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-gateways/index.html +3 -3
  45. solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-python-tools/index.html +68 -3
  46. solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +3 -3
  47. solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +3 -3
  48. solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +3 -3
  49. solace_agent_mesh/assets/docs/lunr-index-1757991496554.json +1 -0
  50. solace_agent_mesh/assets/docs/lunr-index.json +1 -1
  51. solace_agent_mesh/assets/docs/search-doc-1757991496554.json +1 -0
  52. solace_agent_mesh/assets/docs/search-doc.json +1 -1
  53. solace_agent_mesh/cli/__init__.py +1 -1
  54. solace_agent_mesh/cli/commands/run_cmd.py +4 -7
  55. solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-CAX9u8a7.js → authCallback-j1LW-wlq.js} +1 -1
  56. solace_agent_mesh/client/webui/frontend/static/assets/{client-DXU9SPI5.js → client-B9p_nFNA.js} +1 -1
  57. solace_agent_mesh/client/webui/frontend/static/assets/main-B9s_V9tJ.css +1 -0
  58. solace_agent_mesh/client/webui/frontend/static/assets/main-Dq4AJNvn.js +339 -0
  59. solace_agent_mesh/client/webui/frontend/static/assets/{vendor-B0BEKoAR.js → vendor-CS5YMf8a.js} +74 -69
  60. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
  61. solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
  62. solace_agent_mesh/common/utils/pydantic_utils.py +56 -0
  63. solace_agent_mesh/config_portal/backend/plugin_catalog/registry_manager.py +6 -4
  64. solace_agent_mesh/gateway/base/app.py +58 -120
  65. solace_agent_mesh/gateway/http_sse/app.py +99 -150
  66. solace_agent_mesh/gateway/http_sse/component.py +57 -30
  67. solace_agent_mesh/gateway/http_sse/sse_event_buffer.py +87 -0
  68. solace_agent_mesh/gateway/http_sse/sse_manager.py +44 -23
  69. {solace_agent_mesh-1.3.3.dist-info → solace_agent_mesh-1.4.0.dist-info}/METADATA +1 -1
  70. {solace_agent_mesh-1.3.3.dist-info → solace_agent_mesh-1.4.0.dist-info}/RECORD +74 -71
  71. solace_agent_mesh/assets/docs/assets/js/42b3f8d8.3f34bf76.js +0 -1
  72. solace_agent_mesh/assets/docs/assets/js/9a09e75d.5a319fd4.js +0 -1
  73. solace_agent_mesh/assets/docs/lunr-index-1757873594308.json +0 -1
  74. solace_agent_mesh/assets/docs/search-doc-1757873594308.json +0 -1
  75. solace_agent_mesh/client/webui/frontend/static/assets/main-C03yrETa.css +0 -1
  76. solace_agent_mesh/client/webui/frontend/static/assets/main-DjoMeldu.js +0 -339
  77. /solace_agent_mesh/assets/docs/assets/js/{main.e82b32e6.js.LICENSE.txt → main.1de3da6a.js.LICENSE.txt} +0 -0
  78. {solace_agent_mesh-1.3.3.dist-info → solace_agent_mesh-1.4.0.dist-info}/WHEEL +0 -0
  79. {solace_agent_mesh-1.3.3.dist-info → solace_agent_mesh-1.4.0.dist-info}/entry_points.txt +0 -0
  80. {solace_agent_mesh-1.3.3.dist-info → solace_agent_mesh-1.4.0.dist-info}/licenses/LICENSE +0 -0
@@ -1 +1 @@
1
- (()=>{"use strict";var e,a,c,t,r,f={},b={};function d(e){var a=b[e];if(void 0!==a)return a.exports;var c=b[e]={id:e,loaded:!1,exports:{}};return f[e].call(c.exports,c,c.exports,d),c.loaded=!0,c.exports}d.m=f,d.c=b,e=[],d.O=(a,c,t,r)=>{if(!c){var f=1/0;for(i=0;i<e.length;i++){c=e[i][0],t=e[i][1],r=e[i][2];for(var b=!0,o=0;o<c.length;o++)(!1&r||f>=r)&&Object.keys(d.O).every((e=>d.O[e](c[o])))?c.splice(o--,1):(b=!1,r<f&&(f=r));if(b){e.splice(i--,1);var n=t();void 0!==n&&(a=n)}}return a}r=r||0;for(var i=e.length;i>0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[c,t,r]},d.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return d.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);d.r(r);var f={};a=a||[null,c({}),c([]),c(c)];for(var b=2&t&&e;"object"==typeof b&&!~a.indexOf(b);b=c(b))Object.getOwnPropertyNames(b).forEach((a=>f[a]=()=>e[a]));return f.default=()=>e,d.d(r,f),r},d.d=(e,a)=>{for(var c in a)d.o(a,c)&&!d.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((a,c)=>(d.f[c](e,a),a)),[])),d.u=e=>"assets/js/"+({246:"beecea0d",515:"166ab619",665:"85387663",817:"ced92a13",1095:"768e31b0",1257:"664b740a",1430:"0e682baa",1442:"442a8107",1462:"1023fc19",1721:"945fb41e",1935:"04989206",1955:"c2c06897",2037:"1c6e87d2",2274:"483cef9a",2424:"fbfa3e75",2476:"cc969b05",2807:"bac0be12",3011:"f284c35a",3486:"ae0e903d",3514:"f897a61a",3520:"2a9cab12",3974:"42b3f8d8",4651:"aba87c2f",4777:"1523c6b4",4806:"ae4415af",4851:"cee5d587",4854:"cd3d4052",5449:"b7006a3a",5627:"55f47984",5742:"aba21aa0",6068:"c835a94d",6634:"a3a92b25",6719:"9a09e75d",7098:"a7bd4aaa",7132:"5b4258a4",7289:"4c2787c2",8055:"75384d09",8357:"3d406171",8401:"17896441",8423:"21ceee5f",9048:"a94703ab",9150:"332e10b5",9639:"9eff14a2",9647:"5e95c892"}[e]||e)+"."+{149:"b797a808",165:"6a39807d",246:"ae31f6a7",375:"708d48db",515:"e8f3a7c7",665:"6bf41934",817:"fb92e7ca",1001:"0182a8bd",1039:"0bd46aa1",1095:"9abcdc48",1257:"ba305a89",1430:"da822665",1442:"b5c2532a",1462:"8a8a9309",1721:"abf2be91",1935:"b9dfe831",1955:"87cb1f47",2037:"43771adc",2130:"ab9fd314",2237:"5e477fc6",2274:"8d318c2f",2334:"622a6395",2424:"aca209c9",2476:"feef7dcc",2807:"27ee2c26",3011:"cad4dbf2",3219:"adc1d663",3486:"abca774a",3514:"bc634a3e",3520:"2afaee76",3624:"b524e433",3834:"b6cd790e",3974:"3f34bf76",4250:"95455b28",4356:"d169ab5b",4458:"518e66fa",4488:"c7cc3442",4494:"6ee23046",4651:"4ddf32f2",4777:"2645ef68",4806:"24cdc514",4851:"f1e1ca86",4854:"a19e7d78",4855:"fc4444b6",4866:"22daefc0",4950:"ca4caeda",5388:"7a136447",5449:"73a79653",5607:"081356f8",5627:"bcd00a86",5742:"c42a534c",5864:"b0d0e9de",6068:"ce21f0bf",6143:"0a1464c9",6395:"e9c73649",6634:"1d029b81",6719:"5a319fd4",6796:"51d2c9b7",6976:"379be23b",6978:"ee0b945c",7040:"cb436723",7098:"2204d2f7",7132:"dff11eca",7195:"412f418a",7280:"3fb73bdb",7289:"fc6804f2",7845:"e33e7c4c",7900:"69516146",8055:"abdf9cf9",8356:"8a379c04",8357:"5560fdf9",8401:"a5e82f9b",8423:"3bf39250",8567:"4732c6b7",8573:"cb04eda5",8577:"1d54e766",8591:"d7c16be6",8709:"7ecd4047",8731:"49e930c2",8908:"f9d1b506",9048:"0438dbc2",9150:"f7629851",9157:"b4093d07",9278:"a4fd875d",9616:"b75c2f6d",9639:"d62aad71",9647:"558d5167",9793:"c6d16376"}[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="solace-agenitc-mesh-docs:",d.l=(e,a,c,f)=>{if(t[e])t[e].push(a);else{var b,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var l=n[i];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==r+c){b=l;break}}b||(o=!0,(b=document.createElement("script")).charset="utf-8",b.timeout=120,d.nc&&b.setAttribute("nonce",d.nc),b.setAttribute("data-webpack",r+c),b.src=e),t[e]=[a];var s=(a,c)=>{b.onerror=b.onload=null,clearTimeout(u);var r=t[e];if(delete t[e],b.parentNode&&b.parentNode.removeChild(b),r&&r.forEach((e=>e(c))),a)return a(c)},u=setTimeout(s.bind(null,void 0,{type:"timeout",target:b}),12e4);b.onerror=s.bind(null,b.onerror),b.onload=s.bind(null,b.onload),o&&document.head.appendChild(b)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.p="/solace-agent-mesh/",d.gca=function(e){return e={17896441:"8401",85387663:"665",beecea0d:"246","166ab619":"515",ced92a13:"817","768e31b0":"1095","664b740a":"1257","0e682baa":"1430","442a8107":"1442","1023fc19":"1462","945fb41e":"1721","04989206":"1935",c2c06897:"1955","1c6e87d2":"2037","483cef9a":"2274",fbfa3e75:"2424",cc969b05:"2476",bac0be12:"2807",f284c35a:"3011",ae0e903d:"3486",f897a61a:"3514","2a9cab12":"3520","42b3f8d8":"3974",aba87c2f:"4651","1523c6b4":"4777",ae4415af:"4806",cee5d587:"4851",cd3d4052:"4854",b7006a3a:"5449","55f47984":"5627",aba21aa0:"5742",c835a94d:"6068",a3a92b25:"6634","9a09e75d":"6719",a7bd4aaa:"7098","5b4258a4":"7132","4c2787c2":"7289","75384d09":"8055","3d406171":"8357","21ceee5f":"8423",a94703ab:"9048","332e10b5":"9150","9eff14a2":"9639","5e95c892":"9647"}[e]||e,d.p+d.u(e)},(()=>{var e={5354:0,1869:0};d.f.j=(a,c)=>{var t=d.o(e,a)?e[a]:void 0;if(0!==t)if(t)c.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((c,r)=>t=e[a]=[c,r]));c.push(t[2]=r);var f=d.p+d.u(a),b=new Error;d.l(f,(c=>{if(d.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=c&&("load"===c.type?"missing":c.type),f=c&&c.target&&c.target.src;b.message="Loading chunk "+a+" failed.\n("+r+": "+f+")",b.name="ChunkLoadError",b.type=r,b.request=f,t[1](b)}}),"chunk-"+a,a)}},d.O.j=a=>0===e[a];var a=(a,c)=>{var t,r,f=c[0],b=c[1],o=c[2],n=0;if(f.some((a=>0!==e[a]))){for(t in b)d.o(b,t)&&(d.m[t]=b[t]);if(o)var i=o(d)}for(a&&a(c);n<f.length;n++)r=f[n],d.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return d.O(i)},c=self.webpackChunksolace_agenitc_mesh_docs=self.webpackChunksolace_agenitc_mesh_docs||[];c.forEach(a.bind(null,0)),c.push=a.bind(null,c.push.bind(c))})()})();
1
+ (()=>{"use strict";var e,a,c,t,r,f={},b={};function d(e){var a=b[e];if(void 0!==a)return a.exports;var c=b[e]={id:e,loaded:!1,exports:{}};return f[e].call(c.exports,c,c.exports,d),c.loaded=!0,c.exports}d.m=f,d.c=b,e=[],d.O=(a,c,t,r)=>{if(!c){var f=1/0;for(i=0;i<e.length;i++){c=e[i][0],t=e[i][1],r=e[i][2];for(var b=!0,o=0;o<c.length;o++)(!1&r||f>=r)&&Object.keys(d.O).every((e=>d.O[e](c[o])))?c.splice(o--,1):(b=!1,r<f&&(f=r));if(b){e.splice(i--,1);var n=t();void 0!==n&&(a=n)}}return a}r=r||0;for(var i=e.length;i>0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[c,t,r]},d.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return d.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);d.r(r);var f={};a=a||[null,c({}),c([]),c(c)];for(var b=2&t&&e;"object"==typeof b&&!~a.indexOf(b);b=c(b))Object.getOwnPropertyNames(b).forEach((a=>f[a]=()=>e[a]));return f.default=()=>e,d.d(r,f),r},d.d=(e,a)=>{for(var c in a)d.o(a,c)&&!d.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((a,c)=>(d.f[c](e,a),a)),[])),d.u=e=>"assets/js/"+({246:"beecea0d",515:"166ab619",665:"85387663",817:"ced92a13",1095:"768e31b0",1257:"664b740a",1430:"0e682baa",1442:"442a8107",1462:"1023fc19",1721:"945fb41e",1935:"04989206",1955:"c2c06897",2037:"1c6e87d2",2274:"483cef9a",2424:"fbfa3e75",2476:"cc969b05",2807:"bac0be12",3011:"f284c35a",3486:"ae0e903d",3514:"f897a61a",3520:"2a9cab12",3974:"42b3f8d8",4651:"aba87c2f",4777:"1523c6b4",4806:"ae4415af",4851:"cee5d587",4854:"cd3d4052",5449:"b7006a3a",5627:"55f47984",5742:"aba21aa0",6068:"c835a94d",6634:"a3a92b25",6719:"9a09e75d",7098:"a7bd4aaa",7132:"5b4258a4",7289:"4c2787c2",8055:"75384d09",8357:"3d406171",8401:"17896441",8423:"21ceee5f",9048:"a94703ab",9150:"332e10b5",9639:"9eff14a2",9647:"5e95c892"}[e]||e)+"."+{149:"b797a808",165:"6a39807d",246:"ae31f6a7",375:"708d48db",515:"e8f3a7c7",665:"6bf41934",817:"fb92e7ca",1001:"0182a8bd",1039:"0bd46aa1",1095:"9abcdc48",1257:"ba305a89",1430:"da822665",1442:"b5c2532a",1462:"8a8a9309",1721:"abf2be91",1935:"b9dfe831",1955:"87cb1f47",2037:"43771adc",2130:"ab9fd314",2237:"5e477fc6",2274:"8d318c2f",2334:"622a6395",2424:"aca209c9",2476:"feef7dcc",2807:"27ee2c26",3011:"cad4dbf2",3219:"adc1d663",3486:"abca774a",3514:"bc634a3e",3520:"2afaee76",3624:"b524e433",3834:"b6cd790e",3974:"508ae8db",4250:"95455b28",4356:"d169ab5b",4458:"518e66fa",4488:"c7cc3442",4494:"6ee23046",4651:"4ddf32f2",4777:"2645ef68",4806:"24cdc514",4851:"f1e1ca86",4854:"a19e7d78",4855:"fc4444b6",4866:"22daefc0",4950:"ca4caeda",5388:"7a136447",5449:"73a79653",5607:"081356f8",5627:"bcd00a86",5742:"c42a534c",5864:"b0d0e9de",6068:"ce21f0bf",6143:"0a1464c9",6395:"e9c73649",6634:"1d029b81",6719:"92de8cf5",6796:"51d2c9b7",6976:"379be23b",6978:"ee0b945c",7040:"cb436723",7098:"2204d2f7",7132:"dff11eca",7195:"412f418a",7280:"3fb73bdb",7289:"fc6804f2",7845:"e33e7c4c",7900:"69516146",8055:"abdf9cf9",8356:"8a379c04",8357:"5560fdf9",8401:"a5e82f9b",8423:"3bf39250",8567:"4732c6b7",8573:"cb04eda5",8577:"1d54e766",8591:"d7c16be6",8709:"7ecd4047",8731:"49e930c2",8908:"f9d1b506",9048:"0438dbc2",9150:"f7629851",9157:"b4093d07",9278:"a4fd875d",9616:"b75c2f6d",9639:"d62aad71",9647:"558d5167",9793:"c6d16376"}[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="solace-agenitc-mesh-docs:",d.l=(e,a,c,f)=>{if(t[e])t[e].push(a);else{var b,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var l=n[i];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==r+c){b=l;break}}b||(o=!0,(b=document.createElement("script")).charset="utf-8",b.timeout=120,d.nc&&b.setAttribute("nonce",d.nc),b.setAttribute("data-webpack",r+c),b.src=e),t[e]=[a];var s=(a,c)=>{b.onerror=b.onload=null,clearTimeout(u);var r=t[e];if(delete t[e],b.parentNode&&b.parentNode.removeChild(b),r&&r.forEach((e=>e(c))),a)return a(c)},u=setTimeout(s.bind(null,void 0,{type:"timeout",target:b}),12e4);b.onerror=s.bind(null,b.onerror),b.onload=s.bind(null,b.onload),o&&document.head.appendChild(b)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.p="/solace-agent-mesh/",d.gca=function(e){return e={17896441:"8401",85387663:"665",beecea0d:"246","166ab619":"515",ced92a13:"817","768e31b0":"1095","664b740a":"1257","0e682baa":"1430","442a8107":"1442","1023fc19":"1462","945fb41e":"1721","04989206":"1935",c2c06897:"1955","1c6e87d2":"2037","483cef9a":"2274",fbfa3e75:"2424",cc969b05:"2476",bac0be12:"2807",f284c35a:"3011",ae0e903d:"3486",f897a61a:"3514","2a9cab12":"3520","42b3f8d8":"3974",aba87c2f:"4651","1523c6b4":"4777",ae4415af:"4806",cee5d587:"4851",cd3d4052:"4854",b7006a3a:"5449","55f47984":"5627",aba21aa0:"5742",c835a94d:"6068",a3a92b25:"6634","9a09e75d":"6719",a7bd4aaa:"7098","5b4258a4":"7132","4c2787c2":"7289","75384d09":"8055","3d406171":"8357","21ceee5f":"8423",a94703ab:"9048","332e10b5":"9150","9eff14a2":"9639","5e95c892":"9647"}[e]||e,d.p+d.u(e)},(()=>{var e={5354:0,1869:0};d.f.j=(a,c)=>{var t=d.o(e,a)?e[a]:void 0;if(0!==t)if(t)c.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((c,r)=>t=e[a]=[c,r]));c.push(t[2]=r);var f=d.p+d.u(a),b=new Error;d.l(f,(c=>{if(d.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=c&&("load"===c.type?"missing":c.type),f=c&&c.target&&c.target.src;b.message="Loading chunk "+a+" failed.\n("+r+": "+f+")",b.name="ChunkLoadError",b.type=r,b.request=f,t[1](b)}}),"chunk-"+a,a)}},d.O.j=a=>0===e[a];var a=(a,c)=>{var t,r,f=c[0],b=c[1],o=c[2],n=0;if(f.some((a=>0!==e[a]))){for(t in b)d.o(b,t)&&(d.m[t]=b[t]);if(o)var i=o(d)}for(a&&a(c);n<f.length;n++)r=f[n],d.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return d.O(i)},c=self.webpackChunksolace_agenitc_mesh_docs=self.webpackChunksolace_agenitc_mesh_docs||[];c.forEach(a.bind(null,0)),c.push=a.bind(null,c.push.bind(c))})()})();
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.8.1">
6
6
  <title data-rh="true">Installation | Solace Agent Mesh</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://solacelabs.github.io/solace-agent-mesh/img/logo.png"><meta data-rh="true" name="twitter:image" content="https://solacelabs.github.io/solace-agent-mesh/img/logo.png"><meta data-rh="true" property="og:url" content="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/Enterprise/installation"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Installation | Solace Agent Mesh"><meta data-rh="true" name="description" content="Prepare the Enterprise Image"><meta data-rh="true" property="og:description" content="Prepare the Enterprise Image"><link data-rh="true" rel="icon" href="/solace-agent-mesh/img/logo.png"><link data-rh="true" rel="canonical" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/Enterprise/installation"><link data-rh="true" rel="alternate" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/Enterprise/installation" hreflang="en"><link data-rh="true" rel="alternate" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/Enterprise/installation" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Installation","item":"https://solacelabs.github.io/solace-agent-mesh/docs/documentation/Enterprise/installation"}]}</script><link rel="stylesheet" href="/solace-agent-mesh/assets/css/styles.906a1503.css">
7
- <script src="/solace-agent-mesh/assets/js/runtime~main.aad1f874.js" defer="defer"></script>
8
- <script src="/solace-agent-mesh/assets/js/main.e82b32e6.js" defer="defer"></script>
7
+ <script src="/solace-agent-mesh/assets/js/runtime~main.3188e049.js" defer="defer"></script>
8
+ <script src="/solace-agent-mesh/assets/js/main.1de3da6a.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
@@ -24,6 +24,6 @@
24
24
  <div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">docker run -itd -p 8000:8000 \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e LLM_SERVICE_API_KEY=&quot;&lt;YOUR_LLM_TOKEN&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e LLM_SERVICE_ENDPOINT=&quot;&lt;YOUR_LLM_SERVICE_ENDPOINT&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e LLM_SERVICE_PLANNING_MODEL_NAME=&quot;&lt;YOUR_MODEL_NAME&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e LLM_SERVICE_GENERAL_MODEL_NAME=&quot;&lt;YOUR_MODEL_NAME&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e NAMESPACE=&quot;&lt;YOUR_NAMESPACE&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e SOLACE_DEV_MODE=&quot;true&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> --name sam-ent-dev \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">solace-agent-mesh-enterprise:&lt;tag&gt;</span><br></span></code></pre></div></div>
25
25
  <h3 class="anchor anchorWithStickyNavbar_LWe7" id="production-use-case">Production Use Case<a href="#production-use-case" class="hash-link" aria-label="Direct link to Production Use Case" title="Direct link to Production Use Case">​</a></h3>
26
26
  <div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">docker run -itd -p 8000:8000 \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e LLM_SERVICE_API_KEY=&quot;&lt;YOUR_LLM_TOKEN&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e LLM_SERVICE_ENDPOINT=&quot;&lt;YOUR_LLM_SERVICE_ENDPOINT&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e LLM_SERVICE_PLANNING_MODEL_NAME=&quot;&lt;YOUR_MODEL_NAME&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e LLM_SERVICE_GENERAL_MODEL_NAME=&quot;&lt;YOUR_MODEL_NAME&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e NAMESPACE=&quot;&lt;YOUR_NAMESPACE&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e SOLACE_DEV_MODE=&quot;false&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e SOLACE_BROKER_URL=&quot;&lt;YOUR_BROKER_URL&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e SOLACE_BROKER_VPN=&quot;&lt;YOUR_BROKER_VPN&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e SOLACE_BROKER_USERNAME=&quot;&lt;YOUR_BROKER_USERNAME&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e SOLACE_BROKER_PASSWORD=&quot;&lt;YOUR_BROKER_PASSWORD&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> --name sam-ent-prod \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">solace-agent-mesh-enterprise:&lt;tag&gt;</span><br></span></code></pre></div></div>
27
- <p>You can then access Solace Agent Mesh Enterprise UI through <a href="http://localhost:8000" target="_blank" rel="noopener noreferrer">http://localhost:8000</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/SolaceLabs/solace-agent-mesh/edit/main/docs/docs/documentation/Enterprise/installation.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/solace-agent-mesh/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-technical-migration-map"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">A2A Technical Migration Map</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/solace-agent-mesh/docs/documentation/Enterprise/single-sign-on"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">SSO</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prepare-the-enterprise-image" class="table-of-contents__link toc-highlight">Prepare the Enterprise Image</a></li><li><a href="#running-solace-agent-mesh-enterprise" class="table-of-contents__link toc-highlight">Running Solace Agent Mesh Enterprise</a><ul><li><a href="#development-use-case" class="table-of-contents__link toc-highlight">Development Use Case</a></li><li><a href="#production-use-case" class="table-of-contents__link toc-highlight">Production Use Case</a></li></ul></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Solace Agent Mesh</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Documentation</a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh/" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh-core-plugins/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Official Plugins<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Company</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://solace.com/products/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Products<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/contact/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Contact<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/support/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Support<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/legal/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Privacy and Legal<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.linkedin.com/company/solacedotcom/" target="_blank" rel="noopener noreferrer" class="footer__link-item">LinkedIn<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://www.youtube.com/SolaceSystems" target="_blank" rel="noopener noreferrer" class="footer__link-item">YouTube<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://twitter.com/solacedotcom" target="_blank" rel="noopener noreferrer" class="footer__link-item">X<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--light_NVdE" width="10%" height="10%"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--dark_xIcU" width="10%" height="10%"></div><div class="footer__copyright">Solace Agent Mesh. Copyright © 2025 Solace. Version: 1.3.3</div></div></div></footer></div>
27
+ <p>You can then access Solace Agent Mesh Enterprise UI through <a href="http://localhost:8000" target="_blank" rel="noopener noreferrer">http://localhost:8000</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/SolaceLabs/solace-agent-mesh/edit/main/docs/docs/documentation/Enterprise/installation.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/solace-agent-mesh/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-technical-migration-map"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">A2A Technical Migration Map</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/solace-agent-mesh/docs/documentation/Enterprise/single-sign-on"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">SSO</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prepare-the-enterprise-image" class="table-of-contents__link toc-highlight">Prepare the Enterprise Image</a></li><li><a href="#running-solace-agent-mesh-enterprise" class="table-of-contents__link toc-highlight">Running Solace Agent Mesh Enterprise</a><ul><li><a href="#development-use-case" class="table-of-contents__link toc-highlight">Development Use Case</a></li><li><a href="#production-use-case" class="table-of-contents__link toc-highlight">Production Use Case</a></li></ul></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Solace Agent Mesh</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Documentation</a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh/" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh-core-plugins/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Official Plugins<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Company</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://solace.com/products/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Products<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/contact/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Contact<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/support/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Support<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/legal/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Privacy and Legal<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.linkedin.com/company/solacedotcom/" target="_blank" rel="noopener noreferrer" class="footer__link-item">LinkedIn<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://www.youtube.com/SolaceSystems" target="_blank" rel="noopener noreferrer" class="footer__link-item">YouTube<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://twitter.com/solacedotcom" target="_blank" rel="noopener noreferrer" class="footer__link-item">X<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--light_NVdE" width="10%" height="10%"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--dark_xIcU" width="10%" height="10%"></div><div class="footer__copyright">Solace Agent Mesh. Copyright © 2025 Solace. Version: 1.4.0</div></div></div></footer></div>
28
28
  </body>
29
29
  </html>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.8.1">
6
6
  <title data-rh="true">SSO | Solace Agent Mesh</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://solacelabs.github.io/solace-agent-mesh/img/logo.png"><meta data-rh="true" name="twitter:image" content="https://solacelabs.github.io/solace-agent-mesh/img/logo.png"><meta data-rh="true" property="og:url" content="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/Enterprise/single-sign-on"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="SSO | Solace Agent Mesh"><meta data-rh="true" name="description" content="How to enable SSO"><meta data-rh="true" property="og:description" content="How to enable SSO"><link data-rh="true" rel="icon" href="/solace-agent-mesh/img/logo.png"><link data-rh="true" rel="canonical" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/Enterprise/single-sign-on"><link data-rh="true" rel="alternate" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/Enterprise/single-sign-on" hreflang="en"><link data-rh="true" rel="alternate" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/Enterprise/single-sign-on" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"SSO","item":"https://solacelabs.github.io/solace-agent-mesh/docs/documentation/Enterprise/single-sign-on"}]}</script><link rel="stylesheet" href="/solace-agent-mesh/assets/css/styles.906a1503.css">
7
- <script src="/solace-agent-mesh/assets/js/runtime~main.aad1f874.js" defer="defer"></script>
8
- <script src="/solace-agent-mesh/assets/js/main.e82b32e6.js" defer="defer"></script>
7
+ <script src="/solace-agent-mesh/assets/js/runtime~main.3188e049.js" defer="defer"></script>
8
+ <script src="/solace-agent-mesh/assets/js/main.1de3da6a.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
@@ -20,6 +20,6 @@ Note that the Azure provider is configured as the default option.</p><div class=
20
20
  <div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1"><p>You may need to include <code>--platform linux/amd64</code> depending on the host machine you’re using.</p></div></div>
21
21
  <div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">docker run -itd -p 8000:8000 -p 9000:9000 \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e LLM_SERVICE_API_KEY=&quot;&lt;YOUR_LLM_TOKEN&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e LLM_SERVICE_ENDPOINT=&quot;&lt;YOUR_LLM_SERVICE_ENDPOINT&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e LLM_SERVICE_PLANNING_MODEL_NAME=&quot;&lt;YOUR_MODEL_NAME&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e LLM_SERVICE_GENERAL_MODEL_NAME=&quot;&lt;YOUR_MODEL_NAME&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e NAMESPACE=&quot;&lt;YOUR_NAMESPACE&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e SOLACE_DEV_MODE=&quot;false&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e SOLACE_BROKER_URL=&quot;&lt;YOUR_BROKER_URL&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e SOLACE_BROKER_VPN=&quot;&lt;YOUR_BROKER_VPN&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e SOLACE_BROKER_USERNAME=&quot;&lt;YOUR_BROKER_USERNAME&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e SOLACE_BROKER_PASSWORD=&quot;&lt;YOUR_BROKER_PASSWORD&gt;&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e FASTAPI_HOST=&quot;0.0.0.0&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e FASTAPI_PORT=&quot;8000&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e AZURE_TENANT_ID=&quot;xxxxxxxxx-xxxxxx-xxxxxxxx-xxxxxxxxxx&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e AZURE_CLIENT_ID=&quot;xxxxxxxxx-xxxxxx-xxxxxxxx-xxxxxxxxxx&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e AZURE_CLIENT_SECRET=&quot;xxxxxxxxx-xxxxxx-xxxxxxxx-xxxxxxxxxx&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e OAUTH2_ENABLED=&quot;true&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e OAUTH2_LOG_LEVEL=&quot;DEBUG&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e OAUTH2_DEV_MODE=&quot;true&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e OAUTH2_HOST=&quot;0.0.0.0&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e OAUTH2_PORT=&quot;9000&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e FRONTEND_USE_AUTHORIZATION=&quot;true&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e FRONTEND_REDIRECT_URL=&quot;http://localhost:8000&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e FRONTEND_AUTH_LOGIN_URL=&quot;http://localhost:8000/api/v1/auth/login&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e EXTERNAL_AUTH_SERVICE_URL=&quot;http://localhost:9000&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e EXTERNAL_AUTH_PROVIDER=&quot;azure&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -e EXTERNAL_AUTH_CALLBACK=&quot;http://localhost:8000/api/v1/auth/callback&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> -v &lt;YOUR_NAMED_DOCKER_VOLUME&gt;:/app/config/sso_vol/ \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> --name sam-ent-prod-sso \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">solace-agent-mesh-enterprise:&lt;tag&gt; run config/sso_vol/oauth2_server.yaml config/webui_backend.yaml config/a2a_orchestrator.yaml config/a2a_agents.yaml</span><br></span></code></pre></div></div>
22
22
  <p>You can then access Solace Agent Mesh Enterprise UI through <a href="http://localhost:8000" target="_blank" rel="noopener noreferrer">http://localhost:8000</a></p>
23
- <details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Configuration Options</summary><div><div class="collapsibleContent_i85q"><p><strong>Specify the hostname and port for the UI running in the docker container. The main UI runs on port 8000 by default. Using 0.0.0.0 as the host allows external access to the container.</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e FASTAPI_HOST=&quot;0.0.0.0&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e FASTAPI_PORT=&quot;8000&quot; \ </span><br></span></code></pre></div></div><p><strong>Enable single sign-on processing on the frontend.</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e FRONTEND_USE_AUTHORIZATION=&quot;true&quot; \</span><br></span></code></pre></div></div><p><strong>Specify the main URL of the UI. For instance, this could be <a href="https://www.example.com" target="_blank" rel="noopener noreferrer">https://www.example.com</a></strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e FRONTEND_REDIRECT_URL=&quot;http://localhost:8000&quot; \</span><br></span></code></pre></div></div><p><strong>Set the login URL used by the main UI. For instance, this could be <a href="https://www.example.com/api/v1/auth/login" target="_blank" rel="noopener noreferrer">https://www.example.com/api/v1/auth/login</a></strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e FRONTEND_AUTH_LOGIN_URL=&quot;http://localhost:8000/api/v1/auth/login&quot; \</span><br></span></code></pre></div></div><p><strong>Enable the OAUTH2 server and set the log level</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e OAUTH2_ENABLED=&quot;true&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e OAUTH2_LOG_LEVEL=&quot;DEBUG&quot; \</span><br></span></code></pre></div></div><p><strong>Specify the hostname and port for the authorization server running in the docker container. Using 0.0.0.0 as the host allows external access to the container.</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e OAUTH2_HOST=&quot;0.0.0.0&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e OAUTH2_PORT=&quot;9000&quot; \</span><br></span></code></pre></div></div><p><strong>Specify whether the Oauth2 checks use dev mode. When dev mode is true the following environment variables are added to allow http access and relax the token scope. This MUST be set false in a production environment.</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e OAUTH2_DEV_MODE=&quot;true&quot; \</span><br></span></code></pre></div></div><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">OAUTHLIB_RELAX_TOKEN_SCOPE=&quot;1&quot;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">OAUTHLIB_INSECURE_TRANSPORT=&quot;1&quot;</span><br></span></code></pre></div></div><p><strong>Configure the environment variables for your chosen authentication provider. Refer to the oauth2_config.yaml file to identify the required variables. For example, with Azure set the following</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e AZURE_TENANT_ID=&quot;xxxxxxxxx-xxxxxx-xxxxxxxx-xxxxxxxxxx&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e AZURE_CLIENT_ID=&quot;xxxxxxxxx-xxxxxx-xxxxxxxx-xxxxxxxxxx&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e AZURE_CLIENT_SECRET=&quot;xxxxxxxxx-xxxxxx-xxxxxxxx-xxxxxxxxxx&quot; \</span><br></span></code></pre></div></div><p><strong>Configure the authorization server&#x27;s public URL (accessible from outside the Docker container) and specify the OAuth2 provider’s name from oauth2_config.yaml (this example uses the azure profile):</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e EXTERNAL_AUTH_SERVICE_URL=&quot;http://localhost:9000&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e EXTERNAL_AUTH_PROVIDER=&quot;azure&quot; \</span><br></span></code></pre></div></div><p><strong>Lastly, set the callback URL that your auth provider will use to redirect with the auth code. For instance, this could be <a href="https://www.example.com/api/v1/auth/callback" target="_blank" rel="noopener noreferrer">https://www.example.com/api/v1/auth/callback</a></strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e EXTERNAL_AUTH_CALLBACK=&quot;http://localhost:8000/api/v1/auth/callback&quot; \</span><br></span></code></pre></div></div><p><strong>Note that both the main UI and authorization server ports must be mapped to the host machine, as shown in the Docker run command above:</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-p 8000:8000 -p 9000:9000 \</span><br></span></code></pre></div></div><p><strong>The oauth 2 configuration files must be mounted inside the container:</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-v &lt;YOUR_NAMED_DOCKER_VOLUME&gt;:/app/config/sso_vol/ \</span><br></span></code></pre></div></div></div></div></details></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/SolaceLabs/solace-agent-mesh/edit/main/docs/docs/documentation/Enterprise/single-sign-on.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/solace-agent-mesh/docs/documentation/Enterprise/installation"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Installation</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#how-to-enable-sso" class="table-of-contents__link toc-highlight">How to enable SSO</a></li><li><a href="#running-solace-agent-mesh-enterprise-with-sso-enabled" class="table-of-contents__link toc-highlight">Running Solace Agent Mesh Enterprise with SSO enabled</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Solace Agent Mesh</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Documentation</a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh/" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh-core-plugins/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Official Plugins<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Company</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://solace.com/products/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Products<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/contact/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Contact<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/support/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Support<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/legal/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Privacy and Legal<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.linkedin.com/company/solacedotcom/" target="_blank" rel="noopener noreferrer" class="footer__link-item">LinkedIn<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://www.youtube.com/SolaceSystems" target="_blank" rel="noopener noreferrer" class="footer__link-item">YouTube<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://twitter.com/solacedotcom" target="_blank" rel="noopener noreferrer" class="footer__link-item">X<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--light_NVdE" width="10%" height="10%"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--dark_xIcU" width="10%" height="10%"></div><div class="footer__copyright">Solace Agent Mesh. Copyright © 2025 Solace. Version: 1.3.3</div></div></div></footer></div>
23
+ <details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Configuration Options</summary><div><div class="collapsibleContent_i85q"><p><strong>Specify the hostname and port for the UI running in the docker container. The main UI runs on port 8000 by default. Using 0.0.0.0 as the host allows external access to the container.</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e FASTAPI_HOST=&quot;0.0.0.0&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e FASTAPI_PORT=&quot;8000&quot; \ </span><br></span></code></pre></div></div><p><strong>Enable single sign-on processing on the frontend.</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e FRONTEND_USE_AUTHORIZATION=&quot;true&quot; \</span><br></span></code></pre></div></div><p><strong>Specify the main URL of the UI. For instance, this could be <a href="https://www.example.com" target="_blank" rel="noopener noreferrer">https://www.example.com</a></strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e FRONTEND_REDIRECT_URL=&quot;http://localhost:8000&quot; \</span><br></span></code></pre></div></div><p><strong>Set the login URL used by the main UI. For instance, this could be <a href="https://www.example.com/api/v1/auth/login" target="_blank" rel="noopener noreferrer">https://www.example.com/api/v1/auth/login</a></strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e FRONTEND_AUTH_LOGIN_URL=&quot;http://localhost:8000/api/v1/auth/login&quot; \</span><br></span></code></pre></div></div><p><strong>Enable the OAUTH2 server and set the log level</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e OAUTH2_ENABLED=&quot;true&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e OAUTH2_LOG_LEVEL=&quot;DEBUG&quot; \</span><br></span></code></pre></div></div><p><strong>Specify the hostname and port for the authorization server running in the docker container. Using 0.0.0.0 as the host allows external access to the container.</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e OAUTH2_HOST=&quot;0.0.0.0&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e OAUTH2_PORT=&quot;9000&quot; \</span><br></span></code></pre></div></div><p><strong>Specify whether the Oauth2 checks use dev mode. When dev mode is true the following environment variables are added to allow http access and relax the token scope. This MUST be set false in a production environment.</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e OAUTH2_DEV_MODE=&quot;true&quot; \</span><br></span></code></pre></div></div><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">OAUTHLIB_RELAX_TOKEN_SCOPE=&quot;1&quot;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">OAUTHLIB_INSECURE_TRANSPORT=&quot;1&quot;</span><br></span></code></pre></div></div><p><strong>Configure the environment variables for your chosen authentication provider. Refer to the oauth2_config.yaml file to identify the required variables. For example, with Azure set the following</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e AZURE_TENANT_ID=&quot;xxxxxxxxx-xxxxxx-xxxxxxxx-xxxxxxxxxx&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e AZURE_CLIENT_ID=&quot;xxxxxxxxx-xxxxxx-xxxxxxxx-xxxxxxxxxx&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e AZURE_CLIENT_SECRET=&quot;xxxxxxxxx-xxxxxx-xxxxxxxx-xxxxxxxxxx&quot; \</span><br></span></code></pre></div></div><p><strong>Configure the authorization server&#x27;s public URL (accessible from outside the Docker container) and specify the OAuth2 provider’s name from oauth2_config.yaml (this example uses the azure profile):</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e EXTERNAL_AUTH_SERVICE_URL=&quot;http://localhost:9000&quot; \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e EXTERNAL_AUTH_PROVIDER=&quot;azure&quot; \</span><br></span></code></pre></div></div><p><strong>Lastly, set the callback URL that your auth provider will use to redirect with the auth code. For instance, this could be <a href="https://www.example.com/api/v1/auth/callback" target="_blank" rel="noopener noreferrer">https://www.example.com/api/v1/auth/callback</a></strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-e EXTERNAL_AUTH_CALLBACK=&quot;http://localhost:8000/api/v1/auth/callback&quot; \</span><br></span></code></pre></div></div><p><strong>Note that both the main UI and authorization server ports must be mapped to the host machine, as shown in the Docker run command above:</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-p 8000:8000 -p 9000:9000 \</span><br></span></code></pre></div></div><p><strong>The oauth 2 configuration files must be mounted inside the container:</strong></p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-v &lt;YOUR_NAMED_DOCKER_VOLUME&gt;:/app/config/sso_vol/ \</span><br></span></code></pre></div></div></div></div></details></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/SolaceLabs/solace-agent-mesh/edit/main/docs/docs/documentation/Enterprise/single-sign-on.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/solace-agent-mesh/docs/documentation/Enterprise/installation"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Installation</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#how-to-enable-sso" class="table-of-contents__link toc-highlight">How to enable SSO</a></li><li><a href="#running-solace-agent-mesh-enterprise-with-sso-enabled" class="table-of-contents__link toc-highlight">Running Solace Agent Mesh Enterprise with SSO enabled</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Solace Agent Mesh</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Documentation</a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh/" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh-core-plugins/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Official Plugins<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Company</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://solace.com/products/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Products<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/contact/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Contact<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/support/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Support<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/legal/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Privacy and Legal<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.linkedin.com/company/solacedotcom/" target="_blank" rel="noopener noreferrer" class="footer__link-item">LinkedIn<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://www.youtube.com/SolaceSystems" target="_blank" rel="noopener noreferrer" class="footer__link-item">YouTube<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://twitter.com/solacedotcom" target="_blank" rel="noopener noreferrer" class="footer__link-item">X<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--light_NVdE" width="10%" height="10%"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--dark_xIcU" width="10%" height="10%"></div><div class="footer__copyright">Solace Agent Mesh. Copyright © 2025 Solace. Version: 1.4.0</div></div></div></footer></div>
24
24
  </body>
25
25
  </html>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.8.1">
6
6
  <title data-rh="true">Solace Agent Mesh Gateway Migration Guide: Upgrading to the A2A SDK | Solace Agent Mesh</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://solacelabs.github.io/solace-agent-mesh/img/logo.png"><meta data-rh="true" name="twitter:image" content="https://solacelabs.github.io/solace-agent-mesh/img/logo.png"><meta data-rh="true" property="og:url" content="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-gateway-upgrade-to-0.3.0"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Solace Agent Mesh Gateway Migration Guide: Upgrading to the A2A SDK | Solace Agent Mesh"><meta data-rh="true" name="description" content="This guide is for developers who have built or are maintaining a custom Solace Agent Mesh gateway. A recent architectural update has aligned Solace Agent Mesh with the official Agent-to-Agent (A2A) protocol"><meta data-rh="true" property="og:description" content="This guide is for developers who have built or are maintaining a custom Solace Agent Mesh gateway. A recent architectural update has aligned Solace Agent Mesh with the official Agent-to-Agent (A2A) protocol"><link data-rh="true" rel="icon" href="/solace-agent-mesh/img/logo.png"><link data-rh="true" rel="canonical" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-gateway-upgrade-to-0.3.0"><link data-rh="true" rel="alternate" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-gateway-upgrade-to-0.3.0" hreflang="en"><link data-rh="true" rel="alternate" href="https://solacelabs.github.io/solace-agent-mesh/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-gateway-upgrade-to-0.3.0" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Solace Agent Mesh Gateway Migration Guide: Upgrading to the A2A SDK","item":"https://solacelabs.github.io/solace-agent-mesh/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-gateway-upgrade-to-0.3.0"}]}</script><link rel="stylesheet" href="/solace-agent-mesh/assets/css/styles.906a1503.css">
7
- <script src="/solace-agent-mesh/assets/js/runtime~main.aad1f874.js" defer="defer"></script>
8
- <script src="/solace-agent-mesh/assets/js/main.e82b32e6.js" defer="defer"></script>
7
+ <script src="/solace-agent-mesh/assets/js/runtime~main.3188e049.js" defer="defer"></script>
8
+ <script src="/solace-agent-mesh/assets/js/main.1de3da6a.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
@@ -100,6 +100,6 @@
100
100
  <details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary><strong>_translate_external_input</strong></summary><div><div class="collapsibleContent_i85q"><p><strong>Before:</strong></p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">from</span><span class="token plain"> solace_agent_mesh</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">common</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">types </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> Part </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">as</span><span class="token plain"> A2APart</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> TextPart</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> FilePart</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> FileContent </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">async</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">_translate_external_input</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> external_event</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Any</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token plain"> Tuple</span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token builtin" style="color:rgb(189, 147, 249)">str</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> List</span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain">A2APart</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> Dict</span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token builtin" style="color:rgb(189, 147, 249)">str</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> Any</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># ... </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> a2a_parts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> List</span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain">A2APart</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"> </span><span class="token operator">=</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># Create a file part with a URI </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> uri </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;artifact://...&quot;</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> a2a_parts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">append</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> FilePart</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token builtin" style="color:rgb(189, 147, 249)">file</span><span class="token operator">=</span><span class="token plain">FileContent</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">name</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">&quot;report.pdf&quot;</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> uri</span><span class="token operator">=</span><span class="token plain">uri</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># Create a text part </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> prompt </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;Summarize the attached file.&quot;</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> a2a_parts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">append</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">TextPart</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">text</span><span class="token operator">=</span><span class="token plain">prompt</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">return</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;summary_agent&quot;</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> a2a_parts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"> </span><br></span></code></pre></div></div><p><strong>After:</strong></p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">from</span><span class="token plain"> solace_agent_mesh</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">common </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> a2a </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">from</span><span class="token plain"> solace_agent_mesh</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">common</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">a2a </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> ContentPart </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">async</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">_translate_external_input</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> external_event</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Any</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token plain"> Tuple</span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token builtin" style="color:rgb(189, 147, 249)">str</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> List</span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain">ContentPart</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> Dict</span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token builtin" style="color:rgb(189, 147, 249)">str</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> Any</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># ... </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> a2a_parts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> List</span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain">ContentPart</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"> </span><span class="token operator">=</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># Create a file part with a URI using the helper </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> uri </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;artifact://...&quot;</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> file_part </span><span class="token operator">=</span><span class="token plain"> a2a</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">create_file_part_from_uri</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">uri</span><span class="token operator">=</span><span class="token plain">uri</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> name</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">&quot;report.pdf&quot;</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> a2a_parts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">append</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">file_part</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># Create a text part using the helper </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> prompt </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;Summarize the attached file.&quot;</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> text_part </span><span class="token operator">=</span><span class="token plain"> a2a</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">create_text_part</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">text</span><span class="token operator">=</span><span class="token plain">prompt</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> a2a_parts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">append</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">text_part</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">return</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;summary_agent&quot;</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> a2a_parts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"> </span><br></span></code></pre></div></div></div></div></details>
101
101
  <h3 class="anchor anchorWithStickyNavbar_LWe7" id="example-2-sending-a-final-response">Example 2: Sending a Final Response<a href="#example-2-sending-a-final-response" class="hash-link" aria-label="Direct link to Example 2: Sending a Final Response" title="Direct link to Example 2: Sending a Final Response">​</a></h3>
102
102
  <p>This example shows how to process a final <code>Task</code> object.</p>
103
- <details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary><strong>_send_final_response_to_external</strong></summary><div><div class="collapsibleContent_i85q"><p><strong>Before:</strong></p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">from</span><span class="token plain"> solace_agent_mesh</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">common</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">types </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> Task</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> TaskState</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> TextPart </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">async</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">_send_final_response_to_external</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> context</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Dict</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Task</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token plain"> </span><span class="token boolean">None</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> task_id </span><span class="token operator">=</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token builtin" style="color:rgb(189, 147, 249)">id</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> final_status_text </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;:checkered_flag: Task complete.&quot;</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">status</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">state </span><span class="token operator">==</span><span class="token plain"> TaskState</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">FAILED</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> error_message_text </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;&quot;</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">status</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">message </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">and</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">status</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">message</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">parts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">for</span><span class="token plain"> part </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">in</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">status</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">message</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">parts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(189, 147, 249)">isinstance</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">part</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> TextPart</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> error_message_text </span><span class="token operator">=</span><span class="token plain"> part</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">text </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">break</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> final_status_text </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:rgb(255, 121, 198)">f&quot;:x: Error: Task failed. </span><span class="token string-interpolation interpolation punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token string-interpolation interpolation">error_message_text</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token string-interpolation string" style="color:rgb(255, 121, 198)">&quot;</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">strip</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># ... use final_status_text and task_id </span><br></span></code></pre></div></div><p><strong>After:</strong></p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">from</span><span class="token plain"> solace_agent_mesh</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">common </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> a2a </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">from</span><span class="token plain"> a2a</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">types </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> Task</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> TaskState </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">async</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">_send_final_response_to_external</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> context</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Dict</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Task</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token plain"> </span><span class="token boolean">None</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># Use helpers to safely access properties </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> task_id </span><span class="token operator">=</span><span class="token plain"> a2a</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">get_task_id</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> task_status </span><span class="token operator">=</span><span class="token plain"> a2a</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">get_task_status</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> final_status_text </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;:checkered_flag: Task complete.&quot;</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> task_status </span><span class="token operator">==</span><span class="token plain"> TaskState</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">failed</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> error_message_text </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;&quot;</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">status </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">and</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">status</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">message</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># Use helper to extract all text from the message </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> error_message_text </span><span class="token operator">=</span><span class="token plain"> a2a</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">get_text_from_message</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">status</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">message</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> final_status_text </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:rgb(255, 121, 198)">f&quot;:x: Error: Task failed. </span><span class="token string-interpolation interpolation punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token string-interpolation interpolation">error_message_text</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token string-interpolation string" style="color:rgb(255, 121, 198)">&quot;</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">strip</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># ... use final_status_text and task_id </span><br></span></code></pre></div></div></div></div></details></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/SolaceLabs/solace-agent-mesh/edit/main/docs/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-gateway-upgrade-to-0.3.0.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/solace-agent-mesh/docs/documentation/tutorials/rag-integration"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">RAG Integration</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/solace-agent-mesh/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-technical-migration-map"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">A2A Technical Migration Map</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#1-why-the-change" class="table-of-contents__link toc-highlight">1. Why the Change?</a></li><li><a href="#2-core-conceptual-changes" class="table-of-contents__link toc-highlight">2. Core Conceptual Changes</a><ul><li><a href="#the-a2a-helper-layer-the-new-best-practice" class="table-of-contents__link toc-highlight">The <code>a2a</code> Helper Layer: The New Best Practice</a></li><li><a href="#type-system-migration" class="table-of-contents__link toc-highlight">Type System Migration</a></li><li><a href="#accessing-object-properties" class="table-of-contents__link toc-highlight">Accessing Object Properties</a></li><li><a href="#changes-to-basegatewaycomponent" class="table-of-contents__link toc-highlight">Changes to <code>BaseGatewayComponent</code></a></li></ul></li><li><a href="#3-practical-migration-checklist" class="table-of-contents__link toc-highlight">3. Practical Migration Checklist</a></li><li><a href="#4-code-examples-before--after" class="table-of-contents__link toc-highlight">4. Code Examples: Before &amp; After</a><ul><li><a href="#example-1-translating-external-input" class="table-of-contents__link toc-highlight">Example 1: Translating External Input</a></li><li><a href="#example-2-sending-a-final-response" class="table-of-contents__link toc-highlight">Example 2: Sending a Final Response</a></li></ul></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Solace Agent Mesh</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Documentation</a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh/" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh-core-plugins/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Official Plugins<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Company</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://solace.com/products/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Products<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/contact/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Contact<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/support/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Support<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/legal/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Privacy and Legal<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.linkedin.com/company/solacedotcom/" target="_blank" rel="noopener noreferrer" class="footer__link-item">LinkedIn<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://www.youtube.com/SolaceSystems" target="_blank" rel="noopener noreferrer" class="footer__link-item">YouTube<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://twitter.com/solacedotcom" target="_blank" rel="noopener noreferrer" class="footer__link-item">X<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--light_NVdE" width="10%" height="10%"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--dark_xIcU" width="10%" height="10%"></div><div class="footer__copyright">Solace Agent Mesh. Copyright © 2025 Solace. Version: 1.3.3</div></div></div></footer></div>
103
+ <details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary><strong>_send_final_response_to_external</strong></summary><div><div class="collapsibleContent_i85q"><p><strong>Before:</strong></p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">from</span><span class="token plain"> solace_agent_mesh</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">common</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">types </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> Task</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> TaskState</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> TextPart </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">async</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">_send_final_response_to_external</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> context</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Dict</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Task</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token plain"> </span><span class="token boolean">None</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> task_id </span><span class="token operator">=</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token builtin" style="color:rgb(189, 147, 249)">id</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> final_status_text </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;:checkered_flag: Task complete.&quot;</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">status</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">state </span><span class="token operator">==</span><span class="token plain"> TaskState</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">FAILED</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> error_message_text </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;&quot;</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">status</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">message </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">and</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">status</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">message</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">parts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">for</span><span class="token plain"> part </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">in</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">status</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">message</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">parts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(189, 147, 249)">isinstance</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">part</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> TextPart</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> error_message_text </span><span class="token operator">=</span><span class="token plain"> part</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">text </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">break</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> final_status_text </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:rgb(255, 121, 198)">f&quot;:x: Error: Task failed. </span><span class="token string-interpolation interpolation punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token string-interpolation interpolation">error_message_text</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token string-interpolation string" style="color:rgb(255, 121, 198)">&quot;</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">strip</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># ... use final_status_text and task_id </span><br></span></code></pre></div></div><p><strong>After:</strong></p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">from</span><span class="token plain"> solace_agent_mesh</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">common </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> a2a </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">from</span><span class="token plain"> a2a</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">types </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> Task</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> TaskState </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">async</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">_send_final_response_to_external</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> context</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Dict</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Task</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token plain"> </span><span class="token boolean">None</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># Use helpers to safely access properties </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> task_id </span><span class="token operator">=</span><span class="token plain"> a2a</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">get_task_id</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> task_status </span><span class="token operator">=</span><span class="token plain"> a2a</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">get_task_status</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> final_status_text </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;:checkered_flag: Task complete.&quot;</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> task_status </span><span class="token operator">==</span><span class="token plain"> TaskState</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">failed</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> error_message_text </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">&quot;&quot;</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">status </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">and</span><span class="token plain"> task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">status</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">message</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># Use helper to extract all text from the message </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> error_message_text </span><span class="token operator">=</span><span class="token plain"> a2a</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">get_text_from_message</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">task_data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">status</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">message</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> final_status_text </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:rgb(255, 121, 198)">f&quot;:x: Error: Task failed. </span><span class="token string-interpolation interpolation punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token string-interpolation interpolation">error_message_text</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token string-interpolation string" style="color:rgb(255, 121, 198)">&quot;</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">strip</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># ... use final_status_text and task_id </span><br></span></code></pre></div></div></div></div></details></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/SolaceLabs/solace-agent-mesh/edit/main/docs/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-gateway-upgrade-to-0.3.0.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/solace-agent-mesh/docs/documentation/tutorials/rag-integration"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">RAG Integration</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/solace-agent-mesh/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-technical-migration-map"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">A2A Technical Migration Map</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#1-why-the-change" class="table-of-contents__link toc-highlight">1. Why the Change?</a></li><li><a href="#2-core-conceptual-changes" class="table-of-contents__link toc-highlight">2. Core Conceptual Changes</a><ul><li><a href="#the-a2a-helper-layer-the-new-best-practice" class="table-of-contents__link toc-highlight">The <code>a2a</code> Helper Layer: The New Best Practice</a></li><li><a href="#type-system-migration" class="table-of-contents__link toc-highlight">Type System Migration</a></li><li><a href="#accessing-object-properties" class="table-of-contents__link toc-highlight">Accessing Object Properties</a></li><li><a href="#changes-to-basegatewaycomponent" class="table-of-contents__link toc-highlight">Changes to <code>BaseGatewayComponent</code></a></li></ul></li><li><a href="#3-practical-migration-checklist" class="table-of-contents__link toc-highlight">3. Practical Migration Checklist</a></li><li><a href="#4-code-examples-before--after" class="table-of-contents__link toc-highlight">4. Code Examples: Before &amp; After</a><ul><li><a href="#example-1-translating-external-input" class="table-of-contents__link toc-highlight">Example 1: Translating External Input</a></li><li><a href="#example-2-sending-a-final-response" class="table-of-contents__link toc-highlight">Example 2: Sending a Final Response</a></li></ul></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Solace Agent Mesh</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/solace-agent-mesh/docs/documentation/getting-started/introduction">Documentation</a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh/" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs/solace-agent-mesh-core-plugins/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Official Plugins<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Company</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://solace.com/products/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Products<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/contact/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Contact<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/support/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Support<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://solace.com/legal/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Privacy and Legal<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.linkedin.com/company/solacedotcom/" target="_blank" rel="noopener noreferrer" class="footer__link-item">LinkedIn<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/SolaceLabs" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://www.youtube.com/SolaceSystems" target="_blank" rel="noopener noreferrer" class="footer__link-item">YouTube<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://twitter.com/solacedotcom" target="_blank" rel="noopener noreferrer" class="footer__link-item">X<svg width="13.5" height="13.5" aria-hidden="true" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--light_NVdE" width="10%" height="10%"><img src="/solace-agent-mesh/img/solace-logo.png" alt="Solace Logo" class="footer__logo themedComponent_mlkZ themedComponent--dark_xIcU" width="10%" height="10%"></div><div class="footer__copyright">Solace Agent Mesh. Copyright © 2025 Solace. Version: 1.4.0</div></div></div></footer></div>
104
104
  </body>
105
105
  </html>