solace-agent-mesh 1.0.1__py3-none-any.whl → 1.0.3__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 (117) hide show
  1. solace_agent_mesh/__init__.py +5 -0
  2. solace_agent_mesh/agent/adk/callbacks.py +23 -1
  3. solace_agent_mesh/agent/adk/filesystem_artifact_service.py +34 -41
  4. solace_agent_mesh/agent/adk/runner.py +10 -6
  5. solace_agent_mesh/agent/adk/services.py +141 -60
  6. solace_agent_mesh/agent/protocol/event_handlers.py +84 -155
  7. solace_agent_mesh/agent/sac/app.py +12 -2
  8. solace_agent_mesh/agent/sac/component.py +182 -38
  9. solace_agent_mesh/agent/sac/task_execution_context.py +15 -6
  10. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +8 -1
  11. solace_agent_mesh/agent/tools/general_agent_tools.py +4 -2
  12. solace_agent_mesh/agent/tools/peer_agent_tool.py +97 -88
  13. solace_agent_mesh/agent/utils/artifact_helpers.py +148 -14
  14. solace_agent_mesh/assets/docs/404.html +3 -3
  15. solace_agent_mesh/assets/docs/assets/js/{04989206.674a8007.js → 04989206.da8246cd.js} +1 -1
  16. solace_agent_mesh/assets/docs/assets/js/1023fc19.8e6d174c.js +1 -0
  17. solace_agent_mesh/assets/docs/assets/js/1c6e87d2.a8c5ce5a.js +1 -0
  18. solace_agent_mesh/assets/docs/assets/js/{3d406171.f722eaf5.js → 3d406171.9b081d5f.js} +1 -1
  19. solace_agent_mesh/assets/docs/assets/js/75384d09.c3991823.js +1 -0
  20. solace_agent_mesh/assets/docs/assets/js/9eff14a2.036c35ea.js +1 -0
  21. solace_agent_mesh/assets/docs/assets/js/{aba87c2f.d3e2dcc3.js → aba87c2f.a6b84da6.js} +1 -1
  22. solace_agent_mesh/assets/docs/assets/js/{ae4415af.8e279b5d.js → ae4415af.96189a93.js} +1 -1
  23. solace_agent_mesh/assets/docs/assets/js/b7006a3a.38c0cf3d.js +1 -0
  24. solace_agent_mesh/assets/docs/assets/js/bb2ef573.56931473.js +1 -0
  25. solace_agent_mesh/assets/docs/assets/js/{cc969b05.954186d4.js → cc969b05.bd3e0d6c.js} +1 -1
  26. solace_agent_mesh/assets/docs/assets/js/f284c35a.5aff74ab.js +1 -0
  27. solace_agent_mesh/assets/docs/assets/js/f897a61a.862b0514.js +1 -0
  28. solace_agent_mesh/assets/docs/assets/js/main.dc7db184.js +2 -0
  29. solace_agent_mesh/assets/docs/assets/js/runtime~main.aa687c82.js +1 -0
  30. solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +3 -3
  31. solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +3 -3
  32. solace_agent_mesh/assets/docs/docs/documentation/concepts/cli/index.html +8 -6
  33. solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +4 -4
  34. solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +3 -3
  35. solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +3 -3
  36. solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +21 -4
  37. solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +3 -3
  38. solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +3 -3
  39. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +3 -3
  40. solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +3 -3
  41. solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +3 -3
  42. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +3 -3
  43. solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +10 -10
  44. solace_agent_mesh/assets/docs/docs/documentation/tutorials/bedrock-agents/index.html +4 -4
  45. solace_agent_mesh/assets/docs/docs/documentation/tutorials/custom-agent/index.html +5 -5
  46. solace_agent_mesh/assets/docs/docs/documentation/tutorials/event-mesh-gateway/index.html +4 -4
  47. solace_agent_mesh/assets/docs/docs/documentation/tutorials/mcp-integration/index.html +4 -4
  48. solace_agent_mesh/assets/docs/docs/documentation/tutorials/mongodb-integration/index.html +5 -5
  49. solace_agent_mesh/assets/docs/docs/documentation/tutorials/rag-integration/index.html +140 -0
  50. solace_agent_mesh/assets/docs/docs/documentation/tutorials/rest-gateway/index.html +4 -4
  51. solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +4 -4
  52. solace_agent_mesh/assets/docs/docs/documentation/tutorials/sql-database/index.html +4 -4
  53. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/artifact-management/index.html +4 -4
  54. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/audio-tools/index.html +3 -3
  55. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/data-analysis-tools/index.html +5 -5
  56. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/embeds/index.html +3 -3
  57. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/index.html +3 -3
  58. solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-agents/index.html +3 -3
  59. solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-gateways/index.html +3 -3
  60. solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +3 -3
  61. solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +3 -3
  62. solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +3 -3
  63. solace_agent_mesh/assets/docs/img/solace-logo-text.svg +18 -0
  64. solace_agent_mesh/assets/docs/lunr-index-1755120326601.json +1 -0
  65. solace_agent_mesh/assets/docs/lunr-index.json +1 -1
  66. solace_agent_mesh/assets/docs/search-doc-1755120326601.json +1 -0
  67. solace_agent_mesh/assets/docs/search-doc.json +1 -1
  68. solace_agent_mesh/assets/docs/sitemap.xml +1 -1
  69. solace_agent_mesh/cli/__init__.py +1 -1
  70. solace_agent_mesh/cli/commands/init_cmd/env_step.py +8 -0
  71. solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +21 -1
  72. solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +1 -0
  73. solace_agent_mesh/cli/commands/plugin_cmd/official_registry.py +2 -1
  74. solace_agent_mesh/cli/commands/run_cmd.py +42 -3
  75. solace_agent_mesh/cli/main.py +1 -3
  76. solace_agent_mesh/client/webui/frontend/static/assets/main-BCpII1-0.css +1 -0
  77. solace_agent_mesh/client/webui/frontend/static/assets/main-DzKPMTRs.js +673 -0
  78. solace_agent_mesh/client/webui/frontend/static/index.html +2 -2
  79. solace_agent_mesh/common/exceptions.py +25 -0
  80. solace_agent_mesh/common/utils/initializer.py +51 -0
  81. solace_agent_mesh/common/utils/message_utils.py +79 -0
  82. solace_agent_mesh/config_portal/backend/common.py +1 -1
  83. solace_agent_mesh/config_portal/backend/plugin_catalog/constants.py +2 -1
  84. solace_agent_mesh/config_portal/backend/plugin_catalog/registry_manager.py +6 -2
  85. solace_agent_mesh/config_portal/backend/plugin_catalog/scraper.py +1 -5
  86. solace_agent_mesh/config_portal/backend/plugin_catalog_server.py +1 -0
  87. solace_agent_mesh/config_portal/backend/server.py +1 -0
  88. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-xSu2leR8.js +48 -0
  89. solace_agent_mesh/config_portal/frontend/static/client/assets/{manifest-d2b54a97.js → manifest-950eb3be.js} +1 -1
  90. solace_agent_mesh/config_portal/frontend/static/client/index.html +1 -1
  91. solace_agent_mesh/gateway/base/component.py +15 -2
  92. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +9 -3
  93. solace_agent_mesh/gateway/http_sse/sse_manager.py +23 -1
  94. solace_agent_mesh/templates/gateway_component_template.py +75 -44
  95. solace_agent_mesh/templates/logging_config_template.ini +64 -0
  96. solace_agent_mesh/templates/plugin_agent_config_template.yaml +1 -1
  97. {solace_agent_mesh-1.0.1.dist-info → solace_agent_mesh-1.0.3.dist-info}/METADATA +56 -46
  98. {solace_agent_mesh-1.0.1.dist-info → solace_agent_mesh-1.0.3.dist-info}/RECORD +102 -96
  99. solace_agent_mesh/assets/docs/assets/js/1023fc19.015679ca.js +0 -1
  100. solace_agent_mesh/assets/docs/assets/js/1c6e87d2.23bccffb.js +0 -1
  101. solace_agent_mesh/assets/docs/assets/js/9eff14a2.1bf8f61c.js +0 -1
  102. solace_agent_mesh/assets/docs/assets/js/b7006a3a.40b10c9d.js +0 -1
  103. solace_agent_mesh/assets/docs/assets/js/bb2ef573.207e6990.js +0 -1
  104. solace_agent_mesh/assets/docs/assets/js/f284c35a.ecc3d195.js +0 -1
  105. solace_agent_mesh/assets/docs/assets/js/f897a61a.2c2e152c.js +0 -1
  106. solace_agent_mesh/assets/docs/assets/js/main.7ed3319f.js +0 -2
  107. solace_agent_mesh/assets/docs/assets/js/runtime~main.d9520ae2.js +0 -1
  108. solace_agent_mesh/assets/docs/img/Solace_AI_Framework_README.png +0 -0
  109. solace_agent_mesh/assets/docs/lunr-index-1753813536522.json +0 -1
  110. solace_agent_mesh/assets/docs/search-doc-1753813536522.json +0 -1
  111. solace_agent_mesh/client/webui/frontend/static/assets/main-An0a5j5k.js +0 -663
  112. solace_agent_mesh/client/webui/frontend/static/assets/main-Bu5-4Bac.css +0 -1
  113. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DNxCwAGB.js +0 -48
  114. /solace_agent_mesh/assets/docs/assets/js/{main.7ed3319f.js.LICENSE.txt → main.dc7db184.js.LICENSE.txt} +0 -0
  115. {solace_agent_mesh-1.0.1.dist-info → solace_agent_mesh-1.0.3.dist-info}/WHEEL +0 -0
  116. {solace_agent_mesh-1.0.1.dist-info → solace_agent_mesh-1.0.3.dist-info}/entry_points.txt +0 -0
  117. {solace_agent_mesh-1.0.1.dist-info → solace_agent_mesh-1.0.3.dist-info}/licenses/LICENSE +0 -0
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunksolace_agenitc_mesh_docs=self.webpackChunksolace_agenitc_mesh_docs||[]).push([[1462],{3519:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"documentation/user-guide/builtin-tools/data-analysis-tools","title":"Data Analysis Tools","description":"The Solace Agent Mesh (SAM) includes a suite of optional built-in tools that enable agents to perform data analysis tasks directly on artifacts. These tools provide functionality for SQL querying, JQ transformations, and Plotly chart generation.","source":"@site/docs/documentation/user-guide/builtin-tools/data-analysis-tools.md","sourceDirName":"documentation/user-guide/builtin-tools","slug":"/documentation/user-guide/builtin-tools/data-analysis-tools","permalink":"/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/data-analysis-tools","draft":false,"unlisted":false,"editUrl":"https://github.com/SolaceLabs/solace-agent-mesh/edit/main/docs/docs/documentation/user-guide/builtin-tools/data-analysis-tools.md","tags":[],"version":"current","sidebarPosition":20,"frontMatter":{"title":"Data Analysis Tools","sidebar_position":20},"sidebar":"docSidebar","previous":{"title":"Artifact Management Tools","permalink":"/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/artifact-management"},"next":{"title":"Audio Tools","permalink":"/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/audio-tools"}}');var s=t(4848),r=t(8453);const a={title:"Data Analysis Tools",sidebar_position:20},o="Data Analysis Tools",l={},d=[{value:"1. Setup and Configuration",id:"1-setup-and-configuration",level:2},{value:"2. Available Tools",id:"2-available-tools",level:2},{value:"<code>query_data_with_sql</code>",id:"query_data_with_sql",level:3},{value:"<code>create_sqlite_db</code>",id:"create_sqlite_db",level:3},{value:"<code>transform_data_with_jq</code>",id:"transform_data_with_jq",level:3},{value:"<code>create_chart_from_plotly_config</code>",id:"create_chart_from_plotly_config",level:3},{value:"3. Example Workflow: Querying a Large CSV",id:"3-example-workflow-querying-a-large-csv",level:2},{value:"4. Technical Considerations",id:"4-technical-considerations",level:2},{value:"Result Handling",id:"result-handling",level:3},{value:"Security",id:"security",level:3}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"data-analysis-tools",children:"Data Analysis Tools"})}),"\n",(0,s.jsx)(n.p,{children:"The Solace Agent Mesh (SAM) includes a suite of optional built-in tools that enable agents to perform data analysis tasks directly on artifacts. These tools provide functionality for SQL querying, JQ transformations, and Plotly chart generation."}),"\n",(0,s.jsx)(n.h2,{id:"1-setup-and-configuration",children:"1. Setup and Configuration"}),"\n",(0,s.jsxs)(n.p,{children:["Enable the data analysis tool group in the agent's ",(0,s.jsx)(n.code,{children:"app_config.yml"})," file."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:'# In your agent\'s app_config:\ntools:\n - tool_type: builtin-group\n group_name: "data_analysis"\n\n# Optional: Configure tool behavior\ndata_tools_config:\n sqlite_memory_threshold_mb: 100\n max_result_preview_rows: 50\n max_result_preview_bytes: 4096\n'})}),"\n",(0,s.jsx)(n.h2,{id:"2-available-tools",children:"2. Available Tools"}),"\n",(0,s.jsx)(n.h3,{id:"query_data_with_sql",children:(0,s.jsx)(n.code,{children:"query_data_with_sql"})}),"\n",(0,s.jsx)(n.admonition,{title:"Enterprise Only",type:"info",children:(0,s.jsx)(n.p,{children:"This feature is available in the Enterprise Edition only."})}),"\n",(0,s.jsx)(n.p,{children:"Executes a SQL query against data stored in a CSV or SQLite artifact."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Parameters"}),":","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"input_filename"})," (str): The filename of the input artifact (for example, ",(0,s.jsx)(n.code,{children:"'data.csv'"}),", ",(0,s.jsx)(n.code,{children:"'mydatabase.sqlite'"}),"). Supports versioning (for example, ",(0,s.jsx)(n.code,{children:"'data.csv:2'"}),")."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"sql_query"})," (str): The SQL query string to execute."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"output_format"})," (str, optional): The desired format for the output artifact (",(0,s.jsx)(n.code,{children:"'csv'"})," or ",(0,s.jsx)(n.code,{children:"'json'"}),"). Defaults to ",(0,s.jsx)(n.code,{children:"'csv'"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Behavior"}),":","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"For CSV Input"}),": The tool loads the CSV data into a temporary in-memory SQLite database table named ",(0,s.jsx)(n.code,{children:"data"})," and executes the query against it."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"For SQLite Input"}),": The tool connects directly to the specified SQLite database artifact in ",(0,s.jsx)(n.strong,{children:"read-only mode"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Returns"}),": A dictionary containing the execution status, a preview of the query result, and the ",(0,s.jsx)(n.code,{children:"output_filename"})," where the full result set is stored."]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h3,{id:"create_sqlite_db",children:(0,s.jsx)(n.code,{children:"create_sqlite_db"})}),"\n",(0,s.jsx)(n.admonition,{title:"Enterprise Only",type:"info",children:(0,s.jsx)(n.p,{children:"This feature is available in the Enterprise Edition only."})}),"\n",(0,s.jsx)(n.p,{children:"Converts a CSV or JSON artifact into a persistent SQLite database artifact. This is the recommended approach for executing multiple queries on the same dataset, as it avoids repeated parsing of the source file."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Parameters"}),":","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"input_filename"})," (str): The filename of the input CSV or JSON artifact."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"output_db_filename"})," (str): The desired filename for the output SQLite database artifact (for example, ",(0,s.jsx)(n.code,{children:"'queryable_dataset.sqlite'"}),")."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"table_name"})," (str, optional): The name of the table to be created within the SQLite database. Defaults to ",(0,s.jsx)(n.code,{children:"'data'"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Returns"}),": A dictionary confirming the successful creation of the database artifact and providing its ",(0,s.jsx)(n.code,{children:"output_filename"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h3,{id:"transform_data_with_jq",children:(0,s.jsx)(n.code,{children:"transform_data_with_jq"})}),"\n",(0,s.jsx)(n.admonition,{title:"Enterprise Only",type:"info",children:(0,s.jsx)(n.p,{children:"This feature is available in the Enterprise Edition only."})}),"\n",(0,s.jsx)(n.p,{children:"Applies a JQ expression to transform data from a JSON, YAML, or CSV artifact."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Parameters"}),":","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"input_filename"})," (str): The filename of the input artifact."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"jq_expression"})," (str): The JQ filter or transformation expression string (for example, ",(0,s.jsx)(n.code,{children:"'.users[] | {name, id}'"}),")."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Returns"}),": A dictionary containing the execution status, a preview of the transformed data, and the ",(0,s.jsx)(n.code,{children:"output_filename"})," where the full JSON result is stored."]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h3,{id:"create_chart_from_plotly_config",children:(0,s.jsx)(n.code,{children:"create_chart_from_plotly_config"})}),"\n",(0,s.jsx)(n.p,{children:"Generates a static chart image (for example, PNG, JPG, SVG) from a Plotly configuration provided as a string."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Parameters"}),":","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"config_content"})," (str): A JSON or YAML formatted string representing the Plotly ",(0,s.jsx)(n.code,{children:"figure"})," dictionary."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"config_format"})," (str): Specifies whether ",(0,s.jsx)(n.code,{children:"config_content"})," is ",(0,s.jsx)(n.code,{children:"'json'"})," or ",(0,s.jsx)(n.code,{children:"'yaml'"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"output_filename"})," (str): The desired filename for the output image artifact (for example, ",(0,s.jsx)(n.code,{children:"'sales_chart.png'"}),")."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"output_format"})," (str, optional): The desired image format (",(0,s.jsx)(n.code,{children:"'png'"}),", ",(0,s.jsx)(n.code,{children:"'jpeg'"}),", ",(0,s.jsx)(n.code,{children:"'svg'"}),", etc.). Defaults to ",(0,s.jsx)(n.code,{children:"'png'"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Returns"}),": A dictionary confirming the chart's creation and providing its ",(0,s.jsx)(n.code,{children:"output_filename"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"3-example-workflow-querying-a-large-csv",children:"3. Example Workflow: Querying a Large CSV"}),"\n",(0,s.jsx)(n.p,{children:"The following workflow demonstrates an efficient method for analyzing a large CSV file:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"User Request"}),': "I need to run several queries on ',(0,s.jsx)(n.code,{children:"large_data.csv"}),'."']}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Agent Strategy"}),": The agent determines that converting the CSV to a SQLite database is more performant for subsequent queries."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Agent Call 1"}),": The agent calls ",(0,s.jsx)(n.code,{children:"create_sqlite_db"})," to convert ",(0,s.jsx)(n.code,{children:"large_data.csv"})," into a new artifact, ",(0,s.jsx)(n.code,{children:"queryable_data.sqlite"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Agent Response"}),': "The data has been prepared for querying. What is your first question?"']}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"User Request"}),": \"Find all records where the category is 'Sales'.\""]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Agent Call 2"}),": The agent calls ",(0,s.jsx)(n.code,{children:"query_data_with_sql"}),", targeting the ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"queryable_data.sqlite"})})," artifact."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Agent Response"}),": The agent provides the results of the query."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"User Request"}),": \"Now, find the average amount for the 'Marketing' category.\""]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Agent Call 3"}),": The agent calls ",(0,s.jsx)(n.code,{children:"query_data_with_sql"})," again on the ",(0,s.jsxs)(n.strong,{children:["same ",(0,s.jsx)(n.code,{children:"queryable_data.sqlite"})," artifact"]}),", avoiding the overhead of reprocessing the original CSV file."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"4-technical-considerations",children:"4. Technical Considerations"}),"\n",(0,s.jsx)(n.h3,{id:"result-handling",children:"Result Handling"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Previews"}),": For ",(0,s.jsx)(n.code,{children:"query_data_with_sql"})," and ",(0,s.jsx)(n.code,{children:"transform_data_with_jq"}),", the tools return a truncated preview of the result directly to the LLM for immediate context."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Full Results"}),": The complete, untruncated result sets are always saved as new artifacts. The LLM is provided with the filename and version of these artifacts."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Accessing Full Results"}),": To utilize the full results, the agent can employ file management tools (",(0,s.jsx)(n.code,{children:"load_artifact"}),") or ",(0,s.jsx)(n.a,{href:"/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/embeds",children:"Dynamic Embeds"})," (",(0,s.jsx)(n.code,{children:"\xabartifact_content:...\xbb"}),")."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"security",children:"Security"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"SQL Execution"}),": Queries against existing SQLite artifacts are performed in ",(0,s.jsx)(n.strong,{children:"read-only mode"})," to prevent data modification. Queries against temporary databases generated from CSVs are isolated."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"JQ Execution"}),": JQ expressions are executed within a sandboxed Python library, not via shell execution."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Resource Usage"}),": Complex queries or transformations can be resource-intensive. Monitor performance and resource consumption accordingly."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var i=t(6540);const s={},r=i.createContext(s);function a(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunksolace_agenitc_mesh_docs=self.webpackChunksolace_agenitc_mesh_docs||[]).push([[2037],{6317:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>g,frontMatter:()=>a,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"documentation/deployment/debugging","title":"Debugging","description":"Debugging issues in Solace Agent Mesh starts with identifying the problem. You can monitor your system to debug it more effectively. For more information, see Observability.","source":"@site/docs/documentation/deployment/debugging.md","sourceDirName":"documentation/deployment","slug":"/documentation/deployment/debugging","permalink":"/solace-agent-mesh/docs/documentation/deployment/debugging","draft":false,"unlisted":false,"editUrl":"https://github.com/SolaceLabs/solace-agent-mesh/edit/main/docs/docs/documentation/deployment/debugging.md","tags":[],"version":"current","sidebarPosition":30,"frontMatter":{"title":"Debugging","sidebar_position":30},"sidebar":"docSidebar","previous":{"title":"Observability","permalink":"/solace-agent-mesh/docs/documentation/deployment/observability"},"next":{"title":"Build Your Own Agent","permalink":"/solace-agent-mesh/docs/documentation/tutorials/custom-agent"}}');var o=s(4848),i=s(8453);const a={title:"Debugging",sidebar_position:30},r="Debugging",l={},d=[{value:"Isolate Components",id:"isolate-components",level:2},{value:"Examine STIM Files",id:"examine-stim-files",level:2},{value:"Monitor Broker Activity",id:"monitor-broker-activity",level:2},{value:"Debug Mode",id:"debug-mode",level:2},{value:"Debugging in VSCode",id:"debugging-in-vscode",level:3},{value:"Invoke the Agent Directly",id:"invoke-the-agent-directly",level:2},{value:"Tools for Sending Messages",id:"tools-for-sending-messages",level:4},{value:"Message Format",id:"message-format",level:4},{value:"System Logs",id:"system-logs",level:2}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.header,{children:(0,o.jsx)(n.h1,{id:"debugging",children:"Debugging"})}),"\n",(0,o.jsxs)(n.p,{children:["Debugging issues in Solace Agent Mesh starts with identifying the problem. You can monitor your system to debug it more effectively. For more information, see ",(0,o.jsx)(n.a,{href:"/solace-agent-mesh/docs/documentation/deployment/observability",children:"Observability"}),".\nThe following sections provide common debugging approaches to help you diagnose and resolve issues."]}),"\n",(0,o.jsx)(n.h2,{id:"isolate-components",children:"Isolate Components"}),"\n",(0,o.jsxs)(n.p,{children:["Running only the necessary components in isolation can help pinpoint issues. The ",(0,o.jsx)(n.code,{children:"run"})," Solace Agent Mesh (SAM) CLI command allows you to specify which files to run."]}),"\n",(0,o.jsx)(n.p,{children:"For example:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"sam run configs/agents/my_tool_1.yaml configs/agents/my_tool_2.yaml\n"})}),"\n",(0,o.jsxs)(n.p,{children:["This command runs only the agents defined in ",(0,o.jsx)(n.code,{children:"my_tool_1.yaml"})," and ",(0,o.jsx)(n.code,{children:"my_tool_2.yaml"}),", reducing noise from unrelated components."]}),"\n",(0,o.jsx)(n.h2,{id:"examine-stim-files",children:"Examine STIM Files"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"/solace-agent-mesh/docs/documentation/deployment/observability#stimulus-logs",children:"STIM files"})," provide detailed traces of stimulus life cycles. If you have access to the storage location, you can inspect them to analyze message flows."]}),"\n",(0,o.jsxs)(n.p,{children:["Each ",(0,o.jsx)(n.code,{children:".stim"})," file contains all broker events related to a single stimulus, from the initial request to the final response."]}),"\n",(0,o.jsx)(n.h2,{id:"monitor-broker-activity",children:"Monitor Broker Activity"}),"\n",(0,o.jsxs)(n.p,{children:["For insights into message flows and event interactions, see ",(0,o.jsx)(n.a,{href:"/solace-agent-mesh/docs/documentation/deployment/observability#broker-observability",children:"Broker Observability"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"debug-mode",children:"Debug Mode"}),"\n",(0,o.jsx)(n.p,{children:"Because Solace Agent Mesh is a Python-based framework, you can run it in debug mode using an IDE with breakpoints."}),"\n",(0,o.jsx)(n.h3,{id:"debugging-in-vscode",children:"Debugging in VSCode"}),"\n",(0,o.jsxs)(n.p,{children:["If you're using VSCode, configure debugging in ",(0,o.jsx)(n.code,{children:".vscode/launch.json"}),":"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-json",children:'{\n "version": "0.2.0",\n "configurations": [\n {\n "name": "sam-debug",\n "type": "debugpy",\n "request": "launch",\n "module": "solace_agent_mesh.cli.main",\n "console": "integratedTerminal",\n "envFile": "${workspaceFolder}/.env",\n "args": [\n "run",\n "configs/agents/main_orchestrator.yaml",\n "configs/gateways/webui.yaml"\n // Add any other components you want to run here\n ],\n "justMyCode": false\n }\n ]\n}\n'})}),"\n",(0,o.jsx)(n.p,{children:"To start debugging:"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["Open the ",(0,o.jsx)(n.strong,{children:"RUN AND DEBUG"})," panel on the left sidebar."]}),"\n",(0,o.jsxs)(n.li,{children:["Select ",(0,o.jsx)(n.code,{children:"sam-debug"})," from the dropdown."]}),"\n",(0,o.jsxs)(n.li,{children:["Click the ",(0,o.jsx)(n.strong,{children:"Play"})," to start in debug mode."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Set breakpoints in your code to pause execution and inspect variable states."}),"\n",(0,o.jsx)(n.h2,{id:"invoke-the-agent-directly",children:"Invoke the Agent Directly"}),"\n",(0,o.jsx)(n.p,{children:"For debugging and testing, you can send direct messages to an agent by directly selecting the agent in the web UI agent dropdown or by using the PubSub+ event broker. This requires specifying the appropriate topic, user properties, and payload."}),"\n",(0,o.jsx)(n.h4,{id:"tools-for-sending-messages",children:"Tools for Sending Messages"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.a,{href:"https://marketplace.visualstudio.com/items?itemName=solace-tools.solace-try-me-vsc-extension",children:"Solace Try Me VSCode Extension"})})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.a,{href:"https://github.com/SolaceLabs/solace-tryme-cli",children:"Solace Try Me (STM) CLI Tool"})})}),"\n"]}),"\n",(0,o.jsx)(n.h4,{id:"message-format",children:"Message Format"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Topic"}),":"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"[NAME_SPACES]a2a/v1/agent/request/<agent_name>\n"})}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"User Properties"}),":"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"userId: test-0000\nclientId: test-0000\nreplyTo: [NAME_SPACES]a2a/v1/gateway/response/0000000/task-0000000\na2aUserConfig: {}\n"})}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Payload"}),":"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-json",children:'{\n "jsonrpc": "2.0",\n "id": "000000000",\n "method": "tasks/sendSubscribe",\n "params": {\n "id": "task-0000000",\n "sessionId": "web-session-00000000",\n "message": {\n "role": "user",\n "parts": [\n {\n "type": "text",\n "text": "Hello World!"\n }\n ]\n },\n "acceptedOutputModes": [\n "text"\n ],\n "metadata": {\n "system_purpose": "The system is an AI Chatbot with agentic capabilities. It uses the agents available to provide information, reasoning and general assistance for the users in this system. **Always return useful artifacts and files that you create to the user.** Provide a status update before each tool call. Your external name is Agent Mesh.\\n",\n "response_format": "Responses should be clear, concise, and professionally toned. Format responses to the user in Markdown using appropriate formatting.\\n"\n }\n }\n}\n'})}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Response Topic"}),":"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"[NAME_SPACES]a2a/v1/gateway/response/0000000/task-0000000\n"})}),"\n",(0,o.jsx)(n.p,{children:"By sending a request and observing the response, you can verify an agent's behavior in isolation, making it easier to identify issues."}),"\n",(0,o.jsx)(n.h2,{id:"system-logs",children:"System Logs"}),"\n",(0,o.jsx)(n.p,{children:"System logs provide additional insights into the system's behavior. These logs are written to a log file at the root of the project directory."}),"\n",(0,o.jsx)(n.p,{children:"All input/output messages, warnings, and errors are logged to help your understanding of the system's state and identify potential issues."})]})}function g(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>r});var t=s(6540);const o={},i=t.createContext(o);function a(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunksolace_agenitc_mesh_docs=self.webpackChunksolace_agenitc_mesh_docs||[]).push([[9639],{2888:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>c});const a=JSON.parse('{"id":"documentation/tutorials/slack-integration","title":"Slack Integration","description":"This tutorial integrates a Slack interface into Solace Agent Mesh, enabling interaction with the system directly from your Slack workspace and channels.","source":"@site/docs/documentation/tutorials/slack-integration.md","sourceDirName":"documentation/tutorials","slug":"/documentation/tutorials/slack-integration","permalink":"/solace-agent-mesh/docs/documentation/tutorials/slack-integration","draft":false,"unlisted":false,"editUrl":"https://github.com/SolaceLabs/solace-agent-mesh/edit/main/docs/docs/documentation/tutorials/slack-integration.md","tags":[],"version":"current","sidebarPosition":60,"frontMatter":{"title":"Slack Integration","sidebar_position":60},"sidebar":"docSidebar","previous":{"title":"MongoDB Integration","permalink":"/solace-agent-mesh/docs/documentation/tutorials/mongodb-integration"},"next":{"title":"Enterprise","permalink":"/solace-agent-mesh/docs/documentation/enterprise"}}');var s=t(4848),i=t(8453);const o={title:"Slack Integration",sidebar_position:60},l="Slack Integration",r={},c=[{value:"Setting Up the Environment",id:"setting-up-the-environment",level:2},{value:"Creating the Slack App",id:"creating-the-slack-app",level:2},{value:"App-Level Tokens",id:"app-level-tokens",level:3},{value:"Installing the App in Your Slack Workspace",id:"installing-the-app-in-your-slack-workspace",level:3},{value:"Installing the Slack Gateway",id:"installing-the-slack-gateway",level:2},{value:"Running the Slack Gateway",id:"running-the-slack-gateway",level:2},{value:"Testing the Installation",id:"testing-the-installation",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"slack-integration",children:"Slack Integration"})}),"\n",(0,s.jsx)(n.p,{children:"This tutorial integrates a Slack interface into Solace Agent Mesh, enabling interaction with the system directly from your Slack workspace and channels."}),"\n",(0,s.jsx)(n.admonition,{title:"Learn about gateways",type:"info",children:(0,s.jsxs)(n.p,{children:["Read about ",(0,s.jsx)(n.a,{href:"/solace-agent-mesh/docs/documentation/concepts/gateways",children:"Gateways"})," before you start this tutorial."]})}),"\n",(0,s.jsx)(n.h2,{id:"setting-up-the-environment",children:"Setting Up the Environment"}),"\n",(0,s.jsxs)(n.p,{children:["First, you need to ",(0,s.jsx)(n.a,{href:"/solace-agent-mesh/docs/documentation/getting-started/installation",children:"install Solace Agent Mesh and Solace Mesh Agent (SAM) CLI"}),", and then ",(0,s.jsx)(n.a,{href:"/solace-agent-mesh/docs/documentation/getting-started/quick-start",children:"create a new Solace Agent Mesh project"})," or ",(0,s.jsx)(n.a,{href:"/solace-agent-mesh/docs/documentation/concepts/plugins#create-a-plugin",children:"create a new gateway plugin"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"creating-the-slack-app",children:"Creating the Slack App"}),"\n",(0,s.jsxs)(n.p,{children:["Next, create a ",(0,s.jsx)(n.a,{href:"https://api.slack.com/apps",children:"Slack Application"})," in your workspace."]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Go to the ",(0,s.jsx)(n.a,{href:"https://api.slack.com/apps",children:"Slack Application"})," website."]}),"\n",(0,s.jsxs)(n.li,{children:["Select ",(0,s.jsx)(n.strong,{children:"Your Apps"})," and click ",(0,s.jsx)(n.strong,{children:"Create New App"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Choose ",(0,s.jsx)(n.strong,{children:"From a manifest"})," and apply the following configuration.","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"You can customize the name and description, but keep the rest of the configuration and settings unchanged."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"display_information:\n name: solace-agent-mesh-bot\n description: An app to integrate with Solace Agent Mesh\nfeatures:\n app_home:\n home_tab_enabled: false\n messages_tab_enabled: true\n messages_tab_read_only_enabled: false\n bot_user:\n display_name: Solace Agent Mesh\n always_online: false\noauth_config:\n scopes:\n bot:\n - app_mentions:read\n - bookmarks:read\n - channels:history\n - channels:join\n - channels:manage\n - channels:read\n - chat:write\n - chat:write.customize\n - chat:write.public\n - files:read\n - files:write\n - groups:history\n - groups:read\n - groups:write\n - im:history\n - im:read\n - im:write\n - links:read\n - links:write\n - mpim:history\n - mpim:read\n - mpim:write\n - pins:read\n - pins:write\n - reactions:read\n - reactions:write\n - reminders:read\n - reminders:write\n - team:read\n - usergroups:read\n - usergroups:write\n - users.profile:read\n - users:read.email\n - users:read\n - users:write\n - conversations.connect:read\n - conversations.connect:write\n - incoming-webhook\nsettings:\n event_subscriptions:\n bot_events:\n - app_mention\n - message.groups\n - message.im\n interactivity:\n is_enabled: true\n org_deploy_enabled: false\n socket_mode_enabled: true\n token_rotation_enabled: false\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Then select ",(0,s.jsx)(n.code,{children:"Create"})," to create your new App."]}),"\n",(0,s.jsx)(n.h3,{id:"app-level-tokens",children:"App-Level Tokens"}),"\n",(0,s.jsxs)(n.p,{children:["In your created App, select ",(0,s.jsx)(n.code,{children:"Basic Information"})," under ",(0,s.jsx)(n.code,{children:"Settings"}),". Scroll down to ",(0,s.jsx)(n.code,{children:"App-Level Tokens"})," and click ",(0,s.jsx)(n.code,{children:"Generate Token and Scopes"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Provide your token a name, add all available scopes, and then click ",(0,s.jsx)(n.code,{children:"Generate"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Make note of the resulting application token (beginning with ",(0,s.jsx)(n.code,{children:"xapp-"}),") - you need it in a future step."]}),"\n",(0,s.jsx)(n.h3,{id:"installing-the-app-in-your-slack-workspace",children:"Installing the App in Your Slack Workspace"}),"\n",(0,s.jsxs)(n.p,{children:["Next, select ",(0,s.jsx)(n.strong,{children:"Install App"})," under ",(0,s.jsx)(n.strong,{children:"Settings"})," and follow the installation flow to install the App in your workspace."]}),"\n",(0,s.jsxs)(n.p,{children:["After installation, the bot token (beginning with ",(0,s.jsx)(n.code,{children:"xoxb-"}),") is visible. Make note of this token."]}),"\n",(0,s.jsx)(n.h2,{id:"installing-the-slack-gateway",children:"Installing the Slack Gateway"}),"\n",(0,s.jsx)(n.p,{children:"After configuring your Slack App, the next step is to add the Slack gateway to Solace Agent Mesh."}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Add the gateway plugin using the Solace Agent Mesh (SAM) CLI:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"sam plugin add slack-bot --plugin sam-slack\n"})}),"\n",(0,s.jsxs)(n.p,{children:["You can change ",(0,s.jsx)(n.code,{children:"slack-bot"})," to any name you prefer for your gateway."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Configure the required environment variables:"}),"\n",(0,s.jsxs)(n.p,{children:["The Slack interface requires two authentication tokens. Add these to your ",(0,s.jsx)(n.code,{children:".env"})," file in the project root directory using the tokens generated during Slack App setup:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-env",children:"SLACK_BOT_TOKEN=xoxb-xxxxxxxxxx\nSLACK_APP_TOKEN=xapp-xxxxxxxxxx\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["You can further customize the Slack gateway by updating the ",(0,s.jsx)(n.code,{children:"configs/gateways/slack-bot.yaml"})," file. This file contains the configuration for the Slack gateway, including the initial status message, the gateway system purpose, and response format."]})}),"\n",(0,s.jsx)(n.h2,{id:"running-the-slack-gateway",children:"Running the Slack Gateway"}),"\n",(0,s.jsx)(n.p,{children:"Launch the Slack gateway with:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"sam run configs/gateways/slack-bot.yaml\n"})}),"\n",(0,s.jsxs)(n.p,{children:["For detailed information about available SAM CLI commands, see ",(0,s.jsx)(n.a,{href:"/solace-agent-mesh/docs/documentation/concepts/cli",children:"Solace Agent Mesh CLI"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"testing-the-installation",children:"Testing the Installation"}),"\n",(0,s.jsx)(n.p,{children:"To test your installation:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Open your Slack workspace in the desktop app or browser."}),"\n",(0,s.jsxs)(n.li,{children:["Find and click on the ",(0,s.jsx)(n.strong,{children:"Solace Agent Mesh"})," app under the ",(0,s.jsx)(n.strong,{children:"Apps"})," section."]}),"\n",(0,s.jsxs)(n.li,{children:["Send a test message by typing ",(0,s.jsx)(n.code,{children:"hello"})," and click ",(0,s.jsx)(n.strong,{children:"Enter"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["You should see:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:'A "Chatbot is thinking..." status message'}),"\n",(0,s.jsx)(n.li,{children:"A response from the chatbot within a few seconds"}),"\n"]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>l});var a=t(6540);const s={},i=a.createContext(s);function o(e){const n=a.useContext(i);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),a.createElement(i.Provider,{value:n},e.children)}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunksolace_agenitc_mesh_docs=self.webpackChunksolace_agenitc_mesh_docs||[]).push([[5449],{9733:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"documentation/user-guide/builtin-tools/artifact-management","title":"Artifact Management Tools","description":"This guide details how agents utilize built-in tools to manage file artifacts and their associated metadata. The system employs an explicit, metadata-aware methodology wherein the agent maintains full control over the lifecycle of artifacts, including their creation, listing, loading, and return.","source":"@site/docs/documentation/user-guide/builtin-tools/artifact-management.md","sourceDirName":"documentation/user-guide/builtin-tools","slug":"/documentation/user-guide/builtin-tools/artifact-management","permalink":"/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/artifact-management","draft":false,"unlisted":false,"editUrl":"https://github.com/SolaceLabs/solace-agent-mesh/edit/main/docs/docs/documentation/user-guide/builtin-tools/artifact-management.md","tags":[],"version":"current","sidebarPosition":10,"frontMatter":{"title":"Artifact Management Tools","sidebar_position":10},"sidebar":"docSidebar","previous":{"title":"Configuring Built-in Tools","permalink":"/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/"},"next":{"title":"Data Analysis Tools","permalink":"/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/data-analysis-tools"}}');var a=n(4848),s=n(8453);const r={title:"Artifact Management Tools",sidebar_position:10},o="Artifact Management Tools",l={},c=[{value:"1. The Metadata-Aware Workflow",id:"1-the-metadata-aware-workflow",level:2},{value:"2. Configuration",id:"2-configuration",level:2},{value:"Enabling the Tools",id:"enabling-the-tools",level:3},{value:"Configuring Artifact Return Behavior",id:"configuring-artifact-return-behavior",level:3},{value:"3. Tool Reference",id:"3-tool-reference",level:2},{value:"<code>create_artifact</code>",id:"create_artifact",level:3},{value:"<code>list_artifacts</code>",id:"list_artifacts",level:3},{value:"<code>load_artifact</code>",id:"load_artifact",level:3},{value:"<code>signal_artifact_for_return</code>",id:"signal_artifact_for_return",level:3},{value:"4. Key Concepts",id:"4-key-concepts",level:2}];function d(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.header,{children:(0,a.jsx)(t.h1,{id:"artifact-management-tools",children:"Artifact Management Tools"})}),"\n",(0,a.jsx)(t.p,{children:"This guide details how agents utilize built-in tools to manage file artifacts and their associated metadata. The system employs an explicit, metadata-aware methodology wherein the agent maintains full control over the lifecycle of artifacts, including their creation, listing, loading, and return."}),"\n",(0,a.jsx)(t.h2,{id:"1-the-metadata-aware-workflow",children:"1. The Metadata-Aware Workflow"}),"\n",(0,a.jsx)(t.p,{children:"Rather than automatically bundling all created artifacts in the final response, the agent follows a structured workflow:"}),"\n",(0,a.jsxs)(t.ol,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Create & Describe"}),": The agent invokes the ",(0,a.jsx)(t.code,{children:"create_artifact"})," tool to persist a file. Rich metadata, such as descriptions, sources, and inferred schemas, is stored alongside the artifact."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Inject & Inform"}),": This metadata is automatically injected into the conversation history, providing the agent with immediate context regarding the new file."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"List & Discover"}),": The agent can call ",(0,a.jsx)(t.code,{children:"list_artifacts"})," at any point to retrieve a summary of all available artifacts and their associated metadata."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Load & Analyze"}),": The agent can use ",(0,a.jsx)(t.code,{children:"load_artifact"})," to read the content of a text-based artifact or inspect the detailed metadata of any artifact (for example, to ascertain the schema of a CSV file)."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Return on Request"}),": To transmit an artifact to the user or a calling application, the agent must explicitly invoke ",(0,a.jsx)(t.code,{children:"signal_artifact_for_return"}),". Artifacts are not returned automatically."]}),"\n"]}),"\n",(0,a.jsx)(t.h2,{id:"2-configuration",children:"2. Configuration"}),"\n",(0,a.jsxs)(t.p,{children:["The file management tools are encapsulated within the ",(0,a.jsx)(t.code,{children:"artifact_management"})," tool group."]}),"\n",(0,a.jsx)(t.h3,{id:"enabling-the-tools",children:"Enabling the Tools"}),"\n",(0,a.jsxs)(t.p,{children:["Enable the tool group within the agent's ",(0,a.jsx)(t.code,{children:"app_config.yml"}),":"]}),"\n",(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-yaml",children:'# In your agent\'s app_config:\ntools:\n - tool_type: builtin-group\n group_name: "artifact_management"\n'})}),"\n",(0,a.jsx)(t.h3,{id:"configuring-artifact-return-behavior",children:"Configuring Artifact Return Behavior"}),"\n",(0,a.jsxs)(t.p,{children:["The ",(0,a.jsx)(t.code,{children:"artifact_handling_mode"})," setting in your ",(0,a.jsx)(t.code,{children:"app_config"})," dictates the behavior when ",(0,a.jsx)(t.code,{children:"signal_artifact_for_return"})," is called:"]}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.code,{children:"ignore"})," (Default): The request is logged, but no artifact is transmitted."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.code,{children:"embed"}),": The artifact content is base64-encoded and embedded within the ",(0,a.jsx)(t.code,{children:"TaskArtifactUpdateEvent"})," payload. This is suitable for smaller files."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.code,{children:"reference"}),": A URI pointing to the artifact is sent in the event payload. This approach requires a separate service to host the file at the specified URI."]}),"\n"]}),"\n",(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-yaml",children:'# In your agent\'s app_config:\nartifact_handling_mode: "embed"\n'})}),"\n",(0,a.jsx)(t.h2,{id:"3-tool-reference",children:"3. Tool Reference"}),"\n",(0,a.jsx)(t.h3,{id:"create_artifact",children:(0,a.jsx)(t.code,{children:"create_artifact"})}),"\n",(0,a.jsx)(t.p,{children:"Creates a new file artifact and its corresponding metadata."}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Parameters"}),":","\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.code,{children:"filename"}),' (str): The designated name for the artifact (for example, "report.pdf").']}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.code,{children:"content"})," (str): The file content. For binary file types (for example, images, PDFs), this content ",(0,a.jsx)(t.strong,{children:"must be base64-encoded"}),"."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.code,{children:"mime_type"}),' (str): The standard MIME type of the content (for example, "text/plain", "image/png").']}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.code,{children:"metadata"})," (dict, optional): A dictionary containing custom metadata (for example, ",(0,a.jsx)(t.code,{children:'{"description": "Monthly sales data"}'}),")."]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Returns"}),": A dictionary confirming the successful persistence of the artifact."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Key Feature"}),": Upon successful execution of this tool, a summary of the artifact's metadata is ",(0,a.jsx)(t.strong,{children:"automatically injected into the conversation history"}),", informing the agent of the new file's context."]}),"\n"]}),"\n",(0,a.jsx)(t.hr,{}),"\n",(0,a.jsx)(t.h3,{id:"list_artifacts",children:(0,a.jsx)(t.code,{children:"list_artifacts"})}),"\n",(0,a.jsx)(t.p,{children:"Lists all available artifacts within the current session."}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Parameters"}),": None."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Returns"}),": A list of file objects, each containing the ",(0,a.jsx)(t.code,{children:"filename"}),", available ",(0,a.jsx)(t.code,{children:"versions"}),", and a ",(0,a.jsx)(t.code,{children:"metadata_summary"})," for the latest version."]}),"\n"]}),"\n",(0,a.jsx)(t.hr,{}),"\n",(0,a.jsx)(t.h3,{id:"load_artifact",children:(0,a.jsx)(t.code,{children:"load_artifact"})}),"\n",(0,a.jsx)(t.p,{children:"Loads the content or detailed metadata of a specific version of an artifact."}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Parameters"}),":","\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.code,{children:"filename"})," (str): The name of the artifact to be loaded."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.code,{children:"version"})," (int): The specific version number of the artifact to load."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.code,{children:"load_metadata_only"})," (bool, optional): If ",(0,a.jsx)(t.code,{children:"True"}),", the tool returns the complete, detailed metadata dictionary instead of the artifact's content. This is useful for inspecting schemas or other metadata fields."]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Returns"}),":","\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:["If ",(0,a.jsx)(t.code,{children:"load_metadata_only=False"}),": The artifact's content (for text-based files) or a basic information dictionary (for binary files)."]}),"\n",(0,a.jsxs)(t.li,{children:["If ",(0,a.jsx)(t.code,{children:"load_metadata_only=True"}),": The complete metadata dictionary for the specified artifact version."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(t.hr,{}),"\n",(0,a.jsx)(t.h3,{id:"signal_artifact_for_return",children:(0,a.jsx)(t.code,{children:"signal_artifact_for_return"})}),"\n",(0,a.jsx)(t.p,{children:"Instructs the system to transmit a specific artifact version to the caller."}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Parameters"}),":","\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.code,{children:"filename"})," (str): The name of the artifact to be returned."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.code,{children:"version"})," (int): The specific version number of the artifact to return."]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Returns"}),": A dictionary confirming that the request has been received."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Note"}),": This tool functions as a signal. The actual transmission of the artifact is handled by the system in accordance with the configured ",(0,a.jsx)(t.code,{children:"artifact_handling_mode"}),"."]}),"\n"]}),"\n",(0,a.jsx)(t.h2,{id:"4-key-concepts",children:"4. Key Concepts"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Explicit Control"}),": Agents possess full, explicit control over the entire artifact lifecycle."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Metadata-Driven Context"}),": The automatic injection and summarization of metadata are fundamental to providing agents with situational awareness."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Signaled Return"}),": Artifacts are transmitted to the user only upon an explicit request from the agent via the ",(0,a.jsx)(t.code,{children:"signal_artifact_for_return"})," tool."]}),"\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.strong,{children:"Synergy with Embeds"}),": These tools can be used in conjunction with ",(0,a.jsx)(t.a,{href:"/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/embeds",children:"Dynamic Embeds"}),", such as ",(0,a.jsx)(t.code,{children:"\xabartifact_meta:report.csv\xbb"}),", for more efficient file handling."]}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>o});var i=n(6540);const a={},s=i.createContext(a);function r(e){const t=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),i.createElement(s.Provider,{value:t},e.children)}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunksolace_agenitc_mesh_docs=self.webpackChunksolace_agenitc_mesh_docs||[]).push([[6509],{8147:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>l,frontMatter:()=>i,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"documentation/enterprise","title":"Enterprise","description":"Contact Solace support for more information on Solace Agent Mesh Enterprise Edition.","source":"@site/docs/documentation/enterprise.md","sourceDirName":"documentation","slug":"/documentation/enterprise","permalink":"/solace-agent-mesh/docs/documentation/enterprise","draft":false,"unlisted":false,"editUrl":"https://github.com/SolaceLabs/solace-agent-mesh/edit/main/docs/docs/documentation/enterprise.md","tags":[],"version":"current","sidebarPosition":100,"frontMatter":{"title":"Enterprise","sidebar_position":100},"sidebar":"docSidebar","previous":{"title":"Slack Integration","permalink":"/solace-agent-mesh/docs/documentation/tutorials/slack-integration"}}');var r=n(4848),s=n(8453);const i={title:"Enterprise",sidebar_position:100},c="Enterprise",a={},d=[];function p(e){const t={h1:"h1",header:"header",p:"p",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"enterprise",children:"Enterprise"})}),"\n",(0,r.jsx)(t.p,{children:"Contact Solace support for more information on Solace Agent Mesh Enterprise Edition."})]})}function l(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>c});var o=n(6540);const r={},s=o.createContext(r);function i(e){const t=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),o.createElement(s.Provider,{value:t},e.children)}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunksolace_agenitc_mesh_docs=self.webpackChunksolace_agenitc_mesh_docs||[]).push([[3011],{8549:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docSidebar":[{"type":"category","label":"Getting Started","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Introduction","href":"/solace-agent-mesh/docs/documentation/getting-started/introduction","docId":"documentation/getting-started/introduction","unlisted":false},{"type":"link","label":"Installation","href":"/solace-agent-mesh/docs/documentation/getting-started/installation","docId":"documentation/getting-started/installation","unlisted":false},{"type":"link","label":"Quick Start","href":"/solace-agent-mesh/docs/documentation/getting-started/quick-start","docId":"documentation/getting-started/quick-start","unlisted":false},{"type":"link","label":"Component Overview","href":"/solace-agent-mesh/docs/documentation/getting-started/component-overview","docId":"documentation/getting-started/component-overview","unlisted":false}]},{"type":"category","label":"Components and Concepts","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Architecture","href":"/solace-agent-mesh/docs/documentation/concepts/architecture","docId":"documentation/concepts/architecture","unlisted":false},{"type":"link","label":"Solace Agent Mesh CLI","href":"/solace-agent-mesh/docs/documentation/concepts/cli","docId":"documentation/concepts/cli","unlisted":false},{"type":"link","label":"Gateways","href":"/solace-agent-mesh/docs/documentation/concepts/gateways","docId":"documentation/concepts/gateways","unlisted":false},{"type":"link","label":"Agents","href":"/solace-agent-mesh/docs/documentation/concepts/agents","docId":"documentation/concepts/agents","unlisted":false},{"type":"link","label":"Orchestrator","href":"/solace-agent-mesh/docs/documentation/concepts/orchestrator","docId":"documentation/concepts/orchestrator","unlisted":false},{"type":"link","label":"Plugins","href":"/solace-agent-mesh/docs/documentation/concepts/plugins","docId":"documentation/concepts/plugins","unlisted":false}]},{"type":"category","label":"User Guide","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Solace AI Event Connector","href":"/solace-agent-mesh/docs/documentation/user-guide/solace-ai-connector","docId":"documentation/user-guide/solace-ai-connector","unlisted":false},{"type":"link","label":"Structure","href":"/solace-agent-mesh/docs/documentation/user-guide/structure","docId":"documentation/user-guide/structure","unlisted":false},{"type":"link","label":"Create Agents","href":"/solace-agent-mesh/docs/documentation/user-guide/create-agents","docId":"documentation/user-guide/create-agents","unlisted":false},{"type":"link","label":"Create Gateways","href":"/solace-agent-mesh/docs/documentation/user-guide/create-gateways","docId":"documentation/user-guide/create-gateways","unlisted":false},{"type":"link","label":"Creating Service Providers","href":"/solace-agent-mesh/docs/documentation/user-guide/creating-service-providers","docId":"documentation/user-guide/creating-service-providers","unlisted":false},{"type":"category","label":"Built-in Tools","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Artifact Management Tools","href":"/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/artifact-management","docId":"documentation/user-guide/builtin-tools/artifact-management","unlisted":false},{"type":"link","label":"Data Analysis Tools","href":"/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/data-analysis-tools","docId":"documentation/user-guide/builtin-tools/data-analysis-tools","unlisted":false},{"type":"link","label":"Audio Tools","href":"/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/audio-tools","docId":"documentation/user-guide/builtin-tools/audio-tools","unlisted":false},{"type":"link","label":"Dynamic Embeds","href":"/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/embeds","docId":"documentation/user-guide/builtin-tools/embeds","unlisted":false}],"href":"/solace-agent-mesh/docs/documentation/user-guide/builtin-tools/"}]},{"type":"category","label":"Deployment","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Deployment","href":"/solace-agent-mesh/docs/documentation/deployment/deploy","docId":"documentation/deployment/deploy","unlisted":false},{"type":"link","label":"Observability","href":"/solace-agent-mesh/docs/documentation/deployment/observability","docId":"documentation/deployment/observability","unlisted":false},{"type":"link","label":"Debugging","href":"/solace-agent-mesh/docs/documentation/deployment/debugging","docId":"documentation/deployment/debugging","unlisted":false}]},{"type":"category","label":"Tutorials","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Build Your Own Agent","href":"/solace-agent-mesh/docs/documentation/tutorials/custom-agent","docId":"documentation/tutorials/custom-agent","unlisted":false},{"type":"link","label":"MCP Integration","href":"/solace-agent-mesh/docs/documentation/tutorials/mcp-integration","docId":"documentation/tutorials/mcp-integration","unlisted":false},{"type":"link","label":"REST Gateway","href":"/solace-agent-mesh/docs/documentation/tutorials/rest-gateway","docId":"documentation/tutorials/rest-gateway","unlisted":false},{"type":"link","label":"Event Mesh Gateway","href":"/solace-agent-mesh/docs/documentation/tutorials/event-mesh-gateway","docId":"documentation/tutorials/event-mesh-gateway","unlisted":false},{"type":"link","label":"Amazon Bedrock Agents","href":"/solace-agent-mesh/docs/documentation/tutorials/bedrock-agents","docId":"documentation/tutorials/bedrock-agents","unlisted":false},{"type":"link","label":"SQL Database Integration","href":"/solace-agent-mesh/docs/documentation/tutorials/sql-database","docId":"documentation/tutorials/sql-database","unlisted":false},{"type":"link","label":"MongoDB Integration","href":"/solace-agent-mesh/docs/documentation/tutorials/mongodb-integration","docId":"documentation/tutorials/mongodb-integration","unlisted":false},{"type":"link","label":"Slack Integration","href":"/solace-agent-mesh/docs/documentation/tutorials/slack-integration","docId":"documentation/tutorials/slack-integration","unlisted":false}]},{"type":"link","label":"Enterprise","href":"/solace-agent-mesh/docs/documentation/enterprise","docId":"documentation/enterprise","unlisted":false}]},"docs":{"documentation/concepts/agents":{"id":"documentation/concepts/agents","title":"Agents","description":"Agents are specialized processing units within the Solace Agent Mesh framework that are built around the Google Agent Development Kit (ADK) and provide the core intelligence layer. They:","sidebar":"docSidebar"},"documentation/concepts/architecture":{"id":"documentation/concepts/architecture","title":"Architecture","description":"Overview","sidebar":"docSidebar"},"documentation/concepts/cli":{"id":"documentation/concepts/cli","title":"Solace Agent Mesh CLI","description":"Solace Agent Mesh comes with a comprehensive CLI tool that you can use to create, and run an instance of Solace Agent Mesh, which is referred to as a Solace Agent Mesh (SAM) application. The Solace Agent Mesh (SAM) CLI also allows you to add agents and gateways, manage plugins, help you debug, and much more.","sidebar":"docSidebar"},"documentation/concepts/gateways":{"id":"documentation/concepts/gateways","title":"Gateways","description":"Gateways are a crucial component of the Solace Agent Mesh framework that expose the agent mesh to external systems through various protocols. Built on a common base gateway architecture, they provide the following functions:","sidebar":"docSidebar"},"documentation/concepts/orchestrator":{"id":"documentation/concepts/orchestrator","title":"Orchestrator","description":"The A2A (Agent-to-Agent) protocol is the communication backbone of Solace Agent Mesh that enables distributed agent coordination and workflow management. Unlike traditional centralized orchestration, the A2A protocol enables agents to discover each other, delegate tasks, and collaborate directly through standardized message patterns.","sidebar":"docSidebar"},"documentation/concepts/plugins":{"id":"documentation/concepts/plugins","title":"Plugins","description":"Plugins","sidebar":"docSidebar"},"documentation/deployment/debugging":{"id":"documentation/deployment/debugging","title":"Debugging","description":"Debugging issues in Solace Agent Mesh starts with identifying the problem. You can monitor your system to debug it more effectively. For more information, see Observability.","sidebar":"docSidebar"},"documentation/deployment/deploy":{"id":"documentation/deployment/deploy","title":"Deployment","description":"Development","sidebar":"docSidebar"},"documentation/deployment/observability":{"id":"documentation/deployment/observability","title":"Observability","description":"Solace Agent Mesh provides a comprehensive set of tools for real-time system monitoring and key insights to help you understand system states, request flows, and key insights for debugging and optimizing your system.","sidebar":"docSidebar"},"documentation/enterprise":{"id":"documentation/enterprise","title":"Enterprise","description":"Contact Solace support for more information on Solace Agent Mesh Enterprise Edition.","sidebar":"docSidebar"},"documentation/getting-started/component-overview":{"id":"documentation/getting-started/component-overview","title":"Component Overview","description":"The Solace Agent Mesh (SAM) is built on event-driven architecture principles using the A2A (Agent-to-Agent) protocol, with all components communicating through a standardized protocol over Solace PubSub+. This architectural choice enables loose coupling between components, making the system highly flexible and scalable.","sidebar":"docSidebar"},"documentation/getting-started/installation":{"id":"documentation/getting-started/installation","title":"Installation","description":"Before you begin, make sure you have the following:","sidebar":"docSidebar"},"documentation/getting-started/introduction":{"id":"documentation/getting-started/introduction","title":"Introduction","description":"Solace Agent Mesh","sidebar":"docSidebar"},"documentation/getting-started/quick-start":{"id":"documentation/getting-started/quick-start","title":"Quick Start","description":"Looking to get started with plugins? For more information, see the Plugins.","sidebar":"docSidebar"},"documentation/tutorials/bedrock-agents":{"id":"documentation/tutorials/bedrock-agents","title":"Amazon Bedrock Agents","description":"This tutorial walks you through the process of integrating Amazon Bedrock Agents and Flows into Solace Agent Mesh (SAM). This integration allows you to create agents that can interact with one or multiple Bedrock Agents or Flows, extending your SAM project with powerful AI capabilities from AWS.","sidebar":"docSidebar"},"documentation/tutorials/custom-agent":{"id":"documentation/tutorials/custom-agent","title":"Build Your Own Agent","description":"This tutorial shows you how to build a sophisticated weather agent using the Solace Agent Mesh framework. Learn how to integrate with external APIs, manage resources properly, and create production-ready agents.","sidebar":"docSidebar"},"documentation/tutorials/event-mesh-gateway":{"id":"documentation/tutorials/event-mesh-gateway","title":"Event Mesh Gateway","description":"If you already have an event mesh in place, you can integrate Solace Agent Mesh into it. This allows you to leverage existing infrastructure while introducing intelligence and automation through Solace Agent Mesh.","sidebar":"docSidebar"},"documentation/tutorials/mcp-integration":{"id":"documentation/tutorials/mcp-integration","title":"MCP Integration","description":"This tutorial walks you through the process of integrating a Model Context Protocol (MCP) Server into Solace Agent Mesh.","sidebar":"docSidebar"},"documentation/tutorials/mongodb-integration":{"id":"documentation/tutorials/mongodb-integration","title":"MongoDB Integration","description":"This tutorial sets up a MongoDB agent in Solace Agent Mesh (SAM), which allows the SAM agent to answer natural language queries about a Mongo database. The agent translates user questions into MongoDB aggregation pipelines and executes them against your database.","sidebar":"docSidebar"},"documentation/tutorials/rest-gateway":{"id":"documentation/tutorials/rest-gateway","title":"REST Gateway","description":"The Solace Agent Mesh (SAM) REST API Gateway provides a standard, robust, and secure HTTP-based entry point for programmatic and system-to-system integrations. It allows external clients to submit tasks to SAM agents, manage files, and discover agent capabilities using a familiar RESTful interface.","sidebar":"docSidebar"},"documentation/tutorials/slack-integration":{"id":"documentation/tutorials/slack-integration","title":"Slack Integration","description":"This tutorial integrates a Slack interface into Solace Agent Mesh, enabling interaction with the system directly from your Slack workspace and channels.","sidebar":"docSidebar"},"documentation/tutorials/sql-database":{"id":"documentation/tutorials/sql-database","title":"SQL Database Integration","description":"This tutorial sets up a SQL database agent in Solace Agent Mesh (SAM), which allows the SAM agent to answer natural language queries about a sample coffee company database. This tutorial provides some sample data to set up an SQLite database, but you can use the same approach to connect to other database types, such as MySQL or PostgreSQL.","sidebar":"docSidebar"},"documentation/user-guide/builtin-tools/artifact-management":{"id":"documentation/user-guide/builtin-tools/artifact-management","title":"Artifact Management Tools","description":"This guide details how agents utilize built-in tools to manage file artifacts and their associated metadata. The system employs an explicit, metadata-aware methodology wherein the agent maintains full control over the lifecycle of artifacts, including their creation, listing, loading, and return.","sidebar":"docSidebar"},"documentation/user-guide/builtin-tools/audio-tools":{"id":"documentation/user-guide/builtin-tools/audio-tools","title":"Audio Tools","description":"This guide provides technical documentation for the text-to-speech (TTS) tools available in the Solace Agent Mesh (SAM).","sidebar":"docSidebar"},"documentation/user-guide/builtin-tools/builtin-tools":{"id":"documentation/user-guide/builtin-tools/builtin-tools","title":"Configuring Built-in Tools","description":"This guide provides instructions for enabling and configuring the built-in tools provided by the Solace Agent Mesh (SAM) framework.","sidebar":"docSidebar"},"documentation/user-guide/builtin-tools/data-analysis-tools":{"id":"documentation/user-guide/builtin-tools/data-analysis-tools","title":"Data Analysis Tools","description":"The Solace Agent Mesh (SAM) includes a suite of optional built-in tools that enable agents to perform data analysis tasks directly on artifacts. These tools provide functionality for SQL querying, JQ transformations, and Plotly chart generation.","sidebar":"docSidebar"},"documentation/user-guide/builtin-tools/embeds":{"id":"documentation/user-guide/builtin-tools/embeds","title":"Dynamic Embeds","description":"Dynamic Embeds","sidebar":"docSidebar"},"documentation/user-guide/create-agents":{"id":"documentation/user-guide/create-agents","title":"Create Agents","description":"Introduction","sidebar":"docSidebar"},"documentation/user-guide/create-gateways":{"id":"documentation/user-guide/create-gateways","title":"Create Gateways","description":"Gateways in Solace Agent Mesh (SAM) serve as bridges between external systems and the A2A (Agent-to-Agent) ecosystem. They enable your agents to receive information from and send responses to diverse external platforms like chat systems, web applications, IoT devices, APIs, and file systems.","sidebar":"docSidebar"},"documentation/user-guide/creating-service-providers":{"id":"documentation/user-guide/creating-service-providers","title":"Creating Service Providers","description":"This guide details the process for developers to create service provider plugins for integrating backend systems (for example, HR platforms, CRMs) with the Solace Agent Mesh (SAM).","sidebar":"docSidebar"},"documentation/user-guide/solace-ai-connector":{"id":"documentation/user-guide/solace-ai-connector","title":"Solace AI Event Connector","description":"The Solace AI Event Connector is an important part of Solace Agent Mesh. It is a powerful tool designed to seamlessly integrate AI capabilities into your event-driven architecture. It enables you to create efficient pipelines that can process events from PubSub+ event brokers, using AI and other types of components, and then publish the results back to PubSub+ event brokers.","sidebar":"docSidebar"},"documentation/user-guide/structure":{"id":"documentation/user-guide/structure","title":"Structure","description":"Solace Agent Mesh is built on the A2A (Agent-to-Agent) protocol architecture, powered by Solace AI Event Connector and uses Solace PubSub+ as the communication backbone. The framework is controlled by YAML configuration files that define agents, gateways, and plugins, enabling distributed AI agent communication through event-driven messaging.","sidebar":"docSidebar"}}}}')}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunksolace_agenitc_mesh_docs=self.webpackChunksolace_agenitc_mesh_docs||[]).push([[3514],{4373:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"documentation/getting-started/quick-start","title":"Quick Start","description":"Looking to get started with plugins? For more information, see the Plugins.","source":"@site/docs/documentation/getting-started/quick-start.md","sourceDirName":"documentation/getting-started","slug":"/documentation/getting-started/quick-start","permalink":"/solace-agent-mesh/docs/documentation/getting-started/quick-start","draft":false,"unlisted":false,"editUrl":"https://github.com/SolaceLabs/solace-agent-mesh/edit/main/docs/docs/documentation/getting-started/quick-start.md","tags":[],"version":"current","sidebarPosition":30,"frontMatter":{"title":"Quick Start","sidebar_position":30},"sidebar":"docSidebar","previous":{"title":"Installation","permalink":"/solace-agent-mesh/docs/documentation/getting-started/installation"},"next":{"title":"Component Overview","permalink":"/solace-agent-mesh/docs/documentation/getting-started/component-overview"}}');var i=n(4848),s=n(8453);const a={title:"Quick Start",sidebar_position:30},r="Quick Start",c={},l=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Create a Project",id:"create-a-project",level:2},{value:"Running the Project",id:"running-the-project",level:2},{value:"Interacting with SAM",id:"interacting-with-sam",level:2},{value:"Try a Tutorial",id:"try-a-tutorial",level:2},{value:"Next Steps",id:"next-steps",level:2}];function d(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components},{Details:n}=t;return n||function(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"quick-start",children:"Quick Start"})}),"\n",(0,i.jsx)(t.admonition,{title:"Plugins",type:"note",children:(0,i.jsxs)(t.p,{children:["Looking to get started with plugins? For more information, see the ",(0,i.jsx)(t.a,{href:"/solace-agent-mesh/docs/documentation/concepts/plugins",children:"Plugins"}),"."]})}),"\n",(0,i.jsx)(t.p,{children:"To get started with Solace Agent Mesh, you must first create a project."}),"\n",(0,i.jsx)(t.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["You have installed the Solace Agent Mesh CLI. If not, see the ",(0,i.jsx)(t.a,{href:"/solace-agent-mesh/docs/documentation/getting-started/installation",children:"Installation"})," page."]}),"\n",(0,i.jsxs)(t.li,{children:["You have activated the virtual environment you created following the ",(0,i.jsx)(t.a,{href:"/solace-agent-mesh/docs/documentation/getting-started/installation",children:"Installation"})," page. For containerized deployment such as Docker, ignore this prerequisite."]}),"\n",(0,i.jsx)(t.li,{children:"You have an available AI provider and API key. For best results, use a state-of-the-art AI model like Anthropic Claude Sonnet 3.7, Google Gemini 2.5 pro, or OpenAI GPT-4o."}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"create-a-project",children:"Create a Project"}),"\n",(0,i.jsx)(t.p,{children:"Create a directory for your project and navigate to it."}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-sh",children:"mkdir my-agent-mesh\ncd my-agent-mesh\n"})}),"\n",(0,i.jsxs)(t.p,{children:["Run the ",(0,i.jsx)(t.code,{children:"init"})," command and follow the prompts to create your project."]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-sh",children:"solace-agent-mesh init\n"})}),"\n",(0,i.jsxs)(t.p,{children:["During initialization, you can choose to configure your project directly in the terminal or through a web-based interface launched at ",(0,i.jsx)(t.code,{children:"http://127.0.0.1:5002"}),". You are asked for your preference once you run ",(0,i.jsx)(t.code,{children:"solace-agent-mesh init"}),"."]}),"\n",(0,i.jsxs)(t.p,{children:["Alternatively, you can use the ",(0,i.jsx)(t.code,{children:"--gui"})," flag to skip the prompt and directly open the web-based configuration interface:"]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-sh",children:"solace-agent-mesh init --gui\n"})}),"\n",(0,i.jsxs)(n,{children:[(0,i.jsx)("summary",{children:"Docker Alternative for Initialization"}),(0,i.jsx)(t.p,{children:"You can also initialize your Solace Agent Mesh project using the official Docker image. This is helpful if you want to avoid local Python/SAM CLI installation or prefer a containerized workflow from the start."}),(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-sh",children:'docker run --rm -it -v "$(pwd):/app" -p 5002:5002 solace/solace-agent-mesh:latest init --gui\n'})}),(0,i.jsxs)(t.p,{children:["If the OS architecture on your host is not ",(0,i.jsx)(t.code,{children:"linux/amd64"}),", you would need to add ",(0,i.jsx)(t.code,{children:"--platform linux/amd64"})," when running container."]})]}),"\n",(0,i.jsxs)(t.admonition,{title:"Non-Interactive Mode",type:"tip",children:[(0,i.jsxs)(t.p,{children:["You can run the ",(0,i.jsx)(t.code,{children:"init"})," command in a non-interactive mode by passing ",(0,i.jsx)(t.code,{children:"--skip"})," and all the other configurations as arguments."]}),(0,i.jsxs)(t.p,{children:["To get a list of all the available options, run ",(0,i.jsx)(t.code,{children:"solace-agent-mesh init --help"})]})]}),"\n",(0,i.jsxs)(n,{children:[(0,i.jsx)("summary",{children:"Configurations"}),(0,i.jsxs)(t.admonition,{title:"Model name format",type:"info",children:[(0,i.jsxs)(n,{children:[(0,i.jsx)("summary",{children:"Browser-based Configurations"}),(0,i.jsx)(t.p,{children:"You need to select the LLM Provider first and supported models are populated under LLM Model Name."}),(0,i.jsxs)(t.p,{children:["If you're using a non-openai model but hosting it on a custom API that follows the OpenAI standards, like Ollama or LiteLLM, you can select the ",(0,i.jsx)(t.code,{children:"OpenAI Compatible Provider"}),"."]})]}),(0,i.jsxs)(n,{children:[(0,i.jsx)("summary",{children:"CLI-based Configurations"}),(0,i.jsxs)(t.p,{children:["You need to explicitly specify the model in the format provider/name. For example, ",(0,i.jsx)(t.code,{children:"openai/gpt-4o"}),"."]}),(0,i.jsxs)(t.p,{children:["If you're using a non-openai model but hosting it on a custom API that follows the OpenAI standards, like Ollama or LiteLLM, you can still use the ",(0,i.jsx)(t.code,{children:"openai"})," provider."]}),(0,i.jsxs)(t.p,{children:["For example: ",(0,i.jsx)(t.code,{children:"openai/llama-3.3-7b"})]})]}),(0,i.jsx)(t.p,{children:"This is the case for all the model names, such as LLMs, image generators, embedding models, etc."})]}),(0,i.jsxs)(t.admonition,{title:"Running the project using Official Docker image",type:"info",children:[(0,i.jsx)(t.p,{children:"For deployments that use the official Docker image, ensure the following:"}),(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Do not use Solace PubSub+ broker container."}),"\n",(0,i.jsxs)(t.li,{children:["Set ",(0,i.jsx)(t.code,{children:"FastAPI Host"})," to ",(0,i.jsx)(t.code,{children:"0.0.0.0"}),"."]}),"\n"]})]})]}),"\n",(0,i.jsx)(t.h2,{id:"running-the-project",children:"Running the Project"}),"\n",(0,i.jsxs)(t.p,{children:["To run the project, you can use the ",(0,i.jsx)(t.code,{children:"run"})," command to execute all the components in a single, multi-threaded application. It's possible to split the components into separate processes. See the ",(0,i.jsx)(t.a,{href:"/solace-agent-mesh/docs/documentation/deployment/deploy",children:"deployment"})," page for more information."]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-sh",children:"solace-agent-mesh run\n"})}),"\n",(0,i.jsx)(t.admonition,{type:"tip",children:(0,i.jsxs)(t.p,{children:["Environment variables are loaded from your configuration file (typically a ",(0,i.jsx)(t.code,{children:".env"})," file at the project root) by default. To use system environment variables instead, use the ",(0,i.jsx)(t.code,{children:"-u"})," or ",(0,i.jsx)(t.code,{children:"--system-env"})," option."]})}),"\n",(0,i.jsxs)(t.p,{children:["To learn more about the other CLI commands, see the ",(0,i.jsx)(t.a,{href:"/solace-agent-mesh/docs/documentation/concepts/cli",children:"CLI documentation"}),"."]}),"\n",(0,i.jsxs)(n,{children:[(0,i.jsx)("summary",{children:"Docker Alternative for Running the Project"}),(0,i.jsx)(t.p,{children:"You can also run your Solace Agent Mesh project using the official Docker image. This is helpful if you want to avoid local Python/SAM CLI installation or prefer a containerized workflow from the start."}),(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-sh",children:'docker run --rm -it -v "$(pwd):/app" -p 8000:8000 solace/solace-agent-mesh:latest run\n'})}),(0,i.jsxs)(t.p,{children:["If your host system architecture is not ",(0,i.jsx)(t.code,{children:"linux/amd64"}),", add the ",(0,i.jsx)(t.code,{children:"--platform linux/amd64"})," flag when you run the container."]}),(0,i.jsxs)(t.admonition,{type:"warning",children:[(0,i.jsx)(t.p,{children:"If you are using third-party Python packages or Solace Agent Mesh plugins, you need to build a custom Docker image off the official image and install the required packages there, and then run that custom image instead."}),(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-Dockerfile",children:'FROM solace/solace-agent-mesh:latest\n# Option 1: Install a specific package\nRUN python3.11 -m pip install --no-cache-dir <your-package>\n# Option 2: use a requirements.txt file\nCOPY requirements.txt .\nRUN python3.11 -m pip install --no-cache-dir -r requirements.txt\n\nENTRYPOINT ["solace-agent-mesh"]\n'})}),(0,i.jsx)(t.p,{children:"Then build and run your custom image:"}),(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-sh",children:'docker build -t my-custom-image .\ndocker run --rm -it -v "$(pwd):/app" -p 8000:8000 my-custom-image run\n'})})]})]}),"\n",(0,i.jsx)(t.h2,{id:"interacting-with-sam",children:"Interacting with SAM"}),"\n",(0,i.jsx)(t.p,{children:"You can use different gateway interfaces to communicate with the system such as REST, Web UI, Slack, MS Teams, and so on. To keep it simple for this demo, we use the browser UI."}),"\n",(0,i.jsxs)(t.p,{children:["To access the browser UI, navigate to ",(0,i.jsx)(t.code,{children:"http://localhost:8000"})," in your web browser. If you specified a different port during the init step, use that port instead. For Docker deployments with custom port mappings (using the ",(0,i.jsx)(t.code,{children:"-p"})," flag), use the host port specified in your port mapping configuration."]}),"\n",(0,i.jsxs)(t.p,{children:["Try some commands like ",(0,i.jsx)(t.code,{children:"Suggest some good outdoor activities in London given the season and current weather conditions."})," or ",(0,i.jsx)(t.code,{children:"Generate a mermaid diagram of the OAuth login flow"}),"."]}),"\n",(0,i.jsx)(t.h2,{id:"try-a-tutorial",children:"Try a Tutorial"}),"\n",(0,i.jsxs)(t.p,{children:["Try adding a new agent to the system by following the tutorial on adding an ",(0,i.jsx)(t.a,{href:"/solace-agent-mesh/docs/documentation/tutorials/sql-database",children:"SQL database agent"}),". This tutorial guides you through the process of adding the SQL agent plugin and adding some sample data to the database."]}),"\n",(0,i.jsx)(t.h2,{id:"next-steps",children:"Next Steps"}),"\n",(0,i.jsxs)(t.p,{children:["Solace Agent Mesh uses two main types of components, ",(0,i.jsx)(t.strong,{children:"agents"})," and ",(0,i.jsx)(t.strong,{children:"gateways"}),". The system comes with a built-in orchestrator agent and a web user interface gateway (which you enabled during the ",(0,i.jsx)(t.code,{children:"init"})," step)."]}),"\n",(0,i.jsxs)(t.p,{children:["You can learn more about ",(0,i.jsx)(t.a,{href:"/solace-agent-mesh/docs/documentation/concepts/gateways",children:"gateways"}),". Alternatively, you can learn about ",(0,i.jsx)(t.a,{href:"/solace-agent-mesh/docs/documentation/concepts/plugins#use-a-plugins",children:"using plugins"})," or ",(0,i.jsx)(t.a,{href:"/solace-agent-mesh/docs/documentation/user-guide/create-gateways",children:"creating your own new gateways"}),"."]}),"\n",(0,i.jsxs)(t.p,{children:["Also, you can learn more about ",(0,i.jsx)(t.a,{href:"/solace-agent-mesh/docs/documentation/concepts/agents",children:"agents"})," or about ",(0,i.jsx)(t.a,{href:"/solace-agent-mesh/docs/documentation/user-guide/create-agents",children:"creating your own agents"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>r});var o=n(6540);const i={},s=o.createContext(i);function a(e){const t=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(s.Provider,{value:t},e.children)}}}]);