| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- from __future__ import annotations
- from dataclasses import dataclass, field
- @dataclass(frozen=True)
- class Subsystem:
- name: str
- path: str
- file_count: int
- notes: str
- @dataclass(frozen=True)
- class PortingModule:
- name: str
- responsibility: str
- source_hint: str
- status: str = 'planned'
- @dataclass(frozen=True)
- class PermissionDenial:
- tool_name: str
- reason: str
- @dataclass(frozen=True)
- class UsageSummary:
- input_tokens: int = 0
- output_tokens: int = 0
- def add_turn(self, prompt: str, output: str) -> 'UsageSummary':
- return UsageSummary(
- input_tokens=self.input_tokens + len(prompt.split()),
- output_tokens=self.output_tokens + len(output.split()),
- )
- @dataclass
- class PortingBacklog:
- title: str
- modules: list[PortingModule] = field(default_factory=list)
- def summary_lines(self) -> list[str]:
- return [
- f'- {module.name} [{module.status}] — {module.responsibility} (from {module.source_hint})'
- for module in self.modules
- ]
|