saravanakumardb1
da9ca9dc1a
feat(extraction-service): add Ollama local model eval config and compare script
...
- Add evals/promptfoo.ollama.yaml: same 19 cases hitting Ollama OpenAI-compat
API directly (no extraction-service needed); all assertions use inline
JSON.parse(output) to handle raw string response from Ollama
- Add evals/compare-evals.sh: runs Gemini + Ollama evals back-to-back and
prints side-by-side pass-rate comparison table
- Supports OLLAMA_MODEL env var (default: llama3.1:8b)
2026-02-19 12:19:24 -08:00
saravanakumardb1
acd4c3542b
feat(extraction-service): scaffold promptfoo eval suite with 19 test cases
...
- Add evals/promptfoo.yaml: HTTP provider hitting extraction-service API
covering all 5 built-in tasks (transcript, triage, memory-insight,
reflection-enrichment, bug-report-extraction)
- Add evals/fixtures/golden.json: machine-readable golden input/output fixtures
- Add evals/run-evals.sh: shell runner with health checks, auth token
handling, task filtering, and CI mode
- Add evals/README.md: usage docs, prerequisites, cost estimates, CI integration
2026-02-19 12:19:16 -08:00
ff4cc14a46
fix(extraction-service): run python sidecar on railway
2026-02-17 11:32:40 -08:00
saravanakumardb1
fbb2197f7c
test(platform-service): add repository tests for notifications, plans, subscriptions, usage, tokens, memory + fix extraction-service flaky test
2026-02-16 11:59:06 -08:00
saravanakumardb1
81999dcbb3
feat(services): wire AKV secret resolution in platform-service and extraction-service startup
2026-02-14 22:18:01 -08:00
607fcbf3d7
fix(docker): make pnpm deploy work under pnpm v10
2026-02-14 18:30:00 -08:00
32f8f7ccf5
chore(docker): include new workspace packages in builds
2026-02-14 16:48:09 -08:00
saravanakumardb1
5c1744d3a4
feat(extraction): Phase 6 advanced features (6.1-6.8)
...
- 6.1-6.2: Entity visualization components (bar chart, pie chart, timeline) [in LysnrAI repo]
- 6.3-6.4: Async job queue — POST /extract/jobs, GET /extract/jobs/:id, GET /extract/jobs
- 6.5-6.6: Model registry with tier (standard/premium/free/mock) + GET /extract/models
- 6.7-6.8: Multi-language detection (es/fr/de/pt/ja/zh/ko/ar) + prompt enrichment
- ExtractMetadata.language field added to Python models
- 46 TS tests passing, build clean
2026-02-14 14:08:02 -08:00
saravanakumardb1
b8c0a73e89
feat(extraction): Phase 5 observability + error handling (5.7-5.12)
...
- 5.7: Enhanced structured logging with userId, productId, cacheHit, tokenCount
- 5.8: Metrics module (counters + histograms) + /extract/metrics endpoint
- 5.9: Grafana dashboard config for extraction-service (Loki queries)
- 5.10: Error mapping — sidecar errors → proper HTTP status codes (408, 429, 502, 503)
- 5.11: Circuit breaker for Python sidecar (5 failures → 30s OPEN)
- 5.12: Graceful degradation — circuit open returns 503, cached results still served
- 46 TS tests passing
2026-02-14 14:04:59 -08:00
saravanakumardb1
9c8a3169dc
feat(extraction): Phase 5 caching + cost controls (5.1-5.6)
...
- 5.1: Python sidecar LRU cache (cache.py) with configurable TTL + max size
- 5.2: Fastify-level cache with X-Extraction-Cache HIT/MISS header + /extract/cache-stats
- 5.3-5.5: Per-user daily quota (free=10, pro=100, enterprise=unlimited) with 429 response
- 5.6: GET /extract/usage endpoint for admin usage reporting
- Both Python + TS caches use sha256(taskId:modelId:text) keys
- 46 TS tests + 29 Python tests still passing
2026-02-14 14:02:21 -08:00
saravanakumardb1
37343ae57b
feat(extraction): add Dockerfile + supervisord for extraction-service
...
- Multi-stage: Node.js build + Python sidecar + supervisord runtime
- Stage 1: pnpm workspace build for Fastify TS service
- Stage 2: pip install langextract + FastAPI deps
- Stage 3: node:22-alpine + python3 + supervisord
- supervisord manages both Fastify (4005) and uvicorn (4006)
2026-02-14 13:57:41 -08:00
saravanakumardb1
c2d626c7b5
chore(extraction): add Python .gitignore, remove cached .pyc files
2026-02-14 13:49:39 -08:00
saravanakumardb1
c9d5c0caed
feat(extraction): integration tests + Python tests + fix langextract API
...
- 6 route integration tests (mock sidecar via vitest vi.mock)
- 12 task CRUD route tests (mock repository)
- 29 Python tests: 10 extractor, 12 models, 7 app endpoints
- Fix extractor.py: correct lx.extract() API (text_or_documents positional, prompt_description)
- Mock fallback when no GEMINI_API_KEY or USE_MOCK_EXTRACTOR=true
- 46 TS tests + 29 Python tests = 75 total
2026-02-14 13:49:18 -08:00
saravanakumardb1
6a49823e1d
feat(extraction): add task seed module + 7 seed tests
...
- seed.ts: 5 built-in task definitions with idempotent upsert
- seed.test.ts: 7 tests validating task schema compliance
- 28 total tests passing
2026-02-14 13:36:46 -08:00
saravanakumardb1
0a87d1937b
feat(extraction): add rate limiting + 21 schema tests
...
- Rate limiting on extract routes (30 req/min per IP via @fastify/rate-limit)
- 13 tests for ExtractRequestSchema, BatchExtractRequestSchema, ExtractionExampleSchema
- 8 tests for ExtractionTaskSchema, CreateTaskSchema, UpdateTaskSchema
- All 21 tests passing, pnpm build clean
2026-02-14 13:34:26 -08:00
saravanakumardb1
c292bb5cc1
feat(extraction): scaffold extraction-service + @bytelyst/extraction package
...
- extraction-service: Fastify scaffold (port 4005) with extract/tasks modules
- src/lib/: config, errors, cosmos, product-config, python-bridge
- src/modules/extract/: types (Zod schemas), routes (POST /extract, batch, models)
- src/modules/tasks/: types, repository (Cosmos CRUD), routes (CRUD endpoints)
- Python sidecar: FastAPI app, LangExtract wrapper, models, task registry
- @bytelyst/extraction package: types, client factory, index exports
- Both pnpm build pass clean
2026-02-14 13:31:40 -08:00