saravanakumardb1
23d14f33ea
feat(swift-sdk): add 6 new components — BLBlobClient, BLKillSwitchClient, BLLicenseClient, BLBiometricAuth, BLCrashReporter, BLAuditLogger
...
New SDK components extracted from product apps:
- BLBlobClient — Azure Blob Storage upload via SAS tokens (from LysnrAI BlobService)
- BLKillSwitchClient — Kill switch check from platform-service (from LysnrAI KillSwitchService)
- BLLicenseClient — License key activation + status (from LysnrAI LicenseService)
- BLBiometricAuth — Face ID / Touch ID wrapper (from LysnrAI BiometricAuth)
- BLCrashReporter — MetricKit crash reporting (from ChronoMind CrashReporter)
- BLAuditLogger — Local rotating JSON audit log (from LysnrAI AuditLogger)
SDK now has 13 source files. Updated README with full component table
and migration status (3 apps fully migrated, 18 wrappers total).
2026-02-28 22:38:43 -08:00
saravanakumardb1
78000cdf6a
feat(swift-sdk): add ByteLystPlatformSDK — shared Swift package for all iOS/watchOS/macOS apps
...
Extracts duplicated platform integration code from ChronoMind + LysnrAI into a
single Swift Package. Eliminates ~1,100+ lines of copied code per product app.
Components:
- BLPlatformConfig — product-specific configuration (productId, baseURL, bundleId)
- BLPlatformClient — generic HTTP client with auth injection, x-request-id, timeout
- BLKeychain — Keychain CRUD for secure token storage
- BLTelemetryClient — telemetry queue + batch flush (matches @bytelyst/telemetry-client)
- BLAuthClient — full auth operations (matches @bytelyst/auth-client)
- BLFeatureFlagClient — feature flag polling from platform-service /flags/poll
- BLSyncEngine — generic offline-first sync with delta pull + batch push
Platforms: iOS 17+, watchOS 10+, macOS 14+
2026-02-28 22:12:20 -08:00
saravanakumardb1
4863b62055
feat(fastify-core): deny CORS by default when origin unset, add graceful shutdown handlers
2026-02-28 20:23:58 -08:00
saravanakumardb1
04f4a5f81e
feat(api-client): add timeout, retry with exponential backoff for idempotent requests
2026-02-28 20:23:49 -08:00
saravanakumardb1
7210464019
fix(tracker-web): replace broken webpack alias with transpilePackages — build now succeeds
...
fix(config): mock Azure SDK in keyvault tests — eliminates timeouts, 26/26 pass in <1s
2026-02-28 12:11:37 -08:00
saravanakumardb1
062d87a93a
test(react-auth): add tests for updateUser, onInit, and onInit-null-fallback
2026-02-28 11:48:48 -08:00
saravanakumardb1
1925370604
fix(react-auth): add updateUser to AuthContextValue + provider for local user state mutation
2026-02-28 11:38:27 -08:00
saravanakumardb1
da165a589a
refactor(dashboards): wire @bytelyst/telemetry-client into admin-web + tracker-web, add onInit + baseUrl to react-auth
2026-02-28 11:27:57 -08:00
saravanakumardb1
b400c76c0a
feat(packages): add @bytelyst/auth-client + telemetry-client, extend react-auth lifecycle
...
- @bytelyst/auth-client: browser/RN-safe auth API wrapper (17 tests)
- @bytelyst/telemetry-client: shared telemetry with configurable transport (11 tests)
- @bytelyst/react-auth: add register, forgotPw, changePw, deleteAccount, token refresh (10 tests)
- eslint.config: add missing browser globals
2026-02-28 04:49:46 -08:00
saravanakumardb1
4e94ecd721
feat(auth): add forgot-password/change-password API routes to admin dashboard + wire email delivery
...
Admin dashboard:
- platform-client.ts: Added forgotPasswordViaService, changePasswordViaService, deleteAccountViaService
- app/api/auth/forgot-password/route.ts: New API route proxying to platform-service
- app/api/auth/change-password/route.ts: New API route for authenticated password change
Platform-service (from prior session):
- auth/routes.ts: Added /auth/change-password and DELETE /auth/account endpoints, wired email verification on register
- auth/types.ts: Added ChangePasswordSchema and DeleteAccountSchema
- delivery/subscribers.ts: Updated password reset subscriber, added email verification subscriber
- delivery/channels/email.ts: Added ByteLyst email API provider (sendViaBytelyst)
- delivery/types.ts: Added 'bytelyst' provider
- events/types.ts: Added resetToken/displayName to user.password_reset, added user.email_verification_requested event
2026-02-28 04:17:04 -08:00
saravanakumardb1
772f428967
feat(platform): add P0 foundational modules — event bus, scheduled jobs, password reset, email verification, status page
2026-02-28 02:29:08 -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
2e5b4de0c4
feat(config): add Azure Key Vault secret resolution with env fallback
2026-02-14 22:15:02 -08:00
saravanakumardb1
81609e9358
fix: remove stale port references from monitoring, docs, and AI.dev skills
2026-02-14 21:48:21 -08:00
95b45a9fd3
fix(cosmos): init containers on startup for local compose
2026-02-14 20:57:17 -08:00
e9b33fb518
feat(monitoring): add @bytelyst/monitoring package
2026-02-14 15:57:41 -08:00
125eb03745
feat(blob): add @bytelyst/blob shared package
2026-02-14 15:53:33 -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
c84185da24
test(react-auth): switch vitest env to happy-dom
2026-02-14 13:15:12 -08:00
saravanakumardb1
54e062b989
chore: remove unused devDeps found by depcheck
...
- react-auth: removed @testing-library/jest-dom (not imported)
- testing: removed @bytelyst/errors, @fastify/cors (not imported)
2026-02-13 00:17:04 -08:00
saravanakumardb1
99cbdf582c
feat(auth): add middleware tests + E2E flow + migrate tracker-service to @bytelyst/auth
...
- Upgraded @bytelyst/auth middleware to throw ServiceError types (UnauthorizedError, ForbiddenError)
- Added @bytelyst/errors as dependency to auth package
- 11 new middleware tests (extractAuth + requireRole)
- 4 new E2E tests (full login → JWT → auth → role check flow)
- Refactored tracker-service lib/auth.ts from 48-line local impl to 1-line re-export
- Added @bytelyst/auth as tracker-service dependency
- All 277 tests pass, 0 regressions
2026-02-12 23:41:46 -08:00
saravanakumardb1
7ffc60c490
feat(testing): create @bytelyst/testing shared package with 10 tests
...
Exports:
- createCosmosMocks(): full Cosmos DB mock factory for vitest
- TEST_USERS, TEST_JWT_SECRET, createTestTokenPayload(): auth fixtures
- injectGet/Post/Patch/Delete(): Fastify inject wrappers
- expectHealthOk(): health endpoint assertion helper
2026-02-12 22:59:28 -08:00
saravanakumardb1
428e973548
test(react-auth): add 10 tests with jsdom + React Testing Library
...
Tests: createAuthProvider factory, AuthProvider rendering, login/logout
flows, localStorage persistence, onLoginFallback, useAuth outside provider,
custom storage prefix.
2026-02-12 22:55:44 -08:00
saravanakumardb1
63c08dbb0a
refactor(services): integrate @bytelyst/fastify-core into all 4 services
...
Replaced duplicated server setup code with createServiceApp() factory:
- platform-service: 91 → 39 lines
- billing-service: 105 → 51 lines (keeps service-specific internal key auth)
- growth-service: 83 → 33 lines
- tracker-service: 88 → 36 lines
Enhanced fastify-core with optional Swagger + Prometheus metrics support.
Total reduction: ~208 lines of duplicated boilerplate eliminated.
All 246 tests pass.
2026-02-12 22:53:22 -08:00
saravanakumardb1
11e79aa4f9
feat(react-auth): add onLoginFallback to createAuthProvider config
...
Allows dashboards to provide fallback login logic (e.g. mock credentials)
when the API is unavailable. Used by admin-dashboard-web.
2026-02-12 22:21:25 -08:00
saravanakumardb1
832eccafed
feat: add package tests (58 new) + @bytelyst/fastify-core package
...
Package tests added:
- @bytelyst/cosmos: 12 tests (client singleton, env vars, container registry)
- @bytelyst/config: 15 tests (base schema, loadConfig, product identity)
- @bytelyst/auth: 10 tests (JWT round-trip, password hash/verify)
- @bytelyst/api-client: 10 tests (fetch, safeFetch, auth injection)
- @bytelyst/design-tokens: 11 tests (loadTokens, generated file checks)
New package:
- @bytelyst/fastify-core: 8 tests (createServiceApp factory with CORS,
x-request-id, health endpoint, ServiceError handler)
Total: 246 tests passing (was 180)
2026-02-12 22:17:17 -08:00
saravanakumardb1
90b9cf93d8
fix(common): configure ESLint 9 and fix lint issues
...
- Added @eslint/js dependency
- Updated eslint.config.js for ESLint 9 compatibility
- Added required globals (crypto, localStorage, React, etc.)
- Fixed unused imports and variables
- Disabled sort-imports temporarily
- Formatted all files with Prettier
2026-02-12 16:37:30 -08:00
saravanakumardb1
fbcb39d52c
feat(logger): add @bytelyst/logger shared package
...
createLogger(config) factory for structured logging across dashboards and services.
- Dev: pretty-prints to stderr/stdout
- Prod: JSON structured output for log ingestion (Loki, Datadog, etc.)
- Exports: createLogger, Logger, LoggerConfig, LogLevel, LogPayload
2026-02-12 15:35:27 -08:00
saravanakumardb1
09c767295a
feat(design-tokens): generate platform token files (CSS, TS, Kotlin, Swift)
...
Updated generator to match existing MindLyst conventions:
- Kotlin: SCREAMING_SNAKE_CASE, Palette/Dark/Light/BrainGradient/Typography/Motion/Layout
- Swift: Color(hex: UInt), dark/light prefixes, Gradient(colors:), MindLystMotion, Color ext
- CSS: [data-theme] selectors, --ml-fs-*, --ml-elevation-*, --ml-motion-*, light theme
Generated 4 files:
- generated/tokens.css — CSS custom properties (dark + light themes)
- generated/tokens.ts — Full token tree as const
- generated/MindLystTokens.kt — KMP shared module (drop-in for existing)
- generated/MindLystTheme.swift — SwiftUI structs (drop-in for existing)
2026-02-12 12:15:07 -08:00
saravanakumardb1
b80d249c78
feat(design-tokens): add @bytelyst/design-tokens package
...
- Canonical bytelyst.tokens.json with colors, typography, spacing, radius, elevation, motion, breakpoints
- loadTokens() for programmatic access
- generate.ts script outputs 4 platform formats:
- tokens.css (CSS custom properties with --ml-* prefix)
- tokens.ts (TypeScript constants)
- MindLystTokens.kt (Kotlin object for KMP shared module)
- MindLystTheme.swift (Swift structs for SwiftUI)
- Shared across LysnrAI dashboards and MindLyst native apps
2026-02-12 11:22:52 -08:00
saravanakumardb1
cf8781cc11
feat(react-auth): add @bytelyst/react-auth package
...
- createAuthProvider<TUser>() factory returns typed AuthProvider + useAuth hook
- Configurable storagePrefix, loginEndpoint, mapLoginResponse, onLogout
- localStorage persistence for user, access token, refresh token
- Uses @bytelyst/api-client for login requests
- Replaces 3 duplicated auth-context.tsx files across LysnrAI dashboards
- Peer dep: react >=18.0.0, workspace dep: @bytelyst/api-client
2026-02-12 11:22:41 -08:00
saravanakumardb1
01624a2231
feat(api-client): add @bytelyst/api-client package
...
- createApiClient() factory with baseUrl, getToken, defaultHeaders
- fetch() method that throws on error
- safeFetch() method that returns { data, error } tuple (never throws)
- Auto-injects Authorization header from getToken callback
- Replaces duplicated apiFetch patterns in 3 dashboards
2026-02-12 11:20:04 -08:00
saravanakumardb1
602fa50216
feat(auth): add @bytelyst/auth package
...
- createJwtUtils() factory with configurable issuer and expiry (jose)
- extractAuth() middleware for Fastify request auth extraction
- requireRole() guard with multi-role support
- hashPassword() / verifyPassword() via bcryptjs
- getCurrentUser() helper for Next.js API routes (generic TUser)
- AuthPayload, TokenPayload, JwtUtils types
- NO dependency on @bytelyst/config (reads JWT_SECRET from process.env directly)
- Peer deps: jose >=5.0.0, bcryptjs >=2.4.0
2026-02-12 11:19:58 -08:00
saravanakumardb1
65bf79203b
feat(config): add @bytelyst/config package
...
- Zod-based baseEnvSchema (PORT, HOST, NODE_ENV, CORS_ORIGIN, SERVICE_NAME, COSMOS_*)
- loadConfig() with extension support for service-specific fields
- loadProductIdentity() reads product.json or falls back to env vars
- getProductId() convenience function
- Replaces 5 duplicated product-config.ts files across LysnrAI
- Peer dep: zod >=3.20.0
2026-02-12 11:19:49 -08:00
saravanakumardb1
2e9dcf49a8
feat(cosmos): add @bytelyst/cosmos package
...
- Singleton CosmosClient with env var config (COSMOS_ENDPOINT, COSMOS_KEY, COSMOS_DATABASE)
- Simple getContainer() for services
- Container registry with registerContainers(), getRegisteredContainer(), initializeAllContainers() for dashboards
- ContainerConfig type with partitionKeyPath and optional defaultTtl
- _resetClient() and _resetRegistry() for test isolation
- Peer dep: @azure/cosmos >=4.0.0
2026-02-12 11:19:42 -08:00
saravanakumardb1
9c0ab36171
feat(errors): add @bytelyst/errors package
...
- ServiceError base class with statusCode, message, details
- HTTP errors: BadRequest, Unauthorized, Forbidden, NotFound, Conflict, TooManyRequests
- 10 tests passing (vitest)
- Superset of all 4 service error files in LysnrAI
2026-02-12 11:19:35 -08:00