@michelabboud/visual-forge-mcp 0.6.0 → 0.7.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 (68) hide show
  1. package/CHANGELOG.md +403 -2
  2. package/README.md +88 -5
  3. package/config/pricing.json +1 -1
  4. package/dist/parser/markdown-parser.d.ts +2 -0
  5. package/dist/parser/markdown-parser.d.ts.map +1 -1
  6. package/dist/parser/markdown-parser.js +23 -10
  7. package/dist/parser/markdown-parser.js.map +1 -1
  8. package/dist/placeholders/placeholder-manager.d.ts +8 -0
  9. package/dist/placeholders/placeholder-manager.d.ts.map +1 -1
  10. package/dist/placeholders/placeholder-manager.js +71 -18
  11. package/dist/placeholders/placeholder-manager.js.map +1 -1
  12. package/dist/providers/base-provider.d.ts +13 -0
  13. package/dist/providers/base-provider.d.ts.map +1 -1
  14. package/dist/providers/base-provider.js +263 -17
  15. package/dist/providers/base-provider.js.map +1 -1
  16. package/dist/providers/gemini/gemini-provider.d.ts.map +1 -1
  17. package/dist/providers/gemini/gemini-provider.js +3 -7
  18. package/dist/providers/gemini/gemini-provider.js.map +1 -1
  19. package/dist/providers/index.d.ts.map +1 -1
  20. package/dist/providers/index.js +5 -1
  21. package/dist/providers/index.js.map +1 -1
  22. package/dist/server/mcp-server.d.ts.map +1 -1
  23. package/dist/server/mcp-server.js +4 -1
  24. package/dist/server/mcp-server.js.map +1 -1
  25. package/dist/utils/filename-sanitizer.d.ts +85 -0
  26. package/dist/utils/filename-sanitizer.d.ts.map +1 -0
  27. package/dist/utils/filename-sanitizer.js +156 -0
  28. package/dist/utils/filename-sanitizer.js.map +1 -0
  29. package/dist/utils/image-metadata-manager.d.ts +151 -0
  30. package/dist/utils/image-metadata-manager.d.ts.map +1 -0
  31. package/dist/utils/image-metadata-manager.js +172 -0
  32. package/dist/utils/image-metadata-manager.js.map +1 -0
  33. package/dist/utils/index-manager.d.ts +38 -0
  34. package/dist/utils/index-manager.d.ts.map +1 -0
  35. package/dist/utils/index-manager.js +110 -0
  36. package/dist/utils/index-manager.js.map +1 -0
  37. package/dist/utils/index.d.ts +5 -0
  38. package/dist/utils/index.d.ts.map +1 -1
  39. package/dist/utils/index.js +5 -0
  40. package/dist/utils/index.js.map +1 -1
  41. package/dist/utils/multi-format-optimizer.d.ts +96 -0
  42. package/dist/utils/multi-format-optimizer.d.ts.map +1 -0
  43. package/dist/utils/multi-format-optimizer.js +423 -0
  44. package/dist/utils/multi-format-optimizer.js.map +1 -0
  45. package/dist/utils/pricing-checker.d.ts.map +1 -1
  46. package/dist/utils/pricing-checker.js +3 -5
  47. package/dist/utils/pricing-checker.js.map +1 -1
  48. package/dist/utils/prompt-enhancer.d.ts +48 -0
  49. package/dist/utils/prompt-enhancer.d.ts.map +1 -0
  50. package/dist/utils/prompt-enhancer.js +169 -0
  51. package/dist/utils/prompt-enhancer.js.map +1 -0
  52. package/dist/utils/quality-validator.d.ts +61 -0
  53. package/dist/utils/quality-validator.d.ts.map +1 -0
  54. package/dist/utils/quality-validator.js +386 -0
  55. package/dist/utils/quality-validator.js.map +1 -0
  56. package/dist/utils/source-metadata.d.ts +56 -0
  57. package/dist/utils/source-metadata.d.ts.map +1 -0
  58. package/dist/utils/source-metadata.js +122 -0
  59. package/dist/utils/source-metadata.js.map +1 -0
  60. package/dist/workflow/workflow-orchestrator.d.ts.map +1 -1
  61. package/dist/workflow/workflow-orchestrator.js +23 -0
  62. package/dist/workflow/workflow-orchestrator.js.map +1 -1
  63. package/dist/workflow/workflow-tools.d.ts.map +1 -1
  64. package/dist/workflow/workflow-tools.js +18 -0
  65. package/dist/workflow/workflow-tools.js.map +1 -1
  66. package/docs/guides/provider-setup.md +543 -0
  67. package/package.json +2 -2
  68. package/scripts/README.md +460 -0
