orchestrated-discussions/diagrams/artifact_editor_architectur...

72 lines
1.5 KiB
Plaintext

@startuml
!define RECTANGLE class
skinparam componentStyle rectangle
package "Artifact Editor" {
[CLI Entry Point] as CLI
[Editor UI\n(Dear PyGui)] as UI
[Renderer Registry] as Registry
package "Renderers" {
[MermaidRenderer] as Mermaid
[PlantUMLRenderer] as PlantUML
[OpenSCADRenderer] as SCAD
[SVGRenderer] as SVG
[ASCIIRenderer] as ASCII
}
package "AI Assist\n(SmartTools)" {
[artifact-generator] as Gen
[artifact-refiner] as Refine
[artifact-assist] as Assist
}
}
package "External Tools" {
[mermaid-cli] as MermaidCLI
[plantuml.jar] as PlantUMLJar
[openscad] as OpenSCADApp
[cairosvg] as Cairo
}
package "Parent App\n(orchestrated-discussions)" {
[Comment Dialog] as Parent
}
' Flow
Parent --> CLI : launch with --output
CLI --> UI : initialize
UI --> Registry : get_renderer(file_ext)
Registry --> Mermaid : route by extension
Mermaid --> MermaidCLI : subprocess call
MermaidCLI --> Mermaid : SVG bytes
Mermaid --> UI : preview image
UI --> Gen : user clicks "Generate"
Gen --> UI : artifact code
UI --> CLI : user saves
CLI --> Parent : stdout: ARTIFACT_SAVED:path
note right of Registry
Strategy pattern:
Each renderer knows how to
validate, render, and preview
its format
end note
note right of Gen
SmartTools run as subprocesses
Input: description or existing code
Output: JSON with artifact content
end note
note bottom of CLI
Integration Contract:
- Input: --output <path> --type <format>
- Output: ARTIFACT_SAVED:<path>
- Exit: 0=saved, 1=error, 2=cancelled
end note
@enduml