Commit Graph

10 Commits

Author SHA1 Message Date
yusyus
b0fd1d7ee0 fix: Add tests for 6 RAG adaptors and CLI integration for 4 features
Critical Fixes (P0):
- Add 66 new tests for langchain, llama_index, weaviate, chroma, faiss, qdrant adaptors
- Add CLI integration for streaming_ingest, incremental_updater, multilang_support, quality_metrics
- Add 'haystack' to package target choices
- Add 4 entry points to pyproject.toml

Test Coverage:
- Before: 108 tests, 14% adaptor coverage (1/7 tested)
- After: 174 tests, 100% adaptor coverage (7/7 tested)
- All 159 adaptor tests passing (11 tests per adaptor)

CLI Integration:
- skill-seekers stream - Stream large files chunk-by-chunk
- skill-seekers update - Incremental documentation updates
- skill-seekers multilang - Multi-language documentation support
- skill-seekers quality - Quality scoring for SKILL.md
- skill-seekers package --target haystack - Now selectable

Fixes QA Issues:
- Honors 'never skip tests' requirement (100% adaptor coverage)
- All features now accessible via CLI
- No more dead code - all 4 features usable

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-07 22:01:43 +03:00
yusyus
1c888e7817 feat: Add Haystack RAG framework adaptor (Task 2.2)
Implements complete Haystack 2.x integration for RAG pipelines:

**Haystack Adaptor (src/skill_seekers/cli/adaptors/haystack.py):**
- Document format: {content: str, meta: dict}
- JSON packaging for Haystack pipelines
- Compatible with InMemoryDocumentStore, BM25Retriever
- Registered in adaptor factory as 'haystack'

**Example Pipeline (examples/haystack-pipeline/):**
- README.md with comprehensive guide and troubleshooting
- quickstart.py demonstrating BM25 retrieval
- requirements.txt (haystack-ai>=2.0.0)
- Shows document loading, indexing, and querying

**Tests (tests/test_adaptors/test_haystack_adaptor.py):**
- 11 tests covering all adaptor functionality
- Format validation, packaging, upload messages
- Edge cases: empty dirs, references-only skills
- All 93 adaptor tests passing (100% suite pass rate)

**Features:**
- No upload endpoint (local use only like LangChain/LlamaIndex)
- No AI enhancement (enhance before packaging)
- Same packaging pattern as other RAG frameworks
- InMemoryDocumentStore + BM25Retriever example

Test: pytest tests/test_adaptors/test_haystack_adaptor.py -v
2026-02-07 21:01:49 +03:00
Pablo Estevez
c33c6f9073 change max lenght 2026-01-17 17:48:15 +00:00
Pablo Estevez
5ed767ff9a run ruff 2026-01-17 17:29:21 +00:00
yusyus
3fc1897340 test: Update version assertions to 2.5.0
Updated test expectations from old versions to 2.5.0:
- tests/test_package_structure.py: 4 assertions (cli, mcp, mcp.tools, root)
- tests/test_cli_paths.py: CLI version output
- tests/test_adaptors/test_base.py: Metadata test data

All tests now expect 2.5.0 instead of 2.0.0/2.4.0.
2025-12-28 22:29:44 +03:00
yusyus
d587240e7b test: Add comprehensive E2E and unit tests for multi-LLM adaptors
Add 37 new tests (all passing):

**E2E Tests (18 tests):**
- test_adaptors_e2e.py - Complete workflow testing
- Test all platforms package from same skill
- Verify package structure for each platform
- Test filename conventions and formats
- Validate metadata consistency
- Test API key validation
- Test error handling (invalid files, missing deps)

**Claude Adaptor Tests (19 tests):**
- test_claude_adaptor.py - Comprehensive Claude adaptor coverage
- Platform info and API key validation
- SKILL.md formatting with YAML frontmatter
- Package creation and structure
- Upload success/failure scenarios
- Custom output paths
- Edge cases (special characters, minimal metadata)
- Network error handling

**Test Results:**
- 694 total tests passing (was 657, +37 new)
- 82 adaptor tests (77 passing, 5 skipped integration)
- 18 E2E workflow tests (all passing)
- 157 tests skipped (unchanged)
- No failures

**Coverage Improvements:**
- Complete workflow validation for all platforms
- Package format verification (ZIP vs tar.gz)
- Metadata consistency checks
- Error path coverage
- API key validation edge cases

All tests run without real API keys (mocked).

Related to #179
2025-12-28 20:47:00 +03:00
yusyus
1a2f268316 feat: Phase 4 - Implement MarkdownAdaptor for generic export
- Add MarkdownAdaptor for universal markdown export
- Pure markdown format (no platform-specific features)
- ZIP packaging with README.md, references/, DOCUMENTATION.md
- No upload capability (manual use only)
- No AI enhancement support
- Combines all references into single DOCUMENTATION.md
- Add 12 unit tests (all passing)

Test Results:
- 12 MarkdownAdaptor tests passing
- 45 total adaptor tests passing (4 skipped)

Phase 4 Complete 

Related to #179
2025-12-28 20:34:21 +03:00
yusyus
9032232ac7 feat(multi-llm): Phase 3 - OpenAI adaptor implementation
Implement OpenAI ChatGPT platform support (Issue #179, Phase 3/6)

**Features:**
- Assistant instructions format (plain text, no frontmatter)
- ZIP packaging for Assistants API
- Upload creates Assistant + Vector Store with file_search
- Enhancement using GPT-4o
- API key validation (sk- prefix)

**Implementation:**
- New: src/skill_seekers/cli/adaptors/openai.py (520 lines)
  - format_skill_md(): Assistant instructions format
  - package(): Creates .zip with assistant_instructions.txt + vector_store_files/
  - upload(): Creates Assistant with Vector Store via Assistants API
  - enhance(): Uses GPT-4o for enhancement
  - validate_api_key(): Checks OpenAI key format (sk-)

**Tests:**
- New: tests/test_adaptors/test_openai_adaptor.py (14 tests)
  - 12 passing unit tests
  - 2 skipped (integration tests requiring real API keys)
  - Tests: validation, formatting, packaging, vector store structure

**Test Summary:**
- Total adaptor tests: 37 (33 passing, 4 skipped)
- Base: 10 tests
- Claude: (integrated in base)
- Gemini: 11 tests (2 skipped)
- OpenAI: 12 tests (2 skipped)

**Next:** Phase 4 - Implement Markdown adaptor (generic export)
2025-12-28 20:29:54 +03:00
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