switchforge 2.0.0__tar.gz → 2.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. {switchforge-2.0.0 → switchforge-2.0.1}/PKG-INFO +1 -1
  2. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/auth.py +2 -1
  3. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/cli.py +2 -1
  4. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/models/config.py +1 -1
  5. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/utils/reporter.py +4 -2
  6. {switchforge-2.0.0 → switchforge-2.0.1}/pyproject.toml +1 -1
  7. {switchforge-2.0.0 → switchforge-2.0.1}/.gitignore +0 -0
  8. {switchforge-2.0.0 → switchforge-2.0.1}/README.md +0 -0
  9. {switchforge-2.0.0 → switchforge-2.0.1}/forge-core.spec +0 -0
  10. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/__init__.py +0 -0
  11. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/__main__.py +0 -0
  12. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/ai/__init__.py +0 -0
  13. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/ai/prompts.py +0 -0
  14. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/ai/provider.py +0 -0
  15. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/ai/structured.py +0 -0
  16. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/config.py +0 -0
  17. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/core/__init__.py +0 -0
  18. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/core/agent_manager.py +0 -0
  19. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/core/coverage.py +0 -0
  20. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/core/file_manager.py +0 -0
  21. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/models/__init__.py +0 -0
  22. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/models/dto.py +0 -0
  23. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/models/project.py +0 -0
  24. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/models/test_result.py +0 -0
  25. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/orchestrator.py +0 -0
  26. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/phases/__init__.py +0 -0
  27. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/phases/analyze_project.py +0 -0
  28. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/phases/audit_tests.py +0 -0
  29. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/phases/compile_fix.py +0 -0
  30. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/phases/coverage_report.py +0 -0
  31. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/phases/detect_stack.py +0 -0
  32. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/phases/exclusion_scan.py +0 -0
  33. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/phases/fix_broken.py +0 -0
  34. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/phases/generate_tests.py +0 -0
  35. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/phases/journey_mapping.py +0 -0
  36. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/phases/self_learn.py +0 -0
  37. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/utils/__init__.py +0 -0
  38. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/utils/logger.py +0 -0
  39. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/utils/shell.py +0 -0
  40. {switchforge-2.0.0 → switchforge-2.0.1}/forge_core/utils/tokens.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: switchforge
3
- Version: 2.0.0
3
+ Version: 2.0.1
4
4
  Summary: AI-powered backend test generation engine
5
5
  Project-URL: Homepage, https://theswitchcompany.online/products/forge/core
6
6
  Project-URL: Repository, https://github.com/switchcompany/forge-core
@@ -24,7 +24,8 @@ def verify_license(config: ForgeConfig) -> ForgeConfig:
24
24
  logger.info("Verifying license with SaaS API...")
25
25
  try:
26
26
  license_info = asyncio.run(check_license(config))
27
- except Exception:
27
+ except Exception as e:
28
+ logger.warn(f"License check failed: {e}")
28
29
  license_info = {}
29
30
 
30
31
  if not license_info:
@@ -105,7 +105,8 @@ def run(
105
105
 
106
106
  # Upload report to SaaS (if authenticated)
107
107
  if config.auth_token:
108
- asyncio.run(upload_report(config, report.model_dump()))
108
+ import dataclasses
109
+ asyncio.run(upload_report(config, dataclasses.asdict(report)))
109
110
 
110
111
  # Exit with appropriate code
111
112
  if report.production_files_changed > 0:
@@ -114,5 +114,5 @@ class ForgeConfig:
114
114
  prompts_dir: str = ".github/prompts"
115
115
 
116
116
  # SaaS
117
- saas_api_url: str = "https://api.theswitchcompany.online"
117
+ saas_api_url: str = "https://theswitchcompany.online"
118
118
  auth_token: str = ""
@@ -64,7 +64,9 @@ async def check_license(config: ForgeConfig) -> dict[str, Any]:
64
64
  resp = await client.get(url, headers=headers)
65
65
  if resp.status_code == 200:
66
66
  return resp.json()
67
- except Exception:
68
- pass
67
+ else:
68
+ logger.warn(f"License API returned {resp.status_code}: {resp.text[:200]}")
69
+ except Exception as e:
70
+ logger.warn(f"License API unreachable: {e}")
69
71
 
70
72
  return {}
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "switchforge"
7
- version = "2.0.0"
7
+ version = "2.0.1"
8
8
  description = "AI-powered backend test generation engine"
9
9
  readme = "README.md"
10
10
  license = "MIT"
File without changes
File without changes
File without changes