saravanakumardb1
d1d01727e4
fix(platform): register ai-diagnostics routes + wire 6 hidden sidebar pages
...
Phase 0 from DASHBOARD_UI_COVERAGE_ROADMAP:
- Register ai-diagnostics routes in server.ts (671-line module was never mounted)
- Add 6 hidden pages to admin sidebar-nav.tsx:
Debug Sessions, Health Dashboard, Extraction, Experiments,
Predictive, AI Diagnostics
- /users was already in sidebar (no change needed)
- Kill switch verified: already per-product via productId query param
- Admin sidebar now has 33 items (was 27)
2026-03-21 17:40:35 -07:00
saravanakumardb1
267f8af3a4
test(ai-diagnostics): add 94 tests for error-normalization, clustering, query-parser
2026-03-21 17:06:24 -07:00
saravanakumardb1
2c6397272f
fix(test): add env defaults to platform-service vitest config
...
Aligns service-local vitest.config.ts with root config so tests pass
both via 'pnpm test' (uses service config) and 'npx vitest run' (uses root).
Fixes telemetry.test.ts which fails because its import chain eagerly
loads config.ts → envSchema.parse() requiring COSMOS_ENDPOINT/KEY/JWT_SECRET.
Added: RATE_LIMIT_STORE_MODE=memory, COSMOS_ENDPOINT, COSMOS_KEY, JWT_SECRET
(all test-safe placeholders, never used at runtime with DB_PROVIDER=memory)
2026-03-21 15:32:14 -07:00
saravanakumardb1
7613d6890f
feat(field-encrypt): admin-panel encryption toggle via feature flags
...
- FieldEncryptorConfig.enabled: false returns NullFieldEncryptor (no-op)
- NullFieldEncryptor stores plaintext as-is, decrypt returns ct directly
- 7 new tests for toggle behavior (50/50 total)
- encryption_enabled added to COMMON_FLAGS (seeded for all 10 products)
2026-03-21 15:24:19 -07:00
saravanakumardb1
4a47db72ae
fix(flags): SSE stream endpoint + client — pass productId via query string
...
EventSource API cannot set custom headers, so the SSE /flags/stream
endpoint and feature-flag-client were broken for streaming mode:
- Server: accept productId and token from query string as fallback
when x-product-id / authorization headers are absent
- Client: pass productId (and optional auth token) as query params
when constructing the EventSource URL
2026-03-21 12:12:14 -07:00
saravanakumardb1
1e1ee969dc
feat(flags): add seed flags for 6 missing products + 6 new evaluator edge-case tests
...
- seed.ts: add default flags for jarvisjr (3), peakpulse (3), flowmonk (2), notelett (2), actiontrail (2), localmemgpt (2)
Previously only chronomind, nomgap, mindlyst, smartauth, lysnrai had seed flags — common flags (maintenance_mode, telemetry_enabled) were not seeded for newer products
- flags.test.ts: 63 → 69 tests (+6):
- anonymous user with partial percentage returns off
- partial rule rollout (0%) skips even matching users
- neq operator (not equal)
- contains operator
- gte + lt numeric range on custom attributes
- missing context attribute returns off
2026-03-21 11:52:08 -07:00
saravanakumardb1
dd113b96c9
fix(flags): critical partition key bug + audit snapshot integrity + anonymous rollout
...
- repository.ts: update() and remove() now require productId as partition key
(was passing 'id' as both params — works with memory provider but fails on Cosmos DB)
- repository.ts: updateSegment() and removeSegment() also fixed
- routes.ts: all repo.update/remove calls updated to pass productId
- routes.ts: audit 'before' snapshots now use JSON deep copy instead of shallow spread
(prevents nested object mutation from corrupting audit trail)
- routes.ts: kill switch audit now uses repo.update() return value for 'after' snapshot
- evaluator.ts: anonymous users (no userId) with partial percentage (0 < pct < 100)
now correctly return 'off' instead of falling through to default variation
(can't deterministically hash without a userId)
2026-03-21 11:50:08 -07:00
saravanakumardb1
ca6a4d41d8
feat(flags): production-grade feature flag system — multi-variate, segments, audit, SSE, scheduling, prerequisites
...
- types.ts: multi-variate flags (boolean/string/number/JSON), targeting rules with 18 operators, scheduling (enableAt/disableAt/gradual rollout), prerequisites, segments, audit log, evaluation context
- evaluator.ts: pure evaluation engine — schedule checking, prerequisite dependencies (circular detection), individual targeting, targeting rules (AND clauses), segment matching, percentage rollout (FNV-1a), OS version/platform/region filtering
- repository.ts: 3 collections — feature_flags, flag_segments, flag_audit_log
- routes.ts: 18 endpoints — flag CRUD, toggle, archive, kill switch (with tag filter), segment CRUD, audit log, POST /flags/evaluate (multi-variate), SSE /flags/stream, legacy /flags/poll backward-compat
- seed.ts: updated to produce full FeatureFlagDoc with variations, version
- flags.test.ts: 63 tests — schema validation, evaluator engine, targeting rules, segments, prerequisites, scheduling, gradual rollouts, multi-variate, version comparison, deterministic hashing
- @bytelyst/events: added flag.created, flag.updated, flag.deleted, flag.kill_switch event types
- @bytelyst/feature-flag-client: multi-variate support (getValue, getEvaluation, getAllEvaluations), SSE streaming mode, onChange listeners, auth token injection
- event-dispatcher.ts + webhooks/types.ts: wired new flag events
2026-03-21 11:44:49 -07:00
saravanakumardb1
26283b402a
test(platform-service): cover ai diagnostics routes
2026-03-21 10:45:41 -07:00
saravanakumardb1
10c288857d
fix(support-cases): prevent auto-triage from regressing case status
...
- Auto-triage previously always set status to 'triaged', even for cases
already in in_progress, escalated, or other later states
- Now only transitions to 'triaged' if case is still in 'open' state
- Cases in later states keep their current status (only priority + tags update)
- Added regression test for in_progress case
- 10 support-cases tests passing
2026-03-20 06:25:43 -07:00
saravanakumardb1
78cb958a6d
fix(ai-budgets): tighten rollover period filter to exclude stale entries
...
- Previous filter only checked e.recordedAt < currentPeriodStart
- Now also checks e.recordedAt >= prevPeriodStart (lower bound)
- Prevents entries from periods before the previous one from inflating
the spent amount, which would reduce the rollover incorrectly
- 12 ai-budgets tests passing
2026-03-20 06:24:13 -07:00
saravanakumardb1
f3a4d915f5
fix(support-cases): prevent crash when auto-triage encounters undefined tags
...
- supportCase.tags is optional in SupportCaseDoc schema
- Spreading undefined throws TypeError at runtime
- Fixed both [...supportCase.tags] and .includes() call with ?? [] fallback
- Added regression test for undefined tags case
- 9 support-cases tests passing
2026-03-20 06:23:34 -07:00
saravanakumardb1
0bbae1f14e
feat(platform): Phase 6 — Support Case Management
...
- Case timeline: GET /support/cases/:id/timeline
- Merges case creation, notes, escalations chronologically
- SLA engine: GET /support/cases/:id/sla
- Priority-based SLA targets (critical=1h/4h, high=4h/24h, etc.)
- First-response and resolution breach detection
- Auto-triage: POST /support/cases/:id/auto-triage
- Keyword-based priority heuristics (outage→critical, error→high, etc.)
- Category detection (auth, billing, api)
- Deduped tag application
- Case metrics: GET /support/metrics
- Aggregates by status/priority/source
- Avg resolution hours, SLA breach count, compliance rate
- New repo function: listAllCases
- 1,336 tests passing (5 new)
2026-03-20 03:38:08 -07:00
saravanakumardb1
a060ee4496
feat(platform): Phase 5 — Human Review Queue
...
- Batch decisions: POST /reviews/batch-decision (up to 50 items)
- Parallel execution with allSettled, reports succeeded/failed counts
- Delegation: POST /reviews/:id/delegate
- Reassigns review with delegation metadata tracking
- Triggers notification to new assignee
- Auto-expiry: POST /reviews/expire
- Scans pending/assigned reviews past dueAt, marks expired
- Review stats: GET /reviews/stats
- Aggregates by status/priority/category, avg resolution time
- Computes pendingCount, overdueCount, avgResolutionHours
- New repo functions: listExpired, listAll
- 1,331 tests passing (7 new)
2026-03-20 03:33:55 -07:00
saravanakumardb1
9758192377
feat(platform): Phase 4 — AI Governance & Evals
...
- Run history: GET /agent-evals/suites/:id/runs with limit param
- Regression comparison: GET /agent-evals/suites/:id/regression
- Detects 5%+ score drop between consecutive runs
- Returns latest vs previous comparison + trend data
- Release gate check: GET /agent-evals/suites/:id/gate
- Checks if latest release-gate run passed threshold
- Agent compliance report: GET /agent-evals/agents/:agentId/report
- Aggregates pass rate, avg score, suite counts, recent runs
- Eval scheduling: POST /agent-evals/suites/:id/schedule
- Wires eval suite to job runner with cron expression
- New repo functions: listRunsBySuite, listRunsByAgent
- 1,324 tests passing (8 new)
2026-03-20 03:30:03 -07:00
saravanakumardb1
05acacd400
feat(platform): Phase 3 — AI Budget & Cost Governance
...
- Scope expansion: BudgetScopeTypeSchema now includes 'org' + 'workspace'
- Cost dashboard: GET /ai-budgets/costs with groupBy (model/agent/day/scope)
- Aggregates totalCostUsd, totalTokens, entryCount, breakdown
- Budget rollover: POST /ai-budgets/policies/:id/rollover
- Computes previous period remaining, creates rollover doc, adjusts budget
- GET /ai-budgets/policies/:id/rollovers for history
- Enforcement check: POST /ai-budgets/check (pre-flight, no spend recorded)
- Model allowlist + threshold evaluation, returns verdict + reasons
- New types: CostDashboardQuerySchema, BudgetRolloverSchema
- New repo functions: listAllSpendEntries, createRollover, listRollovers
- New Cosmos container: ai_budget_rollovers
- 1,316 tests passing (9 new)
2026-03-20 03:26:23 -07:00
saravanakumardb1
84dc348687
feat(platform): Phase 2 — Agent Runtime Orchestration
...
- New: agents/executor.ts — full agent execution engine
- Multi-step pipeline: prompt_assembly → tool_execution → finalize
- AbortController-based cancellation with in-memory tracking
- Token usage aggregation across tool calls
- Review-required tool gating (pauses run, returns review_required)
- Step event streaming for SSE consumers
- New: agents/tool-registry.ts — global tool registry
- Register/list/validate tools with risk levels + review flags
- New: agents/executor-routes.ts — 11 endpoints, 14 tests
- POST /agents/execute, POST /runs/:id/cancel
- GET /agents/active-runs, GET /runs/:id/children, GET /runs/:id/tree
- GET /agents/:id/metrics, GET /runs/:id/stream (SSE)
- GET /tools, POST /tools/validate, POST /agents/:id/schedule
- Enhanced: runs/repository.ts — added listChildRuns() for DAG query
- 1,307 tests passing (14 new)
2026-03-20 03:20:31 -07:00
saravanakumardb1
15e24e5710
feat(platform): Phase 1 — Durable Event Bus + Worker Runtime
...
- New module: event-subscriptions/ (types, repository, routes, 15 tests)
- Subscription CRUD: create/list/get/update/delete event subscriptions
- DLQ: list/retry/delete/purge dead-letter queue entries
- Event replay: POST /events/replay by topic + time range
- New lib: event-dispatcher.ts — subscription-driven dispatch with retry + DLQ
- New lib: event-store-bridge.ts — persistent event log for replay capability
- Worker runtime hardening (jobs/runner.ts):
- Concurrency limit (MAX_CONCURRENT_JOBS=5)
- Stuck-job recovery (10min threshold)
- Graceful shutdown (30s drain)
- Active job tracking + diagnostics (getActiveJobs/getActiveJobCount)
- Per-job dedup (skip if already running)
- Wired dispatcher + event-subscriptions into server.ts startup
- Cosmos containers: event_subscriptions, event_dlq, event_log
- 1,293 tests passing (15 new)
2026-03-20 03:12:54 -07:00
saravanakumardb1
9e510f7b49
test(scim): add 7 tests for stats, pause, resume, delete endpoints
...
- routes.test.ts: add mock functions for deleteConnector, getConnectorStats
- 7 new tests: stats endpoint, pause active, pause rejects non-active,
resume paused, resume rejects non-paused, delete paused, delete rejects active
- Total: 11 SCIM tests (was 4)
2026-03-20 01:06:07 -07:00
saravanakumardb1
28b6668fb1
fix(knowledge): align searchChunks scoring with routes, add 5 new tests
...
- repository.ts: searchChunks now includes tag matching (+2 per tag hit)
consistent with scoreChunk() in routes.ts
- routes.test.ts: add 5 new tests — stats endpoint, delete draft base,
reject non-draft delete, delete source, search chunks
- Total: 9 knowledge tests (was 4)
2026-03-20 01:04:32 -07:00
saravanakumardb1
036d17d8f0
fix(agents): use NotFoundError for missing resources, add deprecate+published tests
...
- routes.ts: use NotFoundError (404) instead of BadRequestError (400)
for missing agent by key and missing published version
- routes.test.ts: fix expectation for unknown key (400→404),
add 4 new tests: deprecate success, deprecate already-deprecated guard,
GET published success, GET published 404 when none
- Total: 13 agent tests (was 8)
2026-03-20 01:02:36 -07:00
saravanakumardb1
d073122a48
feat(scim): deepen SCIM provisioning — stats, delete, pause/resume
...
- repository.ts: add ScimConnectorStats interface, getConnectorStats (user/group/event counts),
deleteConnector
- routes.ts: 4 new endpoints — GET /scim/connectors/:orgId/:id/stats,
DELETE /scim/connectors/:orgId/:id (must be paused first),
POST /scim/connectors/:orgId/:id/pause, POST /scim/connectors/:orgId/:id/resume
- Existing 4 tests unchanged, typecheck clean
2026-03-20 00:44:49 -07:00
saravanakumardb1
20663d7078
feat(knowledge): deepen Knowledge/RAG — search, stats, delete endpoints
...
- repository.ts: add searchChunks (term-based text search with scoring),
getBaseStats (source/chunk/token counts), deleteSource, deleteBase
- routes.ts: 4 new endpoints — GET /knowledge/bases/:id/stats,
DELETE /knowledge/bases/:id (draft only), DELETE /knowledge/bases/:id/sources/:sourceId,
POST /knowledge/bases/:id/search (text search with previews)
- Existing 4 tests unchanged, typecheck clean
2026-03-20 00:42:12 -07:00
saravanakumardb1
ae87371b3a
feat(agents): deepen agent registry — version lifecycle, lookup by key, delete
...
- repository.ts: add getAgentByKey, updateAgentVersion, getPublishedVersion, deleteAgent
- routes.ts: 5 new endpoints — GET /agents/by-key/:key, GET /agents/:id/published,
POST /agents/:id/versions/:vId/publish (auto-deprecates previous),
POST /agents/:id/versions/:vId/deprecate, DELETE /agents/:id (draft only)
- routes.test.ts: 6 new tests (8 total) — publish lifecycle, deprecate guard,
key lookup, delete draft-only guard
- repository.test.ts: 1 existing test unchanged
2026-03-20 00:39:24 -07:00
saravanakumardb1
0195cde1c0
feat(orgs): deepen Org/Workspace RBAC — role hierarchy, permissions, delete endpoints
...
- types.ts: add ROLE_HIERARCHY (owner>admin>member>viewer), ROLE_PERMISSIONS matrix (11 permissions),
hasPermission() and canManageRole() helpers
- repository.ts: add deleteMembership, getUserMembership, deleteOrganization, deleteWorkspace
- routes.ts: 4 new endpoints — DELETE /orgs/:id (owner only), DELETE /orgs/:id/workspaces/:wsId,
DELETE /orgs/:id/memberships/:mbrId (RBAC enforced), GET /orgs/:id/permissions
- RBAC enforcement: role update checks actor outranks target, cannot remove owner, cannot
assign role >= own level
- routes.test.ts: 6 new tests (8 total) — owner-only delete, member removal RBAC,
permissions endpoint, non-member handling
- repository.test.ts: 1 existing test unchanged
2026-03-20 00:36:02 -07:00
saravanakumardb1
1efbb9340d
feat(analytics): deepen analytics rollups — aggregation, summary dashboard, top metrics
...
- types.ts: add AggregateRollupsSchema, SummaryQuerySchema, TopMetricsSchema, AnalyticsSummary
- repository.ts: add aggregateDailyToWeekly, aggregateDailyToMonthly (merge daily rollups)
- repository.ts: add getSummary (trend + top metrics over N days), getTopMetrics (per-date)
- routes.ts: 3 new endpoints — POST /analytics/aggregate, GET /analytics/summary, GET /analytics/top-metrics
- analytics.test.ts: 11 new tests (25 total) for aggregate, summary, top-metrics schemas
- Existing 14 tests unchanged
2026-03-20 00:30:07 -07:00
saravanakumardb1
3a14f87814
chore(platform-service): wire P2+P3 modules into server + cosmos-init
...
- server.ts: register cdnRoutes, searchRoutes, dunningRoutes (P2)
- server.ts: register tenantRoutes, retentionRoutes, backupRoutes, apiVersioningRoutes (P3)
- cosmos-init.ts: 17 new containers across 7 modules:
CDN: cdn_assets, cdn_purge_requests, cdn_origin_configs
Search: search_index, search_suggestions
Dunning: dunning_campaigns, dunning_policies
Tenants: tenants, tenant_members, tenant_invites
Retention: retention_policies, retention_jobs
Backups: backups, restores, backup_configs
API Versioning: api_versions, api_version_pins
- Total platform-service modules: ~41, tests: 1239
2026-03-19 23:50:38 -07:00
saravanakumardb1
946390f378
feat(api-versioning): add API versioning — lifecycle, pins, deprecation
...
- types.ts: ApiVersionDoc, ClientVersionPinDoc + 4 Zod schemas
- repository.ts: version CRUD, client pin CRUD, active version lookup
- routes.ts: 10 endpoints (version lifecycle, current, pins CRUD)
- api-versioning.test.ts: 13 schema tests
- draft → active → deprecated → sunset lifecycle
- Client version pinning with auto-upgrade scheduling
- Cosmos containers: api_versions, api_version_pins
2026-03-19 23:50:23 -07:00
saravanakumardb1
b5c83b1874
feat(backups): add backup/restore module — on-demand + config
...
- types.ts: BackupDoc, RestoreDoc, BackupConfigDoc + 3 Zod schemas
- repository.ts: backup/restore CRUD, config singleton per product
- routes.ts: 9 endpoints (backup CRUD, restore, history, config)
- backups.test.ts: 11 schema tests
- Supports full/incremental/selective types with expiry
- Cosmos containers: backups, restores, backup_configs
2026-03-19 23:50:09 -07:00
saravanakumardb1
c638555069
feat(retention): add data retention policies — policy CRUD, enforce, jobs
...
- types.ts: RetentionPolicyDoc, RetentionJobDoc + 2 schemas + getCutoffDate helper
- repository.ts: policy CRUD, enabled policies query, job audit trail, stats
- routes.ts: 7 endpoints (policy CRUD, enforce with dry-run, job history, stats)
- retention.test.ts: 12 schema + helper tests
- Supports delete/archive/anonymize actions with configurable date fields
- Cosmos containers: retention_policies, retention_jobs
2026-03-19 23:49:56 -07:00
saravanakumardb1
33e5fd70ce
feat(tenants): add multi-tenant module — tenant CRUD, members, invites
...
- types.ts: TenantDoc, TenantMemberDoc, TenantInviteDoc + 4 Zod schemas
- repository.ts: tenant CRUD, member CRUD, invite lifecycle, slug uniqueness
- routes.ts: 10 endpoints (tenant CRUD, invite, accept, member role, remove)
- tenants.test.ts: 16 schema + plan-limits tests
- Plan limits: free(5), starter(25), pro(100), enterprise(10k) members
- SHA-256 hashed invite tokens with 7-day expiry
- Cosmos containers: tenants, tenant_members, tenant_invites
2026-03-19 23:49:41 -07:00
saravanakumardb1
797f5e4318
feat(dunning): add billing dunning module — campaigns, policies, retries
...
- types.ts: DunningCampaignDoc, DunningPolicyDoc + 3 Zod schemas + helpers
- repository.ts: campaign CRUD, policy management, retry scheduling
- routes.ts: 11 endpoints (campaign lifecycle, policy CRUD, retry, grace period)
- dunning.test.ts: 20 schema + helper tests (getNextRetryTime, isGracePeriodExpired)
- Configurable retry schedules, grace periods, auto-downgrade
- Campaign status lifecycle: active → resolved/escalated
- Cosmos containers: dunning_campaigns, dunning_policies
2026-03-19 23:49:25 -07:00
saravanakumardb1
e9cb6b2a38
feat(search): add full-text search module — index, query, suggestions
...
- types.ts: SearchIndexDoc, SearchSuggestion + 3 Zod schemas
- repository.ts: index/remove entities, search with CONTAINS, prefix suggestions
- routes.ts: 6 endpoints (search, suggest, index entity, reindex, delete by type:id)
- search.test.ts: 15 schema validation tests
- Parameterized queries (no manual quote escaping)
- Composite doc ID format: entityType:entityId
- Cosmos containers: search_index, search_suggestions
2026-03-19 23:49:02 -07:00
saravanakumardb1
7b43a02126
feat(cdn): add CDN asset pipeline module — upload, purge, origin config
...
- types.ts: CdnAsset, PurgeRequest, OriginConfig + 3 Zod schemas
- repository.ts: asset CRUD, purge request tracking, origin config management
- routes.ts: 9 endpoints (asset upload/list/get/delete, purge, origin config CRUD)
- cdn.test.ts: 15 schema validation tests
- Supports categories (image/video/font/script/style/document/other)
- SHA-256 content hash tracking, size limits, TTL-based purge requests
- Cosmos containers: cdn_assets, cdn_purge_requests, cdn_origin_configs
2026-03-19 23:47:59 -07:00
saravanakumardb1
4071429871
fix(platform-service): fix OFFSET/LIMIT pairing, survey analytics productId, unused imports
...
- broadcasts/repository: fix OFFSET/LIMIT must be paired (Cosmos SQL requires both)
- broadcasts/repository: remove unused TargetingContext import
- surveys/repository: fix OFFSET/LIMIT in listSurveys + listResponsesForSurvey
- surveys/repository: fix getSurveyAnalytics to accept and pass productId
- surveys/repository: fix isComplete boolean param cast for Cosmos SDK types
- surveys/routes: fix parseInt safety for limit/offset query params (NaN guard)
- surveys/routes: pass productId to getSurveyAnalytics call
2026-03-19 23:47:43 -07:00
saravanakumardb1
652a8e5d15
fix(platform-service): missing cosmos containers + NaN guard in cross-product limit
...
- cosmos-init.ts: add onboarding_events + onboarding_completions containers
(onboarding repository references them but they were never registered)
- telemetry cross-product route: parseInt(limit) could produce NaN when
given non-numeric input — now clamps to 1-100 with default 20
2026-03-19 22:20:31 -07:00
saravanakumardb1
4e7401d164
test(platform-service): add broadcast + survey module tests — 43 tests
...
Broadcasts (23 tests): schema validation, targeting engine (segments,
platform, version range, country, specific users, percentage rollout),
query builder, context extraction.
Surveys (20 tests): schema validation (create, update, question, answer,
triggers), completion rate, answer type validation (NPS, text, rating,
dropdown, scale, ranking), length/range constraints.
2026-03-19 22:16:28 -07:00
saravanakumardb1
0352ea5383
feat(platform-service): pre-built Stripe checkout flow (Phase 4.4) — 6 tests
...
New modules/billing-checkout/ — higher-level POST /billing/checkout with:
- Zod-validated input (plan OR explicit priceId)
- Tax collection support (automatic_tax)
- Customer email pre-fill
- Arbitrary metadata passthrough
- Trial period and promo code support
- 6 tests: plan, priceId, missing both, invalid plan, optional fields, URL validation
2026-03-19 22:10:32 -07:00
saravanakumardb1
0e880fd40d
feat(platform-service): shared onboarding analytics module (Phase 4.3) — 8 tests
...
New modules/onboarding/ with standard pattern (types → repository → routes):
- POST /onboarding/step — track step completion (any auth)
- POST /onboarding/complete — track onboarding completion (any auth)
- GET /onboarding/funnel — funnel conversion rates (admin)
- GET /onboarding/user/:userId — user progress (admin)
- Cosmos containers: onboarding_events, onboarding_completions
- Funnel: per-step unique users, conversion rates, avg duration
- 8 tests: schema validation, funnel, date filter, user progress, empty product
2026-03-19 22:07:03 -07:00
saravanakumardb1
d900df3dc8
feat(platform-service): cross-product telemetry endpoint (Phase 4.2) — 6 tests
...
GET /telemetry/cross-product?products=a,b,c — admin-only endpoint for
multi-product telemetry comparison:
- Per-product summary: totalEvents, errorEvents, errorRate, topModules, platforms
- Daily event counts per product (for stacked bar charts)
- Top error clusters across products (merged + sorted by count)
- Date range filtering via from/to query params
- 6 tests: summary, daily breakdown, clusters, date filter, unknown product, limit
2026-03-19 22:04:00 -07:00
saravanakumardb1
1fe1e75999
feat(platform-service): auto-registration on first request (Phase 4.1) — 8 tests
...
Zero-touch product provisioning: when a request arrives with an unknown
productId and a valid JWT, auto-create a minimal ProductDoc instead of
rejecting. Enables new products to use platform-service immediately.
- auto-register.ts: auto-create ProductDoc with sensible defaults
- Rate limited: max 10 auto-registrations per minute
- Requires valid JWT (unauthenticated requests still rejected)
- Audit logged as product.auto_registered
- request-context.ts: exported extractProductIdAsync with auto-register
- 8 tests: register, duplicate, format validation, rate limit
2026-03-19 22:00:57 -07:00
saravanakumardb1
0f299231cc
feat(platform-service): declarative YAML module loader (4.4) — 34 tests
...
New files:
- src/lib/declarative-schema.ts — YAML schema + Zod validation
- ModuleSchema, FieldSchema, EndpointSchema
- fieldToZodSchema, buildCreateSchema, buildUpdateSchema, defaultEndpoints
- src/lib/declarative-loader.ts — runtime route generator
- parseModuleYaml, registerModuleRoutes, loadDeclarativeModules
- MemoryStore with filtering, sorting, pagination
- Auth enforcement (none/user/admin), custom endpoint support
- src/lib/declarative-loader.test.ts — 34 tests
- Schema validation, field conversion, endpoint generation
- MemoryStore CRUD, route integration with full lifecycle
Dependency: yaml (npm)
2026-03-19 21:16:58 -07:00
saravanakumardb1
6ba86e0bf4
fix: replace corepack pnpm with pnpm in pretest/predev scripts
...
Node 25 removed corepack as a built-in. Replace all 'corepack pnpm'
invocations with direct 'pnpm' calls since pnpm is installed globally.
Affected: platform-service, tracker-web, blob, testing, LLM dashboard
2026-03-19 19:57:16 -07:00
saravanakumardb1
16dc1c4a79
feat(platform-service): overhaul module generator with auto-patching
...
- Rewrote gen-module.ts to match actual codebase patterns
- Repository uses getRegisteredContainer from @bytelyst/cosmos
- Routes use req.jwtPayload?.sub for auth (not req.user)
- Routes register with explicit /name paths under /api prefix
- Auto-patches cosmos-init.ts with container definition
- Auto-patches server.ts with import + route registration
- Proper parenthesis-aware field splitter for enum(a,b,c)
- Test template generates per-field validation tests
- Checks for existing module directory before overwriting
- Pascal/camel case helpers handle hyphenated module names
- Dry-run shows auto-patch previews
2026-03-19 19:52:06 -07:00
saravanakumardb1
1ad8660dd8
fix(platform): fix 2 type errors found in typecheck sweep
...
- api-key-auth.ts: Record<string, unknown> → FilterMap (import from @bytelyst/datastore)
- reviews/notifications.ts: raw subject/html/text → templateId + variables (match dispatchEmail signature)
2026-03-19 19:02:57 -07:00
saravanakumardb1
548f7199bf
fix(extraction-service): fix QueueJob generic type mismatch in createJob
...
enqueue() returns QueueJob<TPayload, unknown> since no result exists at
enqueue time. mapQueueJob expects ExtractionJobResult. Cast at the call
site since newly enqueued jobs have undefined result and all accesses
use optional chaining.
2026-03-19 18:12:34 -07:00
root
e996962b64
feat(mcp-server): add team provisioning follow-up hooks
2026-03-15 09:59:35 +00:00
root
8976caa966
feat(mcp-server): add org review follow-up hooks
2026-03-15 09:56:04 +00:00
root
7c5999ce5a
feat(mcp-server): wire a2a governance hooks
2026-03-15 09:51:00 +00:00
root
d93ada4037
docs(config): align rate limit settings
2026-03-15 09:42:42 +00:00
root
e4bff5a2fe
feat(platform-service): add support case management foundation
2026-03-15 09:39:20 +00:00
root
14346fbd5d
feat(ratelimit): back api throttles with datastore
2026-03-15 09:37:03 +00:00
root
8b99b7a9a7
feat(platform-service): add scim provisioning foundation
2026-03-15 09:36:27 +00:00
root
66d0bf53a9
feat(platform-service): add shared knowledge foundation
2026-03-15 09:33:17 +00:00
root
728d8f2484
feat(platform-service): add ai budget governance
2026-03-15 09:30:16 +00:00
root
3f06427038
feat(platform-service): add agent evaluation governance
2026-03-15 09:26:40 +00:00
root
8d78b6ce59
feat(api-key): audit security events
2026-03-15 09:24:01 +00:00
root
2f7163b856
feat(api-key): restrict job operations to service tokens
2026-03-15 09:08:38 +00:00
root
95261acb92
feat(api-key): log auth and throttling rejects
2026-03-15 09:06:51 +00:00
root
798c1b9fad
feat(platform-service): add agent registry foundation
2026-03-15 09:05:39 +00:00
root
473b7310d5
fix(tokens): tighten machine credential issuance
2026-03-15 06:28:50 +00:00
root
57abfa5b03
feat(api-key): add per-product throttling
2026-03-15 06:26:42 +00:00
root
8240f6060d
feat(api-key): restrict ops routes to service tokens
2026-03-15 06:24:08 +00:00
root
d1b3faae8b
fix(tokens): issue machine-ready defaults
2026-03-15 06:19:48 +00:00
root
eac633e1e7
fix(api-key): enforce machine token policy
2026-03-15 06:16:15 +00:00
root
507f0fdd1f
feat(tokens): classify machine credentials
2026-03-15 06:09:42 +00:00
root
3398d1400f
feat(platform-service): add human review queue
2026-03-15 06:08:23 +00:00
root
33c5a5a5ce
feat(platform-service): add org workspace foundation
2026-03-15 06:03:08 +00:00
root
841d2f5129
fix(api-key): enforce requested product binding
2026-03-15 06:01:17 +00:00
root
daec38faf7
feat(a2a): persist incident pipeline runs
2026-03-15 05:58:15 +00:00
root
07e9475b70
fix(tokens): align api token storage with cosmos partitioning
2026-03-15 05:57:34 +00:00
root
a76b932502
feat(platform-service): add durable run tracking
2026-03-14 16:08:07 +00:00
root
885ee2d504
feat(events): add durable event bus worker path
2026-03-14 16:02:40 +00:00
root
8de22f9f22
feat(platform-service): allow scoped api keys on webhook routes
2026-03-14 15:38:42 +00:00
root
da744ab116
feat(platform-service): allow scoped api keys on ops routes
2026-03-14 14:58:08 +00:00
root
0ad6703961
feat(platform-service): add api key auth context and throttling guard
2026-03-14 14:55:23 +00:00
root
7616901683
test(workspace): harden service bootstrap and sync coverage
2026-03-14 06:40:10 +00:00
root
2b4fccb744
feat(queue): add durable worker runtime and extraction integration
2026-03-14 06:25:10 +00:00
root
91885f0d4f
Add Mailpit-backed prototype email sandbox
2026-03-14 06:16:28 +00:00
root
a27a822fc2
Add prototype storage diagnostics and smoke test
2026-03-14 06:06:35 +00:00
root
114240c79a
feat(platform-service): add telegram and slack delivery
2026-03-14 06:01:59 +00:00
root
db9ae4a573
feat(platform-service): add smtp email delivery and postal setup
2026-03-14 05:52:28 +00:00
root
19b58b3ea0
Fix prototype service runtime dependencies
2026-03-14 05:32:21 +00:00
root
a5e8890df2
Add Cosmos emulator prototype support
2026-03-14 05:24:01 +00:00
saravanakumardb1
2b3130821c
fix(auth): register magic_link event type + use admin productId for enterprise IdP
...
- Register 'auth.magic_link_requested' in @bytelyst/events PlatformEventSchemas
- Remove any-cast from magic-link/routes.ts — now properly typed
- Enterprise IdP creation uses admin's JWT productId instead of hardcoded 'smartauth'
- All 53 auth tests passing
2026-03-12 15:55:09 -07:00
saravanakumardb1
b0e1a54481
fix(auth): enterprise SSO bcrypt hash + upgrade cost 10→12
...
- Enterprise SAML/OIDC callbacks used raw 'sso_xxx' string as passwordHash
which would crash bcrypt.compare(). Now uses userRepo.hashPassword(randomUUID())
- Added updateLastLogin() for existing enterprise SSO users
- Upgraded bcrypt cost factor from 10 to 12 per PRD spec
- All 53 auth tests passing
2026-03-12 15:35:00 -07:00
saravanakumardb1
0c4e53a0ed
feat(auth): Phase 6 — enterprise SAML/OIDC, magic link, HIBP, E2E specs
...
6A: Enterprise IdP CRUD, SAML callback, OIDC callback, email domain lookup
6B: Magic link send/verify (15min TTL, anti-enumeration), HIBP breach check
6D: 3 new E2E specs (account-linking, step-up, enterprise) — total 8 SmartAuth specs
- All 53 auth tests passing
2026-03-12 15:25:28 -07:00
saravanakumardb1
f4b9124065
feat(auth): add Phase 5C-5E endpoints + SDK methods — TOTP secret, push approvals, QR auth
...
- GET /auth/mfa/totp/secret — retrieve decrypted TOTP secret for auth app
- POST /auth/mfa/push/create, GET /pending, POST /:id/respond, GET /:id/status
- POST /auth/qr/create, POST /auth/qr/confirm, GET /auth/qr/:id/status
- Kotlin SDK: getTotpSecret, getPendingApprovals, respondToApproval, confirmQrLogin
- Swift SDK: getTotpSecret, getPendingApprovals, respondToApproval, confirmQrLogin
- All 53 auth tests passing
2026-03-12 15:01:51 -07:00
saravanakumardb1
ae13abfab2
fix(auth): address SmartAuth agent review gaps — Swift mock wiring, passkey SDK consistency, device list parity, JSDoc, SSR docs
2026-03-12 12:27:08 -07:00
saravanakumardb1
a613cf1bf9
test(auth): add SmartAuth integration tests + fix auth.routes.test mocks
...
- Add 5 new tests: MFA challenge integration, risk scorer edge cases, login events wiring, device trust pure function
- Fix auth.routes.test.ts: add vi.mock stubs for login-events, risk-scorer, mfa, devices, config, event-bus
- Change afterEach from restoreAllMocks to clearAllMocks (preserves mock implementations between tests)
- Total: 42 smartauth tests, 951 platform-service tests all passing
2026-03-12 11:27:50 -07:00
saravanakumardb1
0f4be0c325
feat(auth): wire login events into OAuth login helper
...
- Record success login event with risk scoring after OAuth token issuance
- Import login-events repo + risk-scorer into oauth/routes
- Best-effort recording — never blocks OAuth login flow
2026-03-12 11:19:11 -07:00
saravanakumardb1
82d7f157d9
feat(auth): wire login events + MFA challenge into login handler
...
- Add recordLoginEvent() helper with risk scoring via scoreLoginRisk()
- On failed login: record 'failed' event with risk assessment
- On MFA-required: issue challenge token, record 'mfa_required' event
- On success: record 'success' event with risk assessment
- Import login-events repo, risk-scorer, mfa repo, challenge store, device repo
2026-03-12 11:17:23 -07:00
saravanakumardb1
bdb3e95e00
fix(auth): clean up MFA routes — remove redundant imports, use userRepo.update()
...
- Remove redundant dynamic import('node:crypto'), use top-level nodeCrypto
- Remove getCollection import, use userRepo.update() for mfaEnabled/mfaMethods
- Expand update() Pick type to include mfaEnabled, mfaMethods, emailVerified
- Remove unused _reply param from MFA policy PUT handler
2026-03-12 11:12:33 -07:00
saravanakumardb1
362b915ea9
feat(auth): SmartAuth backend core — OAuth, MFA, passkeys, device trust, login events
...
Phase 0A: OneAuth schema extension — UserDoc evolution + auth_providers container
Phase 0B: Progressive lockout + IP rate limiting on login
Phase 1A-1B: Google/Microsoft/Apple OAuth + account linking
Phase 1D: Enhanced /auth/me — products, providers, MFA status
Phase 2A-2C: TOTP MFA + challenge flow + admin policies
Phase 3A-3B: WebAuthn passkeys + device trust
Phase 4A: Login events + rule-based risk scoring
New sub-modules: oauth/, mfa/, passkeys/, devices/, login-events/
New containers: auth_providers, auth_mfa, auth_mfa_policies, auth_passkeys, auth_devices, auth_login_events
Tests: 37 new (946 total, all passing), typecheck clean
2026-03-12 10:55:41 -07:00
saravanakumardb1
aff78c55a4
fix(mcp-server): align notes tool outputs with contracts
2026-03-10 09:54:08 -07:00
saravanakumardb1
ec3dd4bd66
feat(mcp-server): add notes tool integration
2026-03-10 09:39:07 -07:00
saravanakumardb1
49db2cd2af
fix(platform-service): pin vitest pool to threads
2026-03-06 13:52:44 -08:00
saravanakumardb1
63b0d20b07
fix(fastify-core): address jwt rollout review findings
2026-03-06 13:44:22 -08:00
saravanakumardb1
e4baa2fc16
refactor(platform-service): use shared optional jwt context
2026-03-06 12:57:00 -08:00
saravanakumardb1
cfca118c71
feat(fastify-core): add shared optional jwt context
2026-03-06 12:52:49 -08:00
saravanakumardb1
d365bc59d6
refactor(mcp-server): tighten MCP tool typing after review
2026-03-05 22:37:53 -08:00
saravanakumardb1
b199ea7976
fix(mcp-server): align secret and experiment tools with real services
2026-03-05 22:36:30 -08:00
saravanakumardb1
53f34851df
fix(mcp-server): resolve lint blockers in new MCP tools
2026-03-05 22:30:39 -08:00
saravanakumardb1
3a7139790c
fix(mcp-server): Improve error handling in A2A pipelines
...
- regression-watch-pipeline.ts: Add try/catch around session creation, continue on failures
- post-incident-cleanup-pipeline.ts: Add try/catch around policy deletion and audit export
- Fix extractionResetProductRateLimit optional parameter pattern
- Update return values to use actual counts instead of targets
- All pipelines now continue processing individual items instead of failing entirely
- Add proper type casting for audit response events array
2026-03-05 22:09:56 -08:00
saravanakumardb1
40db19a389
feat(mcp-server): Add 2 high-priority A2A pipelines
...
- regression-watch-pipeline.ts: Monitor error clusters and auto-create diagnostics sessions
- post-incident-cleanup-pipeline.ts: Resolve clusters, delete policies, export audit logs
- a2a-tools.ts: Register both pipelines as MCP tools (a2a.regressionWatch, a2a.postIncidentCleanup)
- Fix platform-client function names and TelemetryCluster interface usage
- Both pipelines support dryRun mode and proper error handling
- Fix ESLint warnings: remove unused imports, add proper types
All tools require admin role and use existing platform-service endpoints.
2026-03-05 22:07:42 -08:00
saravanakumardb1
c8fafbb564
feat(mcp-server): Add 7 missing extraction async jobs tools
...
- extraction.extractBatch: batch extraction with shared config
- extraction.submitJob: async job submission with webhook support
- extraction.getJob: get job status/results by ID
- extraction.listJobs: list recent async jobs
- extraction.getProductRateLimitStatus: per-product or summary rate limits
- extraction.resetProductRateLimit: admin rate limit reset
- extraction.sidecarMonitoringState: detailed sidecar circuit breaker state
All tools require admin role and map to existing extraction-service endpoints.
Fixes TypeScript optional parameter error in extractionGetProductRateLimitStatus.
2026-03-05 22:05:00 -08:00
saravanakumardb1
3f296a8e72
feat(mcp-server): fill 12 DOMAIN_PRODUCTS.md MCP tool gaps + client fn additions
...
Bug fix (committed separately):
social-fast-coordinator: stage_transition used non-existent currentStage
New client functions:
nomgap-client: nomgapFastingCreateSession, nomgapProtocolGet,
nomgapSocialListGroupFasts (+ GroupFastDoc)
peakpulse-client: peakpulseRoutesList, peakpulseSyncStatus
lysnrai-client: lysnraiApiTokenCreate, lysnraiSessionsStats,
lysnraiTranscriptsExportBatch
chronomind-client: chronomindRoutineGet, chronomindSharedTimerShare
New MCP tools (12):
mindlyst.briefs.generate — trigger daily brief via mindlystBriefCreate
mindlyst.memory.getTriageResult — extract TriageResult sub-doc only
nomgap.fasting.createSession — start new fast with protocolId
nomgap.protocols.get — single protocol lookup
nomgap.social.listGroupFasts — list group fast sessions
peakpulse.routes.list — list GPS r
Bug fix (committed separately):
social-fast-coordinator: stage_transition used non-existent currentStage
ats social-fast-coordinator: staon
New client functions:
nomgap-client: nomgapFastingCreateSession, nomgarai nomgaens.rotate nomgapSocialListGroupFasts (+ GroupFastDoc)
d. peakpulse-client: peakpulseRoutesList, peakpulseSyncStaturg lysnrai-client: lysnraiApiTokenCreate, lysnraiSessionsStati lysnraiTranscriptsExpor us chronomind-client: chronomindRoutineGet, chrerver total: 126 tools across 17 namespaces
2026-03-05 18:19:04 -08:00
saravanakumardb1
1da3394caf
fix(mcp-server): social-fast-coordinator-pipeline — stage_transition used non-existent currentStage field
...
FastingSessionDoc has stages: unknown[] not currentStage: string.
- Replace currentStage cast with hasStages check (session.stages.length > 0)
- Fix protocolId extraction to use direct field (session?.protocolId)
- Report currentStage derived from stages.length as 'stage_N' indicator
2026-03-05 18:13:28 -08:00
saravanakumardb1
0a6950216a
feat(mcp-server): A2A batch-5 — GoalCoachingAgent + SkiRunAnalystAgent (peakpulse) + OrgProvisioningAgent (lysnrai) + ProtocolTuningAgent (nomgap) + CalendarImportAgent (chronomind)
...
goal-coaching-pipeline.ts: peakpulse.goals.coach
- SessionHistoryAgent -> GoalAnalysisAgent -> GoalReportAgent
- Computes duration/distance/elevation/speed trends across recent sessions
- Classifies user as beginner/intermediate/advanced; generates metric-specific goal suggestions
ski-run-analyst-pipeline.ts: peakpulse.ski.analyze
- SkiSessionCollectorAgent -> RunQualityAnalystAgent -> SkiReportAgent
- Computes runDensity, verticalPerRun, skiToLiftRatio per session
- Flags: low_run_density, high_lift_ratio, short_session, vertical_drop vs baseline
org-provisioning-pipeline.ts: lysnrai.orgs.provision
- OrgInspectorAgent -> ProvisioningActionAgent -> OrgReportAgent
- Checks API tokens + session activity; classifies as new_org/needs_attention/complete
protocol-tuning-pipeline.ts: nomgap.protocols.tune
- ProtocolStatsCollectorAgent -> AbandonmentAnalysisAgent -> TuningReportAgent
- Finds protocols with >40% abandonment; runs extraction for pattern analysis
- Proposes duration reduction, milestone notifications, or variant creation
calendar-import-pipeline.ts: chronomind.calendar.import
- EventValidatorAgent -> ConflictDetectorAgent -> ImportReportAgent
- Validates dtstart/dtend; detects time overlaps vs existing timers
- Creates alarm timers for conflict-free events; dryRun support
MCP server total: 110 tools
2026-03-05 18:07:59 -08:00
saravanakumardb1
acadc3551e
feat(mcp-server): A2A batch-4 — RoutineQualityAgent (chronomind) + SocialFastCoordinatorAgent (nomgap) + TeamProvisioningAgent (jarvis)
...
routine-quality-pipeline.ts: chronomind.routines.checkQuality
- RoutineInventoryAgent -> QualityCheckAgent -> QualityReportAgent
- Flags: duration_overflow, never_completed, empty_steps, no_category
- Per-routine issue list + remediation suggestions; configurable maxDurationMinutes
social-fast-coordinator-pipeline.ts: nomgap.social.coordinateFast
- GroupMemberResolverAgent -> NotificationDispatchAgent -> CoordinationReportAgent
- Fires social_invite + stage_transition push to each group member
- Sends weekly_digest to session owner; per-member outcome tracking
team-provisioning-pipeline.ts: jarvis.teams.provision
- NewMemberDetectorAgent -> OnboardingAgent -> ProvisioningReportAgent
- Detects invited + recently joined members (configurable sinceHours window)
- Recommends starter agents by member role, seeds context memory in each agent
- Marks check-in as scheduled after successful memory seed
MCP server total: 105 tools
2026-03-05 16:39:36 -08:00
saravanakumardb1
7ed4a105b7
feat(mcp-server): A2A batch-3 — ReflectionSynthesisAgent (mindlyst) + KeyboardDiagnosticsAgent (lysnrai) + NLParserEvalAgent (chronomind)
...
reflection-synthesis-pipeline.ts: mindlyst.reflections.synthesize
- ReflectionCollectorAgent -> ThemeExtractionAgent -> SynthesisReportAgent
- Fetches recent reflections, runs reflection-enrichment extraction, surfaces themes by frequency
- Proposes weekly summary text; max 52 reflections (1 year lookback)
keyboard-diagnostics-pipeline.ts: lysnrai.keyboard.diagnose
- KeyboardErrorScannerAgent -> DiagnosticsSessionAgent -> BugReportDraftAgent
- Scans error telemetry filtered to keyboard surface, groups by anonymousInstallId
- Opens diagnostics session per erroring install; drafts severity-ranked bug reports
- 48h default window, configurable minErrors threshold
nl-parser-eval-pipeline.ts: chronomind.nlParser.eval
- PhraseSamplerAgent -> ParseEvalAgent -> RegressionReportAgent
- 10-phrase canonical test suite + optional custom phrases
- Submits to extraction-service timer-parse task, validates parsed field presence
- Returns pass/fail/partial scorecard with regression list
MCP server total: 102 tools
2026-03-05 16:36:19 -08:00
saravanakumardb1
b8e230f018
feat(mcp-server): A2A batch-2 — STTFallbackMonitorAgent (lysnrai) + ProgressAnalystAgent (jarvis) + BrainOverflowAgent (mindlyst)
...
stt-fallback-monitor-pipeline.ts: lysnrai.stt.monitorFallback
- STTEventScannerAgent -> DiagnosticsLaunchAgent -> FallbackReportAgent
- Queries stt_completed telemetry, splits azure vs whisper events, computes offline rate
- Opens diagnostics session if rate exceeds threshold (default 20%); 6h default window
progress-analyst-pipeline.ts: jarvis.progress.analyze
- SessionMetricsCollectorAgent -> PlateauDetectorAgent -> ProgressReportAgent
- Collects skillMetrics timeseries per agent from recent sessions
- Detects plateau (delta < threshold), recommends increase_difficulty or supplementary_agent
brain-overflow-pipeline.ts: mindlyst.brains.checkOverflow
- BrainInventoryAgent -> OverflowDetectorAgent -> OverflowReportAgent
- Flags brains above item count threshold with no acted-on items in N days
- Per-brain suggestion: archive / reassign / review
MCP server total: 99 tools
2026-03-05 16:31:32 -08:00
saravanakumardb1
e4d489d40c
fix(triage-quality-pipeline): remove unused MemoryItemDoc import
2026-03-05 16:18:54 -08:00
saravanakumardb1
d7aa90b021
feat(mcp-server): 4 MCP tool gaps + 3 new A2A pipelines (Priority 3/6/7)
...
MCP tool gaps filled (DOMAIN_PRODUCTS.md alignment):
- jarvis.memory.create — POST /jarvis/agents/:agentId/memory (sessionId, type, content, importance, tags, expiresAt)
- jarvis.teams.listMembers — GET /jarvis/teams/:teamId/members (role, status, joinedAt)
- nomgap.fasting.getSession — GET /fasting/sessions/:id (client func already existed, MCP tool was missing)
- peakpulse.weather.getSnapshot — extracts weather field from peakpulseSessionGet response
New A2A pipelines (all registered in server.ts):
- transcript-extraction-pipeline.ts: lysnrai.transcripts.runExtractionPipeline
- TranscriptCollectorAgent -> ExtractionBatchAgent -> ExtractionReportAgent
- Queries transcripts missing extractedAt, runs extraction, returns batch report + dryRun support
- sync-conflict-pipeline.ts: chronomind.sync.diagnoseConflicts
- ConflictDetectorAgent -> SyncStateInspectorAgent -> DiagnosticsSessionAgent -> ConflictReportAgent
- Queries telemetry for sync_conflict events, classifies pattern, creates diagnostics session on conflict
- route-safety-pipeline.ts: peakpulse.sessions.assessSafety
- SessionDataAgent -> RouteProfileAgent -> SafetyAnalysisAgent -> SafetyReportAgent
- Fetches GPS + weather, evaluates UV/wind/altitude/speed risk factors, enriches with extraction entities
Client additions (jarvis-client.ts):
jarvisMemoryCreate, jarvisTeamsListMembers + JarvisTeamMemberDoc interface
MCP server total: 93 tools across 17 namespaces
2026-03-05 15:18:21 -08:00
saravanakumardb1
7e47151918
fix(mcp-server): 3 A2A pipeline bug fixes from audit
...
- nomgap-client: add electrolyte_reminder + extended_fast_warning to PushTriggerType; rename scheduledAt → scheduledFor to match backend schema; fix startedAt type string → number (backend stores epoch ms)
- nomgap-tools: rename scheduledAt → scheduledFor in nomgap.push.fire tool schema + execute call
- safety-monitor-pipeline: fix FastStateResult.startedAt type number; use epoch ms directly instead of new Date(string)
- sync-diagnostics-pipeline: remove peakpulseGetStats (returns aggregate stats not sync queue); derive queueDepth from recentFailureCount telemetry; add lastSuccessfulSync derivation from events
2026-03-05 14:54:21 -08:00
saravanakumardb1
ea16f8df19
feat(mcp-server): add 6 platform.schemas.* + platform.sdks.* tools from DOMAIN_PACKAGES_AND_SDKS.md
...
- platform.schemas.telemetryEvent: TelemetryEventDoc field schema + clustering keys + privacy rules
- platform.schemas.diagnosticsSession: DebugSession schema + full endpoint map
- platform.sdks.swiftCapabilities: ByteLystPlatformSDK 13 modules with phase + description
- platform.sdks.kotlinCapabilities: Android/KMP SDK feature inventory + KMP adoption
- platform.sdks.crossProductAdoption: 8 capabilities x 6 products adoption matrix + known gaps
- platform.sdks.auditActivity: live telemetry query to verify SDK wired + event breakdown per platform/module
- MCP server now at 97 tools across 16 namespaces
2026-03-05 14:25:01 -08:00
saravanakumardb1
654de4ed2e
feat(mcp-server): add 4 A2A pipelines — DailyBrief, MarketplaceCert, SafetyMonitor, SyncDiagnostics
...
- DailyBriefGenerationPipeline (mindlyst.brief.generate): fans out memory items across all brains, runs memory-insight extraction per brain, assembles and stores DailyBriefDoc
- MarketplaceCertificationPipeline (jarvis.marketplace.runCertification): ingestion validation, content safety via triage extraction, heuristic quality scoring, approve/reject/pending_human_review decision
- SafetyMonitorAgent (nomgap.safety.check + nomgap.safety.getThresholds): 5-tier threshold table, push notifications, A2A handoff for 72h+ fasts
- SyncDiagnosticsAgent (peakpulse.sync.diagnose): failure pattern classification from telemetry, conditional platform diagnostics session, log/trace capture, root cause + extraction entity report
- Add 3 missing client functions: mindlystBriefCreate, nomgapFastingSessionGet, jarvisMarketplaceGetListing
- MCP server now at 91 tools across 16 namespaces
2026-03-05 14:22:25 -08:00
saravanakumardb1
26a9868380
feat(mcp-server): add 5 missing tools for existing backend routes
...
New tools backed by routes that existed but had no MCP surface:
- maintenance.getSchedule: GET /settings/maintenance/schedule (list upcoming windows)
- maintenance.deleteWindow: DELETE /settings/maintenance/schedule/:id (cancel window)
- lysnrai.apiTokens.revoke: DELETE /api-tokens/:id (revoke token by ID)
New client functions:
- maintenanceGetSchedule, maintenanceDeleteWindow (platform-client.ts)
- lysnraiApiTokenRevoke (lysnrai-client.ts)
2026-03-05 14:09:00 -08:00
saravanakumardb1
5a3987bd9f
fix(mcp-server): jarvis.marketplace.certify routes to wrong endpoint on rejection
...
The backend has two separate endpoints:
POST /marketplace/admin/:id/approve
POST /marketplace/admin/:id/reject
Previously jarvisMarketplaceCertify always called /approve regardless of
the decision field — rejections would silently approve listings.
Fix: derive action from decision.decision ('approved' → 'approve', else 'reject')
and use the correct endpoint path.
2026-03-05 14:06:19 -08:00
saravanakumardb1
f70001de74
fix(mcp-server): audit fixes — 3 bugs + 2 new tools
...
Bug fixes:
- lysnrai: add lysnrai.sessions.get tool (GET /sessions/:id existed but had no MCP surface)
- nomgap: add nomgap.autophagyConfidence tool (POST /fasting/autophagy-confidence had no tool)
- chronomind: fix syncStatus description 'paused' -> 'pending' (wrong field name)
New client functions: lysnraiSessionGet, nomgapAutophagyConfidence (with typed interfaces)
Root bug fixed in learning_voice_ai_agent commit 42aa931:
GET /transcripts/:id was missing from backend — lysnrai.transcripts.get was always 404-ing
2026-03-05 14:05:03 -08:00
saravanakumardb1
0f57a48168
feat(mcp-server): add 19 platform ops tools — flags.*, jobs.*, maintenance.*, settings.*, webhooks.*
...
flags (5): list, get, upsert (create-or-update), delete, killSwitch
jobs (4): list, get, trigger, listRuns
maintenance (3): getCurrent (admin full), set, scheduleWindow
settings (3): get, update, checkKillSwitch
webhooks (7): listSubscriptions, create, get, update, delete, listDeliveries, test, rotateSecret
All backed by existing platform-service endpoints — no new backend changes.
MCP server now has 84 tools across 16 namespaces.
2026-03-05 13:46:15 -08:00
saravanakumardb1
33dd530d5f
feat(mcp-server): add tracker.* namespace — 13 tools for items, votes, comments, public roadmap
...
- tracker-client functions appended to platform-client.ts (tracker is part of platform-service)
- tracker.items.{stats,list,get,create,updateStatus,delete}
- tracker.votes.{toggle,list}
- tracker.comments.{list,add,delete}
- tracker.public.{roadmap,stats}
- All 13 tools require admin role; productId forwarded as x-product-id
2026-03-05 13:36:55 -08:00
saravanakumardb1
481760fba1
feat(mcp-server): fill DOMAIN_PRODUCTS.md tool gaps — +17 tools across 6 products
...
- mindlyst: +memory.get (single item with full TriageResult)
- lysnrai: +transcripts.get, +orgs.get
- jarvis: +agents.create, +marketplace.listPending/certify/suspend/feature
- chronomind: +timers.create, +households.list
- nomgap: +protocols.list, +bodyStages.list
- peakpulse: +sessions.get
2026-03-05 13:15:22 -08:00
saravanakumardb1
c9022665d6
fix(mcp-server): add /api prefix to all product backend clients (critical — all routes 404 without it)
2026-03-05 13:10:08 -08:00
saravanakumardb1
fcb3befa23
feat(mcp-server): Phase 3 — product namespaces for ChronoMind, NomGap, PeakPulse (13 more tools)
2026-03-05 13:05:03 -08:00
saravanakumardb1
f780f0b409
feat(mcp-server): Phase 3 — product namespaces for MindLyst, LysnrAI, JarvisJr (22 new tools)
2026-03-05 13:01:05 -08:00
saravanakumardb1
852cb18a5c
refactor(mcp-server): replace redundant CreatedSession local interface with imported DebugSession in diagnostics-orchestrator
2026-03-05 12:40:06 -08:00
saravanakumardb1
00b0555c97
fix(fastify-core,mcp-server): add logLevel to ServiceAppOptions and wire config.LOG_LEVEL so log verbosity is actually honoured at runtime
2026-03-05 12:38:09 -08:00
saravanakumardb1
44800ed36b
fix(mcp-server): correct stale port comment 4006→4007 in server.ts; document CORS_ORIGIN and query limit vars in .env.example
2026-03-05 12:36:26 -08:00
saravanakumardb1
3e37b3d5a0
fix(mcp-server): handle ZodDefault in zodToJsonSchema so boolean/object fields with defaults emit correct JSON Schema types; clean up inline import in debug-pack
2026-03-05 12:35:27 -08:00
saravanakumardb1
c04c78aff4
fix(mcp-server): fix debug-pack cluster rendering to use correct field names, tighten TelemetryCluster type; fix test mock to include all required fields
2026-03-05 12:33:43 -08:00
saravanakumardb1
6cee9c20af
fix(mcp-server): correct TelemetryCluster type, remove productId QS dead code from telemetryClusters, remove redundant extend() in pipeline-tool
2026-03-05 12:32:34 -08:00
saravanakumardb1
0f044830fa
feat(mcp-server): Phase 2 A2A orchestration — DispatcherAgent, TelemetryAnalystAgent, DiagnosticsOrchestratorAgent, ReportWriterAgent, runIncidentPipeline runner + support.runIncidentPipeline MCP tool (10 tests)
2026-03-05 12:23:53 -08:00
saravanakumardb1
d1d643f782
feat(mcp-server): Milestone B — telemetry policy CRUD, cluster status, diagnostics cancel, extraction sidecar health; enforce expiresAt on createPolicy
2026-03-05 12:17:15 -08:00
saravanakumardb1
26d3403d5a
fix(mcp-server): zodToJsonSchema emits correct JSON type for number/boolean/array fields (was always string)
2026-03-05 12:09:38 -08:00
saravanakumardb1
22ad88dd13
fix(mcp-server): Dockerfile — copy all 33 workspace package.json files for complete pnpm --frozen-lockfile resolution
2026-03-05 12:07:03 -08:00
saravanakumardb1
9a298d50ef
fix(mcp-server): add missing jose + @fastify/cors deps; use ServiceError subclasses for 401/403; remove swagger option that crashed startup; add AbortSignal.timeout to platformFetch
2026-03-05 12:06:54 -08:00
saravanakumardb1
3bc8e0e14c
fix(mcp-server): move default port 4006 → 4007 (conflict with extraction-service Python sidecar); add Dockerfile + docker-compose service + CI workflow
2026-03-05 11:56:35 -08:00
saravanakumardb1
027e2163a0
feat(mcp-server): scaffold @bytelyst/mcp-server on port 4006 with 10 tools across 4 namespaces
...
- platform.telemetry.{query,clusters,metrics}
- platform.diagnostics.sessions.{list,create,get,update,getLogs,getTraces}
- extraction.{run,models,cacheStats}
- support.createDebugPack (compound: clusters + optional diag session + markdown summary)
- Role-gated (viewer/admin/super_admin), JWT auth via platform-service secret
- Proxies to platform-service:4003 and extraction-service:4005
- 4 Vitest tests passing, tsc --noEmit clean
2026-03-05 11:47:08 -08:00
saravanakumardb1
a31fdfe55a
feat(predictive-analytics): complete admin UI for churn prediction and health scoring
...
- Add health-dashboard page with 6-dimension health cards and anomaly detection
- Add predictive/at-risk page with user risk profiles and segmentation
- Add predictive/campaigns page with campaign management and stats
- Add predictive-client.ts API client with full type coverage
- Update all 3 roadmaps to reflect complete implementation status
2026-03-03 13:48:37 -08:00
saravanakumardb1
dfeed4c10f
fix(diagnostics): add missing crypto import for randomUUID [BUG-5]
2026-03-03 12:27:03 -08:00
saravanakumardb1
8749aa211d
fix(feedback-client): update tests to use fetch instead of post
2026-03-03 12:26:02 -08:00
saravanakumardb1
7552b8c8e8
fix(diagnostics): remove unused updateSessionStats import [BUG-4]
2026-03-03 12:25:55 -08:00
saravanakumardb1
eb83b83035
fix(diagnostics): resolve FilterMap type error in performance-profile-repository [BUG-3]
2026-03-03 12:24:54 -08:00
saravanakumardb1
7714ab51fb
fix(events): add missing platform event schemas for campaign engine and notifications
2026-03-03 12:24:39 -08:00
saravanakumardb1
d80cf075a3
fix(diagnostics): add missing session_replays and performance_profiles cosmos containers [BUG-1]
2026-03-03 12:24:05 -08:00
saravanakumardb1
03cda3a74f
fix(platform-service): resolve type errors in diagnostics and ab-testing modules
2026-03-03 12:22:35 -08:00
saravanakumardb1
914e344a92
fix(feedback-client): correct ApiClient method usage and types
2026-03-03 12:20:43 -08:00
saravanakumardb1
05ad9dbedc
feat(diagnostics): Phase 4 - automated triggers, crash sessions, session replay, profiling [4.1][4.2][4.3][4.4]
2026-03-03 12:18:58 -08:00
saravanakumardb1
eab854375e
feat(ai-diagnostics): add proactive alerts API and complete [4.3]
2026-03-03 12:17:11 -08:00
saravanakumardb1
460ed6d0c0
feat(ai-diagnostics): add admin UI insights page [4.1]
2026-03-03 12:15:09 -08:00
saravanakumardb1
1cba69948f
feat(ai-diagnostics): add REST API routes [3.3]
2026-03-03 11:57:00 -08:00
saravanakumardb1
71cbb570ef
feat(ai-diagnostics): add query parser and executor [3.1-3.2]
2026-03-03 11:53:59 -08:00
saravanakumardb1
44fa045ec5
feat(ab-testing): AI hypothesis generation and admin dashboard UI [3.1][3.2][3.3][4.1][4.2][4.3]
2026-03-03 11:53:48 -08:00
saravanakumardb1
97b3ffb21d
feat(ai-diagnostics): add LLM analyzer with prompts and insight generation [2.1-2.2]
2026-03-03 11:52:12 -08:00
saravanakumardb1
1ff02934fa
feat(ai-diagnostics): add telemetry linking and context enrichment [1.3]
2026-03-03 11:50:28 -08:00
saravanakumardb1
8951ab2c92
feat(ai-diagnostics): add HDBSCAN clustering algorithm [1.2.3]
2026-03-03 11:49:05 -08:00
saravanakumardb1
783067e17d
feat(ab-testing): bucketing, statistics, guardrails, routes [1.2][2.1][2.2]
2026-03-03 11:48:50 -08:00
saravanakumardb1
917ea03af9
feat(ai-diagnostics): add vector search repository with cosmos integration [1.2.2]
2026-03-03 11:48:12 -08:00
saravanakumardb1
50b7e22985
feat(ai-diagnostics): add Azure OpenAI embedding pipeline [1.2.1]
2026-03-03 11:47:12 -08:00
saravanakumardb1
8cdddd7c23
feat(ai-diagnostics): implement error normalization and fingerprinting [1.1.3]
2026-03-03 11:45:52 -08:00
saravanakumardb1
a9b224749c
feat(ab-testing): add experiment types and cosmos containers [1.1]
2026-03-03 11:44:33 -08:00
saravanakumardb1
4de01269b5
feat(ai-diagnostics): add error clustering types and cosmos containers [1.1.1-1.1.2]
2026-03-03 11:44:23 -08:00
saravanakumardb1
fcbae17866
feat(platform-service): implement P0-1 - Module generator script (pnpm gen:module)
...
- Add gen-module.ts with full CLI interface
- Generate types.ts, repository.ts, routes.ts, and test.ts
- Support field types: string, number, boolean, date, datetime, enum, string[], number[]
- Add --dry-run flag for preview
- Register script in package.json
2026-03-03 10:05:55 -08:00
saravanakumardb1
8e90358960
feat(platform): PII Redaction library (Appendix D.1)
...
- 8 PII patterns: email, SSN, credit card, phone, IP, password/token, JWT, API key
- redactPII() for string redaction
- redactObject() for recursive object redaction
- redactLogMessage() for log entries with context
- containsPII() and getPIITypes() detection helpers
- Custom pattern registration
- Preset configurations: minimal, standard, aggressive
2026-03-03 09:37:53 -08:00
saravanakumardb1
3efdd97057
feat(broadcasts): Rich media support in backend types
...
- BroadcastMedia interface for image/video/gif/audio
- Extended BroadcastMetrics with media engagement tracking
- Updated CreateBroadcastSchema with media array validation
2026-03-03 08:36:00 -08:00
saravanakumardb1
30583a1768
feat(diagnostics): implement Phase 1.5 — event bus, audit, rate limiting
...
1.5.2 Event Bus: Add warn to noopLog, update comments
1.5.3 Audit: Already implemented in all handlers
1.5.4 Rate Limiting: Add diagnostics keys (10/hr, 12/min, 100/min)
Delivery Templates: Add 4 diagnostics email templates (ready for wiring)
Tests: Update count to 12 templates (was 8)
All 839 tests passing
2026-03-03 08:19:41 -08:00
saravanakumardb1
4bf18f4d4f
feat(platform-service): Phase 4.4 - Push notification wiring (FCM/APNS)
...
- push-notifications.ts: FCM and APNS delivery services
- Device token registration/management
- sendPushNotification() for bulk delivery
- Automatic token deactivation on APNS 410 responses
2026-03-03 08:05:21 -08:00
saravanakumardb1
8614e3f0f1
fix(feedback): address 6 bugs/gaps from systematic review
...
- Fix search icon positioning (add relative container)
- Fix toast variant from 'destructive' to 'error'
- Remove non-existent screenshotUrl fields from delete endpoint
- Fix misleading blob path comment (blob stays at initial location)
- Add download screenshot function and button
- Add pointer-events-none to search icon
2026-03-03 07:03:27 -08:00
saravanakumardb1
3ded5ad751
fix(diagnostics,test): fix flaky test and test configuration
...
- Add DB_PROVIDER=memory to vitest config for diagnostics tests
- Fix flaky timestamp comparison in 'should update a session' test
- Add 10ms delay between create and update
- Use toBeGreaterThanOrEqual instead of strict inequality
- All 17 diagnostics tests now pass
2026-03-03 00:01:20 -08:00
saravanakumardb1
fdaffdb13c
docs(feedback): fix 8 bugs/gaps identified in systematic review
...
- Fix inconsistent screenshotUrl fields (removed, SAS generated on-demand)
- Fix blob path pattern to match feedbackScreenshots container
- Clarify flow: direct upload to final container (no temp/move)
- Add rate limiting specs to endpoint table
- Clarify access control: users submit but cannot view (security)
- Remove sas.ts from appendix (not created)
- Align size limits to 5MB consistently
- Add missing screenshotContentType and screenshotSizeBytes
2026-03-03 00:00:14 -08:00
saravanakumardb1
6f9b799cc4
fix(jobs): add missing 'warn' method to logger type in runner.ts
...
The JobContext type requires log.warn but runner.ts loggers only
defined info/error. This caused TypeScript errors when passing log
to job handlers.
- Add warn: (...a: unknown[]) => void to startRunner log param
- Add warn: (...a: unknown[]) => void to tick log param
- Add warn: (...a: unknown[]) => void to executeJob log param
2026-03-02 23:57:21 -08:00
saravanakumardb1
e712968d3d
test(feedback): Phase 1.5 - add screenshot and deviceContext schema tests
2026-03-02 23:56:59 -08:00
saravanakumardb1
ecb9f67c99
fix(broadcasts): Fix percentage rollout bucketing logic
...
- Use userId only as seed instead of userId + percentage
- Prevents users from being re-bucketed when rollout % increases
- Ensures deterministic assignment for phased rollouts
2026-03-02 23:56:42 -08:00
saravanakumardb1
e4681fbbb2
fix(broadcasts): Fix metrics increment bug in updateBroadcastMetrics
...
- Change from merge pattern to explicit increment pattern
- Each metric field is properly incremented instead of overwritten
- Prevents race condition data loss
2026-03-02 23:56:09 -08:00
saravanakumardb1
cfbaa92539
feat(feedback): Phase 1.3 - add SAS endpoint and screenshot view/delete routes
2026-03-02 23:55:47 -08:00
saravanakumardb1
b5fb2b683b
fix(surveys): Create missing surveys module
...
- types.ts: Survey, Question, SurveyResponse, conditional logic, validation
- repository.ts: CRUD + analytics + CSV export with proper type casting
- routes.ts: Admin CRUD + public endpoints (13 routes)
Fixes missing module from Phase 1 implementation
2026-03-02 23:54:59 -08:00
saravanakumardb1
8d2ba9c1cc
feat(feedback): Phase 1.2 - extend repository with screenshot support and blob path generation
2026-03-02 23:52:57 -08:00
saravanakumardb1
acfbd7c9d7
feat(feedback): Phase 1.1 - add screenshot fields and deviceContext to FeedbackDoc
2026-03-02 23:52:18 -08:00
saravanakumardb1
1b11db3f6f
feat(broadcasts,surveys): Phase 1 complete - backend modules
...
- broadcasts/types.ts: Broadcast, BroadcastTarget, BroadcastMetrics, InAppMessage
- broadcasts/repository.ts: CRUD + delivery tracking + read receipts
- broadcasts/targeting.ts: evaluateTarget(), semver, FNV-1a hash
- broadcasts/routes.ts: Admin CRUD + public endpoints (14 routes)
- surveys/types.ts: Survey, Question, SurveyResponse, conditional logic
- surveys/repository.ts: CRUD + analytics + CSV export
- surveys/routes.ts: Admin CRUD + public endpoints (13 routes)
- cosmos-init.ts: 7 new containers with TTL policies
- server.ts: Register broadcastRoutes + surveyRoutes
Implements Phase 1 of platform_BROADCAST_SURVEY_ROADMAP.md
2026-03-02 23:51:23 -08:00
saravanakumardb1
6a23a02cd4
fix(diagnostics): BUG-4, BUG-5, BUG-7, BUG-8 - race condition, transactions, test isolation, auth validation
...
- BUG-4: Add optimistic concurrency control with retry to updateSessionStats
- BUG-5: Document transaction limitations in batch operations
- BUG-7: Fix test isolation with unique productIds per test run
- BUG-8: Add session ownership validation to ingest endpoints
2026-03-02 23:47:14 -08:00
saravanakumardb1
4ffb28d8d2
fix(diagnostics): BUG-3 - add authentication check to /diagnostics/config endpoint
2026-03-02 23:45:36 -08:00
saravanakumardb1
4cb8b499af
fix(diagnostics): BUG-1, BUG-2 - DRY violation - centralize generateId and buildPk in types.ts
2026-03-02 23:43:11 -08:00
saravanakumardb1
fb71981e53
test(diagnostics): add diagnostics.test.ts with 14+ tests for Phase 1
2026-03-02 23:38:21 -08:00
saravanakumardb1
d444a8dfea
feat(diagnostics): wire routes into server.ts
2026-03-02 23:37:34 -08:00
saravanakumardb1
a66a689d7d
feat(diagnostics): Phase 1 complete - types, repository, routes
...
- types.ts: Session, Trace, Log, Screenshot schemas with Zod validation
- repository.ts: CRUD operations with composite partition keys
- routes.ts: REST endpoints for session management and data ingest
TODOs for Phase 2:
- TODO-1: Event bus integration
- TODO-2: PII redaction implementation
- TODO-6: PII redaction in log ingest
- TODO-7: Fatal log alerting
- TODO-8: Blob SAS token generation
2026-03-02 23:36:59 -08:00
saravanakumardb1
f272a44bbe
feat(diagnostics): add repository.ts with session, trace, log, screenshot CRUD
2026-03-02 23:34:35 -08:00
saravanakumardb1
dea1521dd5
feat(diagnostics): add 4 Cosmos containers (sessions, traces, logs, screenshots) with TTL
2026-03-02 23:32:49 -08:00
saravanakumardb1
f51c352452
feat(diagnostics): add types.ts with session, trace, log, screenshot schemas
2026-03-02 23:32:27 -08:00
saravanakumardb1
038cf30aca
fix(jobs): implement stub job handlers with actual functionality
2026-03-02 10:19:15 -08:00
saravanakumardb1
41b32a840f
fix(extraction-service): export rate limit cleanup functions for graceful shutdown
2026-03-02 10:16:24 -08:00
saravanakumardb1
aeae62027f
fix(telemetry): remove redundant event.userId check in cluster affected users dedup
2026-03-02 10:13:47 -08:00
saravanakumardb1
e943f14608
fix(marketplace): prevent duplicate votes with vote tracking collection
...
- Add marketplace_votes container to cosmos-init.ts
- Add MarketplaceVoteDoc type and vote repository functions
- Fix vote endpoint to toggle votes (prevent unlimited voting)
- Fix listMyReports to filter by productId for data isolation
- Update report routes to pass productId to listMyReports
2026-03-02 10:12:33 -08:00
saravanakumardb1
770bc5ae51
feat(referrals): partition key migration to /referrerId with dual-write backfill
2026-03-02 10:04:57 -08:00
saravanakumardb1
3e05260a6f
feat(marketplace): generic template marketplace with listings, reviews, installs, certification
2026-03-02 10:02:54 -08:00
saravanakumardb1
ee9d4b358d
feat(cloud-agnostic): complete Sprints 4-6 — secrets consumer migration, @bytelyst/speech package, push verified
2026-03-02 09:46:24 -08:00
saravanakumardb1
7ca2139418
refactor(storage): migrate to storage abstraction
2026-03-02 09:07:33 -08:00
saravanakumardb1
5401fad419
refactor(platform-service): migrate webhooks/routes and migrations/runner from cosmos.js to datastore
2026-03-02 02:02:47 -08:00
saravanakumardb1
b69abf44c7
refactor(platform-service): migrate remaining 14 repositories to @bytelyst/datastore
...
Migrated modules: audit, auth, invitations, items, jobs, licenses,
maintenance, notifications, subscriptions, telemetry, tokens, usage,
waitlist, webhooks.
Updated 4 test files (notifications, subscriptions, tokens, usage) from
Cosmos SDK mocks to MemoryDatastoreProvider.
Zero cosmos.js imports remain in modules/. All 66 test files pass (746 tests).
2026-03-02 01:06:24 -08:00
saravanakumardb1
e355cb0c1b
feat(platform-service): migrate 7 more repositories to @bytelyst/datastore (exports, plans, status, sessions, referrals, ip-rules, delivery) — 753/753 tests pass
2026-03-02 00:54:55 -08:00