dexto 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/README.md +14 -12
  2. package/agents/agent-registry.json +53 -0
  3. package/agents/database-agent/README.md +35 -0
  4. package/agents/database-agent/data/example.db +0 -0
  5. package/agents/database-agent/database-agent-example.sql +98 -0
  6. package/agents/database-agent/database-agent.yml +116 -0
  7. package/agents/database-agent/setup-database.sh +64 -0
  8. package/agents/{agent.yml → default-agent.yml} +1 -1
  9. package/agents/image-editor-agent/Lenna.webp +0 -0
  10. package/agents/image-editor-agent/README.md +435 -0
  11. package/agents/image-editor-agent/image-editor-agent.yml +45 -0
  12. package/agents/music-agent/README.md +294 -0
  13. package/agents/music-agent/music-agent.yml +43 -0
  14. package/agents/product-name-researcher/README.md +98 -0
  15. package/agents/product-name-researcher/product-name-researcher.yml +161 -0
  16. package/agents/talk2pdf-agent/README.md +166 -0
  17. package/agents/talk2pdf-agent/talk2pdf-agent.yml +42 -0
  18. package/agents/triage-demo/README.md +337 -0
  19. package/agents/triage-demo/billing-agent.yml +76 -0
  20. package/agents/triage-demo/docs/billing-policies.md +246 -0
  21. package/agents/triage-demo/docs/company-overview.md +94 -0
  22. package/agents/triage-demo/docs/escalation-policies.md +301 -0
  23. package/agents/triage-demo/docs/product-features.md +253 -0
  24. package/agents/triage-demo/docs/technical-documentation.md +226 -0
  25. package/agents/triage-demo/escalation-agent.yml +82 -0
  26. package/agents/triage-demo/product-info-agent.yml +86 -0
  27. package/agents/triage-demo/technical-support-agent.yml +71 -0
  28. package/agents/triage-demo/test-scenarios.md +209 -0
  29. package/agents/triage-demo/triage-agent.yml +172 -0
  30. package/dist/src/app/{chunk-M4OZIDPC.js → chunk-CLDYRNV6.js} +7241 -5753
  31. package/dist/src/app/chunk-DYNVXGAH.js +137 -0
  32. package/dist/src/app/chunk-PW2PHCHR.js +83 -0
  33. package/dist/src/app/chunk-R4Q522DR.js +205 -0
  34. package/dist/src/app/chunk-UXCBS3TR.js +281 -0
  35. package/dist/src/app/chunk-X6LEX724.js +108 -0
  36. package/dist/src/app/chunk-Y33BS5SA.js +39 -0
  37. package/dist/src/app/{cli-confirmation-handler-2APQRKHG.js → cli-confirmation-handler-GJHPLGOL.js} +4 -1
  38. package/dist/src/app/errors-5MNETGOV.js +8 -0
  39. package/dist/src/app/index.js +2184 -612
  40. package/dist/src/app/loader-EFMKWNNQ.js +20 -0
  41. package/dist/src/app/path-7FT4SZMO.js +23 -0
  42. package/dist/src/app/{postgres-backend-7HVVW3RL.js → postgres-backend-U5MIIMUY.js} +12 -1
  43. package/dist/src/app/{redis-backend-2YBZSSSV.js → redis-backend-NGI67ILT.js} +38 -9
  44. package/dist/src/app/registry-RALMVM3P.js +14 -0
  45. package/dist/src/app/sqlite-backend-752UUBD4.js +245 -0
  46. package/dist/src/app/webui/.next/standalone/.next/BUILD_ID +1 -1
  47. package/dist/src/app/webui/.next/standalone/.next/app-build-manifest.json +20 -21
  48. package/dist/src/app/webui/.next/standalone/.next/app-path-routes-manifest.json +0 -1
  49. package/dist/src/app/webui/.next/standalone/.next/build-manifest.json +4 -4
  50. package/dist/src/app/webui/.next/standalone/.next/prerender-manifest.json +4 -82
  51. package/dist/src/app/webui/.next/standalone/.next/required-server-files.json +2 -3
  52. package/dist/src/app/webui/.next/standalone/.next/routes-manifest.json +0 -6
  53. package/dist/src/app/webui/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  54. package/dist/src/app/webui/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  55. package/dist/src/app/webui/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  56. package/dist/src/app/webui/.next/standalone/.next/server/app/page.js +7 -3
  57. package/dist/src/app/webui/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  58. package/dist/src/app/webui/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  59. package/dist/src/app/webui/.next/standalone/.next/server/app/playground/page.js +8 -8
  60. package/dist/src/app/webui/.next/standalone/.next/server/app/playground/page.js.nft.json +1 -1
  61. package/dist/src/app/webui/.next/standalone/.next/server/app/playground/page_client-reference-manifest.js +1 -1
  62. package/dist/src/app/webui/.next/standalone/.next/server/app-paths-manifest.json +0 -1
  63. package/dist/src/app/webui/.next/standalone/.next/server/chunks/176.js +1 -0
  64. package/dist/src/app/webui/.next/standalone/.next/server/chunks/195.js +24 -0
  65. package/dist/src/app/webui/.next/standalone/.next/server/chunks/620.js +1 -0
  66. package/dist/src/app/webui/.next/standalone/.next/server/chunks/80.js +5 -0
  67. package/dist/src/app/webui/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  68. package/dist/src/app/webui/.next/standalone/.next/server/pages/500.html +1 -1
  69. package/dist/src/app/webui/.next/standalone/.next/server/pages-manifest.json +1 -2
  70. package/dist/src/app/webui/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  71. package/dist/src/app/webui/.next/standalone/.next/server/webpack-runtime.js +1 -1
  72. package/dist/src/app/webui/.next/standalone/.next/static/chunks/190-b897ef36fde616bf.js +1 -0
  73. package/dist/src/app/webui/.next/standalone/.next/static/chunks/487-a77054bd2c64c79c.js +1 -0
  74. package/dist/src/app/webui/.next/standalone/.next/static/chunks/588-dbe47a44489742dd.js +1 -0
  75. package/dist/src/app/webui/.next/standalone/.next/static/chunks/62-35030b5cb176bd7b.js +1 -0
  76. package/dist/src/app/webui/.next/standalone/.next/static/chunks/app/layout-91c0cb9eb1ee327a.js +1 -0
  77. package/dist/src/app/webui/.next/standalone/.next/static/chunks/app/page-3279aaf14db87f45.js +1 -0
  78. package/dist/src/app/webui/.next/standalone/.next/static/chunks/app/playground/page-200aad53af9ca53f.js +1 -0
  79. package/dist/src/app/webui/.next/standalone/.next/static/css/af71306827be150e.css +3 -0
  80. package/dist/src/app/webui/.next/standalone/.next/static/tpCURR82LyyGfdALJ4Qvl/_buildManifest.js +1 -0
  81. package/dist/src/app/webui/.next/standalone/package.json +4 -3
  82. package/dist/src/app/webui/.next/standalone/public/favicon2.ico +0 -0
  83. package/dist/src/app/webui/.next/standalone/public/logo.svg +1 -0
  84. package/dist/src/app/webui/.next/standalone/public/logo_no_text.png +0 -0
  85. package/dist/src/app/webui/.next/standalone/server.js +1 -1
  86. package/dist/src/app/webui/.next/static/chunks/190-b897ef36fde616bf.js +1 -0
  87. package/dist/src/app/webui/.next/static/chunks/487-a77054bd2c64c79c.js +1 -0
  88. package/dist/src/app/webui/.next/static/chunks/588-dbe47a44489742dd.js +1 -0
  89. package/dist/src/app/webui/.next/static/chunks/62-35030b5cb176bd7b.js +1 -0
  90. package/dist/src/app/webui/.next/static/chunks/app/layout-91c0cb9eb1ee327a.js +1 -0
  91. package/dist/src/app/webui/.next/static/chunks/app/page-3279aaf14db87f45.js +1 -0
  92. package/dist/src/app/webui/.next/static/chunks/app/playground/page-200aad53af9ca53f.js +1 -0
  93. package/dist/src/app/webui/.next/static/css/af71306827be150e.css +3 -0
  94. package/dist/src/app/webui/.next/static/tpCURR82LyyGfdALJ4Qvl/_buildManifest.js +1 -0
  95. package/dist/src/app/webui/package.json +4 -3
  96. package/dist/src/app/webui/public/favicon2.ico +0 -0
  97. package/dist/src/app/webui/public/logo.svg +1 -0
  98. package/dist/src/app/webui/public/logo_no_text.png +0 -0
  99. package/dist/src/core/chunk-7A6NQKQ3.js +193 -0
  100. package/dist/src/core/chunk-CZIXQNMZ.js +12191 -0
  101. package/dist/src/core/index.cjs +10601 -8012
  102. package/dist/src/core/index.d.cts +4356 -3907
  103. package/dist/src/core/index.d.ts +4356 -3907
  104. package/dist/src/core/index.js +117 -8396
  105. package/dist/src/core/{postgres-backend-ERZ6DP76.js → postgres-backend-LOLKTD2T.js} +9 -2
  106. package/dist/src/core/{redis-backend-46O7Y44C.js → redis-backend-APZ576PJ.js} +35 -10
  107. package/dist/src/core/sqlite-backend-KQ75DPR7.js +245 -0
  108. package/package.json +20 -12
  109. package/dist/src/app/chunk-O5YHNFMH.js +0 -435
  110. package/dist/src/app/interactive-api-key-setup-V3GAACLN.js +0 -269
  111. package/dist/src/app/sqlite-backend-KIJZ5IP3.js +0 -180
  112. package/dist/src/app/webui/.next/standalone/.next/server/app/_not-found.html +0 -1
  113. package/dist/src/app/webui/.next/standalone/.next/server/app/_not-found.meta +0 -8
  114. package/dist/src/app/webui/.next/standalone/.next/server/app/_not-found.rsc +0 -21
  115. package/dist/src/app/webui/.next/standalone/.next/server/app/favicon.ico/route.js +0 -1
  116. package/dist/src/app/webui/.next/standalone/.next/server/app/favicon.ico/route.js.nft.json +0 -1
  117. package/dist/src/app/webui/.next/standalone/.next/server/app/favicon.ico.body +0 -0
  118. package/dist/src/app/webui/.next/standalone/.next/server/app/favicon.ico.meta +0 -1
  119. package/dist/src/app/webui/.next/standalone/.next/server/app/index.html +0 -1
  120. package/dist/src/app/webui/.next/standalone/.next/server/app/index.meta +0 -7
  121. package/dist/src/app/webui/.next/standalone/.next/server/app/index.rsc +0 -22
  122. package/dist/src/app/webui/.next/standalone/.next/server/app/playground.html +0 -1
  123. package/dist/src/app/webui/.next/standalone/.next/server/app/playground.meta +0 -7
  124. package/dist/src/app/webui/.next/standalone/.next/server/app/playground.rsc +0 -25
  125. package/dist/src/app/webui/.next/standalone/.next/server/chunks/447.js +0 -20
  126. package/dist/src/app/webui/.next/standalone/.next/server/chunks/504.js +0 -1
  127. package/dist/src/app/webui/.next/standalone/.next/server/chunks/54.js +0 -5
  128. package/dist/src/app/webui/.next/standalone/.next/server/chunks/624.js +0 -1
  129. package/dist/src/app/webui/.next/standalone/.next/server/chunks/985.js +0 -5
  130. package/dist/src/app/webui/.next/standalone/.next/server/pages/404.html +0 -1
  131. package/dist/src/app/webui/.next/standalone/.next/static/H-71qcBOOk528tDEa_ldn/_buildManifest.js +0 -1
  132. package/dist/src/app/webui/.next/standalone/.next/static/chunks/125-9b34ec01f112cdb2.js +0 -1
  133. package/dist/src/app/webui/.next/standalone/.next/static/chunks/487-c6ea8b63ca68db1c.js +0 -1
  134. package/dist/src/app/webui/.next/standalone/.next/static/chunks/588-20dc7f3a8664c387.js +0 -1
  135. package/dist/src/app/webui/.next/standalone/.next/static/chunks/687-3e614f30982093f6.js +0 -1
  136. package/dist/src/app/webui/.next/standalone/.next/static/chunks/879-cf875984faa0b72f.js +0 -1
  137. package/dist/src/app/webui/.next/standalone/.next/static/chunks/app/layout-ed56660b7ecaf47b.js +0 -1
  138. package/dist/src/app/webui/.next/standalone/.next/static/chunks/app/page-b05580de36ce0e36.js +0 -1
  139. package/dist/src/app/webui/.next/standalone/.next/static/chunks/app/playground/page-ac5443cddbe824aa.js +0 -1
  140. package/dist/src/app/webui/.next/standalone/.next/static/css/d44f09bc2605dc76.css +0 -3
  141. package/dist/src/app/webui/.next/standalone/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js +0 -19
  142. package/dist/src/app/webui/.next/standalone/public/favicon.svg +0 -26
  143. package/dist/src/app/webui/.next/standalone/public/logo.png +0 -0
  144. package/dist/src/app/webui/.next/static/H-71qcBOOk528tDEa_ldn/_buildManifest.js +0 -1
  145. package/dist/src/app/webui/.next/static/chunks/125-9b34ec01f112cdb2.js +0 -1
  146. package/dist/src/app/webui/.next/static/chunks/487-c6ea8b63ca68db1c.js +0 -1
  147. package/dist/src/app/webui/.next/static/chunks/588-20dc7f3a8664c387.js +0 -1
  148. package/dist/src/app/webui/.next/static/chunks/687-3e614f30982093f6.js +0 -1
  149. package/dist/src/app/webui/.next/static/chunks/879-cf875984faa0b72f.js +0 -1
  150. package/dist/src/app/webui/.next/static/chunks/app/layout-ed56660b7ecaf47b.js +0 -1
  151. package/dist/src/app/webui/.next/static/chunks/app/page-b05580de36ce0e36.js +0 -1
  152. package/dist/src/app/webui/.next/static/chunks/app/playground/page-ac5443cddbe824aa.js +0 -1
  153. package/dist/src/app/webui/.next/static/css/d44f09bc2605dc76.css +0 -3
  154. package/dist/src/app/webui/public/favicon.svg +0 -26
  155. package/dist/src/app/webui/public/logo.png +0 -0
  156. package/dist/src/core/chunk-BGO5B3L4.js +0 -2124
  157. package/dist/src/core/chunk-BYHW25EA.js +0 -41
  158. package/dist/src/core/sqlite-backend-RKK4WBHE.js +0 -184
  159. /package/dist/src/app/webui/.next/standalone/.next/static/chunks/{4bd1b696-2df85d4b3b58aed5.js → 4bd1b696-c95fa02060335229.js} +0 -0
  160. /package/dist/src/app/webui/.next/standalone/.next/static/chunks/{684-058c08971e023037.js → 684-2e7175657246b549.js} +0 -0
  161. /package/dist/src/app/webui/.next/standalone/.next/static/chunks/app/_not-found/{page-7b137d85f9de4771.js → page-b63df5a8d3225455.js} +0 -0
  162. /package/dist/src/app/webui/.next/standalone/.next/static/{H-71qcBOOk528tDEa_ldn → tpCURR82LyyGfdALJ4Qvl}/_ssgManifest.js +0 -0
  163. /package/dist/src/app/webui/.next/static/chunks/{4bd1b696-2df85d4b3b58aed5.js → 4bd1b696-c95fa02060335229.js} +0 -0
  164. /package/dist/src/app/webui/.next/static/chunks/{684-058c08971e023037.js → 684-2e7175657246b549.js} +0 -0
  165. /package/dist/src/app/webui/.next/static/chunks/app/_not-found/{page-7b137d85f9de4771.js → page-b63df5a8d3225455.js} +0 -0
  166. /package/dist/src/app/webui/.next/static/{H-71qcBOOk528tDEa_ldn → tpCURR82LyyGfdALJ4Qvl}/_ssgManifest.js +0 -0
