72 lines
1.5 KiB
Plaintext
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 |