@pinepaper.studio/mcp-server 1.4.2 → 1.5.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 (199) hide show
  1. package/README.md +213 -18
  2. package/dist/__tests__/fixtures/mock-generators.d.ts +147 -0
  3. package/dist/__tests__/fixtures/mock-generators.d.ts.map +1 -1
  4. package/dist/__tests__/fixtures/mock-generators.js +85 -0
  5. package/dist/__tests__/fixtures/mock-generators.js.map +1 -1
  6. package/dist/agent/export-manager.d.ts +77 -0
  7. package/dist/agent/export-manager.d.ts.map +1 -0
  8. package/dist/agent/export-manager.js +455 -0
  9. package/dist/agent/export-manager.js.map +1 -0
  10. package/dist/agent/index.d.ts +9 -0
  11. package/dist/agent/index.d.ts.map +1 -0
  12. package/dist/agent/index.js +12 -0
  13. package/dist/agent/index.js.map +1 -0
  14. package/dist/agent/session-manager.d.ts +109 -0
  15. package/dist/agent/session-manager.d.ts.map +1 -0
  16. package/dist/agent/session-manager.js +311 -0
  17. package/dist/agent/session-manager.js.map +1 -0
  18. package/dist/agent/types.d.ts +385 -0
  19. package/dist/agent/types.d.ts.map +1 -0
  20. package/dist/agent/types.js +141 -0
  21. package/dist/agent/types.js.map +1 -0
  22. package/dist/browser/index.d.ts +1 -1
  23. package/dist/browser/index.d.ts.map +1 -1
  24. package/dist/browser/index.js +1 -1
  25. package/dist/browser/index.js.map +1 -1
  26. package/dist/browser/puppeteer-controller.d.ts +89 -5
  27. package/dist/browser/puppeteer-controller.d.ts.map +1 -1
  28. package/dist/browser/puppeteer-controller.js +412 -11
  29. package/dist/browser/puppeteer-controller.js.map +1 -1
  30. package/dist/cli.js +3 -2
  31. package/dist/cli.js.map +1 -1
  32. package/dist/i18n/locales/ar.d.ts.map +1 -1
  33. package/dist/i18n/locales/ar.js +37 -0
  34. package/dist/i18n/locales/ar.js.map +1 -1
  35. package/dist/i18n/locales/base.d.ts.map +1 -1
  36. package/dist/i18n/locales/base.js +49 -0
  37. package/dist/i18n/locales/base.js.map +1 -1
  38. package/dist/i18n/locales/bn.d.ts.map +1 -1
  39. package/dist/i18n/locales/bn.js +10 -0
  40. package/dist/i18n/locales/bn.js.map +1 -1
  41. package/dist/i18n/locales/cs.d.ts.map +1 -1
  42. package/dist/i18n/locales/cs.js +10 -0
  43. package/dist/i18n/locales/cs.js.map +1 -1
  44. package/dist/i18n/locales/da.d.ts.map +1 -1
  45. package/dist/i18n/locales/da.js +10 -0
  46. package/dist/i18n/locales/da.js.map +1 -1
  47. package/dist/i18n/locales/de.d.ts.map +1 -1
  48. package/dist/i18n/locales/de.js +107 -0
  49. package/dist/i18n/locales/de.js.map +1 -1
  50. package/dist/i18n/locales/el.d.ts.map +1 -1
  51. package/dist/i18n/locales/el.js +10 -0
  52. package/dist/i18n/locales/el.js.map +1 -1
  53. package/dist/i18n/locales/en.d.ts.map +1 -1
  54. package/dist/i18n/locales/en.js +162 -0
  55. package/dist/i18n/locales/en.js.map +1 -1
  56. package/dist/i18n/locales/es.d.ts.map +1 -1
  57. package/dist/i18n/locales/es.js +106 -0
  58. package/dist/i18n/locales/es.js.map +1 -1
  59. package/dist/i18n/locales/fa.d.ts.map +1 -1
  60. package/dist/i18n/locales/fa.js +10 -0
  61. package/dist/i18n/locales/fa.js.map +1 -1
  62. package/dist/i18n/locales/fi.d.ts.map +1 -1
  63. package/dist/i18n/locales/fi.js +10 -0
  64. package/dist/i18n/locales/fi.js.map +1 -1
  65. package/dist/i18n/locales/fil.d.ts.map +1 -1
  66. package/dist/i18n/locales/fil.js +10 -0
  67. package/dist/i18n/locales/fil.js.map +1 -1
  68. package/dist/i18n/locales/fr.d.ts.map +1 -1
  69. package/dist/i18n/locales/fr.js +37 -0
  70. package/dist/i18n/locales/fr.js.map +1 -1
  71. package/dist/i18n/locales/gu.d.ts.map +1 -1
  72. package/dist/i18n/locales/gu.js +10 -0
  73. package/dist/i18n/locales/gu.js.map +1 -1
  74. package/dist/i18n/locales/he.d.ts.map +1 -1
  75. package/dist/i18n/locales/he.js +10 -0
  76. package/dist/i18n/locales/he.js.map +1 -1
  77. package/dist/i18n/locales/hi.d.ts.map +1 -1
  78. package/dist/i18n/locales/hi.js +37 -0
  79. package/dist/i18n/locales/hi.js.map +1 -1
  80. package/dist/i18n/locales/hu.d.ts.map +1 -1
  81. package/dist/i18n/locales/hu.js +10 -0
  82. package/dist/i18n/locales/hu.js.map +1 -1
  83. package/dist/i18n/locales/id.d.ts.map +1 -1
  84. package/dist/i18n/locales/id.js +108 -0
  85. package/dist/i18n/locales/id.js.map +1 -1
  86. package/dist/i18n/locales/is.d.ts.map +1 -1
  87. package/dist/i18n/locales/is.js +10 -0
  88. package/dist/i18n/locales/is.js.map +1 -1
  89. package/dist/i18n/locales/it.d.ts.map +1 -1
  90. package/dist/i18n/locales/it.js +108 -0
  91. package/dist/i18n/locales/it.js.map +1 -1
  92. package/dist/i18n/locales/ja.d.ts.map +1 -1
  93. package/dist/i18n/locales/ja.js +108 -0
  94. package/dist/i18n/locales/ja.js.map +1 -1
  95. package/dist/i18n/locales/kn.d.ts.map +1 -1
  96. package/dist/i18n/locales/kn.js +10 -0
  97. package/dist/i18n/locales/kn.js.map +1 -1
  98. package/dist/i18n/locales/ko.d.ts.map +1 -1
  99. package/dist/i18n/locales/ko.js +37 -0
  100. package/dist/i18n/locales/ko.js.map +1 -1
  101. package/dist/i18n/locales/ml.d.ts.map +1 -1
  102. package/dist/i18n/locales/ml.js +10 -0
  103. package/dist/i18n/locales/ml.js.map +1 -1
  104. package/dist/i18n/locales/mr.d.ts.map +1 -1
  105. package/dist/i18n/locales/mr.js +10 -0
  106. package/dist/i18n/locales/mr.js.map +1 -1
  107. package/dist/i18n/locales/ms.d.ts.map +1 -1
  108. package/dist/i18n/locales/ms.js +10 -0
  109. package/dist/i18n/locales/ms.js.map +1 -1
  110. package/dist/i18n/locales/nl.d.ts.map +1 -1
  111. package/dist/i18n/locales/nl.js +108 -0
  112. package/dist/i18n/locales/nl.js.map +1 -1
  113. package/dist/i18n/locales/no.d.ts.map +1 -1
  114. package/dist/i18n/locales/no.js +10 -0
  115. package/dist/i18n/locales/no.js.map +1 -1
  116. package/dist/i18n/locales/pa.d.ts.map +1 -1
  117. package/dist/i18n/locales/pa.js +10 -0
  118. package/dist/i18n/locales/pa.js.map +1 -1
  119. package/dist/i18n/locales/pl.d.ts.map +1 -1
  120. package/dist/i18n/locales/pl.js +108 -0
  121. package/dist/i18n/locales/pl.js.map +1 -1
  122. package/dist/i18n/locales/pt-BR.d.ts.map +1 -1
  123. package/dist/i18n/locales/pt-BR.js +108 -0
  124. package/dist/i18n/locales/pt-BR.js.map +1 -1
  125. package/dist/i18n/locales/pt.d.ts.map +1 -1
  126. package/dist/i18n/locales/pt.js +10 -0
  127. package/dist/i18n/locales/pt.js.map +1 -1
  128. package/dist/i18n/locales/ro.d.ts.map +1 -1
  129. package/dist/i18n/locales/ro.js +10 -0
  130. package/dist/i18n/locales/ro.js.map +1 -1
  131. package/dist/i18n/locales/ru.d.ts.map +1 -1
  132. package/dist/i18n/locales/ru.js +108 -0
  133. package/dist/i18n/locales/ru.js.map +1 -1
  134. package/dist/i18n/locales/sv.d.ts.map +1 -1
  135. package/dist/i18n/locales/sv.js +10 -0
  136. package/dist/i18n/locales/sv.js.map +1 -1
  137. package/dist/i18n/locales/ta.d.ts.map +1 -1
  138. package/dist/i18n/locales/ta.js +10 -0
  139. package/dist/i18n/locales/ta.js.map +1 -1
  140. package/dist/i18n/locales/te.d.ts.map +1 -1
  141. package/dist/i18n/locales/te.js +10 -0
  142. package/dist/i18n/locales/te.js.map +1 -1
  143. package/dist/i18n/locales/th.d.ts.map +1 -1
  144. package/dist/i18n/locales/th.js +108 -0
  145. package/dist/i18n/locales/th.js.map +1 -1
  146. package/dist/i18n/locales/tl.d.ts.map +1 -1
  147. package/dist/i18n/locales/tl.js +10 -0
  148. package/dist/i18n/locales/tl.js.map +1 -1
  149. package/dist/i18n/locales/tr.d.ts.map +1 -1
  150. package/dist/i18n/locales/tr.js +108 -0
  151. package/dist/i18n/locales/tr.js.map +1 -1
  152. package/dist/i18n/locales/uk.d.ts.map +1 -1
  153. package/dist/i18n/locales/uk.js +108 -0
  154. package/dist/i18n/locales/uk.js.map +1 -1
  155. package/dist/i18n/locales/ur.d.ts.map +1 -1
  156. package/dist/i18n/locales/ur.js +10 -0
  157. package/dist/i18n/locales/ur.js.map +1 -1
  158. package/dist/i18n/locales/vi.d.ts.map +1 -1
  159. package/dist/i18n/locales/vi.js +108 -0
  160. package/dist/i18n/locales/vi.js.map +1 -1
  161. package/dist/i18n/locales/zh-CN.d.ts.map +1 -1
  162. package/dist/i18n/locales/zh-CN.js +108 -0
  163. package/dist/i18n/locales/zh-CN.js.map +1 -1
  164. package/dist/i18n/locales/zh-TW.d.ts.map +1 -1
  165. package/dist/i18n/locales/zh-TW.js +108 -0
  166. package/dist/i18n/locales/zh-TW.js.map +1 -1
  167. package/dist/index.d.ts +3 -0
  168. package/dist/index.d.ts.map +1 -1
  169. package/dist/index.js +2717 -147
  170. package/dist/index.js.map +1 -1
  171. package/dist/prompts/index.d.ts +39 -0
  172. package/dist/prompts/index.d.ts.map +1 -0
  173. package/dist/prompts/index.js +254 -0
  174. package/dist/prompts/index.js.map +1 -0
  175. package/dist/tools/compact-descriptions.d.ts +9 -0
  176. package/dist/tools/compact-descriptions.d.ts.map +1 -0
  177. package/dist/tools/compact-descriptions.js +260 -0
  178. package/dist/tools/compact-descriptions.js.map +1 -0
  179. package/dist/tools/definitions.d.ts +12 -0
  180. package/dist/tools/definitions.d.ts.map +1 -1
  181. package/dist/tools/definitions.js +4921 -957
  182. package/dist/tools/definitions.js.map +1 -1
  183. package/dist/tools/handlers.d.ts.map +1 -1
  184. package/dist/tools/handlers.js +985 -17
  185. package/dist/tools/handlers.js.map +1 -1
  186. package/dist/tools/index.d.ts +2 -1
  187. package/dist/tools/index.d.ts.map +1 -1
  188. package/dist/tools/index.js +1 -1
  189. package/dist/tools/index.js.map +1 -1
  190. package/dist/types/code-generator.d.ts +233 -1
  191. package/dist/types/code-generator.d.ts.map +1 -1
  192. package/dist/types/code-generator.js +2578 -26
  193. package/dist/types/code-generator.js.map +1 -1
  194. package/dist/types/schemas.d.ts +5438 -805
  195. package/dist/types/schemas.d.ts.map +1 -1
  196. package/dist/types/schemas.js +1135 -4
  197. package/dist/types/schemas.js.map +1 -1
  198. package/manifest.json +106 -2
  199. package/package.json +2 -2
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## Overview
9
9
 