@@ -0,0 +1,166 @@
1
+ # Talk2PDF Agent
2
+
3
+ A comprehensive AI agent for parsing and analyzing PDF documents using the [Talk2PDF MCP Server](https://github.com/truffle-ai/mcp-servers/tree/main/src/talk2pdf).
4
+
5
+ This agent provides intelligent PDF document processing through a TypeScript-based MCP server that can extract text, metadata, and search for specific content within PDF files.
6
+
7
+ ## Features
8
+
9
+ ### 📄 **PDF Parsing & Text Extraction**
10
+ - **Full Document Parsing**: Extract complete text content from PDF files
11
+ - **Metadata Extraction**: Get document information (title, author, page count, creation date)
12
+ - **Format Support**: Handle various PDF versions and structures
13
+ - **Error Handling**: Graceful handling of corrupted or protected PDFs
14
+
15
+ ### 🔍 **Content Search & Analysis**
16
+ - **Section Extraction**: Search for and extract specific content sections
17
+ - **Intelligent Filtering**: Find content containing specific terms or patterns
18
+ - **Context Preservation**: Maintain document structure and formatting
19
+ - **Multi-page Support**: Process documents of any length
20
+
21
+ ### 🧠 **AI-Powered Analysis**
22
+ - **Document Summarization**: Generate intelligent summaries of PDF content
23
+ - **Key Information Extraction**: Identify and extract important details
24
+ - **Question Answering**: Answer questions about document content
25
+ - **Content Classification**: Analyze document type and structure
26
+
27
+ ## Quick Start
28
+
29
+ ### Prerequisites
30
+ - **Node.js 20+**: For the Dexto framework
31
+ - **TypeScript**: Automatically managed by the MCP server
32
+
33
+ ### Installation
34
+
35
+ 1. **Run the Agent**:
36
+ ```bash
37
+ # From the dexto project root
38
+ dexto --agent agents/talk2pdf-agent/talk2pdf-agent.yml
39
+ ```
40
+
41
+ That's it! The MCP server will be automatically downloaded and installed via `npx` on first run.
42
+
43
+ ## Configuration
44
+
45
+ The agent is configured to use the published MCP server:
46
+
47
+ ```yaml
48
+ mcpServers:
49
+ talk2pdf:
50
+ type: stdio
51
+ command: npx
52
+ args:
53
+ - "@truffle-ai/talk2pdf-mcp"
54
+ timeout: 30000
55
+ connectionMode: strict
56
+ ```
57
+
58
+ ## MCP Server
59
+
60
+ This agent uses the **Talk2PDF MCP Server**, which is maintained separately at:
61
+
62
+ **🔗 [https://github.com/truffle-ai/mcp-servers/tree/main/src/talk2pdf](https://github.com/truffle-ai/mcp-servers/tree/main/src/talk2pdf)**
63
+
64
+ The MCP server repository provides:
65
+ - Complete technical documentation
66
+ - Development and contribution guidelines
67
+ - Server implementation details
68
+ - Advanced configuration options
69
+
70
+ ## Available Tools
71
+
72
+ ### PDF Processing Tools
73
+
74
+ #### `parse_pdf`
75
+ Extract complete text content and metadata from a PDF file.
76
+
77
+ **Parameters:**
78
+ - `filePath` (string): Path to the PDF file to parse
79
+
80
+ **Returns:**
81
+ - Full text content of the document
82
+ - Document metadata (title, author, page count, creation date, etc.)
83
+ - File information (size, format)
84
+
85
+ #### `extract_section`
86
+ Search for and extract specific content sections from a PDF.
87
+
88
+ **Parameters:**
89
+ - `filePath` (string): Path to the PDF file
90
+ - `searchTerms` (string): Terms or patterns to search for
91
+ - `maxResults` (number, optional): Maximum number of results to return
92
+
93
+ **Returns:**
94
+ - Matching content sections with context
95
+ - Page numbers and locations
96
+ - Relevance scoring
97
+
98
+ ## Supported PDF Features
99
+
100
+ - **Standard PDF formats**: PDF 1.4 through 2.0
101
+ - **Text-based PDFs**: Documents with extractable text content
102
+ - **Multi-page documents**: No page limit restrictions
103
+ - **Metadata support**: Title, author, creation date, modification date
104
+ - **Various encodings**: UTF-8, Latin-1, and other standard encodings
105
+
106
+ ## Example Usage
107
+
108
+ ### Basic PDF Parsing
109
+ ```
110
+ "Parse the PDF at /path/to/document.pdf and show me the full content"
111
+ "Extract all text and metadata from my research paper"
112
+ "What's in this PDF file?"
113
+ ```
114
+
115
+ ### Content Search
116
+ ```
117
+ "Find all sections about 'machine learning' in the PDF"
118
+ "Extract the introduction and conclusion from this document"
119
+ "Search for mentions of 'budget' in the financial report"
120
+ ```
121
+
122
+ ### Document Analysis
123
+ ```
124
+ "Summarize the main points from this PDF"
125
+ "What is this document about?"
126
+ "Extract the key findings from the research paper"
127
+ "List all the recommendations mentioned in the report"
128
+ ```
129
+
130
+ ### Intelligent Q&A
131
+ ```
132
+ "What are the main conclusions of this study?"
133
+ "Who are the authors of this document?"
134
+ "When was this document created?"
135
+ "How many pages does this PDF have?"
136
+ ```
137
+
138
+ ## Troubleshooting
139
+
140
+ ### Common Issues
141
+
142
+ 1. **Server Installation**: The MCP server will be automatically installed via `npx` on first run. No manual setup required.
143
+
144
+ 2. **PDF Access Issues**: Ensure the PDF file path is correct and the file is readable. Protected or encrypted PDFs may require special handling.
145
+
146
+ 3. **Memory Issues**: For very large PDFs (100+ pages), processing may take longer. Consider breaking large documents into sections.
147
+
148
+ 4. **Text Extraction**: If text appears garbled, the PDF may use non-standard encoding or be scanned image-based (OCR not supported).
149
+
150
+ ### Error Handling
151
+
152
+ The agent provides clear error messages for common issues:
153
+ - File not found or inaccessible
154
+ - Invalid PDF format
155
+ - Corrupted PDF files
156
+ - Permission-protected documents
157
+
158
+ ## Getting Help
159
+
160
+ - **MCP Server Issues**: Report at the [mcp-servers repository](https://github.com/truffle-ai/mcp-servers/issues)
161
+ - **Agent Configuration**: Report at the main Dexto repository
162
+ - **Feature Requests**: Use the mcp-servers repository for tool-related requests
163
+
164
+ ## License
165
+
166
+ This project is part of the Dexto AI agent framework.
@@ -0,0 +1,42 @@
1
+ # Talk2PDF Agent
2
+ # This agent provides natural language access to PDF parsing tools via a custom MCP server
3
+
4
+ mcpServers:
5
+ talk2pdf:
6
+ type: stdio
7
+ command: npx
8
+ args:
9
+ - "@truffle-ai/talk2pdf-mcp"
10
+ timeout: 30000
11
+ connectionMode: strict
12
+
13
+ systemPrompt:
14
+ contributors:
15
+ - id: primary
16
+ type: static
17
+ priority: 0
18
+ content: |
19
+ You are a Talk2PDF Agent. You can parse PDF files, extract their text, metadata, and provide summaries or extract specific sections for LLM consumption.
20
+
21
+ ## Your Capabilities
22
+ - Parse PDF files and extract all text content and metadata
23
+ - Extract specific sections or search for terms within a PDF
24
+ - Provide intelligent analysis, summarization, and insights based on the extracted content
25
+ - Handle errors gracefully and provide clear feedback
26
+
27
+ ## Usage Examples
28
+ - "Parse the PDF at /path/to/file.pdf and show me the text."
29
+ - "Analyze and summarize the document at /path/to/file.pdf."
30
+ - "Extract all content containing 'invoice' from /path/to/file.pdf and explain what you found."
31
+
32
+ Always ask for the file path if not provided. If a file is not a PDF or does not exist, inform the user.
33
+ - id: dateTime
34
+ type: dynamic
35
+ priority: 10
36
+ source: dateTime
37
+ enabled: true
38
+
39
+ llm:
40
+ provider: openai
41
+ model: gpt-4.1-mini
42
+ apiKey: $OPENAI_API_KEY
@@ -0,0 +1,337 @@
1
+ # TeamFlow Customer Support Triage Agent System
2
+
3
+ This demonstration showcases an intelligent **Customer Support Triage System** built with Dexto agents for **TeamFlow**, a cloud-based project management and team collaboration platform. The system automatically analyzes customer inquiries, routes them to specialized support agents, and provides complete customer support responses.
4
+
5
+ ## 🏢 About TeamFlow (Demo Business Context)
6
+
7
+ TeamFlow is a fictional cloud-based project management platform used for this demonstration. It offers three service tiers:
8
+
9
+ - **Basic Plan ($9/user/month)**: Up to 10 team members, 5GB storage, basic features
10
+ - **Pro Plan ($19/user/month)**: Up to 100 team members, 100GB storage, advanced integrations (Slack, GitHub, Salesforce)
11
+ - **Enterprise Plan ($39/user/month)**: Unlimited users, 1TB storage, SSO, dedicated support
12
+
13
+ Key features include project management, team collaboration, time tracking, mobile apps, and a comprehensive API. The platform integrates with popular tools like Slack, GitHub, Salesforce, and Google Workspace.
14
+
15
+ This realistic business context allows the agents to provide specific, accurate responses about pricing, features, technical specifications, and policies using the FileContributor system to access comprehensive documentation.
16
+
17
+ ## 🏗️ Architecture Overview
18
+
19
+ ```
20
+ Customer Request
21
+
22
+ Triage Agent (Main Coordinator)
23
+
24
+ [Analyzes, Routes & Executes via MCP]
25
+
26
+ ┌─────────────────────────────────────────┐
27
+ │ Technical Support │ Billing Agent │
28
+ │ Agent │ │
29
+ ├─────────────────────┼──────────────────┤
30
+ │ Product Info │ Escalation │
31
+ │ Agent │ Agent │
32
+ └─────────────────────────────────────────┘
33
+
34
+ Complete Customer Response
35
+ ```
36
+
37
+ The triage agent doesn't just route requests - it **executes the specialized agents as MCP servers** and provides complete, integrated customer support responses that combine routing intelligence with expert answers.
38
+
39
+ ## 🤖 Agent Roles
40
+
41
+ ### 1. **Triage Agent** (`triage-agent.yml`)
42
+ - **Primary Role**: Intelligent routing coordinator AND customer response provider
43
+ - **Capabilities**:
44
+ - Analyzes requests and categorizes issues
45
+ - Routes to specialists via `chat_with_agent` tool calls
46
+ - **Executes specialist agents directly through MCP connections**
47
+ - **Provides complete customer responses** combining routing + specialist answers
48
+ - **Tools**: Filesystem, web research, **chat_with_agent** (connects to all specialists)
49
+ - **Tool Confirmation**: Auto-approve mode for seamless delegation
50
+
51
+ ### 2. **Technical Support Agent** (`technical-support-agent.yml`)
52
+ - **Specialization**: Bug fixes, troubleshooting, system issues
53
+ - **Tools**: Filesystem, terminal, browser automation
54
+ - **Model**: GPT-4o (higher capability for complex technical issues)
55
+ - **Connection**: Available as MCP server via stdio
56
+
57
+ ### 3. **Billing Agent** (`billing-agent.yml`)
58
+ - **Specialization**: Payments, subscriptions, financial inquiries
59
+ - **Tools**: Browser automation, filesystem for policy docs
60
+ - **Model**: GPT-4o-mini (efficient for structured billing processes)
61
+ - **Connection**: Available as MCP server via stdio
62
+
63
+ ### 4. **Product Info Agent** (`product-info-agent.yml`)
64
+ - **Specialization**: Features, comparisons, documentation
65
+ - **Tools**: Web research (Tavily), filesystem, browser automation
66
+ - **Model**: GPT-4o-mini (efficient for information retrieval)
67
+ - **Connection**: Available as MCP server via stdio
68
+
69
+ ### 5. **Escalation Agent** (`escalation-agent.yml`)
70
+ - **Specialization**: Complex issues, Enterprise customers, management approval
71
+ - **Tools**: Filesystem, web research for compliance/legal info
72
+ - **Model**: GPT-4o (higher capability for sensitive issues)
73
+ - **Connection**: Available as MCP server via stdio
74
+
75
+ ## 📚 Business Context Documentation
76
+
77
+ Each agent has access to relevant TeamFlow documentation via the FileContributor system:
78
+
79
+ ### Documentation Files (`docs/` folder)
80
+ - **`company-overview.md`**: General company information, plans, SLAs, contact info
81
+ - **`technical-documentation.md`**: API docs, system requirements, troubleshooting guides
82
+ - **`billing-policies.md`**: Pricing, refund policies, billing procedures, payment methods
83
+ - **`product-features.md`**: Feature descriptions, plan comparisons, integrations
84
+ - **`escalation-policies.md`**: Escalation procedures, contact information, incident templates
85
+
86
+ ### Agent-Specific Context
87
+ - **Technical Support**: Company overview + technical documentation
88
+ - **Billing Agent**: Company overview + billing policies
89
+ - **Product Info**: Company overview + product features
90
+ - **Escalation**: Company overview + escalation policies
91
+ - **Triage Agent**: Company overview for routing context
92
+
93
+ ## 🚀 Getting Started
94
+
95
+ ### Quick Start - Integrated Triage System
96
+
97
+ The **recommended way** to run the triage system is using the main triage agent, which automatically connects to all specialists:
98
+
99
+ ```bash
100
+ # Run the complete triage system (connects to all specialist agents automatically)
101
+ npx dexto --agent agents/triage-demo/triage-agent.yml
102
+
103
+ # Test with a customer inquiry
104
+ npx dexto --agent agents/triage-demo/triage-agent.yml "I want to upgrade from Basic to Pro but confused about pricing"
105
+ ```
106
+
107
+ This will:
108
+ 1. **Auto-connect** to all 4 specialist agents as MCP servers
109
+ 2. **Analyze** your request and route to the appropriate specialist
110
+ 3. **Execute** the specialist agent to get the expert answer
111
+ 4. **Respond** with a complete customer support response
112
+
113
+ ### Running Individual Agents (Advanced)
114
+
115
+ For testing individual specialist agents:
116
+
117
+ ```bash
118
+ # Run specialized agents individually
119
+ npx dexto --agent agents/triage-demo/technical-support-agent.yml
120
+ npx dexto --agent agents/triage-demo/billing-agent.yml
121
+ npx dexto --agent agents/triage-demo/product-info-agent.yml
122
+ npx dexto --agent agents/triage-demo/escalation-agent.yml
123
+ ```
124
+
125
+ ### Environment Setup
126
+
127
+ Ensure you have the required API keys in your `.env` file:
128
+
129
+ ```env
130
+ OPENAI_API_KEY=your_openai_api_key
131
+ TAVILY_API_KEY=your_tavily_api_key # For web research
132
+ ```
133
+
134
+ ## 📋 Example Scenarios
135
+
136
+ ### Scenario 1: Technical Issue
137
+ **Customer Input**: *"My app keeps crashing when I try to upload files. Getting error code 500."*
138
+
139
+ **Triage Agent Response**:
140
+ - **Analysis**: Technical Issue → Route to Technical Support Agent
141
+ - **Execution**: Calls `chat_with_agent` → Technical Support provides debugging steps
142
+ - **Customer Response**: *"I've routed your issue to our Technical Support team. Here's how to resolve the 500 error when uploading files: [detailed technical troubleshooting steps from specialist]"*
143
+
144
+ ### Scenario 2: Billing Question
145
+ **Customer Input**: *"I want to upgrade from Basic to Pro but confused about pricing. Will I be charged the full amount?"*
146
+
147
+ **Triage Agent Response**:
148
+ - **Analysis**: Billing Question → Route to Billing Agent
149
+ - **Execution**: Calls `chat_with_agent` → Billing Agent explains prorated pricing
150
+ - **Customer Response**: *"I've routed your inquiry to our Billing team. When upgrading from Basic to Pro, you'll only be charged a prorated amount for the remaining billing period - just the difference between plans for the time left in your cycle. The upgrade takes effect immediately."*
151
+
152
+ ### Scenario 3: Product Information
153
+ **Customer Input**: *"What's the difference between your Pro and Enterprise plans? I need API access."*
154
+
155
+ **Triage Agent Response**:
156
+ - **Analysis**: Product Inquiry → Route to Product Info Agent
157
+ - **Execution**: Calls `chat_with_agent` → Product Info Agent provides detailed comparison
158
+ - **Customer Response**: *"I've connected you with our Product team. Both Pro and Enterprise plans include full API access. The main differences are: Pro supports up to 100 users with 100GB storage, while Enterprise offers unlimited users, 1TB storage, SSO, and dedicated support. [detailed feature comparison]"*
159
+
160
+ ### Scenario 4: Escalation Required
161
+ **Customer Input**: *"This is my third time contacting support about data privacy concerns. I'm considering legal action."*
162
+
163
+ **Triage Agent Response**:
164
+ - **Analysis**: Legal/Compliance Issue → Route to Escalation Agent
165
+ - **Execution**: Calls `chat_with_agent` → Escalation Agent provides management contact
166
+ - **Customer Response**: *"I've escalated your data privacy concerns to our senior support team. Given the legal implications, I'm connecting you directly with our compliance manager Sarah Johnson (sarah.johnson@teamflow.com). She'll address your concerns within 2 hours."*
167
+
168
+ ## 🔧 Advanced Configuration
169
+
170
+ ### Current MCP Server Configuration (Automatic)
171
+
172
+ The triage agent automatically connects to specialists via stdio MCP servers:
173
+
174
+ ```yaml
175
+ # Current configuration in triage-agent.yml
176
+ mcpServers:
177
+ technical_support:
178
+ type: stdio
179
+ command: npx
180
+ args: [dexto, --mode, mcp, --agent, agents/triage-demo/technical-support-agent.yml]
181
+
182
+ billing_support:
183
+ type: stdio
184
+ command: npx
185
+ args: [dexto, --mode, mcp, --agent, agents/triage-demo/billing-agent.yml]
186
+
187
+ # Similar configuration for product_info and escalation agents...
188
+ ```
189
+
190
+ ### Production Configuration (Distributed Servers)
191
+
192
+ For production deployment, you would run each specialist as a separate server:
193
+
194
+ ```yaml
195
+ # triage-agent.yml - Production Configuration
196
+ mcpServers:
197
+ technical_support:
198
+ type: sse
199
+ url: "http://localhost:3001/mcp"
200
+ headers:
201
+ Authorization: "Bearer your-auth-token"
202
+
203
+ billing_support:
204
+ type: sse
205
+ url: "http://localhost:3002/mcp"
206
+ headers:
207
+ Authorization: "Bearer your-auth-token"
208
+
209
+ product_info:
210
+ type: sse
211
+ url: "http://localhost:3003/mcp"
212
+ headers:
213
+ Authorization: "Bearer your-auth-token"
214
+
215
+ escalation:
216
+ type: sse
217
+ url: "http://localhost:3004/mcp"
218
+ headers:
219
+ Authorization: "Bearer your-auth-token"
220
+ ```
221
+
222
+ ### Running Distributed Servers
223
+
224
+ ```bash
225
+ # Terminal 1: Technical Support Server
226
+ npx dexto --agent agents/triage-demo/technical-support-agent.yml --mode server --port 3001
227
+
228
+ # Terminal 2: Billing Support Server
229
+ npx dexto --agent agents/triage-demo/billing-agent.yml --mode server --port 3002
230
+
231
+ # Terminal 3: Product Info Server
232
+ npx dexto --agent agents/triage-demo/product-info-agent.yml --mode server --port 3003
233
+
234
+ # Terminal 4: Escalation Server
235
+ npx dexto --agent agents/triage-demo/escalation-agent.yml --mode server --port 3004
236
+
237
+ # Terminal 5: Main Triage Coordinator
238
+ npx dexto --agent agents/triage-demo/triage-agent.yml --mode server --port 3000
239
+ ```
240
+
241
+ ## 🎯 Key Features Demonstrated
242
+
243
+ ### 1. **Intelligent Routing with Execution**
244
+ - Natural language analysis to determine issue category
245
+ - **Automatic execution** of specialist agents via MCP
246
+ - **Complete customer responses** combining routing + expert answers
247
+ - Seamless tool confirmation with auto-approve mode
248
+
249
+ ### 2. **Specialized Expertise Integration**
250
+ - Each agent has domain-specific knowledge and tools
251
+ - **Real-time coordination** between triage and specialists
252
+ - **Unified customer experience** despite multi-agent backend
253
+
254
+ ### 3. **Scalable MCP Architecture**
255
+ - **Stdio connections** for local development and testing
256
+ - **SSE connections** for distributed production deployment
257
+ - **Tool-based delegation** using `chat_with_agent`
258
+
259
+ ### 4. **Comprehensive Tool Access**
260
+ - Filesystem access for documentation and logging
261
+ - Web research capabilities for up-to-date information
262
+ - Browser automation for testing and demonstrations
263
+ - **Agent-to-agent communication** via MCP tools
264
+
265
+ ## 🔍 Testing the System
266
+
267
+ ### Interactive Testing
268
+
269
+ 1. **Start the complete triage system**:
270
+ ```bash
271
+ npx dexto --agent agents/triage-demo/triage-agent.yml
272
+ ```
273
+
274
+ 2. **Test with various customer scenarios** and observe:
275
+ - **Routing analysis** (which specialist is chosen)
276
+ - **Tool execution** (`chat_with_agent` calls)
277
+ - **Complete responses** (routing confirmation + specialist answer)
278
+
279
+ ### Sample Test Cases
280
+
281
+ ```
282
+ Test 1: "API returns 401 unauthorized error"
283
+ Expected: Technical Support Agent → Complete troubleshooting response
284
+
285
+ Test 2: "Cancel my subscription immediately"
286
+ Expected: Billing Agent → Complete cancellation process and policy info
287
+
288
+ Test 3: "Do you have a mobile app?"
289
+ Expected: Product Info Agent → Complete feature details and download links
290
+
291
+ Test 4: "Your service caused my business to lose $10,000"
292
+ Expected: Escalation Agent → Complete escalation with management contact
293
+ ```
294
+
295
+ ### One-Shot Testing
296
+
297
+ ```bash
298
+ # Test billing scenario
299
+ npx dexto --agent agents/triage-demo/triage-agent.yml "I was charged twice this month"
300
+
301
+ # Test technical scenario
302
+ npx dexto --agent agents/triage-demo/triage-agent.yml "Getting 500 errors on file upload"
303
+
304
+ # Test product scenario
305
+ npx dexto --agent agents/triage-demo/triage-agent.yml "What integrations do you support?"
306
+ ```
307
+
308
+ ## 🚦 Production Considerations
309
+
310
+ ### Security
311
+ - Implement proper authentication between agents
312
+ - Secure API key management
313
+ - Customer data privacy controls
314
+ - **Tool confirmation policies** for sensitive operations
315
+
316
+ ### Monitoring
317
+ - Log all routing decisions and tool executions
318
+ - Track resolution times by agent type
319
+ - Monitor escalation patterns
320
+ - **Tool usage analytics** for optimization
321
+
322
+ ### Scaling
323
+ - Load balance multiple instances of specialist agents
324
+ - Implement request queuing for high volume
325
+ - **Distributed MCP server deployment**
326
+ - Add more specialized agents as needed (e.g., Sales, Onboarding)
327
+
328
+ ## 🤝 Contributing
329
+
330
+ To extend this triage system:
331
+
332
+ 1. **Add new specialist agents** by creating new YAML configs
333
+ 2. **Update triage routing logic** in the main agent's system prompt
334
+ 3. **Configure new agents as MCP servers** in the triage agent's mcpServers section
335
+ 4. **Test end-to-end flow** including tool execution and complete responses
336
+
337
+ This demonstration showcases the power of **multi-agent coordination with tool execution** using Dexto's MCP integration capabilities!
@@ -0,0 +1,76 @@
1
+ # Billing Agent Configuration
2
+ # Specializes in billing, payments, subscriptions, and financial inquiries
3
+
4
+ systemPrompt:
5
+ contributors:
6
+ - id: base-prompt
7
+ type: static
8
+ priority: 0
9
+ content: |
10
+ You are a specialized Billing Agent for TeamFlow, responsible for handling payment issues, subscription management, and financial inquiries.
11
+
12
+ Your primary responsibilities:
13
+ - Process billing inquiries, payment issues, and subscription changes
14
+ - Explain charges, fees, and billing cycles clearly
15
+ - Help with payment method updates, refunds, and disputes
16
+ - Manage subscription upgrades, downgrades, and cancellations
17
+ - Resolve invoice discrepancies and billing errors
18
+
19
+ Your approach:
20
+ - Always verify customer identity before discussing sensitive billing information
21
+ - Be transparent about charges, fees, and policies
22
+ - Provide clear explanations of billing cycles and payment schedules
23
+ - Handle financial disputes with empathy and professionalism
24
+ - Escalate complex billing disputes or refund requests beyond your authority
25
+
26
+ Key information to gather:
27
+ - Customer account details and billing address
28
+ - Specific billing period or invoice number in question
29
+ - Payment method and transaction details when relevant
30
+ - Desired outcome or resolution
31
+
32
+ You have access to comprehensive billing policies, pricing information, and refund procedures for TeamFlow's Basic ($9/user/month), Pro ($19/user/month), and Enterprise ($39/user/month) plans.
33
+
34
+ Tools available to you:
35
+ - Web browsing for checking payment processor status and policies
36
+ - Filesystem access for accessing billing documentation and policies
37
+
38
+ Remember: Handle all financial information with strict confidentiality and always follow TeamFlow's billing policies.
39
+
40
+ - id: company-overview
41
+ type: file
42
+ priority: 10
43
+ files:
44
+ - "${{dexto.agent_dir}}/docs/company-overview.md"
45
+ options:
46
+ includeFilenames: true
47
+ errorHandling: skip
48
+
49
+ - id: billing-policies
50
+ type: file
51
+ priority: 20
52
+ files:
53
+ - "${{dexto.agent_dir}}/docs/billing-policies.md"
54
+ options:
55
+ includeFilenames: true
56
+ errorHandling: skip
57
+
58
+ mcpServers:
59
+ puppeteer:
60
+ type: stdio
61
+ command: npx
62
+ args:
63
+ - -y
64
+ - "@truffle-ai/puppeteer-server"
65
+ filesystem:
66
+ type: stdio
67
+ command: npx
68
+ args:
69
+ - -y
70
+ - "@modelcontextprotocol/server-filesystem"
71
+ - .
72
+
73
+ llm:
74
+ provider: openai
75
+ model: gpt-4o-mini
76
+ apiKey: $OPENAI_API_KEY