package/CHANGELOG.md CHANGED
@@ -5,8 +5,409 @@ All notable changes to Visual Forge MCP will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [Unreleased]
9
+
10
+ ---
11
+
12
+ ## [0.7.0] - 2026-01-16
13
+
14
+ ### Added 🎨 **Professional Image Generation Pipeline**
15
+
16
+ #### Index-Based Directory Structure
17
+ - **Collision-Free Directories**: Sequential index-based naming prevents filename conflicts
18
+ - Format: `001-filename/`, `002-filename/`, `003-filename/`
19
+ - Automatic index assignment and tracking via `IndexManager`
20
+ - Human-readable directory names with sanitized filenames
21
+ - Guaranteed unique directories even with identical source filenames
22
+ - **Files Added**:
23
+ - `src/utils/index-manager.ts` - Sequential index management with persistence
24
+ - `src/utils/source-metadata.ts` - Per-directory metadata tracking
25
+ - **Benefits**:
26
+ - ✅ No more directory collisions (e.g., `lessons/01-lesson.md` vs `docs/01-lesson.md`)
27
+ - ✅ Easy navigation with sequential prefixes
28
+ - ✅ Automatic cleanup of old indices on reset
29
+
30
+ #### Per-Image Metadata & Logging System
31
+ - **Comprehensive Metadata Tracking**: Each generated image gets complete metadata and logs
32
+ - `img-01.meta.json`: Prompts, generation data, quality scores, costs
33
+ - `img-01.log`: Timestamped generation log with all events
34
+ - Stored in `original/` subdirectory alongside pristine image
35
+ - **Metadata Includes**:
36
+ - Full prompt (original, global context, enhanced final)
37
+ - Generation parameters (provider, model, timing, cost)
38
+ - Quality metrics (sharpness, brightness, dimensions, file size)
39
+ - Optimization results (formats generated, size reductions)
40
+ - Regeneration history (if auto-regenerated)
41
+ - **Files Added**:
42
+ - `src/utils/image-metadata-manager.ts` - Metadata and log management
43
+ - **Benefits**:
44
+ - ✅ Complete audit trail for every image
45
+ - ✅ Debug generation issues with full context
46
+ - ✅ Track costs and quality over time
47
+ - ✅ Reproduce exact generation conditions
48
+
49
+ #### Multi-Format Image Optimization with Watermarking
50
+ - **Automatic Format Generation**: Create multiple optimized formats from single source
51
+ - **WebP**: 94% size reduction, modern web use (default for markdown)
52
+ - **JPEG**: 85% size reduction, PDF export compatibility
53
+ - **PNG**: 70% size reduction with lossy palette mode (optional)
54
+ - **Original**: Pristine backup, NO watermark, always preserved
55
+ - **Professional Watermarking**:
56
+ - SVG text overlay using Sharp composite
57
+ - Default: "Generated with Visual Forge MCP ©" at bottom-right
58
+ - Customizable: text, position, opacity, font size, color, font family
59
+ - Applied to web formats only (WebP, JPEG, PNG), never to original
60
+ - **Directory Structure**:
61
+ ```
62
+ {provider}/
63
+ ├── original/
64
+ │ ├── img-01.png (NO watermark, pristine)
65
+ │ ├── img-01.meta.json
66
+ │ └── img-01.log
67
+ ├── webp/
68
+ │ └── img-01.webp (watermarked, 94% smaller)
69
+ ├── jpg/
70
+ │ └── img-01.jpg (watermarked, 85% smaller)
71
+ └── png/
72
+ └── img-01.png (watermarked, 70% smaller, optional)
73
+ ```
74
+ - **Lossy PNG Optimization**:
75
+ - 8-bit color palette mode (256 colors)
76
+ - Floyd-Steinberg dithering for smooth gradients
77
+ - Near-perfect quality for technical diagrams/screenshots
78
+ - Configurable: quality, palette size, dithering amount
79
+ - **Files Added**:
80
+ - `src/utils/multi-format-optimizer.ts` - Format generation and watermarking
81
+ - **Configuration**:
82
+ ```bash
83
+ VF_GENERATE_PNG=true # Enable PNG generation
84
+ VF_PNG_QUALITY=85 # Quality (1-100)
85
+ VF_PNG_PALETTE=true # Lossy mode
86
+ VF_PNG_COLORS=256 # Palette size
87
+ VF_PNG_DITHER=1.0 # Dithering (0-1)
88
+ ```
89
+ - **Benefits**:
90
+ - ✅ Optimized web delivery (WebP default)
91
+ - ✅ PDF compatibility (JPEG)
92
+ - ✅ Professional watermarking
93
+ - ✅ Pristine originals preserved
94
+ - ✅ Massive file size savings (70-94% reduction)
95
+
96
+ #### Quality Validation with OCR & Auto-Regeneration
97
+ - **OCR Text Detection**: Tesseract.js integration for text quality validation
98
+ - Detects gibberish and malformed text in generated images
99
+ - Analyzes OCR confidence scores
100
+ - Identifies common AI text rendering errors
101
+ - Configurable gibberish ratio threshold (default: 30%)
102
+ - **Image Quality Metrics**:
103
+ - **Sharpness**: Laplacian variance edge detection (min: 50)
104
+ - **Brightness**: Average pixel brightness (30-240 range)
105
+ - **Dimensions**: Width/height verification
106
+ - **File Size**: Valid image size check (>10KB, <10MB)
107
+ - **Overall Score**: 0-100 weighted quality score
108
+ - **Automatic Regeneration**:
109
+ - Retry loop with configurable attempts (default: 3)
110
+ - Triggers on quality validation failure
111
+ - Logs each attempt with quality scores
112
+ - Saves regeneration metadata for debugging
113
+ - Configurable via environment variables
114
+ - **Files Added**:
115
+ - `src/utils/quality-validator.ts` - OCR and quality analysis
116
+ - **Configuration**:
117
+ ```bash
118
+ VF_AUTO_REGENERATE=true # Enable auto-retry
119
+ VF_MAX_RETRIES=3 # Max attempts
120
+ VF_QUALITY_VALIDATION=true # Enable quality checks
121
+ ```
122
+ - **Benefits**:
123
+ - ✅ Catches AI text rendering failures
124
+ - ✅ Ensures high-quality outputs
125
+ - ✅ Automatic retry without user intervention
126
+ - ✅ Complete quality audit trail
127
+
128
+ #### Enhanced Prompt Engineering
129
+ - **Type-Specific Enhancement**: Automatic prompt optimization by image type
130
+ - Diagrams: "technical diagram, clean lines, no text or labels"
131
+ - Flowcharts: "professional flowchart, clear arrows, minimal text"
132
+ - Icons: "minimalist design, single object, flat style"
133
+ - Hero images: "high quality, professional, no text overlay"
134
+ - Screenshots: "clean interface, realistic UI, no watermarks"
135
+ - **Text Prevention Instructions**: Minimizes AI text rendering errors
136
+ - Adds explicit "no text", "no labels", "no watermarks" directives
137
+ - Prevents gibberish and malformed text in generated images
138
+ - Type-aware enhancement based on image purpose
139
+ - **Files Added**:
140
+ - `src/utils/prompt-enhancer.ts` - Type-specific prompt optimization
141
+ - **Integration**:
142
+ - Automatic enhancement in `BaseProvider.generate()`
143
+ - Applied before provider-specific adaptations
144
+ - Logged for debugging and reproducibility
145
+ - **Benefits**:
146
+ - ✅ Better image quality with minimal text artifacts
147
+ - ✅ Type-appropriate styling and composition
148
+ - ✅ Reduced need for manual prompt tweaking
149
+ - ✅ Consistent enhancement across all providers
150
+
151
+ ### Changed
152
+ - **BaseProvider**: Integrated quality validation, auto-regeneration, and multi-format optimization
153
+ - Now orchestrates complete generation pipeline: enhance → generate → optimize → validate → retry
154
+ - Updated `generate()` method with retry loop
155
+ - Automatic format selection for markdown (WebP default)
156
+ - Comprehensive metadata and logging
157
+ - **Filename Sanitizer**: Made async to support index-based directories
158
+ - `createImagePath()` now returns `Promise<string>`
159
+ - `createImageDirectory()` creates indexed directories
160
+ - All dependent code updated for async paths
161
+ - **MCP Server**: Added `initializePathManager()` call on startup
162
+ - Initializes IndexManager for session persistence
163
+ - Ensures index tracking across server restarts
164
+
165
+ ### Dependencies
166
+ - **Optional**: `tesseract.js` for OCR quality validation (install with `npm install tesseract.js`)
167
+ - Graceful degradation if not installed
168
+ - Quality validation continues without OCR
169
+
170
+ ### Documentation
171
+ - Updated `src/utils/index.ts` to export all new utilities
172
+ - Comprehensive TSDoc comments in all new modules
173
+ - Environment variable documentation in code comments
174
+
175
+ ### Technical Details
176
+
177
+ #### Files Created (5)
178
+ 1. `src/utils/index-manager.ts` (188 lines)
179
+ 2. `src/utils/source-metadata.ts` (215 lines)
180
+ 3. `src/utils/image-metadata-manager.ts` (267 lines)
181
+ 4. `src/utils/multi-format-optimizer.ts` (553 lines)
182
+ 5. `src/utils/quality-validator.ts` (518 lines)
183
+ 6. `src/utils/prompt-enhancer.ts` (176 lines)
184
+
185
+ #### Files Modified (4)
186
+ 1. `src/utils/filename-sanitizer.ts` - Async path creation with indexing
187
+ 2. `src/providers/base-provider.ts` - Integrated all new features
188
+ 3. `src/server/mcp-server.ts` - Initialize IndexManager
189
+ 4. `src/utils/index.ts` - Export new utilities
190
+
191
+ #### Test Coverage
192
+ - All 77 existing tests still passing
193
+ - Build successful with strict TypeScript checks
194
+ - No breaking changes to existing workflows
195
+
196
+ ### Backward Compatibility
197
+ - ✅ Fully backward compatible
198
+ - ✅ All new features activated automatically
199
+ - ✅ Graceful degradation (OCR optional)
200
+ - ✅ Existing workflows unchanged
201
+ - ✅ Environment variables optional (sensible defaults)
202
+
203
+ ### User Impact ⭐
204
+ **Before (v0.6.1)**
205
+ - ❌ Directory name collisions possible
206
+ - ❌ No metadata or logs for generated images
207
+ - ❌ Single PNG format only (large files)
208
+ - ❌ No watermarking
209
+ - ❌ No quality validation
210
+ - ❌ Manual regeneration required
211
+ - ❌ Basic prompts only
212
+
213
+ **After (v0.7.0)**
214
+ - ✅ Collision-free indexed directories
215
+ - ✅ Complete metadata and generation logs
216
+ - ✅ Multi-format optimization (WebP, JPEG, PNG)
217
+ - ✅ Professional watermarking
218
+ - ✅ Automatic quality validation
219
+ - ✅ Auto-regeneration on quality failure
220
+ - ✅ Enhanced prompts with type-specific optimization
221
+ - ✅ 70-94% file size reduction
222
+ - ✅ Pristine originals preserved
223
+
224
+ ---
225
+
226
+ ## [0.6.1] - 2026-01-15
227
+
228
+ ### Fixed
229
+ - Server startup: No longer crashes when no providers configured - starts in "setup mode"
230
+ - Clear instructions shown for provider configuration
231
+
232
+ ### Added
233
+ - Comprehensive provider setup guide (docs/guides/provider-setup.md)
234
+ - Documentation for all 7 AI providers with comparison table
235
+ - 3 setup methods documented (env vars, MCP tools, client config)
236
+ - Complete API key acquisition guides
237
+ - Troubleshooting and security best practices
238
+
239
+ ### Changed
240
+ - Updated GitHub release to v0.6.0 with comprehensive release notes
241
+ - Updated pricing.json lastChecked timestamp
242
+
243
+ ---
244
+
8
245
  ## [0.6.0] - 2026-01-14
