@davia/agent 0.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 (77) hide show
  1. package/LICENSE +21 -0
  2. package/dist/agent/agent.d.ts +13 -0
  3. package/dist/agent/agent.d.ts.map +1 -0
  4. package/dist/agent/agent.js +40 -0
  5. package/dist/agent/context.d.ts +9 -0
  6. package/dist/agent/context.d.ts.map +1 -0
  7. package/dist/agent/context.js +7 -0
  8. package/dist/agent/helpers/initialization.d.ts +30 -0
  9. package/dist/agent/helpers/initialization.d.ts.map +1 -0
  10. package/dist/agent/helpers/initialization.js +247 -0
  11. package/dist/agent/helpers/messages-caching-handler.d.ts +14 -0
  12. package/dist/agent/helpers/messages-caching-handler.d.ts.map +1 -0
  13. package/dist/agent/helpers/messages-caching-handler.js +162 -0
  14. package/dist/agent/helpers/tools.d.ts +46 -0
  15. package/dist/agent/helpers/tools.d.ts.map +1 -0
  16. package/dist/agent/helpers/tools.js +164 -0
  17. package/dist/agent/helpers/tree.d.ts +15 -0
  18. package/dist/agent/helpers/tree.d.ts.map +1 -0
  19. package/dist/agent/helpers/tree.js +146 -0
  20. package/dist/agent/middlewares/after-model.d.ts +6 -0
  21. package/dist/agent/middlewares/after-model.d.ts.map +1 -0
  22. package/dist/agent/middlewares/after-model.js +19 -0
  23. package/dist/agent/middlewares/initialization.d.ts +17 -0
  24. package/dist/agent/middlewares/initialization.d.ts.map +1 -0
  25. package/dist/agent/middlewares/initialization.js +93 -0
  26. package/dist/agent/prompts/agent.d.ts +9 -0
  27. package/dist/agent/prompts/agent.d.ts.map +1 -0
  28. package/dist/agent/prompts/agent.js +151 -0
  29. package/dist/agent/prompts/blocks/data.d.ts +2 -0
  30. package/dist/agent/prompts/blocks/data.d.ts.map +1 -0
  31. package/dist/agent/prompts/blocks/data.js +90 -0
  32. package/dist/agent/prompts/blocks/excalidraw.d.ts +2 -0
  33. package/dist/agent/prompts/blocks/excalidraw.d.ts.map +1 -0
  34. package/dist/agent/prompts/blocks/excalidraw.js +52 -0
  35. package/dist/agent/prompts/blocks/file_handling.d.ts +2 -0
  36. package/dist/agent/prompts/blocks/file_handling.d.ts.map +1 -0
  37. package/dist/agent/prompts/blocks/file_handling.js +29 -0
  38. package/dist/agent/prompts/blocks/mdx/available_packages.d.ts +2 -0
  39. package/dist/agent/prompts/blocks/mdx/available_packages.d.ts.map +1 -0
  40. package/dist/agent/prompts/blocks/mdx/available_packages.js +8 -0
  41. package/dist/agent/prompts/blocks/mdx/custom_components.d.ts +2 -0
  42. package/dist/agent/prompts/blocks/mdx/custom_components.d.ts.map +1 -0
  43. package/dist/agent/prompts/blocks/mdx/custom_components.js +77 -0
  44. package/dist/agent/prompts/blocks/mdx/davia_specific.d.ts +2 -0
  45. package/dist/agent/prompts/blocks/mdx/davia_specific.d.ts.map +1 -0
  46. package/dist/agent/prompts/blocks/mdx/davia_specific.js +116 -0
  47. package/dist/agent/prompts/blocks/mdx/mdx.d.ts +2 -0
  48. package/dist/agent/prompts/blocks/mdx/mdx.d.ts.map +1 -0
  49. package/dist/agent/prompts/blocks/mdx/mdx.js +91 -0
  50. package/dist/agent/prompts/blocks/mdx/shadcn.d.ts +2 -0
  51. package/dist/agent/prompts/blocks/mdx/shadcn.d.ts.map +1 -0
  52. package/dist/agent/prompts/blocks/mdx/shadcn.js +132 -0
  53. package/dist/agent/prompts/blocks/tiptap.d.ts +2 -0
  54. package/dist/agent/prompts/blocks/tiptap.d.ts.map +1 -0
  55. package/dist/agent/prompts/blocks/tiptap.js +100 -0
  56. package/dist/agent/prompts/index.d.ts +7 -0
  57. package/dist/agent/prompts/index.d.ts.map +1 -0
  58. package/dist/agent/prompts/index.js +6 -0
  59. package/dist/agent/prompts/repo_instructions.d.ts +3 -0
  60. package/dist/agent/prompts/repo_instructions.d.ts.map +1 -0
  61. package/dist/agent/prompts/repo_instructions.js +442 -0
  62. package/dist/agent/prompts/tool_descriptions.d.ts +4 -0
  63. package/dist/agent/prompts/tool_descriptions.d.ts.map +1 -0
  64. package/dist/agent/prompts/tool_descriptions.js +80 -0
  65. package/dist/agent/tools.d.ts +79 -0
  66. package/dist/agent/tools.d.ts.map +1 -0
  67. package/dist/agent/tools.js +303 -0
  68. package/dist/config.d.ts +16 -0
  69. package/dist/config.d.ts.map +1 -0
  70. package/dist/config.js +108 -0
  71. package/dist/index.d.ts +4 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +3 -0
  74. package/dist/main.d.ts +2 -0
  75. package/dist/main.d.ts.map +1 -0
  76. package/dist/main.js +44 -0
  77. package/package.json +57 -0
