saravanakumardb1
38dbed80ef
chore(backend): add eslint config and lint script
2026-03-26 22:59:50 -07:00
saravanakumardb1
5c67bed5a6
fix(docker): remove hardcoded corporate proxy and jfrog registry from Dockerfiles
2026-03-24 11:12:38 -07:00
saravanakumardb1
bfbca2b820
feat(docker): migrate to Gitea registry-backed Docker pattern
...
- Convert all @bytelyst/* file: refs to semver ^0.1.0
- Remove sibling common-plat workspace references
- Add .npmrc and .npmrc.docker for local Gitea registry
- Rewrite Dockerfiles: pnpm + BuildKit secret mount
- Verified: pnpm install + backend typecheck pass
2026-03-23 20:57:37 -07:00
saravanakumardb1
582936ad65
feat(repo): migrate chronomind workspace to pnpm
...
- Add pnpm-workspace.yaml (backend + web + common-plat packages)
- Add root package.json with workspace scripts and pnpm config
- Add packageManager: pnpm@10.6.5 to backend/web manifests
- Remove package-lock.json files, generate pnpm-lock.yaml
- Add root .gitignore (was missing)
- Update CI to use pnpm workspace commands
- Add transpilePackages + webpack symlinks to next.config.ts
- Update docker-prep.sh for backend + web consumers
- Rewrite backend/web Dockerfiles to .docker-deps consumer pattern
- Add .dockerignore
Verified: typecheck + 576 tests (182 backend + 394 web) + builds pass
Docker: backend + web smoke builds pass
2026-03-22 19:11:01 -07:00
saravanakumardb1
cb684fa086
chore(docker): add backend + web Dockerfiles, add standalone output to next.config.ts
2026-03-22 00:20:20 -07:00
saravanakumardb1
f6c85ede9e
fix: align Fastify to 5.7.4 + add web product-config.ts
2026-03-21 20:31:26 -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
f7356706cd
feat(backend): add GET /api/bootstrap route + test
...
- Returns productId, displayName, backendPort for client bootstrapping
- Integration test validates response shape and types
2026-03-20 21:15:40 -07:00
saravanakumardb1
fd4d35b308
feat(backend): add GET /health test to diagnostics suite
...
- Validates standard health response shape: status, service, version, timestamp
- Ensures consistent health endpoint contract across ecosystem
2026-03-20 21:06:56 -07:00
saravanakumardb1
62f94be845
feat(backend): add GET /api/diagnostics/config route + test
...
- Returns sanitized config: productId, serviceName, port, nodeEnv, dbProvider, telemetryEnabled, featureFlagsEnabled
- Integration test validates response shape
2026-03-20 19:36:04 -07:00
saravanakumardb1
95c2f9426a
test(backend): add diagnostics route integration tests
...
- 3 tests: GET /diagnostics/flags, GET /diagnostics/telemetry, POST /diagnostics/telemetry/flush
- All tests pass
2026-03-20 19:28:09 -07:00
saravanakumardb1
d1f2587cc3
feat(backend): add /diagnostics/flags + /diagnostics/telemetry routes
...
- GET /api/diagnostics/flags — returns all feature flags
- GET /api/diagnostics/telemetry — returns buffered telemetry events
- POST /api/diagnostics/telemetry/flush — flush telemetry buffer
- No auth required (diagnostics endpoints)
2026-03-20 19:12:27 -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
6acc97bf8a
fix(backend): use config.DB_PROVIDER instead of process.env.DB_PROVIDER in datastore.ts
...
- Reads validated DB_PROVIDER from Zod config instead of raw env
- Removes stale isTest fallback logic (now handled by config defaults)
2026-03-20 08:29:36 -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
a7b0ae9cdc
refactor(backend): migrate auth.ts + request-context.ts to @bytelyst/fastify-auth
...
- auth.ts: 80→18 lines, delegates to createAuthMiddleware()
- request-context.ts: delegates to createRequestContext()
- Re-exports JwtPayload, AuthPayload from shared package
2026-03-20 07:45:58 -07:00
saravanakumardb1
30872465d3
refactor(backend): load product identity from shared/product.json
2026-03-20 07:23:31 -07:00
saravanakumardb1
b4a6c62e15
refactor(backend): remove errors.ts re-export, import @bytelyst/errors directly
2026-03-20 07:19:29 -07:00
saravanakumardb1
82e7a9c367
fix(auth): JWKS URL-tracking singleton + expanded test coverage
2026-03-12 11:22:03 -07:00
saravanakumardb1
3d2ce9325f
feat(auth): RS256 JWKS verification — ChronoMind backend
2026-03-12 11:15:03 -07:00
saravanakumardb1
8cc21d8586
refactor(backend): use shared optional jwt context
2026-03-06 13:38:18 -08:00
saravanakumardb1
909daf8853
fix(diagnostics): getAuthToken throws when no token (type-safe), void .start(), unsyncedCount replaces conflictCount
2026-03-05 11:18:27 -08:00
saravanakumardb1
4a3ac76ff7
feat(mcp): add GET /timers/sync-status endpoint (chronomind.syncStatus MCP tool)
2026-03-05 11:04:44 -08:00
saravanakumardb1
35756f95c0
chore(backend): remove orphaned cosmos.ts — all repos now use datastore.ts
2026-03-02 01:49:24 -08:00
saravanakumardb1
4cb5d3e627
fix(backend): replace $contains with post-filter for webhook events array query
...
$contains generates CONTAINS() SQL in Cosmos (string match), not
ARRAY_CONTAINS() needed for string[] fields. Use findMany + in-memory
post-filter for correct behavior across both providers.
2026-03-02 01:49:18 -08:00
saravanakumardb1
8731cf38fd
fix(backend): add NODE_ENV=test auto-selection and sync setProvider with global singleton
2026-03-02 01:49:11 -08:00
saravanakumardb1
03d4b7def9
refactor(backend): migrate ChronoMind repositories to @bytelyst/datastore
2026-03-02 01:45:16 -08:00
saravanakumardb1
8cd0ea7fa7
fix(backend): use config.JWT_SECRET instead of direct process.env read
2026-03-01 21:21:12 -08: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