decomposer: generate files for Create and commit a registry-ready single-agent repository that generates technical solution design documents and draw.io architecture diagrams from application requirements.

This commit is contained in:
2026-08-31 14:48:28 +00:00
parent de91ff188d
commit ca18e8db08
9 changed files with 288 additions and 3 deletions

View File

@@ -0,0 +1,42 @@
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Any
@dataclass
class Requirements:
name: str = "Application"
summary: str = ""
requirements: list[str] = field(default_factory=list)
constraints: list[str] = field(default_factory=list)
users: list[str] = field(default_factory=list)
integrations: list[str] = field(default_factory=list)
security: list[str] = field(default_factory=list)
data: list[str] = field(default_factory=list)
availability: str = "To be confirmed"
deployment: str = "To be confirmed"
extra: dict[str, Any] = field(default_factory=dict)
def _list(value: Any) -> list[str]:
if value is None:
return []
if isinstance(value, list):
return [str(item) for item in value]
return [str(value)]
def normalize(raw: dict[str, Any] | str) -> Requirements:
if isinstance(raw, str):
return Requirements(name="Application", summary=raw, requirements=[raw])
known = {"name", "summary", "requirements", "constraints", "users", "integrations", "security", "data", "availability", "deployment"}
return Requirements(
name=str(raw.get("name", "Application")), summary=str(raw.get("summary", "")),
requirements=_list(raw.get("requirements")), constraints=_list(raw.get("constraints")),
users=_list(raw.get("users")), integrations=_list(raw.get("integrations")),
security=_list(raw.get("security")), data=_list(raw.get("data")),
availability=str(raw.get("availability", "To be confirmed")),
deployment=str(raw.get("deployment", "To be confirmed")),
extra={str(k): v for k, v in raw.items() if k not in known},
)