Generate next version number for a component Args: component_type: Type of component (tool, environment, agent) name: Component name version_type: Type of version increment ("major", "minor", "patch") Returns: Next
(self, component_type: str, name: str,
version_type: str = "patch")
| 137 | return version_history.current_version |
| 138 | |
| 139 | async def generate_next_version(self, component_type: str, name: str, |
| 140 | version_type: str = "patch") -> str: |
| 141 | """Generate next version number for a component |
| 142 | |
| 143 | Args: |
| 144 | component_type: Type of component (tool, environment, agent) |
| 145 | name: Component name |
| 146 | version_type: Type of version increment ("major", "minor", "patch") |
| 147 | |
| 148 | Returns: |
| 149 | Next version string (e.g., "1.0.1", "1.1.0", "2.0.0") |
| 150 | """ |
| 151 | current_version = await self.get_current_version(component_type, name) |
| 152 | |
| 153 | if current_version is None: |
| 154 | # First version |
| 155 | return "1.0.0" |
| 156 | |
| 157 | try: |
| 158 | # Parse current version (e.g., "1.2.3") |
| 159 | version_parts = current_version.split(".") |
| 160 | if len(version_parts) >= 3: |
| 161 | major = int(version_parts[0]) |
| 162 | minor = int(version_parts[1]) |
| 163 | patch = int(version_parts[2]) |
| 164 | elif len(version_parts) == 2: |
| 165 | major = int(version_parts[0]) |
| 166 | minor = int(version_parts[1]) |
| 167 | patch = 0 |
| 168 | elif len(version_parts) == 1: |
| 169 | major = int(version_parts[0]) |
| 170 | minor = 0 |
| 171 | patch = 0 |
| 172 | else: |
| 173 | # Invalid version format, start fresh |
| 174 | return "1.0.0" |
| 175 | |
| 176 | # Increment based on version_type |
| 177 | if version_type == "major": |
| 178 | major += 1 |
| 179 | minor = 0 |
| 180 | patch = 0 |
| 181 | elif version_type == "minor": |
| 182 | minor += 1 |
| 183 | patch = 0 |
| 184 | else: # patch (default) |
| 185 | patch += 1 |
| 186 | |
| 187 | return f"{major}.{minor}.{patch}" |
| 188 | |
| 189 | except (ValueError, IndexError): |
| 190 | # If version parsing fails, start fresh |
| 191 | logger.warning(f"| ⚠️ Failed to parse version {current_version} for {component_type}/{name}, starting fresh") |
| 192 | return "1.0.0" |
| 193 | |
| 194 | async def get_version(self, |
| 195 | component_type: str, |