9
246
 
247
+ ### Changed 🔧 Project Structure Reorganization
248
+
249
+ #### n8n Integration Directory Consolidation
250
+
251
+ **Change:** Consolidated n8n integration files under single `n8n/` directory.
252
+
253
+ **Before:**
254
+ ```
255
+ /
256
+ ├── n8n-nodes-visual-forge/
257
+ └── n8n-workflows/
258
+ ```
259
+
260
+ **After:**
261
+ ```
262
+ /
263
+ └── n8n/
264
+ ├── n8n-nodes-visual-forge/ ← Custom n8n node package
265
+ └── n8n-workflows/ ← Pre-built workflow templates
266
+ ```
267
+
268
+ **Files Modified:**
269
+ - Created `n8n/` directory
270
+ - Moved `n8n-nodes-visual-forge/` → `n8n/n8n-nodes-visual-forge/`
271
+ - Moved `n8n-workflows/` → `n8n/n8n-workflows/`
272
+ - Updated `README.md` (lines 755, 1262-1263)
273
+ - Updated `CHANGELOG.md` (lines 592-593)
274
+ - Updated `docs/CLEANUP_SUMMARY.md`
275
+ - Updated `docs/integrations/n8n-quick-start.md` (lines 65, 274)
276
+ - Updated `docs/integrations/n8n.md` (line 433)
277
+
278
+ **Benefits:**
279
+ - ✅ Clearer project organization
280
+ - ✅ All n8n files grouped together
281
+ - ✅ Easier to locate integration resources
282
+ - ✅ Scalable for future integrations (Zapier, Make.com, etc.)
283
+
284
+ ---
285
+
286
+ ### Added ✨ NPM Package Management Script
287
+
288
+ #### Production-Ready npm-manager.sh
289
+
290
+ Added comprehensive bash script for managing npm package lifecycle with extensive safety checks and verbose logging.
291
+
292
+ **New Files:**
293
+ - `scripts/npm-manager.sh` - Main executable script (1,379 lines)
294
+ - `scripts/README.md` - Complete documentation with examples
295
+ - `scripts/QUICK_START.md` - Quick reference guide
296
+
297
+ **Features:**
298
+ - ✅ **Publishing** - Publish with 10 pre-publish validations
299
+ - ✅ **Version Management** - Bump patch/minor/major versions
300
+ - ✅ **Authentication** - NPM_TOKEN and recovery code support
301
+ - ✅ **Package Info** - Show package info, stats, download counts
302
+ - ✅ **Security** - Run audits, check for outdated dependencies
303
+ - ✅ **Access Control** - Manage package access and tokens
304
+ - ✅ **Deprecation** - Deprecate old versions with warnings
305
+ - ✅ **Unpublish** - Remove versions (with multiple confirmations)
306
+ - ✅ **Git Integration** - Automatic git tag creation and push
307
+ - ✅ **Dry-Run Mode** - Test operations without making changes
308
+ - ✅ **Comprehensive Logging** - All operations logged to npm-manager.log
309
+
310
+ **Safety Features:**
311
+ 1. Validates package.json before operations
312
+ 2. Checks npm authentication
313
+ 3. Verifies git working directory status
314
+ 4. Checks if version already published
315
+ 5. Runs tests before publish (optional --skip-tests)
316
+ 6. Runs build before publish (optional --skip-build)
317
+ 7. Security audit for vulnerabilities
318
+ 8. Outdated dependencies check
319
+ 9. Preview files to be published
320
+ 10. Final confirmation prompt
321
+
322
+ **Commands Available:**
323
+ ```bash
324
+ ./scripts/npm-manager.sh publish [tag] # Publish to npm
325
+ ./scripts/npm-manager.sh bump <type> # Bump version
326
+ ./scripts/npm-manager.sh info # Show package info
327
+ ./scripts/npm-manager.sh stats # Show statistics
328
+ ./scripts/npm-manager.sh tags # Distribution tags
329
+ ./scripts/npm-manager.sh access # Manage access
330
+ ./scripts/npm-manager.sh tokens # Manage tokens
331
+ ./scripts/npm-manager.sh deprecate <ver> # Deprecate version
332
+ ./scripts/npm-manager.sh unpublish <ver> # Unpublish version
333
+ ./scripts/npm-manager.sh test # Run tests
334
+ ./scripts/npm-manager.sh build # Run build
335
+ ./scripts/npm-manager.sh audit # Security audit
336
+ ./scripts/npm-manager.sh outdated # Check outdated deps
337
+ ```
338
+
339
+ **Options:**
340
+ - `--dry-run` - Test without making changes
341
+ - `--skip-tests` - Skip test execution
342
+ - `--skip-build` - Skip build step
343
+ - `--force` - Skip confirmations (use with caution)
344
+ - `--verbose` - Detailed output
345
+
346
+ **Usage Example:**
347
+ ```bash
348
+ # Complete release workflow
349
+ ./scripts/npm-manager.sh bump patch
350
+ vim CHANGELOG.md
351
+ git commit -am "chore: Release v0.6.1"
352
+ ./scripts/npm-manager.sh publish --dry-run
353
+ ./scripts/npm-manager.sh publish
354
+ git push && git push --tags
355
+ ```
356
+
357
+ **Documentation:**
358
+ - Updated `README.md` with Development & Publishing section
359
+ - Complete guide in `scripts/README.md`
360
+ - Quick reference in `scripts/QUICK_START.md`
361
+
362
+ ---
363
+
364
+ ### Fixed 🔧 Image Display and Content Quality
365
+
366
+ #### Issue 1: Image Display Size
367
+ **Problem:** Images displayed at full size, taking too much screen space.
368
+
369
+ **Solution:** Changed placeholder replacement to use HTML `<img>` tags with `width="80%"` attribute for better readability.
370
+
371
+ **Files Modified:**
372
+ - `src/placeholders/placeholder-manager.ts` - Updated replacement methods to use HTML format
373
+
374
+ **Result:** All images now display at 80% screen width, maintaining aspect ratio.
375
+
376
+ #### Issue 2: Content Bleeding into Placeholders
377
+ **Problem:** Placeholder prompts captured markdown formatting (headers, navigation, emojis, code blocks) from surrounding content, causing malformed AI-generated images.
378
+
379
+ **Solution:** Implemented comprehensive 13-step content cleaning pipeline in `generatePrompt()`:
380
+ - Remove code blocks, inline code, horizontal rules
381
+ - Remove markdown headers (keeping text), images, links
382
+ - Remove bold/italic/strikethrough formatting
383
+ - Remove HTML tags, bullet points, list markers
384
+ - Remove emojis, reading time indicators
385
+ - Remove navigation patterns (← Previous, Next →, Quick Nav)
386
+ - Clean up multiple blank lines
387
+
388
+ **Files Modified:**
389
+ - `src/placeholders/placeholder-manager.ts` (lines 360-415) - Enhanced content cleaning
390
+
391
+ **Result:** Prompts now contain only clean, relevant text without markdown syntax or decorative elements.
392
+
393
+ #### Issue 3: Placeholder Replacement Regex
394
+ **Problem:** Previous regex could match incorrect closing backticks when code blocks appeared in content.
395
+
396
+ **Solution:** Updated regex to require closing ``` on its own line: `/```vf-placeholder\s+[\s\S]*?\n```/`
397
+
398
+ **Files Modified:**
399
+ - `src/placeholders/placeholder-manager.ts` (lines 133, 170) - Improved regex precision
400
+
401
+ **Result:** 100% reliable placeholder replacement with no partial matches.
402
+
403
+ **Test Results:**
404
+ - ✅ 32/32 images successfully replaced
405
+ - ✅ All images display at 80% width
406
+ - ✅ Zero content bleeding issues
407
+ - ✅ Clean prompts without markdown syntax
408
+
409
+ ---
410
+
10
411
  ### Added ✨ Automatic Image Optimization
11
412
 
12
413
  #### Feature: Web-Optimized Images with Original Preservation
@@ -542,8 +943,8 @@ The detailed context is automatically prepended to every image prompt, ensuring:
542
943
  - **MANUAL_TESTING_GUIDE.md**: Manual testing procedures
543
944
 
544
945
  #### Third-Party Integration
545
- - **n8n-nodes-visual-forge/**: Custom N8N nodes for Visual Forge
546
- - **n8n-workflows/**: Pre-built N8N workflow templates
946
+ - **n8n/n8n-nodes-visual-forge/**: Custom N8N nodes for Visual Forge
947
+ - **n8n/n8n-workflows/**: Pre-built N8N workflow templates
547
948
  - **scripts/npm-manager.js**: NPM package management utilities
548
949
 
549
950
  ### Changed
package/README.md CHANGED
@@ -24,13 +24,16 @@ An MCP (Model Context Protocol) server that automates AI image generation for te
24
24
  - Leonardo Phoenix
25
25
  - HuggingFace Inference
26
26
  - xAI Grok 2 Image
27
- - **🎨 Detailed Global Context** ✨ NEW: Comprehensive styling system with hex colors, typography, layout rules, and audience targeting for dramatically better, more consistent images
27
+ - **🎨 Detailed Global Context**: Comprehensive styling system with hex colors, typography, layout rules, and audience targeting for dramatically better, more consistent images
28
+ - **🖼️ Multi-Format Optimization** ✨ NEW v0.7.0: Automatic generation of WebP (94% smaller), JPEG (85% smaller), and optional lossy PNG (70% smaller) with professional watermarking
29
+ - **🔍 Quality Validation & Auto-Regeneration** ✨ NEW v0.7.0: OCR-based text detection, sharpness/brightness analysis, and automatic retry on quality failure
30
+ - **📁 Index-Based Directories** ✨ NEW v0.7.0: Collision-free sequential directory naming with complete metadata and generation logs per image
31
+ - **✏️ Enhanced Prompting** ✨ NEW v0.7.0: Type-specific prompt optimization to minimize AI text rendering errors
28
32
  - **💰 Cost-Effective**: Options from $0.00 to $0.12/image
29
33
  - **⚡ Flexible Workflows**: Interactive, Batch, and Bulk generation modes
30
34
  - **🔄 State Persistence**: Resume interrupted sessions without losing progress
31
35
  - **📊 Cost Tracking**: Real-time cost monitoring and estimates per provider
32
36
  - **🎯 Smart Rate Limiting**: Token bucket algorithm prevents API bans
33
- - **✨ Quality Inspection**: Automated quality analysis with sharpness and brightness metrics
34
37
  - **🔒 Automatic Backups**: File backup system with approve/restore workflow (optional, enabled by default)
35
38
  - **🌐 Universal MCP Support**: Compatible with 24+ MCP clients (tested with Claude Code, Claude Desktop, Zed)
36
39
 
@@ -752,7 +755,7 @@ Then drag **Visual Forge** nodes into your workflows with built-in UI for all op
752
755
 
753
756
  #### Option 3: Example Workflows (Templates)
754
757
 
755
- Import pre-built workflows from `n8n-workflows/`:
758
+ Import pre-built workflows from `n8n/n8n-workflows/`:
756
759
 
757
760
  - `01-simple-image-generation.json` - Basic webhook-triggered generation
758
761
  - `02-batch-processing-with-cdn.json` - Scheduled batch with S3/CDN upload
@@ -1209,6 +1212,86 @@ Real-time tracking:
1209
1212
 
1210
1213
  ---
1211
1214
 
1215
+ ## 🛠️ Development & Publishing
1216
+
1217
+ ### NPM Package Management
1218
+
1219
+ Visual Forge MCP includes a production-ready script for managing the npm package lifecycle with comprehensive safety checks and verbose logging.
1220
+
1221
+ **Script Location**: `scripts/npm-manager.sh`
1222
+
1223
+ #### Features
1224
+
1225
+ - ✅ **Publish with safety checks** - 10 pre-publish validations
1226
+ - ✅ **Version management** - Bump patch/minor/major
1227
+ - ✅ **Authentication support** - NPM tokens and recovery codes
1228
+ - ✅ **Git integration** - Automatic tag creation
1229
+ - ✅ **Dry-run mode** - Test without making changes
1230
+ - ✅ **Package info & stats** - View registry information
1231
+ - ✅ **Security audits** - Check for vulnerabilities
1232
+ - ✅ **Access management** - Control package access
1233
+ - ✅ **Comprehensive logging** - All operations logged
1234
+
1235
+ #### Quick Start
1236
+
1237
+ ```bash
1238
+ # Show help
1239
+ ./scripts/npm-manager.sh --help
1240
+
1241
+ # Show package info
1242
+ ./scripts/npm-manager.sh info
1243
+
1244
+ # Bump version
1245
+ ./scripts/npm-manager.sh bump patch
1246
+
1247
+ # Publish (with all safety checks)
1248
+ ./scripts/npm-manager.sh publish --dry-run
1249
+ ./scripts/npm-manager.sh publish
1250
+ ```
1251
+
1252
+ #### Complete Release Workflow
1253
+
1254
+ ```bash
1255
+ # 1. Bump version
1256
+ ./scripts/npm-manager.sh bump patch
1257
+
1258
+ # 2. Update CHANGELOG.md
1259
+ vim CHANGELOG.md
1260
+
1261
+ # 3. Commit changes
1262
+ git commit -am "chore: Release v$(node -pe "require('./package.json').version")"
1263
+
1264
+ # 4. Test publish
1265
+ ./scripts/npm-manager.sh publish --dry-run
1266
+
1267
+ # 5. Publish to npm
1268
+ ./scripts/npm-manager.sh publish
1269
+
1270
+ # 6. Push to GitHub
1271
+ git push && git push --tags
1272
+ ```
1273
+
1274
+ #### Authentication
1275
+
1276
+ **With NPM Token** (recommended for CI/CD):
1277
+ ```bash
1278
+ export NPM_TOKEN=npm_your_token_here
1279
+ ./scripts/npm-manager.sh publish
1280
+ ```
1281
+
1282
+ **With Recovery Codes**:
1283
+ ```bash
1284
+ npm login --auth-type=legacy
1285
+ ./scripts/npm-manager.sh publish
1286
+ ```
1287
+
1288
+ #### Documentation
1289
+
1290
+ - **Full Guide**: [scripts/README.md](scripts/README.md)
1291
+ - **Quick Reference**: [scripts/QUICK_START.md](scripts/QUICK_START.md)
1292
+
1293
+ ---
1294
+
1212
1295
  ## 🤝 Contributing
1213
1296
 
1214
1297
  Contributions welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) first.
@@ -1259,8 +1342,8 @@ For commercial licensing inquiries, please contact the author.
1259
1342
  - **Full Integration Guide**: [docs/N8N_INTEGRATION.md](docs/N8N_INTEGRATION.md)
1260
1343
  - **Quick Start**: [docs/N8N_QUICK_START.md](docs/N8N_QUICK_START.md)
1261
1344
  - **API Reference**: [docs/openapi.yaml](docs/openapi.yaml)
1262
- - **Example Workflows**: [n8n-workflows/](n8n-workflows/)
1263
- - **Custom Node Package**: [n8n-nodes-visual-forge/](n8n-nodes-visual-forge/)
1345
+ - **Example Workflows**: [n8n/n8n-workflows/](n8n/n8n-workflows/)
1346
+ - **Custom Node Package**: [n8n/n8n-nodes-visual-forge/](n8n/n8n-nodes-visual-forge/)
1264
1347
 
1265
1348
  ---
1266
1349
 
@@ -2,7 +2,7 @@
2
2
  "$schema": "./pricing-schema.json",
3
3
  "version": "2.0.0",
4
4
  "lastUpdated": "2026-01-13",
5
- "lastChecked": "2026-01-13T11:24:10.151Z",
5
+ "lastChecked": "2026-01-15T17:00:08.513Z",
6
6
  "providers": {
7
7
  "openai": {
8
8
  "name": "OpenAI",
@@ -14,6 +14,8 @@ export declare class MarkdownParser {
14
14
  parseFiles(filePaths: string[], globalContext?: GlobalContext): Promise<ImageSpec[]>;
15
15
  /**
16
16
  * Parse a single image block
17
+ *
18
+ * NEW FORMAT: Handles YAML-style multiline prompt (prompt: | ...)
17
19
  */
18
20
  private parseImageBlock;
19
21
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-parser.d.ts","sourceRoot":"","sources":["../../src/parser/markdown-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,SAAS,EAA0B,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGnG,qBAAa,cAAc;IACzB;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAsCtF;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAe1F;;OAEG;IACH,OAAO,CAAC,eAAe;IAwDvB;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAwCjD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,OAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAuBnF"}
1
+ {"version":3,"file":"markdown-parser.d.ts","sourceRoot":"","sources":["../../src/parser/markdown-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,SAAS,EAA0B,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGnG,qBAAa,cAAc;IACzB;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAsCtF;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAe1F;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAoEvB;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAwCjD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,OAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAuBnF"}
@@ -14,8 +14,8 @@ export class MarkdownParser {
14
14
  const content = await fs.readFile(filePath, 'utf-8');
15
15
  const specs = [];
16
16
  // Extract image blocks using regex
17
- // Looking for code blocks with image metadata
18
- const imageBlockRegex = /```image\s+([\s\S]*?)```/g;
17
+ // NEW FORMAT: Looking for ```vf-placeholder blocks
18
+ const imageBlockRegex = /```vf-placeholder\s+([\s\S]*?)```/g;
19
19
  let match;
