dexto 1.0.2 → 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 (165) hide show
  1. package/README.md +1 -1
  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-CLDYRNV6.js +10139 -0
  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-EZF6AMUS.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 +1604 -8978
  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 +10605 -8030
  102. package/dist/src/core/index.d.cts +4339 -3927
  103. package/dist/src/core/index.d.ts +4339 -3927
  104. package/dist/src/core/index.js +113 -8381
  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 +18 -11
  109. package/dist/src/app/chunk-W7G44EAE.js +0 -463
  110. package/dist/src/app/sqlite-backend-VRXGIKHQ.js +0 -180
  111. package/dist/src/app/webui/.next/standalone/.next/server/app/_not-found.html +0 -1
  112. package/dist/src/app/webui/.next/standalone/.next/server/app/_not-found.meta +0 -8
  113. package/dist/src/app/webui/.next/standalone/.next/server/app/_not-found.rsc +0 -21
  114. package/dist/src/app/webui/.next/standalone/.next/server/app/favicon.ico/route.js +0 -1
  115. package/dist/src/app/webui/.next/standalone/.next/server/app/favicon.ico/route.js.nft.json +0 -1
  116. package/dist/src/app/webui/.next/standalone/.next/server/app/favicon.ico.body +0 -0
  117. package/dist/src/app/webui/.next/standalone/.next/server/app/favicon.ico.meta +0 -1
  118. package/dist/src/app/webui/.next/standalone/.next/server/app/index.html +0 -1
  119. package/dist/src/app/webui/.next/standalone/.next/server/app/index.meta +0 -7
  120. package/dist/src/app/webui/.next/standalone/.next/server/app/index.rsc +0 -22
  121. package/dist/src/app/webui/.next/standalone/.next/server/app/playground.html +0 -1
  122. package/dist/src/app/webui/.next/standalone/.next/server/app/playground.meta +0 -7
  123. package/dist/src/app/webui/.next/standalone/.next/server/app/playground.rsc +0 -25
  124. package/dist/src/app/webui/.next/standalone/.next/server/chunks/447.js +0 -20
  125. package/dist/src/app/webui/.next/standalone/.next/server/chunks/504.js +0 -1
  126. package/dist/src/app/webui/.next/standalone/.next/server/chunks/54.js +0 -5
  127. package/dist/src/app/webui/.next/standalone/.next/server/chunks/624.js +0 -1
  128. package/dist/src/app/webui/.next/standalone/.next/server/chunks/985.js +0 -5
  129. package/dist/src/app/webui/.next/standalone/.next/server/pages/404.html +0 -1
  130. package/dist/src/app/webui/.next/standalone/.next/static/L4341-2-iEIknMYuTWeoz/_buildManifest.js +0 -1
  131. package/dist/src/app/webui/.next/standalone/.next/static/chunks/125-9b34ec01f112cdb2.js +0 -1
  132. package/dist/src/app/webui/.next/standalone/.next/static/chunks/487-c6ea8b63ca68db1c.js +0 -1
  133. package/dist/src/app/webui/.next/standalone/.next/static/chunks/588-20dc7f3a8664c387.js +0 -1
  134. package/dist/src/app/webui/.next/standalone/.next/static/chunks/687-3e614f30982093f6.js +0 -1
  135. package/dist/src/app/webui/.next/standalone/.next/static/chunks/879-cf875984faa0b72f.js +0 -1
  136. package/dist/src/app/webui/.next/standalone/.next/static/chunks/app/layout-ed56660b7ecaf47b.js +0 -1
  137. package/dist/src/app/webui/.next/standalone/.next/static/chunks/app/page-b05580de36ce0e36.js +0 -1
  138. package/dist/src/app/webui/.next/standalone/.next/static/chunks/app/playground/page-ac5443cddbe824aa.js +0 -1
  139. package/dist/src/app/webui/.next/standalone/.next/static/css/d44f09bc2605dc76.css +0 -3
  140. package/dist/src/app/webui/.next/standalone/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js +0 -19
  141. package/dist/src/app/webui/.next/standalone/public/favicon.svg +0 -26
  142. package/dist/src/app/webui/.next/standalone/public/logo.png +0 -0
  143. package/dist/src/app/webui/.next/static/L4341-2-iEIknMYuTWeoz/_buildManifest.js +0 -1
  144. package/dist/src/app/webui/.next/static/chunks/125-9b34ec01f112cdb2.js +0 -1
  145. package/dist/src/app/webui/.next/static/chunks/487-c6ea8b63ca68db1c.js +0 -1
  146. package/dist/src/app/webui/.next/static/chunks/588-20dc7f3a8664c387.js +0 -1
  147. package/dist/src/app/webui/.next/static/chunks/687-3e614f30982093f6.js +0 -1
  148. package/dist/src/app/webui/.next/static/chunks/879-cf875984faa0b72f.js +0 -1
  149. package/dist/src/app/webui/.next/static/chunks/app/layout-ed56660b7ecaf47b.js +0 -1
  150. package/dist/src/app/webui/.next/static/chunks/app/page-b05580de36ce0e36.js +0 -1
  151. package/dist/src/app/webui/.next/static/chunks/app/playground/page-ac5443cddbe824aa.js +0 -1
  152. package/dist/src/app/webui/.next/static/css/d44f09bc2605dc76.css +0 -3
  153. package/dist/src/app/webui/public/favicon.svg +0 -26
  154. package/dist/src/app/webui/public/logo.png +0 -0
  155. package/dist/src/core/chunk-6VYPSHEV.js +0 -2153
  156. package/dist/src/core/chunk-BYHW25EA.js +0 -41
  157. package/dist/src/core/sqlite-backend-M2ZPSSIZ.js +0 -184
  158. /package/dist/src/app/webui/.next/standalone/.next/static/chunks/{4bd1b696-2df85d4b3b58aed5.js → 4bd1b696-c95fa02060335229.js} +0 -0
  159. /package/dist/src/app/webui/.next/standalone/.next/static/chunks/{684-058c08971e023037.js → 684-2e7175657246b549.js} +0 -0
  160. /package/dist/src/app/webui/.next/standalone/.next/static/chunks/app/_not-found/{page-7b137d85f9de4771.js → page-b63df5a8d3225455.js} +0 -0
  161. /package/dist/src/app/webui/.next/standalone/.next/static/{L4341-2-iEIknMYuTWeoz → tpCURR82LyyGfdALJ4Qvl}/_ssgManifest.js +0 -0
  162. /package/dist/src/app/webui/.next/static/chunks/{4bd1b696-2df85d4b3b58aed5.js → 4bd1b696-c95fa02060335229.js} +0 -0
  163. /package/dist/src/app/webui/.next/static/chunks/{684-058c08971e023037.js → 684-2e7175657246b549.js} +0 -0
  164. /package/dist/src/app/webui/.next/static/chunks/app/_not-found/{page-7b137d85f9de4771.js → page-b63df5a8d3225455.js} +0 -0
  165. /package/dist/src/app/webui/.next/static/{L4341-2-iEIknMYuTWeoz → tpCURR82LyyGfdALJ4Qvl}/_ssgManifest.js +0 -0
