saravanakumardb1
229ce4f00f
feat(backend): wire Ollama LLM for context messages (TODO-005)
...
Dual-path LLM enrichment for AI context prep messages:
1. extraction-service (if EXTRACTION_SERVICE_URL set)
2. Ollama direct (if OLLAMA_URL set) — non-streaming /api/generate
3. Keyword rules fallback
4. Generic fallback
New env vars: OLLAMA_URL, OLLAMA_MODEL (default: gemma3:4b)
Both LLM paths use 5s timeout and null-return-on-error pattern.
Feature-gated behind ai_context_messages.enabled flag.
2026-04-13 17:00:24 -07:00
saravanakumardb1
c80c1e4462
feat(ai-context): Phase A.4 — context-aware AI messages with LLM fallback
...
Add AI-enriched context message generation:
- backend/src/lib/ai-context.ts: LLM-powered context generator with keyword fallback
- Calls extraction-service timer-context task when EXTRACTION_SERVICE_URL is set
- Falls back to keyword rules, then generic message
- Gated behind isFeatureEnabled('ai_context_messages.enabled')
- backend/src/lib/config.ts: Add EXTRACTION_SERVICE_URL env var
- backend/src/server.ts: POST /api/context-message route
- web/src/lib/context-messages.ts: fetchEnrichedMessage() with graceful degradation
- Updated AGENTIC_AI_ROADMAP.md checkboxes for Phase A.1 + A.2
All 219 backend tests + 394 web tests pass. No breaking changes.
2026-03-31 23:46:00 -07:00
saravanakumardb1
8c90d863a8
feat(backend): admin-panel encryption toggle via initEncryption()
...
- FIELD_ENCRYPT_ENABLED env var (default: true, fallback only)
- initEncryption(productId) polls encryption_enabled from platform-service
- Admin panel toggle takes precedence, 3s timeout graceful fallback
2026-03-21 15:24:58 -07:00
saravanakumardb1
253a9db0ea
feat(backend): encrypt sensitive fields across all modules
...
- timers: description
- routines: description, steps[].notes
- shared-timers: description
- webhooks: secret, description
- Add @bytelyst/field-encrypt dep + chronomind-mek config
- field-encrypt singleton (getEncryptor lazy pattern)
- Encrypt on create/update/batchUpsert, decrypt on read/list/since
- Backward-compatible via isEncryptedField guard
- 182/182 tests passing, typecheck clean
2026-03-21 12:11:39 -07:00
saravanakumardb1
bc735dfdb9
feat(backend): add @bytelyst/backend-flags + backend-telemetry, fix config defaults
...
- Add @bytelyst/backend-flags and @bytelyst/backend-telemetry packages
- Create feature-flags.ts and telemetry.ts wrappers using shared packages
- Add TELEMETRY_ENABLED and FEATURE_FLAGS_ENABLED config fields
- Default DB_PROVIDER to memory (fixes test failures without env vars)
- Add JWT_SECRET dev default and PLATFORM_SERVICE_URL
- 176/176 tests pass
2026-03-20 17:31:01 -07:00
saravanakumardb1
ea508b1fdc
fix(backend): make COSMOS_ENDPOINT/KEY validation conditional on DB_PROVIDER
...
- Only require Cosmos credentials when DB_PROVIDER=cosmos
- Standardize to .refine() pattern matching all other repos
2026-03-20 08:26:07 -07:00
saravanakumardb1
0bda7dd9dc
refactor(backend): migrate config.ts to @bytelyst/backend-config base schema
...
- Extends baseBackendConfigSchema with product-specific overrides
- DB_PROVIDER now declared in all repos (was missing in 3)
2026-03-20 07:56:29 -07:00
saravanakumardb1
3d2ce9325f
feat(auth): RS256 JWKS verification — ChronoMind backend
2026-03-12 11:15:03 -07:00
saravanakumardb1
f10b83c122
feat(backend): scaffold product-specific Fastify backend (port 4011)
...
Add backend/ directory with Fastify 5 + TypeScript ESM service:
- Modules: timers, routines, households, shared-timers, webhooks (migrated from platform-service)
- Cosmos containers: timers, routines, households, shared_timers, webhook_subscriptions, webhook_events
- JWT verification via jose (matches platform-service issuer)
- Shared @bytelyst/* packages via file: refs
- 171 Vitest tests passing
Update AGENTS.md: update backend integration section with product backend details
2026-03-01 20:39:08 -08:00