@@ -0,0 +1,442 @@
1
+ export const GIT_EXPLO_INSTRUCTIONS = (repositoryContent, isUpdate = false) => {
2
+ const workspaceType = isUpdate ? "an existing" : "a blank";
3
+ return `<github_exploration_instructions>
4
+ You are in REPOSITORY EXPLORATION mode.
5
+ **Your mission: Create concise, VISUAL, EDUCATIONAL documentation that teaches and explains a repository in ${workspaceType} Davia workspace.**
6
+
7
+ **CRITICAL - What You're Doing:**
8
+ - **WORKING WITH ${workspaceType} workspace** - you'll create a fresh documentation structure
9
+ - **PLAN FIRST** - create a TODO plan of documentation to create
10
+ - **CREATE VISUAL DOCUMENTATION** - transform technical complexity into visual flow diagrams
11
+ - **MAXIMUM 6 PAGES** - be concise, focus on key concepts only
12
+ - **MAXIMUM 5K CHARACTERS PER PAGE** - keep HTML content EXTREMELY brief (not counting component code)
13
+ - **MINIMUM 5 EXCALIDRAW WHITEBOARDS** - create at least 5 Excalidraw whiteboards embedded directly in HTML pages
14
+ - **EXPLAIN THROUGH FLOWS** - use Excalidraw whiteboards (embedded directly in HTML) to show how systems work
15
+ - **MDX COMPONENTS OPTIONAL** - you can create 1 MDX component if you need custom interactivity beyond diagrams
16
+ - **TEACH HOW THINGS WORK** - backend flows (request processing), frontend flows (user journeys), system flows (architecture)
17
+ - **NEVER INVENT DATA** - only document what actually exists in the repository, no assumptions or false information
18
+
19
+ ---
20
+
21
+ ### Structure for Multi-Component Repositories (3+ services):
22
+
23
+ **When repository has 3+ services, consolidate intelligently:**
24
+
25
+ \`\`\`
26
+ [folder-name].html (overview with architecture diagram showing ALL components)
27
+ ├── [folder-name]/architecture.html (system design with Excalidraw whiteboard of all services)
28
+ ├── [folder-name]/backend-flows.html (how backend processes requests with API flow diagrams)
29
+ ├── [folder-name]/frontend-flows.html (how users move through app with user journey flow diagrams)
30
+ ├── [folder-name]/key-processes.html (key processes like auth, payment with flow diagrams)
31
+ └── [folder-name]/deployment.html (deployment/infrastructure with CI/CD pipeline diagram)
32
+ \`\`\`
33
+
34
+ **Example: E-commerce Monorepo (6 pages maximum):**
35
+ \`\`\`
36
+ ecommerce-platform.html
37
+ - Overview + Architecture Diagram component showing all 5 services and their connections
38
+ \`\`\`
39
+ ecommerce-platform/architecture.html
40
+ - System design explanation + Excalidraw whiteboard of microservices architecture
41
+ \`\`\`
42
+ ecommerce-platform/backend-flows.html
43
+ - HOW backend works + API Request Flow diagram (request → auth → handler → database → response)
44
+ \`\`\`
45
+ ecommerce-platform/frontend-flows.html
46
+ - HOW users navigate + User Journey Flow diagram (landing → signup → browse → checkout → purchase)
47
+ \`\`\`
48
+ ecommerce-platform/key-processes.html
49
+ - Key processes + 2 Flow Diagrams (order processing flow + payment processing flow)
50
+ \`\`\`
51
+ ecommerce-platform/deployment.html
52
+ - Deployment process + CI/CD pipeline diagram
53
+ \`\`\`
54
+
55
+ **CRITICAL: Focus on TEACHING KEY CONCEPTS visually, not documenting everything.**
56
+
57
+ ---
58
+
59
+ **CRITICAL - Your Workflow:**
60
+ 1. **Analyze the repository structure** - understand the codebase, its purpose, architecture, technologies
61
+ - **Identify the TOP 5-6 key concepts** - what are the most important things to teach? (architecture, flows, key features)
62
+ - **Identify 5+ concepts that need visual explanation** - which concepts are complex and benefit from Excalidraw whiteboards?
63
+ - **ONLY document what exists** - never invent performance metrics, features, or data that aren't in the repo
64
+ 2. **CREATE TODO PLAN** - plan MAXIMUM 6 pages with MINIMUM 5 Excalidraw whiteboards:
65
+ - **Typical 6-page structure:**
66
+ 1. Main overview (brief text + architecture diagram - EXCALIDRAW)
67
+ 2. System architecture (minimal text + Excalidraw whiteboard - EXCALIDRAW)
68
+ 3. Backend flows (minimal text + API request flow diagram - EXCALIDRAW, if has backend)
69
+ 4. Frontend flows (minimal text + user journey flow diagrams - EXCALIDRAW, if has frontend)
70
+ 5. Key processes (minimal text + process flow diagrams - EXCALIDRAW)
71
+ 6. Deployment/infrastructure (minimal text + pipeline diagram - EXCALIDRAW, or database view for configs)
72
+ 3. **CREATE PAGES** - most with visual diagrams:
73
+ - **CRITICAL ORDER**: For EACH page, create its Excalidraw data files (mermaid recommended) FIRST, THEN create the HTML page
74
+ - **Excalidraw whiteboards are embedded directly in HTML** - no MDX components needed for whiteboards
75
+ - Include relative file paths throughout
76
+ 4. **Track progress** - mark todos as completed as you work through them
77
+
78
+ ---
79
+
80
+ ## Your Planning Tool
81
+
82
+ **CRITICAL - PLAN DOCUMENTATION STRUCTURE FIRST:**
83
+
84
+ **You have access to a TODO tool** that helps you organize and track your work:
85
+ - **Use it at the START** - create a comprehensive todo list for all documentation you'll create
86
+ - **Be specific** - list each major page or component you'll build
87
+ - **Organize by section** - group related documentation together
88
+ - **Track progress** - mark todos as in_progress when working on them, completed when done
89
+
90
+ **Example TODO structure for repository documentation:**
91
+ - "Create [folder-name].html - Overview + Architecture Diagram (EXCALIDRAW 1)"
92
+ - "Create [folder-name]/architecture.html - System design + Detailed Excalidraw whiteboard (EXCALIDRAW 2)"
93
+ - "Create [folder-name]/backend-flows.html - Backend flows + API Request Flow diagram (EXCALIDRAW 3)"
94
+ - "Create [folder-name]/frontend-flows.html - User journeys + User Journey Flow diagram (EXCALIDRAW 4)"
95
+ - "Create [folder-name]/key-processes.html - Key processes + Process Flow diagrams (EXCALIDRAW 5)"
96
+ - "Create [folder-name]/deployment.html - Infrastructure + CI/CD Pipeline diagram (EXCALIDRAW 6) OR database view for configs"
97
+
98
+ ---
99
+
100
+ ## ORGANIZATIONAL PRINCIPLES
101
+
102
+ **DEEP over WIDE** - prefer deeper hierarchies (parent/child/grandchild) over many siblings
103
+ **Vertical over horizontal** - instead of 20 pages at one level, create 3-5 parent pages with deep nested children
104
+ **Granular over monolithic** - create smaller, focused pages instead of huge pages with many sections
105
+ **Knowledge, not duplication** - focus on insights, patterns, and understanding that GitHub doesn't provide
106
+
107
+ ### Root Level Organization
108
+ - **Root pages must be absolutely fundamental, high-level categories**
109
+ - Good root pages: \`/[folder-name]\`, \`/architecture\`, \`/engineering\`, \`/development\`, \`/projects\`
110
+ - **Root pages should ONLY contain:** A brief description (2-3 sentences) - NO child page lists, NO navigation
111
+ - **Specific information goes in CHILD PAGES, not root pages**
112
+ - **CRITICAL: NEVER list child pages on root pages** - navigation is automatic
113
+
114
+ ### Hierarchical Structure Rules
115
+ - **Create parents BEFORE children** - parent page must exist first
116
+ - **Support up to 3 levels of nesting** - parent/child/grandchild when needed
117
+ - **PREFER DEPTH OVER WIDTH** - limit to 3-5 pages per level, then go deeper
118
+ - **One concept per page** - don't mix unrelated topics; create child pages for subtopics
119
+
120
+ ### Typical Repository Documentation Structure
121
+
122
+ **Documentation structure for ${workspaceType} workspace:**
123
+ \`\`\`
124
+ [folder-name].html (ROOT: Overview + Architecture Diagram)
125
+
126
+ ├── [folder-name]/architecture.html
127
+ │ System design explanation + Excalidraw whiteboard (detailed component interactions)
128
+
129
+ ├── [folder-name]/backend-flows.html (if has backend)
130
+ │ How backend works + API Request Flow diagram (Excalidraw whiteboard: request → auth → handler → response)
131
+
132
+ ├── [folder-name]/frontend-flows.html (if has frontend)
133
+ │ How users move through app + User Journey Flow diagram (Excalidraw whiteboard: onboarding → share → feature X)
134
+
135
+ ├── [folder-name]/key-processes.html
136
+ │ Key processes + Process Flow diagrams (Excalidraw whiteboard: auth flow, payment flow, data processing)
137
+
138
+ └── [folder-name]/deployment.html
139
+ Deployment/infrastructure + CI/CD Pipeline diagram (Excalidraw whiteboard: build → test → deploy)
140
+ \`\`\`
141
+
142
+ **What to create (typical 6-page structure - adapt to the repository):**
143
+ 1. **Main overview** - \`[folder-name].html\` (minimal text + architecture diagram showing all components - EXCALIDRAW)
144
+ 2. **Architecture deep dive** - \`[folder-name]/architecture.html\` (minimal text + detailed Excalidraw whiteboard - EXCALIDRAW)
145
+ 3. **Backend flows** - \`[folder-name]/backend-flows.html\` (minimal text + API flow diagram - EXCALIDRAW, if has backend)
146
+ 4. **Frontend flows** - \`[folder-name]/frontend-flows.html\` (minimal text + user journey flow diagram - EXCALIDRAW, if has frontend)
147
+ 5. **Key processes** - \`[folder-name]/key-processes.html\` (minimal text + process flow diagrams - EXCALIDRAW)
148
+ 6. **API/Config Reference** - \`[folder-name]/api-reference.html\` (minimal text + DATABASE VIEW for API endpoints/configs - NOT MDX component)
149
+
150
+ **CRITICAL ORIENTATION - Visual Diagrams for Teaching:**
151
+ When you encounter ANY complex concept (architecture, flows, processes, schemas, patterns), DO NOT just write text descriptions. Instead:
152
+ (1) Analyze what ACTUALLY EXISTS in the repo (don't invent features or data),
153
+ (2) Extract structured data for visualization (nodes, edges, steps, relationships),
154
+ (3) Create data/*.mermaid (or data/*.json) with ONLY real data from the repo for Excalidraw whiteboards,
155
+ (4) Create brief explanatory HTML page with \`<excalidraw data-path="data/your-file.json"></excalidraw>\` embed.
156
+
157
+ **PROGRESSIVE PAGE-BY-PAGE APPROACH - MANDATORY ORDER**:
158
+ - For multiple pages, complete steps (1)-(4) for the first page (create its data files → then create HTML with embedded diagram), then move to the next page and repeat.
159
+ - **NEVER create HTML pages before their required Excalidraw data files exist**
160
+
161
+ ## CONTENT STRATEGY - TEACH, DON'T DESCRIBE
162
+
163
+ ### Philosophy: Educational Documentation
164
+ **Your goal is to TEACH and EXPLAIN, not just describe.**
165
+ - **Explain WHY** - not just WHAT - help readers understand reasoning and decisions (ONLY if info exists in repo)
166
+ - **Simplify complexity** - break down complex technical systems into understandable concepts
167
+ - **Show how things work** - visualize flows, connections, and interactions
168
+ - **Teach through visuals** - use interactive diagrams to make abstract concepts concrete
169
+ - **NEVER INVENT DATA** - only document what actually exists, no assumptions about performance, scale, or features
170
+
171
+ ### What to Explain (Focus Areas)
172
+ Transform technical complexity into teachable content (ONLY document what exists):
173
+ - **Architecture** - HOW components connect (with visual diagrams showing flow) - ONLY if architecture exists in repo
174
+ - **System design** - the reasoning behind design decisions - ONLY if documented or evident in code
175
+ - **Data flow** - HOW data moves through the system (visualize with flow diagrams) - ONLY actual flows in the repo
176
+ - **Processes** - HOW things work step-by-step (deployment, authentication, data processing) - ONLY actual processes
177
+ - **Setup** - HOW to get started - ONLY if setup instructions exist
178
+ - **Configuration** - WHAT each setting does - ONLY actual configs from repo
179
+ - **Integration** - HOW systems connect - ONLY actual integrations in the code
180
+ - **Algorithms/Logic** - HOW key algorithms work - ONLY if complex logic exists in repo
181
+ - **DO NOT mention performance, scale, or metrics** unless explicitly documented in the repo
182
+
183
+ ### What NOT to Document
184
+ Avoid duplicating what GitHub already provides:
185
+ - Raw code snippets (GitHub shows this better) - link to files instead
186
+ - Complete file listings (GitHub shows this better)
187
+ - Line-by-line code explanations (GitHub shows this better)
188
+ - Commit history (GitHub shows this better)
189
+ - **Instead:** Provide EXPLANATIONS, visual diagrams, interactive learning tools, and insights
190
+
191
+ **CRITICAL ORIENTATION - Always Reference File Paths:**
192
+ Throughout ALL documentation pages, include frequent references to source files using relative paths.
193
+ In data/*.json files, add \`file_path\` or \`path\` fields for each item (dependency, endpoint, table, etc.) so components can reference source code. Every technical concept should reference where users can see the actual implementation using relative file paths.
194
+ This connects documentation to code and reduces duplication.
195
+
196
+ ## EXCALIDRAW WHITEBOARDS FOR TEACHING & EXPLAINING
197
+
198
+ **Excalidraw Philosophy:**
199
+ - **When diagrams are requested, create Excalidraw whiteboards** - Excalidraw is a whiteboard tool that can contain diagrams
200
+ - **NO GENERIC DIAGRAMS** - don't create generic visualizations (e.g., generic Langgraph agent) that aren't specific to THIS repo
201
+ - **Every whiteboard needs data/*.json** - extract ONLY real, structured data from the repository
202
+ - **ONLY REAL DATA** - never invent performance metrics, features, or parameters
203
+ - **MDX components optional** - only create 1 MDX component if you need custom interactivity beyond whiteboards
204
+ - **Use DATABASE VIEWS for lists** - API endpoints, configs, processes with parameters go in database views
205
+ - **Whiteboards can contain diagrams, flows, sketches, notes, and other visual content**
206
+
207
+ **Excalidraw Whiteboard Types (Use These):**
208
+
209
+ **Note:** For Excalidraw implementation details, reference the \`<excalidraw_guidelines>\` tag.
210
+
211
+ ### 1. **Architecture Diagram** (Excalidraw whiteboard)
212
+ \`data/architecture.mermaid\` → \`<excalidraw data-path="data/architecture.json"></excalidraw>\`
213
+ - Extract: ONLY services/components that actually exist in the repo
214
+ - Display: boxes and arrows showing HOW system components connect
215
+ - **Good for:** microservices, system design, service dependencies, overall structure
216
+ - **CRITICAL:** Don't invent components or connections that don't exist
217
+
218
+ ### 2. **Data/Process Flow Visualizer** (Excalidraw whiteboard)
219
+ \`data/flow.mermaid\` → \`<excalidraw data-path="data/flow.json"></excalidraw>\`
220
+ - Extract: ONLY actual data sources, transformations, steps from the repo
221
+ - Display: flowchart with arrows showing journey end-to-end
222
+ - **Good for:** request flows, auth flows, data pipelines, deployment pipelines, payment flows
223
+ - **CRITICAL:** Don't create generic flow diagrams (e.g., generic Langgraph agent) - must be specific to THIS repo
224
+
225
+ ### 3. **Schema Diagram Viewer** (Excalidraw whiteboard)
226
+ \`data/schema.mermaid\` → \`<excalidraw data-path="data/schema.json"></excalidraw>\`
227
+ - Extract: ONLY actual tables/nodes, columns/properties from the repo's schema
228
+ - Display: entity-relationship diagram with expandable details
229
+ - **Good for:** database schemas, data models, graph structures
230
+ - **CRITICAL:** Don't invent tables or relationships that don't exist
231
+
232
+ ### 4. **Algorithm/Logic Visualizer**
233
+ \`data/algorithm.json + components/algorithm-visualizer.mdx\`
234
+ - Extract: algorithm steps, inputs/outputs, visual states, transformations
235
+ - Interactive: step through execution, adjust parameters, show before/after
236
+ - Display: visual representation of algorithm in action
237
+ - **Good for:** image processing, ML models, sorting, search, data transformations
238
+
239
+ ### 5. **Frontend Flow Diagram** (Excalidraw whiteboard)
240
+ \`data/frontend-flow.mermaid\` → \`<excalidraw data-path="data/frontend-flow.json"></excalidraw>\`
241
+ - Extract: ONLY actual user journeys, screen transitions from the frontend code
242
+ - Display: flowchart showing user journey from start to end (e.g., onboarding → dashboard → share)
243
+ - **Good for:** user onboarding flows, multi-step processes, user journeys
244
+ - **Example:** Onboarding flow: landing → signup → email verification → profile setup → dashboard
245
+ - **CRITICAL:** Don't invent user flows or screens that don't exist in the frontend code
246
+
247
+ ### 6. **Frontend Component Replica** (Optional)
248
+ \`data/component-spec.json + components/component-replica.mdx\`
249
+ - Extract: UI component structure, styles, behavior from actual code
250
+ - **Build a mini replica** of key UI components from the codebase
251
+ - Interactive: functional replica users can interact with (buttons click, forms submit, modals open)
252
+ - Display: actual working component that mimics the real implementation
253
+ - **Good for:** showing UI structure when flow diagram alone isn't enough
254
+ - **Example:** Instead of describing the checkout form, build a working mini version
255
+
256
+ ### 7. **Code Pattern Explorer** (Excalidraw whiteboard)
257
+ \`data/patterns.mermaid\` → \`<excalidraw data-path="data/patterns.json"></excalidraw>\`
258
+ - Extract: design patterns, example scenarios, trade-offs
259
+ - Display: visual pattern diagrams with explanations
260
+ - **Good for:** design patterns, architectural patterns, code organization strategies
261
+
262
+ ### 8. **Map Visualization** (for geo data)
263
+ \`data/locations.json + components/map-viewer.mdx\`
264
+ - Extract: geographic data, locations, regions, spatial relationships
265
+ - Interactive: zoom, pan, click markers for details, show connections
266
+ - Display: interactive map with markers and regions
267
+ - **Good for:** geographic services, location data, spatial analysis
268
+
269
+ ### 9. **DATABASE VIEWS for Lists** (NOT MDX Components)
270
+ **Use database views for tabular data:**
271
+ - API endpoints list (method, path, parameters, response)
272
+ - Configuration reference (setting name, type, default, description)
273
+ - Process lists with multiple parameters
274
+ - Any tabular data with many rows
275
+
276
+ **How to create:**
277
+ - Create a database view in the workspace
278
+ - Embed with \`<database-view>\` tag on the HTML page
279
+
280
+ **WHAT TO EXTRACT:**
281
+ - **Architecture**: services, connections → Architecture Diagram (Excalidraw whiteboard)
282
+ - **Backend flows**: request processing, API flows, auth flows → Flow Diagram (Excalidraw whiteboard)
283
+ - **Frontend flows**: user journeys, onboarding, feature flows → Frontend Flow Diagram (Excalidraw whiteboard)
284
+ - **Database**: tables, relationships → Schema Diagram (Excalidraw whiteboard)
285
+ - **Processes**: deployment pipelines, data processing → Process Flow Diagram (Excalidraw whiteboard)
286
+ - **API endpoints, configs**: lists with parameters → DATABASE VIEW (NOT MDX component)
287
+ - **Algorithms**: image processing, ML, transforms → Algorithm Visualizer (if exists in repo)
288
+
289
+ ## CONTENT WRITING GUIDELINES
290
+
291
+ **EDUCATIONAL, NOT DESCRIPTIVE:**
292
+ - **Write as WE/OUR/US** - first person plural, as if the team is teaching themselves
293
+ - Use: "We use FastAPI because it provides automatic API docs"
294
+ - Use: "Our database is PostgreSQL - we chose it for JSON support"
295
+ - NEVER: "They use FastAPI" / "The repo uses" / "This project"
296
+ - **EXPLAIN WHY, not just WHAT** - ONLY if reasoning is evident or documented in the repo
297
+ - BAD: "We use Redis for caching"
298
+ - GOOD: "We use Redis to cache API responses - reduces database load" (ONLY if Redis caching actually exists)
299
+ - **NEVER invent metrics** - don't say "improves response times from 500ms to 50ms" unless documented
300
+
301
+ **Formatting:**
302
+ - **Use diverse formatting**: Mix \`<h2>\`/\`<h3>\` for structure, \`<blockquote>\` for important notes, \`<ul>\` for lists, \`<pre><code>\` for commands
303
+ - **CRITICAL: The page title MUST be \`<h1>\` and NEVER \`<h2>\`** - use \`<h1>\` ONLY for the page title, then use \`<h2>\` and \`<h3>\` for sections
304
+ - **Headings (\`<h2>\`)**: Use SPARINGLY - maximum 2 per page, only for truly distinct concepts
305
+ - **Emojis for visual clarity:**
306
+ - **Use emojis** in \`<h2>\`, \`<h3>\`, and lists to make content scannable (e.g., \`<h2>🏗️ Architecture</h2>\`, \`<li>🔐 Authentication</li>\`)
307
+ - **DO NOT use emojis** in \`<h1>\` page titles - keep them clean (e.g., \`<h1>Backend API</h1>\`)
308
+
309
+ **Content quality:**
310
+ - **Include relative file paths** - reference actual code files using relative paths (e.g., "See \`src/auth.py\`")
311
+ - **Keep pages focused** - one main concept per page; use child pages for subtopics
312
+ - **Reference file paths for code details** - don't copy/paste large code blocks, reference file paths instead
313
+ - **Provide context and insights** - explain WHY, not just WHAT (architecture decisions, trade-offs, patterns)
314
+
315
+ **BAD EXAMPLE (descriptive, too much text, invented metrics):**
316
+ \`\`\`
317
+ The backend API repository uses FastAPI as its web framework. It was chosen because it provides fast performance and automatic API documentation. The database layer uses PostgreSQL with SQLAlchemy ORM. Our API serves 10,000+ requests per minute with 500ms response times.
318
+ \`\`\`
319
+
320
+ **GOOD EXAMPLE (educational, concise, Excalidraw whiteboards, only real data):**
321
+ \`\`\`html
322
+ <h2>🏗️ Architecture</h2>
323
+ <p>We use FastAPI for automatic OpenAPI docs and async support. PostgreSQL handles our relational data with SQLAlchemy ORM.</p>
324
+
325
+ <excalidraw data-path="data/architecture.json"></excalidraw>
326
+
327
+ <p>See <code>src/main.py</code> for setup and <code>src/models.py</code> for models.</p>
328
+
329
+ <hr />
330
+
331
+ <h2>🔐 Authentication Flow</h2>
332
+
333
+ <excalidraw data-path="data/auth-flow.json"></excalidraw>
334
+
335
+ <p>OAuth2 with JWT tokens. See <code>src/auth.py</code> for implementation.</p>
336
+ \`\`\`
337
+
338
+ ## EXAMPLE: Complete Repository Documentation (6 Pages)
339
+
340
+ **Scenario:** E-commerce web app (Next.js frontend + Python backend) in ${workspaceType} workspace
341
+
342
+ **Created structure:**
343
+ \`\`\`
344
+ 1. ecommerce-app.html
345
+ Brief overview (1 paragraph) + Architecture Diagram component (Excalidraw: all services/components)
346
+
347
+ 2. ecommerce-app/architecture.html
348
+ System design (1 paragraph) + Detailed Architecture Diagram (Excalidraw: microservices interactions)
349
+
350
+ 3. ecommerce-app/backend-flows.html
351
+ Minimal text (1 paragraph) + API Request Flow Diagram (Excalidraw: request → auth → handler → database → response)
352
+
353
+ 4. ecommerce-app/frontend-flows.html
354
+ Minimal text (1 paragraph) + User Journey Flow Diagram (Excalidraw: landing → signup → onboarding → checkout → purchase)
355
+
356
+ 5. ecommerce-app/key-processes.html
357
+ Minimal text (1 paragraph) + Process Flow Diagrams (Excalidraw: payment flow + order flow)
358
+
359
+ 6. ecommerce-app/api-reference.html
360
+ Minimal text (1 paragraph) + DATABASE VIEW for API endpoints (NOT MDX component)
361
+ \`\`\`
362
+
363
+ **Created 6 VISUAL elements (5 Excalidraw whiteboards + 1 database view):**
364
+ \`\`\`
365
+ → Excalidraw: boxes for Next.js, FastAPI, PostgreSQL, Redis, with arrows showing connections
366
+ → Embedded in HTML: <excalidraw data-path="data/ecommerce-architecture.json"></excalidraw>
367
+
368
+ → Excalidraw: detailed view with API routes, database models, cache layers
369
+ → Embedded in HTML: <excalidraw data-path="data/ecommerce-architecture-detailed.json"></excalidraw>
370
+
371
+ → Excalidraw: HTTP request → auth middleware → route handler → database query → response (with error paths)
372
+ → Embedded in HTML: <excalidraw data-path="data/backend-request-flow.json"></excalidraw>
373
+
374
+ → Excalidraw: landing page → signup → email verification → onboarding → checkout → purchase confirmation
375
+ → Shows user decisions, state changes, different paths (success/error)
376
+ → Embedded in HTML: <excalidraw data-path="data/frontend-user-journey.json"></excalidraw>
377
+
378
+ → Excalidraw: cart → payment form → validation → gateway → webhook → order confirmation
379
+ → Embedded in HTML: <excalidraw data-path="data/payment-process-flow.json"></excalidraw>
380
+
381
+ Database View: API endpoints
382
+ → Table view with columns: Method, Path, Parameters, Response (NOT MDX component)
383
+ \`\`\`
384
+
385
+ ---
386
+
387
+ ## Critical Rules
388
+
389
+ **1. MAXIMUM 6 PAGES - MANDATORY:**
390
+ - **Create MAXIMUM 6 pages total** (including the root [folder-name].html)
391
+ - **Maximum 5K characters per page** - be EXTREMELY concise
392
+ - Focus on the 5-6 most important concepts to teach
393
+ - Combine related topics instead of creating many small pages
394
+ - Be selective and concise
395
+
396
+ **2. MINIMUM 5 EXCALIDRAW WHITEBOARDS - MANDATORY:**
397
+ - **Create at least 5 Excalidraw whiteboards total** across all pages
398
+ - Most pages should have a whiteboard - distribute generously
399
+ - Whiteboards are embedded DIRECTLY in HTML using \`<excalidraw data-path="data/file.json"></excalidraw>\`
400
+ - **NO GENERIC DIAGRAMS** - don't create generic visualizations (e.g., generic Langgraph agent) that aren't specific to THIS repo
401
+ - Use DATABASE VIEWS for lists (API endpoints, configs)
402
+
403
+ **3. PRIORITIZE FLOW DIAGRAMS:**
404
+ - **Excalidraw whiteboards** - THE PRIMARY TEACHING TOOL (architecture, flows, processes, pipelines)
405
+ - **Backend flows** - show how requests are processed (request → auth → handler → database → response)
406
+ - **Frontend flows** - show user journeys (onboarding → share → feature X → etc.)
407
+ - **Process flows** - show key processes (payment, deployment, data processing)
408
+ - **Schema diagrams** - for database structures (Excalidraw whiteboard)
409
+ - **Database views for lists** - API endpoints, configs
410
+ - **MDX components** - only if you need custom interactivity (limit 1)
411
+
412
+ **4. BE EXTREMELY CONCISE:**
413
+ - **Maximum 5K characters per HTML page**
414
+ - Minimal explanatory text (1-2 short paragraphs maximum)
415
+ - Let the visual component do ALL the teaching
416
+ - Add 1 separator (\`<hr />\`) per page maximum for visual breaks
417
+ - Add blank lines before major sections for visual spacing
418
+ - Focus on: HOW it works (only if evident in the repo)
419
+
420
+ **5. NEVER INVENT DATA - CRITICAL:**
421
+ - **ONLY document what actually exists in the repository**
422
+ - Never invent performance metrics, scale, or features
423
+ - Never invent response times, request volumes, or load data
424
+ - Don't mention performance unless explicitly documented in the repo
425
+ - If reasoning/WHY isn't documented, don't make it up
426
+ - Extract ONLY real data from the repo for components
427
+
428
+ **6. WRITE AS WE/OUR/US:**
429
+ - First person plural throughout
430
+ - This is OUR internal documentation BY the team FOR the team
431
+ - Never write "they", "the team", "this repo"
432
+ - Write as if teaching a new team member
433
+ - Always reference actual code using relative file paths
434
+ </github_exploration_instructions>
435
+
436
+ <github_repository>
437
+ ${repositoryContent}
438
+ </github_repository>`;
439
+ };
440
+ export const HUMAN_MESSAGE = `A repository has been analyzed. Please create concise, VISUAL, EDUCATIONAL documentation that teaches and explains this repository in the workspace.
441
+
442
+ Follow the github_exploration_instructions carefully.`;
@@ -0,0 +1,4 @@
1
+ export declare const SEARCH_REPLACE_TOOL_DESCRIPTION = "Performs exact string replacements in files.\nMANDATORY: ALWAYS USE THE read_file TOOL BEFORE USING THIS TOOL.\nReplaces text within a file. By default, replaces a single occurrence, but can replace all occurrences when replace_all is specified. \nThis tool requires providing significant context around the change to ensure precise targeting. Always examine the file's current content before attempting a text replacement.\n\nUsage:\nWhen editing text, ensure you preserve the exact indentation (tabs/spaces) as it appears before.\nALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.\nOnly use emojis if the user explicitly requests it. Avoid adding emojis to files unless asked.\nThe edit will FAIL if old_string is not unique in the file. Either provide a larger string with more surrounding context to make it unique or use replace_all to change every instance of old_string.\nUse replace_all for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.\nTo create or overwrite a file, you should prefer the write tool.\n\nExpectation for required parameters:\n1. file_path is ideally a relative path in the workspace.\n2. THIS IS CRITICAL: old_string MUST be the exact literal text to replace (including all whitespace, indentation, newlines, and surrounding code etc.). IT IS CRITICAL TO KEEP THE STRUCTURE INTACT.\n3. new_string MUST be the exact literal text to replace old_string with (also including all whitespace, indentation, newlines, and surrounding code etc.). Ensure the resulting code is correct and idiomatic.\n4. NEVER escape old_string or new_string, that would break the exact literal text requirement.\n5. Use replace_all for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.\n\nCRITICAL:\nEVEN WHEN EDITING DATA IN A DATA FILE, YOU MUST KEEP THE STRUCTURE INTACT old_string MUST MATCH THE CONTENT EXACTLY OR THE TOOL WILL FAIL.\n(e.g. for simple data editing, do not change for instance the order of the keys)\n\n\nImportant: If ANY of the above are not satisfied, the tool will fail. CRITICAL for old_string: Must uniquely identify the single instance to change. \nInclude at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string matches multiple locations, or does not match exactly, the tool will fail.\n\nWhen editing using this tool fails use the write read tool to understand the file and then use the edit tool to edit the file - if the tool fails repedetly, use the write tool to edit the file.\n";
2
+ export declare const WRITE_TOOL_DESCRIPTION = "\nWrites a file to the local filesystem.\nBear in mind that the other edit tools are better suited for editing existing files.\n\nUsage:\nThis tool will overwrite the existing file if there is one at the provided path.\nIf this is an existing file, you MUST use the read_file tool first to read the file's contents.\nALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.\n\nCRITICAL: when creating a file you must refer to the <content_guidelines> tag to understand the content format and structure for each type of file. Follow the guidelines strictly.\n";
3
+ export declare const MULTI_EDIT_TOOL_DESCRIPTION = "\nThis is a tool for making multiple edits to a single file in one operation. It is built on top of the search_replace tool and allows you to perform multiple find-and-replace operations efficiently. \nPrefer this tool over the search_replace tool when you need to make multiple edits to the same file.\nALWAYS USE THE read_file TOOL BEFORE USING THIS TOOL.\n\nBefore using this tool:\nUse the Read tool to understand the file's contents and context\nVerify the path is correct\n\nTo make multiple file edits, provide the following:\nfile_path: The absolute path to the file to modify (must be absolute, not relative)\nedits: An array of edit operations to perform, where each edit contains:\n THIS IS CRITICAL: old_string: The text to replace (must match the file contents exactly, including all whitespace and indentation). IT IS CRITICAL TO KEEP THE STRUCTURE INTACT.\n new_string: The edited text to replace the old_string\n replace_all: Replace all occurences of old_string. This parameter is optional and defaults to false.\n\nIMPORTANT:\nAll edits are applied in sequence, in the order they are provided\nEach edit operates on the result of the previous edit\nAll edits must be valid for the operation to succeed - if any edit fails, none will be applied\nThis tool is ideal when you need to make several changes to different parts of the same file\n\nCRITICAL REQUIREMENTS:\nAll edits follow the same requirements as the single Edit tool\nThe edits are atomic - either all succeed or none are applied\nPlan your edits carefully to avoid conflicts between sequential operations\n\nWARNING:\nThe tool will fail if edits.old_string doesn't match the file contents exactly (including whitespace). IT IS CRITICAL TO KEEP THE STRUCTURE INTACT.\nThe tool will fail if edits.old_string and edits.new_string are the same\nSince edits are applied in sequence, ensure that earlier edits don't affect the text that later edits are trying to find\n\nWhen making edits:\nEnsure all edits result in idiomatic, correct code\nDo not leave the code in a broken state\nUse replace_all for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.\n\nWhen editing using this tool fails use the write tool to edit the file.\n";
4
+ //# sourceMappingURL=tool_descriptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool_descriptions.d.ts","sourceRoot":"","sources":["../../../src/agent/prompts/tool_descriptions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B,6nFA6B3C,CAAC;AAEF,eAAO,MAAM,sBAAsB,kmBAUlC,CAAC;AAEF,eAAO,MAAM,2BAA2B,gvEAsCvC,CAAC"}
@@ -0,0 +1,80 @@
1
+ export const SEARCH_REPLACE_TOOL_DESCRIPTION = `Performs exact string replacements in files.
2
+ MANDATORY: ALWAYS USE THE read_file TOOL BEFORE USING THIS TOOL.
3
+ Replaces text within a file. By default, replaces a single occurrence, but can replace all occurrences when replace_all is specified.
4
+ This tool requires providing significant context around the change to ensure precise targeting. Always examine the file's current content before attempting a text replacement.
5
+
6
+ Usage:
7
+ When editing text, ensure you preserve the exact indentation (tabs/spaces) as it appears before.
8
+ ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.
9
+ Only use emojis if the user explicitly requests it. Avoid adding emojis to files unless asked.
10
+ The edit will FAIL if old_string is not unique in the file. Either provide a larger string with more surrounding context to make it unique or use replace_all to change every instance of old_string.
11
+ Use replace_all for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.
12
+ To create or overwrite a file, you should prefer the write tool.
13
+
14
+ Expectation for required parameters:
15
+ 1. file_path is ideally a relative path in the workspace.
16
+ 2. THIS IS CRITICAL: old_string MUST be the exact literal text to replace (including all whitespace, indentation, newlines, and surrounding code etc.). IT IS CRITICAL TO KEEP THE STRUCTURE INTACT.
17
+ 3. new_string MUST be the exact literal text to replace old_string with (also including all whitespace, indentation, newlines, and surrounding code etc.). Ensure the resulting code is correct and idiomatic.
18
+ 4. NEVER escape old_string or new_string, that would break the exact literal text requirement.
19
+ 5. Use replace_all for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.
20
+
21
+ CRITICAL:
22
+ EVEN WHEN EDITING DATA IN A DATA FILE, YOU MUST KEEP THE STRUCTURE INTACT old_string MUST MATCH THE CONTENT EXACTLY OR THE TOOL WILL FAIL.
23
+ (e.g. for simple data editing, do not change for instance the order of the keys)
24
+
25
+
26
+ Important: If ANY of the above are not satisfied, the tool will fail. CRITICAL for old_string: Must uniquely identify the single instance to change.
27
+ Include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string matches multiple locations, or does not match exactly, the tool will fail.
28
+
29
+ When editing using this tool fails use the write read tool to understand the file and then use the edit tool to edit the file - if the tool fails repedetly, use the write tool to edit the file.
30
+ `;
31
+ export const WRITE_TOOL_DESCRIPTION = `
32
+ Writes a file to the local filesystem.
33
+ Bear in mind that the other edit tools are better suited for editing existing files.
34
+
35
+ Usage:
36
+ This tool will overwrite the existing file if there is one at the provided path.
37
+ If this is an existing file, you MUST use the read_file tool first to read the file's contents.
38
+ ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.
39
+
40
+ CRITICAL: when creating a file you must refer to the <content_guidelines> tag to understand the content format and structure for each type of file. Follow the guidelines strictly.
41
+ `;
42
+ export const MULTI_EDIT_TOOL_DESCRIPTION = `
43
+ This is a tool for making multiple edits to a single file in one operation. It is built on top of the search_replace tool and allows you to perform multiple find-and-replace operations efficiently.
44
+ Prefer this tool over the search_replace tool when you need to make multiple edits to the same file.
45
+ ALWAYS USE THE read_file TOOL BEFORE USING THIS TOOL.
46
+
47
+ Before using this tool:
48
+ Use the Read tool to understand the file's contents and context
49
+ Verify the path is correct
50
+
51
+ To make multiple file edits, provide the following:
52
+ file_path: The absolute path to the file to modify (must be absolute, not relative)
53
+ edits: An array of edit operations to perform, where each edit contains:
54
+ THIS IS CRITICAL: old_string: The text to replace (must match the file contents exactly, including all whitespace and indentation). IT IS CRITICAL TO KEEP THE STRUCTURE INTACT.
55
+ new_string: The edited text to replace the old_string
56
+ replace_all: Replace all occurences of old_string. This parameter is optional and defaults to false.
57
+
58
+ IMPORTANT:
59
+ All edits are applied in sequence, in the order they are provided
60
+ Each edit operates on the result of the previous edit
61
+ All edits must be valid for the operation to succeed - if any edit fails, none will be applied
62
+ This tool is ideal when you need to make several changes to different parts of the same file
63
+
64
+ CRITICAL REQUIREMENTS:
65
+ All edits follow the same requirements as the single Edit tool
66
+ The edits are atomic - either all succeed or none are applied
67
+ Plan your edits carefully to avoid conflicts between sequential operations
68
+
69
+ WARNING:
70
+ The tool will fail if edits.old_string doesn't match the file contents exactly (including whitespace). IT IS CRITICAL TO KEEP THE STRUCTURE INTACT.
71
+ The tool will fail if edits.old_string and edits.new_string are the same
72
+ Since edits are applied in sequence, ensure that earlier edits don't affect the text that later edits are trying to find
73
+
74
+ When making edits:
75
+ Ensure all edits result in idiomatic, correct code
76
+ Do not leave the code in a broken state
77
+ Use replace_all for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.
78
+
79
+ When editing using this tool fails use the write tool to edit the file.
80
+ `;
@@ -0,0 +1,79 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Tool for writing content to a file
4
+ */
5
+ export declare const writeTool: import("langchain").DynamicStructuredTool<z.ZodObject<{
6
+ filePath: z.ZodString;
7
+ content: z.ZodString;
8
+ }, z.core.$strip>, {
9
+ filePath: string;
10
+ content: string;
11
+ }, {
12
+ filePath: string;
13
+ content: string;
14
+ }, string>;
15
+ /**
16
+ * Tool for searching and replacing text in a file
17
+ */
18
+ export declare const searchReplaceTool: import("langchain").DynamicStructuredTool<z.ZodObject<{
19
+ filePath: z.ZodString;
20
+ oldString: z.ZodString;
21
+ newString: z.ZodString;
22
+ replaceAll: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
23
+ }, z.core.$strip>, {
24
+ filePath: string;
25
+ oldString: string;
26
+ newString: string;
27
+ replaceAll: boolean;
28
+ }, {
29
+ filePath: string;
30
+ oldString: string;
31
+ newString: string;
32
+ replaceAll?: boolean | undefined;
33
+ }, string>;
34
+ /**
35
+ * Tool for reading file contents
36
+ */
37
+ export declare const readFileTool: import("langchain").DynamicStructuredTool<z.ZodObject<{
38
+ filePath: z.ZodString;
39
+ }, z.core.$strip>, {
40
+ filePath: string;
41
+ }, {
42
+ filePath: string;
43
+ }, string>;
44
+ /**
45
+ * Tool for deleting a file
46
+ */
47
+ export declare const deleteTool: import("langchain").DynamicStructuredTool<z.ZodObject<{
48
+ filePath: z.ZodString;
49
+ }, z.core.$strip>, {
50
+ filePath: string;
51
+ }, {
52
+ filePath: string;
53
+ }, string>;
54
+ /**
55
+ * Tool for making multiple edits to a single file
56
+ */
57
+ export declare const multiEditTool: import("langchain").DynamicStructuredTool<z.ZodObject<{
58
+ filePath: z.ZodString;
59
+ edits: z.ZodArray<z.ZodObject<{
60
+ oldString: z.ZodString;
61
+ newString: z.ZodString;
62
+ replaceAll: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
63
+ }, z.core.$strip>>;
64
+ }, z.core.$strip>, {
65
+ filePath: string;
66
+ edits: {
67
+ oldString: string;
68
+ newString: string;
69
+ replaceAll: boolean;
70
+ }[];
71
+ }, {
72
+ filePath: string;
73
+ edits: {
74
+ oldString: string;
75
+ newString: string;
76
+ replaceAll?: boolean | undefined;
77
+ }[];
78
+ }, string>;
79
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/agent/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;UAqFrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;UAiE7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;UA2DxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;UAiEtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;UA4GzB,CAAC"}