@@ -0,0 +1,435 @@
1
+ # Image Editor Agent
2
+
3
+ A comprehensive AI agent for image editing and processing using the [Image Editor MCP Server](https://github.com/truffle-ai/mcp-servers/tree/main/src/image-editor).
4
+
5
+ This agent provides a complete suite of image manipulation tools through a Python-based MCP server built with OpenCV and Pillow.
6
+
7
+ ## Features
8
+
9
+ ### 🖼️ **Viewing & Preview**
10
+ - **Image Preview**: Get base64 previews for display in chat interfaces
11
+ - **System Viewer**: Open images in the system's default image viewer
12
+ - **Image Details**: Show detailed information in a user-friendly format
13
+ - **Thumbnail Generation**: Create quick thumbnail versions
14
+ - **Image Comparison**: Compare two images and highlight differences
15
+ - **Detailed Analysis**: Comprehensive image statistics and color analysis
16
+
17
+ ### ✂️ **Basic Operations**
18
+ - **Resize**: Resize images with aspect ratio preservation
19
+ - **Crop**: Crop images to specified dimensions
20
+ - **Format Conversion**: Convert between JPG, PNG, WebP, BMP, TIFF
21
+
22
+ ### 🎨 **Filters & Effects**
23
+ - **Basic**: Blur, sharpen, grayscale, invert
24
+ - **Artistic**: Sepia, vintage, cartoon, sketch
25
+ - **Detection**: Edge detection, emboss
26
+
27
+ ### ⚙️ **Adjustments**
28
+ - **Brightness & Contrast**: Fine-tune image appearance
29
+ - **Color Analysis**: Detailed color statistics and histograms
30
+
31
+ ### 📝 **Drawing & Annotations**
32
+ - **Basic Shapes**: Draw rectangles, circles, lines, and arrows
33
+ - **Text Overlay**: Add text with customizable font, size, color, and position
34
+ - **Annotations**: Add text with background for better visibility
35
+ - **Shape Properties**: Control thickness, fill, and positioning
36
+
37
+ ### 🔍 **Computer Vision**
38
+ - **Object Detection**: Detect faces, edges, contours, circles, lines
39
+ - **Image Analysis**: Detailed statistics, color analysis, histogram data
40
+
41
+ ### 🎯 **Advanced Features**
42
+ - **Collage Creation**: Create collages with multiple layout types and templates
43
+ - **Batch Processing**: Process multiple images with the same operation
44
+ - **Filter Discovery**: List all available filters and effects
45
+ - **Template System**: Predefined layouts for professional collages
46
+
47
+ ## Quick Start
48
+
49
+ ### Prerequisites
50
+ - **Node.js 20+**: For the Dexto framework
51
+ - **Python 3.10+**: Automatically managed by the MCP server
52
+
53
+ ### Installation
54
+
55
+ 1. **Run the Agent**:
56
+ ```bash
57
+ # From the dexto project root
58
+ dexto --agent agents/image-editor-agent/image-editor-agent.yml
59
+ ```
60
+
61
+ That's it! The MCP server will be automatically downloaded and installed via `uvx` on first run.
62
+
63
+ ## Configuration
64
+
65
+ The agent is configured to use the published MCP server:
66
+
67
+ ```yaml
68
+ mcpServers:
69
+ image_editor:
70
+ type: stdio
71
+ command: uvx
72
+ args:
73
+ - truffle-ai-image-editor-mcp
74
+ connectionMode: strict
75
+ ```
76
+
77
+ ## MCP Server
78
+
79
+ This agent uses the **Image Editor MCP Server**, which is maintained separately at:
80
+
81
+ **🔗 [https://github.com/truffle-ai/mcp-servers/tree/main/src/image-editor](https://github.com/truffle-ai/mcp-servers/tree/main/src/image-editor)**
82
+
83
+ The MCP server repository provides:
84
+ - Complete technical documentation
85
+ - Development and contribution guidelines
86
+ - Server implementation details
87
+ - Advanced configuration options
88
+
89
+ ## Available Tools
90
+
91
+ ### Viewing & Preview Tools
92
+
93
+ #### `preview_image`
94
+ Get a base64 preview of an image for display in chat interfaces.
95
+
96
+ **Parameters:**
97
+ - `filePath` (string): Path to the image file
98
+ - `maxSize` (integer, optional): Maximum size for preview (default: 800)
99
+
100
+ #### `open_image_viewer`
101
+ Open an image in the system's default image viewer.
102
+
103
+ **Parameters:**
104
+ - `filePath` (string): Path to the image file
105
+
106
+ #### `show_image_details`
107
+ Display detailed information about an image in a user-friendly format.
108
+
109
+ **Parameters:**
110
+ - `filePath` (string): Path to the image file
111
+
112
+ #### `create_thumbnail`
113
+ Create a thumbnail version of an image for quick preview.
114
+
115
+ **Parameters:**
116
+ - `filePath` (string): Path to the image file
117
+ - `size` (integer, optional): Thumbnail size (default: 150)
118
+ - `outputPath` (string, optional): Path for the output thumbnail
119
+
120
+ #### `compare_images`
121
+ Compare two images and show differences.
122
+
123
+ **Parameters:**
124
+ - `image1Path` (string): Path to the first image
125
+ - `image2Path` (string): Path to the second image
126
+
127
+ ### Basic Image Operations
128
+
129
+ #### `get_image_info`
130
+ Get detailed information about an image file.
131
+
132
+ **Parameters:**
133
+ - `filePath` (string): Path to the image file to analyze
134
+
135
+ #### `resize_image`
136
+ Resize an image to specified dimensions.
137
+
138
+ **Parameters:**
139
+ - `inputPath` (string): Path to the input image file
140
+ - `outputPath` (string, optional): Path for the output image
141
+ - `width` (integer, optional): Target width in pixels
142
+ - `height` (integer, optional): Target height in pixels
143
+ - `maintainAspectRatio` (boolean, optional): Whether to maintain aspect ratio (default: true)
144
+ - `quality` (integer, optional): Output quality 1-100 (default: 90)
145
+
146
+ #### `crop_image`
147
+ Crop an image to specified dimensions.
148
+
149
+ **Parameters:**
150
+ - `inputPath` (string): Path to the input image file
151
+ - `outputPath` (string, optional): Path for the output image
152
+ - `x` (integer): Starting X coordinate for cropping
153
+ - `y` (integer): Starting Y coordinate for cropping
154
+ - `width` (integer): Width of the crop area
155
+ - `height` (integer): Height of the crop area
156
+
157
+ #### `convert_format`
158
+ Convert an image to a different format.
159
+
160
+ **Parameters:**
161
+ - `inputPath` (string): Path to the input image file
162
+ - `outputPath` (string, optional): Path for the output image
163
+ - `format` (string): Target format (jpg, jpeg, png, webp, bmp, tiff)
164
+ - `quality` (integer, optional): Output quality 1-100 for lossy formats (default: 90)
165
+
166
+ ### Filters & Effects
167
+
168
+ #### `apply_filter`
169
+ Apply various filters and effects to an image.
170
+
171
+ **Parameters:**
172
+ - `inputPath` (string): Path to the input image file
173
+ - `outputPath` (string, optional): Path for the output image
174
+ - `filter` (string): Type of filter (blur, sharpen, grayscale, sepia, invert, edge_detection, emboss, vintage, cartoon, sketch)
175
+ - `intensity` (number, optional): Filter intensity 0.1-5.0 (default: 1.0)
176
+
177
+ #### `list_available_filters`
178
+ List all available image filters and effects.
179
+
180
+ **Parameters:** None
181
+
182
+ ### Adjustments
183
+
184
+ #### `adjust_brightness_contrast`
185
+ Adjust brightness and contrast of an image.
186
+
187
+ **Parameters:**
188
+ - `inputPath` (string): Path to the input image file
189
+ - `outputPath` (string, optional): Path for the output image
190
+ - `brightness` (number, optional): Brightness adjustment -100 to 100 (default: 0)
191
+ - `contrast` (number, optional): Contrast multiplier 0.1 to 3.0 (default: 1.0)
192
+
193
+ ### Drawing & Annotations
194
+
195
+ #### `draw_rectangle`
196
+ Draw a rectangle on an image.
197
+
198
+ **Parameters:**
199
+ - `inputPath` (string): Path to the input image file
200
+ - `outputPath` (string, optional): Path for the output image
201
+ - `x` (integer): X coordinate of top-left corner
202
+ - `y` (integer): Y coordinate of top-left corner
203
+ - `width` (integer): Width of the rectangle
204
+ - `height` (integer): Height of the rectangle
205
+ - `color` (string, optional): Color in hex format (default: "#FF0000")
206
+ - `thickness` (integer, optional): Line thickness (default: 3)
207
+ - `filled` (boolean, optional): Whether to fill the rectangle (default: false)
208
+
209
+ #### `draw_circle`
210
+ Draw a circle on an image.
211
+
212
+ **Parameters:**
213
+ - `inputPath` (string): Path to the input image file
214
+ - `outputPath` (string, optional): Path for the output image
215
+ - `centerX` (integer): X coordinate of circle center
216
+ - `centerY` (integer): Y coordinate of circle center
217
+ - `radius` (integer): Radius of the circle
218
+ - `color` (string, optional): Color in hex format (default: "#00FF00")
219
+ - `thickness` (integer, optional): Line thickness (default: 3)
220
+ - `filled` (boolean, optional): Whether to fill the circle (default: false)
221
+
222
+ #### `draw_line`
223
+ Draw a line on an image.
224
+
225
+ **Parameters:**
226
+ - `inputPath` (string): Path to the input image file
227
+ - `outputPath` (string, optional): Path for the output image
228
+ - `startX` (integer): X coordinate of line start
229
+ - `startY` (integer): Y coordinate of line start
230
+ - `endX` (integer): X coordinate of line end
231
+ - `endY` (integer): Y coordinate of line end
232
+ - `color` (string, optional): Color in hex format (default: "#0000FF")
233
+ - `thickness` (integer, optional): Line thickness (default: 2)
234
+
235
+ #### `draw_arrow`
236
+ Draw an arrow on an image.
237
+
238
+ **Parameters:**
239
+ - `inputPath` (string): Path to the input image file
240
+ - `outputPath` (string, optional): Path for the output image
241
+ - `startX` (integer): X coordinate of arrow start
242
+ - `startY` (integer): Y coordinate of arrow start
243
+ - `endX` (integer): X coordinate of arrow end
244
+ - `endY` (integer): Y coordinate of arrow end
245
+ - `color` (string, optional): Color in hex format (default: "#FF00FF")
246
+ - `thickness` (integer, optional): Line thickness (default: 2)
247
+ - `tipLength` (number, optional): Arrow tip length as fraction of line (default: 0.3)
248
+
249
+ #### `add_text_to_image`
250
+ Add text overlay to an image.
251
+
252
+ **Parameters:**
253
+ - `inputPath` (string): Path to the input image file
254
+ - `outputPath` (string, optional): Path for the output image
255
+ - `text` (string): Text to add to the image
256
+ - `x` (integer): X coordinate for text placement
257
+ - `y` (integer): Y coordinate for text placement
258
+ - `fontSize` (integer, optional): Font size in pixels (default: 30)
259
+ - `color` (string, optional): Text color in hex format (default: "#FFFFFF")
260
+
261
+ #### `add_annotation`
262
+ Add an annotation with background to an image.
263
+
264
+ **Parameters:**
265
+ - `inputPath` (string): Path to the input image file
266
+ - `outputPath` (string, optional): Path for the output image
267
+ - `text` (string): Text to add to the image
268
+ - `x` (integer): X coordinate for text placement
269
+ - `y` (integer): Y coordinate for text placement
270
+ - `fontSize` (integer, optional): Font size in pixels (default: 20)
271
+ - `textColor` (string, optional): Text color in hex format (default: "#FFFFFF")
272
+ - `backgroundColor` (string, optional): Background color in hex format (default: "#000000")
273
+ - `padding` (integer, optional): Padding around text (default: 5)
274
+
275
+ ### Computer Vision
276
+
277
+ #### `detect_objects`
278
+ Detect objects in an image using OpenCV.
279
+
280
+ **Parameters:**
281
+ - `inputPath` (string): Path to the input image file
282
+ - `detectionType` (string): Type of detection (faces, edges, contours, circles, lines)
283
+
284
+ #### `analyze_image`
285
+ Analyze image statistics and properties.
286
+
287
+ **Parameters:**
288
+ - `inputPath` (string): Path to the input image file
289
+
290
+ ### Advanced Features
291
+
292
+ #### `create_collage`
293
+ Create a collage from multiple images with various layout options.
294
+
295
+ **Parameters:**
296
+ - `imagePaths` (array): List of image file paths
297
+ - `layout` (string, optional): Layout type (grid, horizontal, vertical, mosaic, random, custom) (default: grid)
298
+ - `outputPath` (string, optional): Path for the output collage
299
+ - `maxWidth` (integer, optional): Maximum width for individual images (default: 1200)
300
+ - `spacing` (integer, optional): Spacing between images (default: 10)
301
+ - `canvasWidth` (integer, optional): Custom canvas width for mosaic/random/custom layouts
302
+ - `canvasHeight` (integer, optional): Custom canvas height for mosaic/random/custom layouts
303
+ - `backgroundColor` (string, optional): Background color in hex format (default: "#FFFFFF")
304
+ - `customPositions` (array, optional): List of {x, y} coordinates for custom layout
305
+ - `randomSeed` (integer, optional): Seed for reproducible random layouts
306
+
307
+ #### `create_collage_template`
308
+ Create a collage using predefined templates.
309
+
310
+ **Parameters:**
311
+ - `imagePaths` (array): List of image file paths
312
+ - `template` (string, optional): Template type (photo_wall, storyboard, featured, instagram_grid, polaroid) (default: photo_wall)
313
+ - `outputPath` (string, optional): Path for the output collage
314
+ - `maxWidth` (integer, optional): Maximum canvas width (default: 1200)
315
+ - `backgroundColor` (string, optional): Background color in hex format (default: "#FFFFFF")
316
+
317
+ #### `list_collage_templates`
318
+ List all available collage templates and layouts.
319
+
320
+ **Parameters:** None
321
+
322
+ #### `batch_process`
323
+ Process multiple images with the same operation.
324
+
325
+ **Parameters:**
326
+ - `inputPaths` (array): List of input image paths
327
+ - `operation` (string): Operation type (resize, filter, brightness_contrast, convert)
328
+ - `outputDirectory` (string, optional): Output directory for processed images
329
+ - Additional parameters depend on the operation type
330
+
331
+ ## Supported Image Formats
332
+
333
+ - **JPEG/JPG**: Lossy compression, good for photos
334
+ - **PNG**: Lossless compression, good for graphics with transparency
335
+ - **WebP**: Modern format with good compression
336
+ - **BMP**: Uncompressed bitmap format
337
+ - **TIFF**: High-quality format for professional use
338
+
339
+ ## Dependencies
340
+
341
+ - **OpenCV**: Computer vision operations and image processing
342
+ - **Pillow**: Image manipulation and text rendering
343
+ - **NumPy**: Numerical operations
344
+ - **MCP**: Model Context Protocol server implementation
345
+
346
+ ## Example Usage
347
+
348
+ ### Basic Image Operations
349
+ ```
350
+ "Resize the image at /path/to/image.jpg to 800x600 pixels"
351
+ "Crop the image to show only the top-left quarter"
352
+ "Convert the image to PNG format"
353
+ ```
354
+
355
+ ### Interactive Viewing
356
+ ```
357
+ "Show me a preview of the image"
358
+ "Open this image in the system viewer"
359
+ "Display detailed information about the image"
360
+ ```
361
+
362
+ ### Filters and Effects
363
+ ```
364
+ "Apply a vintage filter to the image"
365
+ "Create a cartoon effect on the image"
366
+ "Apply edge detection to find contours"
367
+ ```
368
+
369
+ ### Analysis and Detection
370
+ ```
371
+ "Analyze the color statistics of the image"
372
+ "Detect faces in the image"
373
+ "Compare two images and show differences"
374
+ ```
375
+
376
+ ### Drawing and Annotations
377
+ ```
378
+ "Draw a red rectangle around the face in the image"
379
+ "Add a circle to highlight the center point"
380
+ "Draw an arrow pointing to the important feature"
381
+ "Add an annotation saying 'Face detected' with a black background"
382
+ "Draw a line connecting two points in the image"
383
+ ```
384
+
385
+ ### Advanced Features
386
+ ```
387
+ "Create a mosaic collage from these images"
388
+ "Create a featured layout collage with one large image"
389
+ "Create an Instagram grid from 9 photos"
390
+ "Create a custom collage with specific positions"
391
+ "List all available collage templates"
392
+ "Batch process all images in the folder to apply a blur filter"
393
+ "Show me a preview of the image"
394
+ ```
395
+
396
+ ## Troubleshooting
397
+
398
+ ### Common Issues
399
+
400
+ 1. **OpenCV Installation**: If you encounter issues with OpenCV, ensure you have the required system dependencies:
401
+ ```bash
402
+ # macOS
403
+ brew install opencv
404
+
405
+ # Ubuntu/Debian
406
+ sudo apt-get install libopencv-dev
407
+ ```
408
+
409
+ 2. **Font Issues**: If text rendering fails, the server will fall back to the default font.
410
+
411
+ 3. **Memory Issues**: For large images, consider resizing before processing to avoid memory constraints.
412
+
413
+ 4. **Path Issues**: Ensure all file paths are absolute or correctly relative to the working directory.
414
+
415
+ ## Troubleshooting
416
+
417
+ ### Common Issues
418
+
419
+ 1. **Server Installation**: The MCP server will be automatically installed via `uvx` on first run. No manual setup required.
420
+
421
+ 2. **OpenCV Installation**: The server includes OpenCV installation - this may take a moment on first run due to the large download (35MB+).
422
+
423
+ 3. **Memory Issues**: For large images, consider resizing before processing to avoid memory constraints.
424
+
425
+ 4. **Path Issues**: Ensure all file paths are absolute or correctly relative to the working directory.
426
+
427
+ ## Getting Help
428
+
429
+ - **MCP Server Issues**: Report at the [mcp-servers repository](https://github.com/truffle-ai/mcp-servers/issues)
430
+ - **Agent Configuration**: Report at the main Dexto repository
431
+ - **Feature Requests**: Use the mcp-servers repository for tool-related requests
432
+
433
+ ## License
434
+
435
+ This project is part of the Dexto AI agent framework.
@@ -0,0 +1,45 @@
1
+ # Dexto Agent Configuration for Python Image Editor MCP Server
2
+ # Generated on 2025-07-18T19:30:00.000Z
3
+
4
+ systemPrompt: |
5
+ You are an AI assistant specialized in image editing and processing. You have access to a comprehensive set of tools for manipulating images including:
6
+
7
+ - **Basic Operations**: Resize, crop, convert formats
8
+ - **Filters & Effects**: Blur, sharpen, grayscale, sepia, invert, edge detection, emboss, vintage
9
+ - **Adjustments**: Brightness, contrast, color adjustments
10
+ - **Text & Overlays**: Add text to images with customizable fonts and colors
11
+ - **Computer Vision**: Face detection, edge detection, contour analysis, circle detection, line detection
12
+ - **Analysis**: Detailed image statistics, color analysis, histogram data
13
+
14
+ When working with images:
15
+ 1. Always validate that the input image exists and is in a supported format
16
+ 2. Provide clear feedback about what operations you're performing
17
+ 3. Save processed images with descriptive names
18
+ 4. Include image information (dimensions, file size, format) in your responses
19
+ 5. Suggest additional enhancements when appropriate
20
+
21
+ Supported image formats: JPG, JPEG, PNG, BMP, TIFF, WebP
22
+
23
+ mcpServers:
24
+ image_editor:
25
+ type: stdio
26
+ command: uvx
27
+ args:
28
+ - truffle-ai-image-editor-mcp
29
+ connectionMode: strict
30
+
31
+ toolConfirmation:
32
+ mode: "auto-approve"
33
+ allowedToolsStorage: "memory"
34
+
35
+ llm:
36
+ provider: openai
37
+ model: gpt-4o-mini
38
+ apiKey: $OPENAI_API_KEY
39
+
40
+ storage:
41
+ cache:
42
+ type: in-memory
43
+ database:
44
+ type: sqlite
45
+ path: .dexto/database/image-editor-agent-python.db