10
- PinePaper MCP Server enables AI assistants like Claude to create and animate graphics in [PinePaper Studio](https://pinepaper.studio). Using natural language, you can:
10
+ PinePaper MCP Server enables AI assistants to create and animate graphics in [PinePaper Studio](https://pinepaper.studio) via the Model Context Protocol (MCP). Works with any AI that supports MCP tool calling (Claude, GPT, Gemini, local models, etc.). Using natural language, you can:
11
11
 
12
12
  - Create text, shapes, and complex graphics
13
13
  - Animate items with behavior-driven relations
@@ -26,12 +26,13 @@ npm install -g @pinepaper.studio/mcp-server
26
26
  bun add -g @pinepaper.studio/mcp-server
27
27
  ```
28
28
 
29
- ### 2. Configure Claude Desktop
29
+ ### 2. Configure Your AI Client
30
30
 
31
- Add to your `claude_desktop_config.json`:
31
+ Add to your MCP client configuration. Examples:
32
32
 
33
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
34
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
33
+ **Claude Desktop** (`claude_desktop_config.json`):
34
+ - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
35
+ - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
35
36
 
36
37
  ```json
37
38
  {
@@ -44,9 +45,11 @@ Add to your `claude_desktop_config.json`:
44
45
  }
45
46
  ```
46
47
 
48
+ **Other MCP Clients**: Refer to your AI client's MCP configuration documentation.
49
+
47
50
  ### 3. Start Using
48
51
 
49
- Open Claude Desktop and try:
52
+ Open your AI client and try:
50
53
 
51
54
  > "Create a red pulsing text that says HELLO"
52
55
 
@@ -56,6 +59,131 @@ Open Claude Desktop and try:
56
59
 
57
60
  ## Features
58
61
 
62
+ ### 🤖 Agent Flow Mode (ENFORCED in v1.5.0)
63
+
64
+ Agent mode is now **enforced by default** for optimal performance:
65
+
66
+ - **Auto-Connection**: Browser connects automatically on first tool call (headless mode)
67
+ - **Auto-Session**: Agent sessions start automatically - just start creating!
68
+ - **Batch Operations**: Execute multiple operations in one call (~10x faster)
69
+ - **Smart Exports**: Auto-detect optimal format for Instagram, TikTok, YouTube, etc.
70
+
71
+ ```
72
+ "Create a red pulsing text that says HELLO" # Browser auto-connects
73
+ "Create 5 items in batch, then export for TikTok"
74
+ "Analyze the scene and recommend export format"
75
+ ```
76
+
77
+ **No manual setup required** - just start making tool calls.
78
+
79
+ **Tools:**
80
+ - `pinepaper_agent_start_job` - Start a named job session (optional)
81
+ - `pinepaper_agent_end_job` - End job with summary and export recommendations
82
+ - `pinepaper_agent_reset` - Quick canvas reset
83
+ - `pinepaper_agent_batch_execute` - Execute multiple operations in batch
84
+ - `pinepaper_agent_export` - Smart export with platform auto-detection
85
+ - `pinepaper_agent_analyze` - Analyze content for export recommendations
86
+
87
+ ### 🎯 Interactive Triggers (NEW in v1.5.0)
88
+
89
+ Add click, hover, and drag interactions to items:
90
+
91
+ ```
92
+ "Make the button show a panel when clicked"
93
+ "Add a hover effect that plays an animation"
94
+ "Create a drag-and-drop quiz"
95
+ ```
96
+
97
+ **Event Types:**
98
+ - `click`, `hover_enter`, `hover_exit`
99
+ - `drag_start`, `drag_move`, `drag_end`
100
+ - `timeline`, `animation_end`
101
+
102
+ **Tools:**
103
+ - `pinepaper_add_trigger` - Add event triggers with actions
104
+ - `pinepaper_remove_trigger` - Remove triggers from items
105
+ - `pinepaper_query_triggers` - List all triggers
106
+
107
+ ### 📝 Quiz/LMS Integration (NEW in v1.5.0)
108
+
109
+ Create interactive quizzes with SCORM/xAPI support:
110
+
111
+ ```
112
+ "Create a multiple choice quiz about planets"
113
+ "Add a drag-and-drop matching exercise"
114
+ "Track quiz score and progress"
115
+ ```
116
+
117
+ **Question Types:**
118
+ - Multiple choice, Multiple select
119
+ - Drag-and-drop, Matching, Sequencing
120
+ - Hotspot, True/False, Fill-in-blank
121
+
122
+ **Tools:**
123
+ - `pinepaper_create_quiz` - Create interactive quizzes
124
+ - `pinepaper_get_quiz_state` - Get score, progress, answers
125
+ - `pinepaper_reset_quiz` - Reset quiz state
126
+
127
+ ### 📦 Widget Export (NEW in v1.5.0)
128
+
129
+ Export as embeddable widgets for websites and LMS:
130
+
131
+ ```
132
+ "Export as a web component"
133
+ "Create an iframe embed code"
134
+ "Generate a React component"
135
+ ```
136
+
137
+ **Export Formats:**
138
+ - `web-component` - `<pinepaper-widget>` custom element
139
+ - `standalone-html` - Complete HTML file
140
+ - `iframe-embed` - Iframe embed code
141
+ - `react-component` - React wrapper
142
+ - `vue-component` - Vue wrapper
143
+
144
+ **Tool:**
145
+ - `pinepaper_export_widget` - Export with LMS support (SCORM/xAPI)
146
+
147
+ ### 📐 Diagram Tools (NEW in v1.4.3)
148
+
149
+ Create flowcharts, UML diagrams, network diagrams, and more:
150
+
151
+ ```
152
+ "Create a flowchart for user login process"
153
+ "Make a UML class diagram for the User class"
154
+ "Design a network topology with 3 servers connected to a cloud"
155
+ ```
156
+
157
+ **Shape Types:**
158
+ - **Flowchart**: process, decision, terminal, data, document, database, preparation
159
+ - **UML**: uml-class, uml-usecase, uml-actor
160
+ - **Network**: cloud, server
161
+ - **Basic**: rectangle, circle, triangle, star
162
+
163
+ **Connector Features:**
164
+ - Smart routing (orthogonal, direct, curved)
165
+ - Arrow styles (classic, stealth, diamond, circle, none)
166
+ - Animated bolt effect for data flow
167
+ - Labels on connectors
168
+
169
+ **Auto-Layout Algorithms:**
170
+ - Hierarchical (flowcharts, org charts)
171
+ - Force-directed (network diagrams)
172
+ - Tree (hierarchies)
173
+ - Radial (mind maps)
174
+ - Grid (component libraries)
175
+
176
+ **Tools:**
177
+ - `pinepaper_create_diagram_shape` - Create diagram shapes with ports
178
+ - `pinepaper_connect` - Connect items with smart connectors
179
+ - `pinepaper_connect_ports` - Connect specific ports
180
+ - `pinepaper_add_ports` - Add connection ports to items
181
+ - `pinepaper_auto_layout` - Automatically arrange items
182
+ - `pinepaper_get_diagram_shapes` - List available shapes
183
+ - `pinepaper_update_connector` - Update connector properties
184
+ - `pinepaper_remove_connector` - Remove a connector
185
+ - `pinepaper_diagram_mode` - Control diagram editing mode
186
+
59
187
  ### 🔍 Asset Search & Import (NEW in v1.3.0)
60
188
 
61
189
  Search and import free SVG assets from multiple repositories:
@@ -78,7 +206,7 @@ Search and import free SVG assets from multiple repositories:
78
206
 
79
207
  ### 📊 Performance Metrics (NEW in v1.3.0)
80
208
 
81
- Built-in performance tracking helps Claude optimize workflows:
209
+ Built-in performance tracking helps AI assistants optimize workflows:
82
210
 
83
211
  - Automatic timing for all tool operations
84
212
  - Phase breakdown (validation, code generation, execution, screenshots)
@@ -217,7 +345,49 @@ Outputs pairs like:
217
345
  |------|-------------|
218
346
  | `pinepaper_get_items` | Get canvas items |
219
347
  | `pinepaper_get_relation_stats` | Relation statistics |
220
- | `pinepaper_get_performance_metrics` | Get execution timing metrics (NEW) |
348
+ | `pinepaper_get_performance_metrics` | Get execution timing metrics |
349
+
350
+ ### Diagram Tools (NEW in v1.4.3)
351
+ | Tool | Description |
352
+ |------|-------------|
353
+ | `pinepaper_create_diagram_shape` | Create flowchart/UML/network shapes with ports |
354
+ | `pinepaper_connect` | Connect items with smart connectors |
355
+ | `pinepaper_connect_ports` | Connect specific ports on items |
356
+ | `pinepaper_add_ports` | Add connection ports to items |
357
+ | `pinepaper_auto_layout` | Auto-arrange items using layout algorithms |
358
+ | `pinepaper_get_diagram_shapes` | List available diagram shapes |
359
+ | `pinepaper_update_connector` | Update connector style/label |
360
+ | `pinepaper_remove_connector` | Remove a connector |
361
+ | `pinepaper_diagram_mode` | Control diagram editing mode |
362
+
363
+ ### Agent Flow Mode Tools (NEW in v1.5.0)
364
+ | Tool | Description |
365
+ |------|-------------|
366
+ | `pinepaper_agent_start_job` | Start content creation job session |
367
+ | `pinepaper_agent_end_job` | End job with summary and recommendations |
368
+ | `pinepaper_agent_reset` | Quick canvas reset without page refresh |
369
+ | `pinepaper_agent_batch_execute` | Execute multiple operations in batch |
370
+ | `pinepaper_agent_export` | Smart export with platform auto-detection |
371
+ | `pinepaper_agent_analyze` | Analyze content for export recommendations |
372
+
373
+ ### Interactive Trigger Tools (NEW in v1.5.0)
374
+ | Tool | Description |
375
+ |------|-------------|
376
+ | `pinepaper_add_trigger` | Add event triggers (click, hover, drag) |
377
+ | `pinepaper_remove_trigger` | Remove triggers from items |
378
+ | `pinepaper_query_triggers` | List all triggers on canvas |
379
+
380
+ ### Quiz/LMS Tools (NEW in v1.5.0)
381
+ | Tool | Description |
382
+ |------|-------------|
383
+ | `pinepaper_create_quiz` | Create interactive quizzes |
384
+ | `pinepaper_get_quiz_state` | Get quiz score, progress, answers |
385
+ | `pinepaper_reset_quiz` | Reset quiz to initial state |
386
+
387
+ ### Widget Export Tools (NEW in v1.5.0)
388
+ | Tool | Description |
389
+ |------|-------------|
390
+ | `pinepaper_export_widget` | Export as embeddable widget (web-component, iframe, React, Vue) |
221
391
 
222
392
  ### Canvas Tools
223
393
  | Tool | Description |
@@ -260,11 +430,36 @@ Outputs pairs like:
260
430
  3. Add relation: label follows player with offset [0, -50]
261
431
  ```
262
432
 
433
+ ### Flowchart Diagram (NEW)
434
+
435
+ ```
436
+ 1. Create a terminal shape with label "Start"
437
+ 2. Create a process shape with label "Get Input"
438
+ 3. Create a decision shape with label "Valid?"
439
+ 4. Create a terminal shape with label "End"
440
+ 5. Connect Start → Get Input
441
+ 6. Connect Get Input → Valid?
442
+ 7. Connect Valid? → End (label: "Yes")
443
+ 8. Connect Valid? → Get Input (label: "No", routing: curved)
444
+ 9. Apply hierarchical auto-layout
445
+ ```
446
+
447
+ ### Network Diagram (NEW)
448
+
449
+ ```
450
+ 1. Create a cloud shape with label "Internet"
451
+ 2. Create 3 server shapes with labels "Web", "API", "DB"
452
+ 3. Connect Internet → Web (label: "HTTPS")
453
+ 4. Connect Web → API (label: "REST")
454
+ 5. Connect API → DB (label: "SQL")
455
+ 6. Apply force-directed auto-layout
456
+ ```
457
+
263
458
  ## Architecture
264
459
 
265
460
  ```
266
461
  ┌─────────────────────────────────────────────────────────────┐
267
- │ Claude Desktop │
462
+ │ AI Client (Claude, etc.) │
268
463
  │ │ │
269
464
  │ MCP Protocol │
270
465
  │ │ │
@@ -303,7 +498,7 @@ bun install
303
498
  bun run build
304
499
  ```
305
500
 
306
- ### Test with Claude Desktop (Local)
501
+ ### Test with MCP Client (Local)
307
502
 
308
503
  1. Build the server:
309
504
  ```bash
@@ -314,7 +509,7 @@ bun run build
314
509
  bun run build
315
510
  ```
316
511
 
317
- 2. Add to Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
512
+ 2. Add to your MCP client config (example for Claude Desktop on macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`):
318
513
  ```json
319
514
  {
320
515
  "mcpServers": {
@@ -326,7 +521,7 @@ bun run build
326
521
  }
327
522
  ```
328
523
 
329
- 3. Restart Claude Desktop
524
+ 3. Restart your MCP client
330
525
 
331
526
  4. Test with: "What PinePaper tools do you have available?"
332
527
 
@@ -381,7 +576,7 @@ The i18n system provides localized:
381
576
  Set the `PINEPAPER_LOCALE` environment variable:
382
577
 
383
578
  ```bash
384
- # In Claude Desktop config
579
+ # In MCP client config (example for Claude Desktop)
385
580
  {
386
581
  "mcpServers": {
387
582
  "pinepaper": {
@@ -432,7 +627,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
432
627
 
433
628
  ### Performance Metrics
434
629
 
435
- PinePaper MCP Server includes built-in performance tracking to help Claude optimize workflows by identifying bottlenecks and choosing faster alternatives.
630
+ PinePaper MCP Server includes built-in performance tracking to help AI assistants optimize workflows by identifying bottlenecks and choosing faster alternatives.
436
631
 
437
632
  **Key Features:**
438
633
  - ⚡ Automatic timing for all tool operations
@@ -445,14 +640,14 @@ PinePaper MCP Server includes built-in performance tracking to help Claude optim
445
640
  **Quick Example:**
446
641
 
447
642
  ```
448
- Claude: "Let me check if batch operations are faster"
643
+ AI: "Let me check if batch operations are faster"
449
644
  → pinepaper_get_performance_metrics(format: 'summary')
450
645
 
451
646
  Result:
452
647
  - pinepaper_create_item: avg 145ms
453
648
  - pinepaper_batch_create (10 items): avg 298ms (~30ms per item)
454
649
 
455
- Claude: "I'll use batch_create for the next 20 items"
650
+ AI: "I'll use batch_create for the next 20 items"
456
651
  ```
457
652
 
458
653
  **Configuration:**
@@ -472,8 +667,8 @@ export PINEPAPER_METRICS_RETENTION=5000
472
667
  ### Guides
473
668
 
474
669
  - **[Workflow Guide](docs/WORKFLOW_GUIDE.md)** - Decision trees, multi-step patterns, performance optimization, and troubleshooting
475
- - **[Performance Metrics](docs/PERFORMANCE_METRICS.md)** - In-memory metrics system for Claude self-optimization
476
- - **[PinePaper Reference](docs/CLAUDE_Pinepaper_v1_beta.md)** - Complete PinePaper Studio API reference
670
+ - **[Performance Metrics](docs/PERFORMANCE_METRICS.md)** - In-memory metrics system for AI self-optimization
671
+ - **[PinePaper Reference](https://pinepaper.studio/docs/)** - Complete PinePaper Studio API reference
477
672
 
478
673
  ### External Documentation
479
674
 
@@ -76,6 +76,83 @@ export declare const mockPatternGenerator: {
76
76
  bgColor: string;
77
77
  };
78
78
  };
79
+ export declare const mockBokehGenerator: {
80
+ generatorName: "drawBokeh";
81
+ params: {
82
+ count: number;
83
+ colors: string[];
84
+ bgColor: string;
85
+ minRadius: number;
86
+ maxRadius: number;
87
+ shadowBlur: number;
88
+ distribution: "poisson";
89
+ driftAnimation: boolean;
90
+ };
91
+ };
92
+ export declare const mockGradientMeshGenerator: {
93
+ generatorName: "drawGradientMesh";
94
+ params: {
95
+ colors: string[];
96
+ bgColor: string;
97
+ blobCount: number;
98
+ blendMode: string;
99
+ drift: boolean;
100
+ };
101
+ };
102
+ export declare const mockGeometricAbstractGenerator: {
103
+ generatorName: "drawGeometricAbstract";
104
+ params: {
105
+ colors: string[];
106
+ bgColor: string;
107
+ shapeCount: number;
108
+ blendMode: string;
109
+ rotation: boolean;
110
+ };
111
+ };
112
+ export declare const mockWindFieldGenerator: {
113
+ generatorName: "drawWindField";
114
+ params: {
115
+ particleCount: number;
116
+ colors: string[];
117
+ bgColor: string;
118
+ direction: number;
119
+ turbulence: number;
120
+ trailLength: number;
121
+ speed: number;
122
+ };
123
+ };
124
+ export declare const mockFluidFlowGenerator: {
125
+ generatorName: "drawFluidFlow";
126
+ params: {
127
+ streamCount: number;
128
+ colors: string[];
129
+ bgColor: string;
130
+ depthLayers: number;
131
+ speed: number;
132
+ };
133
+ };
134
+ export declare const mockOrganicFlowGenerator: {
135
+ generatorName: "drawOrganicFlow";
136
+ params: {
137
+ layerCount: number;
138
+ colors: string[];
139
+ bgColor: string;
140
+ blendMode: string;
141
+ fillToBottom: boolean;
142
+ animated: boolean;
143
+ };
144
+ };
145
+ export declare const mockNoiseTextureGenerator: {
146
+ generatorName: "drawNoiseTexture";
147
+ params: {
148
+ noiseType: "perlin";
149
+ colors: string[];
150
+ bgColor: string;
151
+ scale: number;
152
+ density: number;
153
+ animated: boolean;
154
+ };
155
+ };
79
156
  export declare const allMockGenerators: ({
80
157
  generatorName: "drawSunburst";
81
158
  params: {
@@ -143,5 +220,75 @@ export declare const allMockGenerators: ({
143
220
  color: string;
144
221
  bgColor: string;
145
222
  };
223
+ } | {
224
+ generatorName: "drawBokeh";
225
+ params: {
226
+ count: number;
227
+ colors: string[];
228
+ bgColor: string;
229
+ minRadius: number;
230
+ maxRadius: number;
231
+ shadowBlur: number;
232
+ distribution: "poisson";
233
+ driftAnimation: boolean;
234
+ };
235
+ } | {
236
+ generatorName: "drawGradientMesh";
237
+ params: {
238
+ colors: string[];
239
+ bgColor: string;
240
+ blobCount: number;
241
+ blendMode: string;
242
+ drift: boolean;
243
+ };
244
+ } | {
245
+ generatorName: "drawGeometricAbstract";
246
+ params: {
247
+ colors: string[];
248
+ bgColor: string;
249
+ shapeCount: number;
250
+ blendMode: string;
251
+ rotation: boolean;
252
+ };
253
+ } | {
254
+ generatorName: "drawWindField";
255
+ params: {
256
+ particleCount: number;
257
+ colors: string[];
258
+ bgColor: string;
259
+ direction: number;
260
+ turbulence: number;
261
+ trailLength: number;
262
+ speed: number;
263
+ };
264
+ } | {
265
+ generatorName: "drawFluidFlow";
266
+ params: {
267
+ streamCount: number;
268
+ colors: string[];
269
+ bgColor: string;
270
+ depthLayers: number;
271
+ speed: number;
272
+ };
273
+ } | {
274
+ generatorName: "drawOrganicFlow";
275
+ params: {
276
+ layerCount: number;
277
+ colors: string[];
278
+ bgColor: string;
279
+ blendMode: string;
280
+ fillToBottom: boolean;
281
+ animated: boolean;
282
+ };
283
+ } | {
284
+ generatorName: "drawNoiseTexture";
285
+ params: {
286
+ noiseType: "perlin";
287
+ colors: string[];
288
+ bgColor: string;
289
+ scale: number;
290
+ density: number;
291
+ animated: boolean;
292
+ };
146
293
  })[];
147
294
  //# sourceMappingURL=mock-generators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mock-generators.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/mock-generators.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;CAQjC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;CAO/B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;CAS7B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;CAQjC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;CAU9B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;CAUhC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;CAOvC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;CAQhC,CAAC;AAGF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAS7B,CAAC"}
1
+ {"version":3,"file":"mock-generators.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/mock-generators.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;CAQjC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;CAO/B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;CAS7B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;CAQjC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;CAU9B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;CAUhC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;CAOvC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;CAQhC,CAAC;AAIF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;CAY9B,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;CASrC,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;CAS1C,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;CAWlC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;CASlC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;CAUpC,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;CAUrC,CAAC;AAGF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgB7B,CAAC"}
@@ -76,6 +76,84 @@ export const mockPatternGenerator = {
76
76
  bgColor: '#1e293b',
77
77
  },
78
78
  };
79
+ // Phase 2: New generators
80
+ export const mockBokehGenerator = {
81
+ generatorName: 'drawBokeh',
82
+ params: {
83
+ count: 30,
84
+ colors: ['#f472b6', '#818cf8', '#34d399', '#fbbf24'],
85
+ bgColor: '#0f172a',
86
+ minRadius: 10,
87
+ maxRadius: 60,
88
+ shadowBlur: 20,
89
+ distribution: 'poisson',
90
+ driftAnimation: true,
91
+ },
92
+ };
93
+ export const mockGradientMeshGenerator = {
94
+ generatorName: 'drawGradientMesh',
95
+ params: {
96
+ colors: ['#ec4899', '#8b5cf6', '#06b6d4'],
97
+ bgColor: '#0f0f23',
98
+ blobCount: 5,
99
+ blendMode: 'screen',
100
+ drift: true,
101
+ },
102
+ };
103
+ export const mockGeometricAbstractGenerator = {
104
+ generatorName: 'drawGeometricAbstract',
105
+ params: {
106
+ colors: ['#f43f5e', '#3b82f6', '#10b981', '#f59e0b'],
107
+ bgColor: '#1e1b4b',
108
+ shapeCount: 12,
109
+ blendMode: 'multiply',
110
+ rotation: true,
111
+ },
112
+ };
113
+ export const mockWindFieldGenerator = {
114
+ generatorName: 'drawWindField',
115
+ params: {
116
+ particleCount: 200,
117
+ colors: ['#e0f2fe', '#bae6fd', '#7dd3fc'],
118
+ bgColor: '#0c4a6e',
119
+ direction: 45,
120
+ turbulence: 0.5,
121
+ trailLength: 30,
122
+ speed: 1.5,
123
+ },
124
+ };
125
+ export const mockFluidFlowGenerator = {
126
+ generatorName: 'drawFluidFlow',
127
+ params: {
128
+ streamCount: 8,
129
+ colors: ['#67e8f9', '#a78bfa', '#f9a8d4'],
130
+ bgColor: '#0f172a',
131
+ depthLayers: 3,
132
+ speed: 0.8,
133
+ },
134
+ };
135
+ export const mockOrganicFlowGenerator = {
136
+ generatorName: 'drawOrganicFlow',
137
+ params: {
138
+ layerCount: 4,
139
+ colors: ['#34d399', '#6ee7b7', '#a7f3d0', '#d1fae5'],
140
+ bgColor: '#064e3b',
141
+ blendMode: 'screen',
142
+ fillToBottom: true,
143
+ animated: true,
144
+ },
145
+ };
146
+ export const mockNoiseTextureGenerator = {
147
+ generatorName: 'drawNoiseTexture',
148
+ params: {
149
+ noiseType: 'perlin',
150
+ colors: ['#94a3b8', '#64748b'],
151
+ bgColor: '#1e293b',
152
+ scale: 0.01,
153
+ density: 0.7,
154
+ animated: true,
155
+ },
156
+ };
79
157
  // Collection of all mock generators
80
158
  export const allMockGenerators = [
81
159
  mockSunburstGenerator,
@@ -86,5 +164,12 @@ export const allMockGenerators = [
86
164
  mockCircuitGenerator,
87
165
  mockStackedCirclesGenerator,
88
166
  mockPatternGenerator,
167
+ mockBokehGenerator,
168
+ mockGradientMeshGenerator,
169
+ mockGeometricAbstractGenerator,
170
+ mockWindFieldGenerator,
171
+ mockFluidFlowGenerator,
172
+ mockOrganicFlowGenerator,
173
+ mockNoiseTextureGenerator,
89
174
  ];
90
175
  //# sourceMappingURL=mock-generators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mock-generators.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/mock-generators.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,aAAa,EAAE,cAAuB;IACtC,MAAM,EAAE;QACN,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9B,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,IAAI;KACf;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,aAAa,EAAE,iBAA0B;IACzC,MAAM,EAAE;QACN,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;QAC5C,UAAU,EAAE,CAAC;KACd;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,aAAa,EAAE,UAAmB;IAClC,MAAM,EAAE;QACN,QAAQ,EAAE,OAAgB;QAC1B,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,CAAC;KACb;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,aAAa,EAAE,UAAmB;IAClC,MAAM,EAAE;QACN,QAAQ,EAAE,MAAe;QACzB,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,SAAS;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,aAAa,EAAE,WAAoB;IACnC,MAAM,EAAE;QACN,SAAS,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;QAC/D,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,IAAI;KACf;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,aAAa,EAAE,aAAsB;IACrC,MAAM,EAAE;QACN,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,GAAG;QACZ,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,SAAS;KACrB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,aAAa,EAAE,oBAA6B;IAC5C,MAAM,EAAE;QACN,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;QAC1E,YAAY,EAAE,QAAiB;KAChC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,aAAa,EAAE,aAAsB;IACrC,MAAM,EAAE;QACN,WAAW,EAAE,SAAkB;QAC/B,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;KACnB;CACF,CAAC;AAEF,oCAAoC;AACpC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,qBAAqB;IACrB,kBAAkB;IAClB,oBAAoB;IACpB,2BAA2B;IAC3B,oBAAoB;CACrB,CAAC"}
1
+ {"version":3,"file":"mock-generators.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/mock-generators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * PinePaper Smart Export Manager
3
+ *
4
+ * Provides intelligent export recommendations and platform presets.
5
+ * Analyzes content to suggest optimal export formats.
6
+ */
7
+ import { Platform, ExportFormat, PlatformPreset, ContentAnalysis, ExportRecommendation } from './types.js';
8
+ /**
9
+ * Manages smart exports with content analysis and platform presets.
10
+ *
11
+ * Features:
12
+ * - Content analysis (animations, colors, complexity)
13
+ * - Platform preset management
14
+ * - Optimal format recommendations
15
+ * - Export code generation
16
+ */
17
+ export declare class SmartExportManager {
18
+ /**
19
+ * Get platform preset configuration
20
+ */
21
+ getPreset(platform: Platform): PlatformPreset;
22
+ /**
23
+ * List all available platforms
24
+ */
25
+ listPlatforms(): Platform[];
26
+ /**
27
+ * Generate code to analyze canvas content
28
+ */
29
+ generateAnalysisCode(): string;
30
+ /**
31
+ * Recommend export format based on content analysis
32
+ */
33
+ recommendFormat(analysis: ContentAnalysis): ExportRecommendation[];
34
+ /**
35
+ * Recommend platforms based on content analysis
36
+ */
37
+ recommendPlatforms(analysis: ContentAnalysis): Platform[];
38
+ /**
39
+ * Get optimal format for a specific platform based on content
40
+ */
41
+ getOptimalFormat(platform: Platform, analysis: ContentAnalysis): ExportFormat;
42
+ /**
43
+ * Generate export code for a specific platform
44
+ */
45
+ generateExportCode(platform: Platform, format: ExportFormat, options?: {
46
+ quality?: 'draft' | 'standard' | 'high';
47
+ }): string;
48
+ /**
49
+ * Generate SVG export code
50
+ */
51
+ private generateSVGExportCode;
52
+ /**
53
+ * Generate PNG export code
54
+ */
55
+ private generatePNGExportCode;
56
+ /**
57
+ * Generate GIF export code
58
+ */
59
+ private generateGIFExportCode;
60
+ /**
61
+ * Generate video export code (MP4/WebM)
62
+ */
63
+ private generateVideoExportCode;
64
+ /**
65
+ * Generate PDF export code
66
+ */
67
+ private generatePDFExportCode;
68
+ /**
69
+ * Generate code to set canvas size from preset
70
+ */
71
+ generateSetCanvasSizeCode(platform: Platform): string;
72
+ }
73
+ /**
74
+ * Get the singleton export manager instance
75
+ */
76
+ export declare function getExportManager(): SmartExportManager;
77
+ //# sourceMappingURL=export-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-manager.d.ts","sourceRoot":"","sources":["../../src/agent/export-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,cAAc,EAEd,eAAe,EACf,oBAAoB,EAIrB,MAAM,YAAY,CAAC;AAMpB;;;;;;;;GAQG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc;IAI7C;;OAEG;IACH,aAAa,IAAI,QAAQ,EAAE;IAI3B;;OAEG;IACH,oBAAoB,IAAI,MAAM;IA4G9B;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,eAAe,GAAG,oBAAoB,EAAE;IAqElE;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,QAAQ,EAAE;IA0BzD;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,GAAG,YAAY;IAU7E;;OAEG;IACH,kBAAkB,CAChB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAA;KAAO,GACxD,MAAM;IA4BT;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA6B7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAsC/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;OAEG;IACH,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;CAWtD;AAQD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,kBAAkB,CAKrD"}