Source code for ij

"""Idea Junction - Connect vague ideas and evolve them to fully functional systems.

A bidirectional diagramming system that enables seamless movement between
natural language, visual diagrams, and code.
"""

# Core
from .analyzers import PythonCodeAnalyzer
from .core import DiagramIR, Edge, EdgeType, Node, NodeType
from .converters import EnhancedTextConverter, SimpleTextConverter
from .graph_ops import GraphOperations
from .parsers import D2Parser, MermaidParser, MermaidParseWarning
from .transforms import DiagramTransforms
from .renderers import (
    D2Renderer,
    GraphvizRenderer,
    InteractionAnalyzer,
    MermaidRenderer,
    PlantUMLRenderer,
    SequenceDiagramRenderer,
)

# New modules
from .validation import DiagramValidator, DiagramLinter, ValidationResult
from .git_integration import DiagramDiff, DiagramHistory
from .diagrams import ERDiagram, Entity, Field, Cardinality, StateMachine, State
from .export import ImageExporter, quick_export
from .layout import LayoutEngine, ForceDirectedLayout, HierarchicalLayout
from .plugins import PluginManager, register_plugin, register_transform
from .viewer import ViewerServer, serve_diagram

# Optional analyzers
try:
    from .analyzers.typescript import TypeScriptAnalyzer, analyze_package_json

    _has_typescript = True
except ImportError:
    _has_typescript = False

# Optional importers
try:
    from . import importers

    _has_importers = True
except ImportError:
    _has_importers = False

# LLMConverter is optional (requires openai package)
try:
    from .converters import LLMConverter

    _has_llm = True
except ImportError:
    _has_llm = False

__version__ = "0.2.0"

__all__ = [
    # Core
    "DiagramIR",
    "Node",
    "Edge",
    "NodeType",
    "EdgeType",
    "SimpleTextConverter",
    "EnhancedTextConverter",
    "MermaidRenderer",
    "PlantUMLRenderer",
    "D2Renderer",
    "GraphvizRenderer",
    "SequenceDiagramRenderer",
    "InteractionAnalyzer",
    "MermaidParser",
    "MermaidParseWarning",
    "D2Parser",
    "GraphOperations",
    "PythonCodeAnalyzer",
    "DiagramTransforms",
    # Validation
    "DiagramValidator",
    "DiagramLinter",
    "ValidationResult",
    # Git integration
    "DiagramDiff",
    "DiagramHistory",
    # Diagrams
    "ERDiagram",
    "Entity",
    "Field",
    "Cardinality",
    "StateMachine",
    "State",
    # Export
    "ImageExporter",
    "quick_export",
    # Layout
    "LayoutEngine",
    "ForceDirectedLayout",
    "HierarchicalLayout",
    # Plugins
    "PluginManager",
    "register_plugin",
    "register_transform",
    # Viewer
    "ViewerServer",
    "serve_diagram",
    # Convenience
    "text_to_mermaid",
]

if _has_llm:
    __all__.append("LLMConverter")

if _has_typescript:
    __all__.extend(["TypeScriptAnalyzer", "analyze_package_json"])

if _has_importers:
    __all__.append("importers")


[docs] def text_to_mermaid(text: str, title: str = None, direction: str = "TD") -> str: """Convert text description to Mermaid diagram (convenience function). Args: text: Text description of the process/flow title: Optional diagram title direction: Flow direction (TD, LR, etc.) Returns: Mermaid syntax string Example: >>> mermaid = text_to_mermaid("Start -> Process data -> End") >>> print(mermaid) flowchart TD n0([Start]) n1[Process data] n2([End]) n0 --> n1 n1 --> n2 """ converter = SimpleTextConverter() diagram = converter.convert(text, title=title) renderer = MermaidRenderer(direction=direction) return renderer.render(diagram)