20
20
  let imageIndex = 1;
21
21
  while ((match = imageBlockRegex.exec(content)) !== null) {
@@ -27,7 +27,7 @@ export class MarkdownParser {
27
27
  imageIndex++;
28
28
  }
29
29
  catch (error) {
30
- logger.warn(`Failed to parse image block in ${filePath}`, {
30
+ logger.warn(`Failed to parse vf-placeholder block in ${filePath}`, {
31
31
  error: error.message,
32
32
  position: blockPosition,
33
33
  });
@@ -54,21 +54,34 @@ export class MarkdownParser {
54
54
  }
55
55
  /**
56
56
  * Parse a single image block
57
+ *
58
+ * NEW FORMAT: Handles YAML-style multiline prompt (prompt: | ...)
57
59
  */
58
60
  parseImageBlock(blockContent, sourceFile, position, index, globalContext) {
59
61
  const lines = blockContent.trim().split('\n');
60
62
  const metadata = {};
61
63
  let prompt = '';
64
+ let inPrompt = false;
62
65
  // Parse metadata lines (key: value format)
63
66
  for (const line of lines) {
64
- const metaMatch = line.match(/^(\w+):\s*(.+)$/);
65
- if (metaMatch) {
66
- const [, key, value] = metaMatch;
67
- metadata[key] = value.trim();
67
+ // Check if this is the start of a multiline prompt
68
+ if (line.match(/^prompt:\s*\|/)) {
69
+ inPrompt = true;
70
+ continue;
68
71
  }
69
- else if (line.trim()) {
70
- // Non-metadata lines are part of the prompt
71
- prompt += line + '\n';
72
+ // If we're in a multiline prompt, accumulate lines
73
+ if (inPrompt) {
74
+ // Dedent the prompt line (remove leading spaces)
75
+ const dedented = line.replace(/^\s{2}/, '');
76
+ prompt += dedented + '\n';
77
+ }
78
+ else {
79
+ // Regular key: value metadata
80
+ const metaMatch = line.match(/^(\w+):\s*(.+)$/);
81
+ if (metaMatch) {
82
+ const [, key, value] = metaMatch;
83
+ metadata[key] = value.trim();
84
+ }
72
85
  }
73
86
  }
74
87
  // Generate image ID
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-parser.js","sourceRoot":"","sources":["../../src/parser/markdown-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,OAAO,cAAc;IACzB;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,aAA6B;QAC7D,MAAM,CAAC,IAAI,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;QAElD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,KAAK,GAAgB,EAAE,CAAC;QAE9B,mCAAmC;QACnC,8CAA8C;QAC9C,MAAM,eAAe,GAAG,2BAA2B,CAAC;QACpD,IAAI,KAAK,CAAC;QACV,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACxD,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC;YAElC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAC/B,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,UAAU,EACV,aAAa,CACd,CAAC;gBACF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjB,UAAU,EAAE,CAAC;YACf,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,kCAAkC,QAAQ,EAAE,EAAE;oBACxD,KAAK,EAAE,KAAK,CAAC,OAAO;oBACpB,QAAQ,EAAE,aAAa;iBACxB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,MAAM,8BAA8B,QAAQ,EAAE,CAAC,CAAC;QAC/E,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,SAAmB,EAAE,aAA6B;QACjE,MAAM,QAAQ,GAAgB,EAAE,CAAC;QAEjC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAC5D,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,MAAM,CAAC,KAAK,CAAC,yBAAyB,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,eAAe,CACrB,YAAoB,EACpB,UAAkB,EAClB,QAAgB,EAChB,KAAa,EACb,aAA6B;QAE7B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAQ,EAAE,CAAC;QACzB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,2CAA2C;QAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAChD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC;gBACjC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAC/B,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvB,4CAA4C;gBAC5C,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC;YACxB,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,IAAI,GAAG,QAAQ,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAE9E,eAAe;QACf,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,cAAc,CAAc,CAAC;QAE5D,uBAAuB;QACvB,MAAM,WAAW,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAgB,CAAC;QAEvF,kBAAkB;QAClB,OAAO;YACL,EAAE;YACF,UAAU;YACV,IAAI;YACJ,SAAS,EAAE;gBACT,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,SAAS;gBACtC,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,iBAAiB,EAAE,GAAG,EAAE,MAAM;aAC/B;YACD,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,mBAAmB,CAAC;YACjE,WAAW;YACX,QAAQ,EAAE;gBACR,OAAO,EAAE,QAAQ,CAAC,GAAG;gBACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACpE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,QAAQ;aACxC;YACD,aAAa;SACd,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAe;QAChC,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAE3C,iCAAiC;QACjC,IACE,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;YACnC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC/B,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC5B,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,EACrC,CAAC;YACD,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,IACE,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;YACjC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;YACnC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC5B,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1G,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5E,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACxE,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,YAAqB,IAAI;QAC5D,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,KAAK,UAAU,IAAI,CAAC,WAAmB;YACrC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEpD,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,SAAS,EAAE,CAAC;oBACrC,gCAAgC;oBAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;wBACjE,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxD,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,aAAa,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"markdown-parser.js","sourceRoot":"","sources":["../../src/parser/markdown-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,OAAO,cAAc;IACzB;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,aAA6B;QAC7D,MAAM,CAAC,IAAI,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;QAElD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,KAAK,GAAgB,EAAE,CAAC;QAE9B,mCAAmC;QACnC,mDAAmD;QACnD,MAAM,eAAe,GAAG,oCAAoC,CAAC;QAC7D,IAAI,KAAK,CAAC;QACV,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACxD,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC;YAElC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAC/B,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,UAAU,EACV,aAAa,CACd,CAAC;gBACF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjB,UAAU,EAAE,CAAC;YACf,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,2CAA2C,QAAQ,EAAE,EAAE;oBACjE,KAAK,EAAE,KAAK,CAAC,OAAO;oBACpB,QAAQ,EAAE,aAAa;iBACxB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,MAAM,8BAA8B,QAAQ,EAAE,CAAC,CAAC;QAC/E,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,SAAmB,EAAE,aAA6B;QACjE,MAAM,QAAQ,GAAgB,EAAE,CAAC;QAEjC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAC5D,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,MAAM,CAAC,KAAK,CAAC,yBAAyB,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACK,eAAe,CACrB,YAAoB,EACpB,UAAkB,EAClB,QAAgB,EAChB,KAAa,EACb,aAA6B;QAE7B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAQ,EAAE,CAAC;QACzB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,2CAA2C;QAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,mDAAmD;YACnD,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;gBAChC,QAAQ,GAAG,IAAI,CAAC;gBAChB,SAAS;YACX,CAAC;YAED,mDAAmD;YACnD,IAAI,QAAQ,EAAE,CAAC;gBACb,iDAAiD;gBACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAC5C,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,8BAA8B;gBAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBAChD,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC;oBACjC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,IAAI,GAAG,QAAQ,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAE9E,eAAe;QACf,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,cAAc,CAAc,CAAC;QAE5D,uBAAuB;QACvB,MAAM,WAAW,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAgB,CAAC;QAEvF,kBAAkB;QAClB,OAAO;YACL,EAAE;YACF,UAAU;YACV,IAAI;YACJ,SAAS,EAAE;gBACT,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,SAAS;gBACtC,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,iBAAiB,EAAE,GAAG,EAAE,MAAM;aAC/B;YACD,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,mBAAmB,CAAC;YACjE,WAAW;YACX,QAAQ,EAAE;gBACR,OAAO,EAAE,QAAQ,CAAC,GAAG;gBACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACpE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,QAAQ;aACxC;YACD,aAAa;SACd,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAe;QAChC,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAE3C,iCAAiC;QACjC,IACE,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;YACnC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC/B,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC5B,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,EACrC,CAAC;YACD,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,IACE,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;YACjC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;YACnC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC5B,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1G,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5E,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACxE,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,YAAqB,IAAI;QAC5D,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,KAAK,UAAU,IAAI,CAAC,WAAmB;YACrC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEpD,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,SAAS,EAAE,CAAC;oBACrC,gCAAgC;oBAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;wBACjE,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxD,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,aAAa,CAAC;IACvB,CAAC;CACF"}