-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodels.py
More file actions
62 lines (50 loc) · 1.24 KB
/
models.py
File metadata and controls
62 lines (50 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
"""
Data models for the Tool Architect system.
"""
from dataclasses import dataclass, field
from typing import List, Optional, Literal
@dataclass
class Tool:
"""Represents an AI tool in the registry."""
name: str
slug: str
categories: List[str]
best_for: List[str]
io: Optional[str] = None
@dataclass
class ToolAssignment:
"""A tool assigned to a task with routing metadata."""
tool_slug: str
fit_reason: str
confidence: float
best_prompt: str
@dataclass
class Task:
"""A concrete task within a phase."""
id: str
description: str
outcome: str
tools: List[ToolAssignment] = field(default_factory=list)
@dataclass
class Phase:
"""A phase in the project roadmap."""
id: str
name: str
goal: str
phase_type: Literal["research", "creative", "build", "launch", "ops"]
tasks: List[Task] = field(default_factory=list)
@dataclass
class ProjectProfile:
"""Structured profile extracted from user idea."""
idea_summary: str
project_type: str
domain: str
primary_goal: str
target_user: str
constraints: List[str]
channels: List[str]
@dataclass
class Roadmap:
"""Complete project roadmap."""
project_profile: ProjectProfile
phases: List[Phase]