yusyus
|
7320da6a07
|
feat(multi-llm): Phase 2 - Gemini adaptor implementation
Implement Google Gemini platform support (Issue #179, Phase 2/6)
**Features:**
- Plain markdown format (no YAML frontmatter)
- tar.gz packaging for Gemini Files API
- Upload to Google AI Studio
- Enhancement using Gemini 2.0 Flash
- API key validation (AIza prefix)
**Implementation:**
- New: src/skill_seekers/cli/adaptors/gemini.py (430 lines)
- format_skill_md(): Plain markdown (no frontmatter)
- package(): Creates .tar.gz with system_instructions.md
- upload(): Uploads to Gemini Files API
- enhance(): Uses Gemini 2.0 Flash for enhancement
- validate_api_key(): Checks Google key format (AIza)
**Tests:**
- New: tests/test_adaptors/test_gemini_adaptor.py (13 tests)
- 11 passing unit tests
- 2 skipped (integration tests requiring real API keys)
- Tests: validation, formatting, packaging, error handling
**Test Summary:**
- Total adaptor tests: 23 (21 passing, 2 skipped)
- Base adaptor: 10 tests
- Gemini adaptor: 11 tests (2 skipped)
**Next:** Phase 3 - Implement OpenAI adaptor
|
2025-12-28 20:24:48 +03:00 |
|
yusyus
|
d0bc042a43
|
feat(multi-llm): Phase 1 - Foundation adaptor architecture
Implement base adaptor pattern for multi-LLM support (Issue #179)
**Architecture:**
- Created adaptors/ package with base SkillAdaptor class
- Implemented factory pattern with get_adaptor() registry
- Refactored Claude-specific code into ClaudeAdaptor
**Changes:**
- New: src/skill_seekers/cli/adaptors/base.py (SkillAdaptor + SkillMetadata)
- New: src/skill_seekers/cli/adaptors/__init__.py (registry + factory)
- New: src/skill_seekers/cli/adaptors/claude.py (refactored upload + enhance logic)
- Modified: package_skill.py (added --target flag, uses adaptor.package())
- Modified: upload_skill.py (added --target flag, uses adaptor.upload())
- Modified: enhance_skill.py (added --target flag, uses adaptor.enhance())
**Tests:**
- New: tests/test_adaptors/test_base.py (10 tests passing)
- All existing tests still pass (backward compatible)
**Backward Compatibility:**
- Default --target=claude maintains existing behavior
- All CLI tools work exactly as before without --target flag
- No breaking changes
**Next:** Phase 2 - Implement Gemini, OpenAI, Markdown adaptors
|
2025-12-28 20:17:31 +03:00 |
|