docs(mcp+a2a): product repo scan — concrete MCP tools + A2A agents per product
This commit is contained in:
parent
bf7769bdaa
commit
ca8e2be1f6
@ -1,80 +1,348 @@
|
||||
# Domain — Product Repos (MCP + A2A Opportunities)
|
||||
|
||||
This document captures product-specific “where MCP/A2A helps” patterns, without duplicating each product’s full architecture docs.
|
||||
This document captures **concrete, code-grounded** MCP/A2A touchpoints per product.
|
||||
Each section lists what exists today (real files/APIs) and where MCP tools or A2A agents add leverage.
|
||||
|
||||
## Cross-product recurring needs
|
||||
---
|
||||
|
||||
- Debugging: telemetry clusters + remote diagnostics sessions
|
||||
- Platform controls: kill switch, feature flags, maintenance
|
||||
- Content intelligence: extraction tasks
|
||||
- Release readiness: build/test/typecheck workflows
|
||||
## Cross-product baseline (all 6 products)
|
||||
|
||||
Every product already wires these platform-service capabilities:
|
||||
|
||||
| Capability | Client module | Status |
|
||||
| ------------------ | -------------------------------------------- | ------------------------------------ |
|
||||
| Telemetry events | `@bytelyst/telemetry-client` | ✅ Live in all 6 |
|
||||
| Feature flags | `/api/flags/poll` | ✅ Live in web/RN/iOS/Android |
|
||||
| Kill switch | `@bytelyst/kill-switch-client` | ✅ Live in NomGap, LysnrAI, JarvisJr |
|
||||
| Auth / JWT | `@bytelyst/auth-client` or platform wrappers | ✅ All products |
|
||||
| Remote diagnostics | `@bytelyst/diagnostics-client` | ⬜ Not yet wired in product apps |
|
||||
| Extraction service | `@bytelyst/extraction` | ✅ MindLyst + LysnrAI (partial) |
|
||||
|
||||
**Biggest common gap:** `@bytelyst/diagnostics-client` is not initialised in any product app yet. Adding it is the cheapest per-product MCP win — enables SupportTriageAgent to start remote debug sessions from a single MCP tool call.
|
||||
|
||||
---
|
||||
|
||||
## ChronoMind (`learning_ai_clock`)
|
||||
|
||||
- **Opportunities**
|
||||
- Telemetry-driven quality tracking for timer engine + NL parsing.
|
||||
- A2A “routine regression” agent: detect changes that affect scheduling.
|
||||
- **MCP hooks**
|
||||
- telemetry tools for PWA
|
||||
- platform-service jobs/webhooks for timer sharing integrations
|
||||
### What exists today
|
||||
|
||||
**`web/src/lib/`** (scanned):
|
||||
|
||||
- `telemetry.ts` — `@bytelyst/telemetry-client`, productId `chronomind`, tracks timer events
|
||||
- `feature-flags.ts` — polls `/api/flags/poll`, 5-min interval, flags: `routines_enabled`, `focus_mode_enabled`, `calendar_import_enabled`, `cloud_sync_enabled`
|
||||
- `platform-sync.ts` — offline queue + conflict detection for timers + routines (batch sync DTOs with `syncVersion`)
|
||||
- `nl-parser.ts` (13 KB) — full natural-language → timer parsing engine (local, no LLM)
|
||||
- `adaptive-snooze.ts` — learns snooze patterns per-user
|
||||
- `billing-client.ts`, `auth-api.ts`, `use-sync.ts`
|
||||
|
||||
**Backend modules** (`backend/src/modules/`):
|
||||
`timers/`, `routines/`, `shared-timers/`, `households/`, `webhooks/`
|
||||
|
||||
### MCP tools
|
||||
|
||||
```
|
||||
chronomind.timers.list(userId)
|
||||
chronomind.timers.create(input)
|
||||
chronomind.timers.delete(id)
|
||||
chronomind.routines.list(userId)
|
||||
chronomind.routines.validate(routineId) ← verify no step duration overflow
|
||||
chronomind.sharedTimers.share(timerId, targets)
|
||||
chronomind.households.listMembers(householdId)
|
||||
chronomind.syncStatus(userId) ← returns offline queue depth + last sync
|
||||
```
|
||||
|
||||
### A2A agents
|
||||
|
||||
- **NLParserEvalAgent**: submits sample phrases to `nl-parser.ts` (or its extraction task equivalent), validates parsed timer fields, flags regressions after engine changes.
|
||||
- **SyncConflictDiagnosticsAgent**: monitors `telemetry` for `sync_conflict` events → auto-starts a diagnostics session targeting the affected user; collects logs and generates a conflict report.
|
||||
- **RoutineQualityAgent**: runs routine templates against the scheduler engine; flags routines that exceed household sleep time, overlap with calendar events, or have zero completion rates.
|
||||
- **CalendarImportAgent**: automates `.ics` ingest + validation + conflict detection on import.
|
||||
|
||||
### Highest-ROI first
|
||||
|
||||
1. Add `@bytelyst/diagnostics-client` init to `web/src/app/layout.tsx` (unlocks SupportTriageAgent)
|
||||
2. Create `nl-timer-parse` extraction task (moves NL parsing to server-side model, enables eval loop)
|
||||
3. `chronomind.syncStatus` MCP tool (direct ops value for support)
|
||||
|
||||
---
|
||||
|
||||
## NomGap (`learning_ai_fastgap`)
|
||||
|
||||
- **Opportunities**
|
||||
- React Native offline-first flows map well onto offline queue + platform-client.
|
||||
- A2A “protocol tuning” agent: uses telemetry + extraction to correlate adherence patterns.
|
||||
- **MCP hooks**
|
||||
- telemetry + kill switch clients already exist; MCP can standardize their usage.
|
||||
### What exists today
|
||||
|
||||
**`src/api/`** (scanned):
|
||||
|
||||
- `fasting-api.ts` — sessions CRUD, `getUserStats()`, `getWeeklyStats()`
|
||||
- `push-api.ts` — 7 typed trigger functions: `fireStreakRisk`, `fireFastMilestone`, `fireStageTransition`, `fireSocialInvite`, `fireWeeklyDigest`, `fireAchievementUnlocked`, `fireRefeedingReminder`
|
||||
- `social-api.ts`, `meal-api.ts`, `blob-api.ts`, `billing-api.ts`
|
||||
|
||||
**`src/lib/`** (scanned):
|
||||
|
||||
- `telemetry.ts` — `@bytelyst/telemetry-client`, MMKV-backed storage for `installId`, mobile/RN transport
|
||||
- `kill-switch.ts` — `@bytelyst/kill-switch-client`, fail-open
|
||||
- `feature-flags.ts` — delegated to `@bytelyst/feature-flag-client`
|
||||
|
||||
**Backend modules**: `fasting-sessions/`, `fasting-protocols/`, `body-stages/`, `meal-log/`, `push-triggers/`, `social-fasting/`
|
||||
|
||||
### MCP tools
|
||||
|
||||
```
|
||||
nomgap.fasting.createSession(userId, protocolId)
|
||||
nomgap.fasting.getSession(id)
|
||||
nomgap.fasting.getUserStats(userId) ← streak, longestFast, completionRate
|
||||
nomgap.fasting.getWeeklyStats(userId)
|
||||
nomgap.push.fire(type, userId, variables?) ← wraps all 7 trigger types
|
||||
nomgap.protocols.list()
|
||||
nomgap.protocols.get(id)
|
||||
nomgap.bodyStages.list() ← stage thresholds + descriptions
|
||||
nomgap.social.listGroupFasts(userId)
|
||||
```
|
||||
|
||||
### A2A agents
|
||||
|
||||
- **EngagementAgent**: monitors `streak_risk` signals from telemetry → calls `nomgap.push.fire('streak_risk', userId)` proactively; escalates to `weekly_digest` if streak drops to zero.
|
||||
- **SafetyMonitorAgent**: watches for fasts approaching 48 h threshold → fires `refeeding_reminder` at 24 h, 48 h (safety-critical). Can be A2A-chained from the `ExtendedFastDetectionAgent`.
|
||||
- **SocialFastCoordinatorAgent**: when a user creates a group fast, A2A: notify all members (`fireSocialInvite`), schedule milestone push at each stage transition, send `weekly_digest` summary.
|
||||
- **ProtocolTuningAgent**: uses telemetry completion-rate data + extraction to identify which protocol parameters correlate with abandonment; proposes protocol adjustments.
|
||||
|
||||
### Highest-ROI first
|
||||
|
||||
1. `nomgap.push.fire` MCP tool (directly replaces manual push management)
|
||||
2. SafetyMonitorAgent (safety-critical, high product trust)
|
||||
3. `@bytelyst/diagnostics-client` init in `App/_layout.tsx` (NomGap-specific: captures stage transition failures)
|
||||
|
||||
---
|
||||
|
||||
## PeakPulse (`learning_ai_peakpulse`)
|
||||
|
||||
- **Opportunities**
|
||||
- Sync reliability: a diagnostics session targeted at a user’s device can capture network failures.
|
||||
- A2A “safety alerts correctness” agent using telemetry to validate thresholds.
|
||||
- **MCP hooks**
|
||||
- platform-service telemetry/diagnostics
|
||||
- product backend endpoints for session uploads (via sync engine)
|
||||
### What exists today
|
||||
|
||||
## MindLyst (`learning_multimodal_memory_agents`)
|
||||
**Backend modules** (scanned):
|
||||
|
||||
- **Opportunities**
|
||||
- Extraction-service is core to triage and insight enrichment; prompt/task iteration loop is high ROI.
|
||||
- A2A “triage regression” agent that runs eval suites.
|
||||
- **MCP hooks**
|
||||
- extraction tools
|
||||
- telemetry for web + native apps
|
||||
- `peak-sessions/` — `PeakSessionDoc`: activityType (`hiking`|`skiing`), GPS `TrackPointDoc[]` (lat/lon/alt/speed/accuracy), `HapticEventDoc[]`, `WeatherSnapshotDoc` (temp, wind, UV), `SkiMetricsDoc` (runCount, verticalDescent, liftTime), `locationName`, `barometerUsed`, `unitPreference`
|
||||
- `peak-routes/` — route documents
|
||||
|
||||
**iOS Platform/** (scanned):
|
||||
|
||||
- `PlatformSyncManager.swift` — `BLSyncEngine` wrapper; uploads sessions, downloads, handles 401 token refresh
|
||||
- `TelemetryService.swift` — `BLTelemetryClient` wrapper; tracks session events + milestones + errors
|
||||
- `AuthService.swift`, `FeatureFlagService.swift`, `KillSwitchService.swift`, `KeychainHelper.swift`
|
||||
|
||||
### MCP tools
|
||||
|
||||
```
|
||||
peakpulse.sessions.list(userId, activityType?)
|
||||
peakpulse.sessions.get(sessionId)
|
||||
peakpulse.sessions.export(sessionId, format) ← GPX or JSON
|
||||
peakpulse.routes.list(userId)
|
||||
peakpulse.routes.get(routeId)
|
||||
peakpulse.syncStatus(userId) ← upload queue depth + last sync
|
||||
peakpulse.weather.getSnapshot(sessionId) ← WeatherSnapshotDoc for a session
|
||||
```
|
||||
|
||||
### A2A agents
|
||||
|
||||
- **RouteSafetyAssessmentAgent**: given a completed session's GPS track + `WeatherSnapshotDoc`, calls extraction service for risk assessment (elevation gain + UV + wind), produces a safety brief.
|
||||
- **SyncDiagnosticsAgent**: when `sync_upload_failed` telemetry event is detected → starts a diagnostics session targeting that device; collects network traces during next sync attempt.
|
||||
- **GoalCoachingAgent**: queries `GoalsEngine` data + session history; proposes next goal based on performance trends.
|
||||
- **SkiRunAnalystAgent**: given `SkiMetricsDoc` (runCount, verticalDescent, liftTime, skiTime), identifies run quality trends across sessions; flags anomalies (e.g., sudden speed drop on a known run).
|
||||
|
||||
### Highest-ROI first
|
||||
|
||||
1. `peakpulse.sessions.export` MCP tool (most-requested feature: share route)
|
||||
2. SyncDiagnosticsAgent (sync reliability is the top iOS support ticket type for GPS apps)
|
||||
3. RouteSafetyAssessmentAgent (extraction service, no new infra required)
|
||||
|
||||
---
|
||||
|
||||
## JarvisJr (`learning_ai_jarvis_jr`)
|
||||
|
||||
- **Opportunities**
|
||||
- Multi-agent product: A2A patterns can be applied to its own internal coaching “crew”.
|
||||
- Marketplace + certification workflows can be agent-automated.
|
||||
- **MCP hooks**
|
||||
- platform-service for auth/telemetry
|
||||
- product backend for marketplace modules
|
||||
### What exists today (this product IS a multi-agent platform)
|
||||
|
||||
**`web/src/lib/`** (scanned):
|
||||
|
||||
- `agent-client.ts` — `listAgents`, `getAgent`, `createAgent`, `updateAgent`, `deleteAgent`, `duplicateAgent`
|
||||
- `session-client.ts` — `SessionRecord` includes `transcript`, `summary`, `coachingNotes[]`, `exercises[]`, `skillMetrics: Record<string, number>`, `getSessionStats()`
|
||||
- `marketplace-client.ts` — full lifecycle: `browseCatalog`, `getListingDetail`, `installListing`, `uninstallListing`, `listInstalled`, `addReview`, `createListing`, `listMyListings`, `submitForReview`
|
||||
|
||||
**Backend modules** (scanned):
|
||||
|
||||
- `jarvis-agents/` — `AgentConfig` (systemPrompt, voiceId, coachingFramework, accentColor, difficultyLevel, privacyLevel, checkInSchedule)
|
||||
- `jarvis-sessions/` — session with transcript + coaching artefacts
|
||||
- `jarvis-memory/` — `JarvisMemoryDoc` with `type` (skill_note/preference/goal/context/exercise), `importance: 0–1`, `expiresAt`
|
||||
- `jarvis-teams/` — enterprise team management
|
||||
- `marketplace/` — `ListingDoc` (status: draft→pending→published→suspended, `isVerified`, cert statuses: pending/approved/rejected)
|
||||
|
||||
**iOS Shared/Engine/** (5 files):
|
||||
SessionEngine, PromptBuilder, ArtifactExtractor, MemoryManager, (+ 1 more)
|
||||
|
||||
**iOS Shared/Voice/** (3 files):
|
||||
VoiceSessionManager, AudioSessionHelper, VAD
|
||||
|
||||
### MCP tools
|
||||
|
||||
```
|
||||
jarvis.agents.list(userId)
|
||||
jarvis.agents.create(config)
|
||||
jarvis.agents.duplicate(agentId)
|
||||
jarvis.sessions.list(userId, agentId?)
|
||||
jarvis.sessions.getStats(userId) ← totalSessions, streak, perAgent
|
||||
jarvis.memory.list(agentId, type?, minImportance?)
|
||||
jarvis.memory.create(agentId, sessionId, type, content, importance)
|
||||
jarvis.memory.prune(agentId, maxItems, minImportance) ← memory hygiene
|
||||
jarvis.marketplace.listPending() ← admin: listings awaiting review
|
||||
jarvis.marketplace.certify(listingId)
|
||||
jarvis.marketplace.suspend(listingId, reason)
|
||||
jarvis.marketplace.feature(listingId, featured)
|
||||
jarvis.teams.listMembers(teamId)
|
||||
```
|
||||
|
||||
### A2A agents
|
||||
|
||||
This product's own coaching "crew" maps naturally to A2A:
|
||||
|
||||
- **MarketplaceCertificationPipeline** (A2A workflow):
|
||||
1. `SubmissionIngestionAgent` — ingests listing draft, validates required fields (systemPrompt, coachingFramework, category, tags).
|
||||
2. `ContentSafetyAgent` — checks systemPrompt + description for policy violations via extraction.
|
||||
3. `QualityEvalAgent` — runs a sample session against the agent config, evaluates coherence.
|
||||
4. `CertificationDecisionAgent` — aggregates results, sets `isVerified`, notifies author.
|
||||
- **MemoryCurationAgent**: periodically queries agent memories with `minImportance < 0.3`, decays or expires stale entries, promotes high-importance items.
|
||||
- **ProgressAnalystAgent**: given `skillMetrics` across N sessions, identifies plateaus, recommends difficulty level changes or supplementary agents.
|
||||
- **TeamProvisioningAgent**: when a new `jarvis-teams` member joins, A2A: recommends starter agents, seeds initial memories, schedules first check-in.
|
||||
|
||||
### Highest-ROI first
|
||||
|
||||
1. `MarketplaceCertificationPipeline` A2A workflow (core product need, no manual cert process exists today)
|
||||
2. `jarvis.memory.prune` MCP tool (memory hygiene is critical at scale)
|
||||
3. `ProgressAnalystAgent` (directly enhances coaching value prop)
|
||||
|
||||
---
|
||||
|
||||
## MindLyst (`learning_multimodal_memory_agents`)
|
||||
|
||||
### What exists today
|
||||
|
||||
**`web/src/lib/`** (scanned):
|
||||
|
||||
- `extraction-client.ts` — **three live task IDs**: `triage`, `memory-insight`, `reflection-enrichment` — backed by extraction-service
|
||||
- `telemetry.ts` — `@bytelyst/telemetry-client`, web/beacon, productId `mindlyst`
|
||||
- `feature-flags.ts`, `billing-client.ts`, `cosmos.ts` (direct Cosmos in web)
|
||||
|
||||
**Backend modules** (scanned):
|
||||
|
||||
- `memory/` — `MemoryItemDoc` with `TriageResult` (contentType, urgencyScore 0–1, emotionScore −1–+1, confidenceScore 0–1, suggestedBrainId, entities[], suggestedActions[]), sourceType (voice/image/link/email/text), captureSurface (app/widget/share_sheet/siri/email/web/notification_reply), blob media refs (audio + image)
|
||||
- `brains/` — role-based "Brain" CRUD
|
||||
- `reflections/` — reflection journal entries
|
||||
- `daily-briefs/` — `DailyBriefDoc`: greeting, priorityItems[], brainSummaries (brainId → summary text), streakMessage, motivationalQuote
|
||||
- `streaks/` — engagement streak tracking
|
||||
|
||||
### MCP tools
|
||||
|
||||
```
|
||||
mindlyst.memory.list(userId, brainId?, filter?) ← filter: forgotten | completed_today
|
||||
mindlyst.memory.get(itemId)
|
||||
mindlyst.memory.getTriageResult(itemId) ← TriageResult with all scores
|
||||
mindlyst.memory.retriage(itemId) ← re-run extraction on stale triage
|
||||
mindlyst.brains.list(userId)
|
||||
mindlyst.briefs.generate(userId, date) ← trigger daily-brief generation
|
||||
mindlyst.briefs.get(userId, date)
|
||||
mindlyst.streaks.get(userId)
|
||||
mindlyst.extractions.run(taskId, text) ← direct extraction (all 3 task IDs)
|
||||
```
|
||||
|
||||
### A2A agents
|
||||
|
||||
- **DailyBriefGenerationPipeline** (A2A workflow):
|
||||
1. `MemoryCollectorAgent` — queries recent memory items per brain, ranked by urgencyScore.
|
||||
2. `SummaryAgent` — calls `extraction.extract(text, 'memory-insight')` per brain.
|
||||
3. `BriefComposerAgent` — assembles DailyBriefDoc (greeting + priorityItems + brainSummaries).
|
||||
4. `DeliveryAgent` — stores brief + triggers push notification.
|
||||
- **TriageQualityAgent**: queries memory items with `confidenceScore < 0.5`, re-runs extraction, proposes updated brain routing.
|
||||
- **BrainOverflowAgent**: detects brains with >N items, no completions in T days → suggests archiving or reassignment.
|
||||
- **ReflectionSynthesisAgent**: given recent reflections, runs `reflection-enrichment` extraction, surfaces themes and proposes weekly summary.
|
||||
|
||||
### Highest-ROI first
|
||||
|
||||
1. `DailyBriefGenerationPipeline` A2A workflow (the core "morning brief" product feature IS this pipeline)
|
||||
2. `TriageQualityAgent` (confidenceScore is already persisted; agent needs only a query + retriage call)
|
||||
3. `mindlyst.memory.retriage` MCP tool (single tool, high product impact)
|
||||
|
||||
---
|
||||
|
||||
## LysnrAI (`learning_voice_ai_agent`)
|
||||
|
||||
- **Opportunities**
|
||||
- Support/debug workflows are already telemetry-heavy (keyboard + desktop).
|
||||
- A2A “keyboard bug triage” agent that starts diagnostics sessions + drafts fixes.
|
||||
- **MCP hooks**
|
||||
- platform-service telemetry/diagnostics
|
||||
- admin dashboard tooling
|
||||
### What exists today
|
||||
|
||||
## Product-specific MCP server (optional)
|
||||
**Backend modules** (scanned):
|
||||
|
||||
For each product, you can optionally add a small MCP namespace that calls the product backend (`backend/` in each repo) for domain actions.
|
||||
- `transcripts/` — `TranscriptDoc`: rawText, cleanedText, wordCount, duration, tokensUsed, context, source, `extractions[]`, `extractionMetadata`, `extractedAt` ← extraction pipeline is **partially wired** (fields exist, not always populated)
|
||||
- `sessions/` — dictation session lifecycle
|
||||
- `organizations/` — team/org management
|
||||
- `api-tokens/` — API token CRUD
|
||||
- `themes/` — UI theme management
|
||||
- `export/` — data export module
|
||||
- `webhooks/` — webhook subscriptions
|
||||
|
||||
Examples:
|
||||
**`src/audio/`** (scanned):
|
||||
|
||||
- ChronoMind: `timers.list/create`, `routines.run/validate`
|
||||
- PeakPulse: `sessions.upload`, `routes.export`
|
||||
- JarvisJr: `agents.list/publish`, `marketplace.certify`
|
||||
- `stt_router.py` — connectivity-aware STT router: Azure Speech SDK (online) / local Whisper (offline) automatic fallback
|
||||
- `azure_stt.py` — Azure Speech SDK integration
|
||||
|
||||
## Recommended first A2A workflows to ship per product
|
||||
**`src/llm/`** (scanned):
|
||||
|
||||
- **All products**: Support Debug Pack (telemetry + diagnostics)
|
||||
- **MindLyst**: Extraction task design + eval loop
|
||||
- **JarvisJr**: Marketplace certification assistant
|
||||
- **NomGap**: Offline queue flush assistant / sync reliability assistant
|
||||
- `llm_factory.py` — cloud-agnostic factory: `create_llm_client()` returns `openai.OpenAI` or `openai.AzureOpenAI` depending on `LLM_PROVIDER` env var / endpoint URL auto-detection
|
||||
|
||||
**`src/cloud/`**: `blob_client.py`, `telemetry.py`, `crash_reporter.py`, `api_sync.py`, `cosmos_client.py`
|
||||
|
||||
### MCP tools
|
||||
|
||||
```
|
||||
lysnrai.transcripts.list(userId, limit?, after?)
|
||||
lysnrai.transcripts.get(id)
|
||||
lysnrai.transcripts.runExtraction(id) ← populate extractions[] field
|
||||
lysnrai.transcripts.exportBatch(userId, format) ← JSON / TXT via export module
|
||||
lysnrai.sessions.stats(userId)
|
||||
lysnrai.orgs.list()
|
||||
lysnrai.orgs.get(orgId)
|
||||
lysnrai.apiTokens.list(userId)
|
||||
lysnrai.apiTokens.rotate(tokenId)
|
||||
lysnrai.stt.getBackendStatus() ← online (Azure) vs offline (Whisper)
|
||||
```
|
||||
|
||||
### A2A agents
|
||||
|
||||
- **KeyboardDiagnosticsAgent**: monitors `error` telemetry events from iOS keyboard extension → auto-creates a targeted diagnostics session for that `anonymousInstallId`; collects logs until the error reproduces; drafts a bug report.
|
||||
- **TranscriptExtractionPipelineAgent**: queries transcripts where `extractedAt IS NULL` → calls extraction service for each → updates `extractions[]` + `extractionMetadata` in batch. (Fills the existing schema fields that today often remain empty.)
|
||||
- **STTFallbackMonitorAgent**: watches telemetry for `stt_provider=whisper` events (offline fallback) vs expected Azure events; if offline rate exceeds threshold → triggers a diagnostics session to capture network state.
|
||||
- **OrgProvisioningAgent**: when a new org is created (webhook event) → A2A: create default API token, apply default theme, seed initial users.
|
||||
|
||||
### Highest-ROI first
|
||||
|
||||
1. `TranscriptExtractionPipelineAgent` (the extraction fields already exist in schema — just need the pipeline to run)
|
||||
2. `KeyboardDiagnosticsAgent` (keyboard errors are the #1 LysnrAI support surface — very high ROI)
|
||||
3. `lysnrai.stt.getBackendStatus` MCP tool (instant ops visibility, one endpoint to add)
|
||||
|
||||
---
|
||||
|
||||
## Recommended first A2A workflows to ship (re-prioritised)
|
||||
|
||||
| Priority | Product | Workflow | Why first |
|
||||
| -------- | ---------- | ------------------------------------------------- | --------------------------------------------------------- |
|
||||
| 1 | All | SupportTriageAgent + DiagnosticsOrchestratorAgent | Zero per-product code; needs only diagnostics-client init |
|
||||
| 2 | MindLyst | DailyBriefGenerationPipeline | Core product feature; extraction already live |
|
||||
| 3 | LysnrAI | TranscriptExtractionPipelineAgent | Schema ready; fills real user-facing gap |
|
||||
| 4 | JarvisJr | MarketplaceCertificationPipeline | Blocks marketplace launch; no manual process exists |
|
||||
| 5 | NomGap | SafetyMonitorAgent | Safety-critical; push trigger API ready |
|
||||
| 6 | ChronoMind | SyncConflictDiagnosticsAgent | Sync conflicts are top ChronoMind support ticket |
|
||||
| 7 | PeakPulse | RouteSafetyAssessmentAgent | Extraction + GPS data; new UX capability |
|
||||
|
||||
## Product-specific MCP namespace summary
|
||||
|
||||
| Product | Backend port | Key namespaces |
|
||||
| ---------- | ------------ | ---------------------------------------------------------------------------------------------- |
|
||||
| ChronoMind | 4011 | `chronomind.timers`, `chronomind.routines`, `chronomind.sharedTimers`, `chronomind.households` |
|
||||
| NomGap | 4013 | `nomgap.fasting`, `nomgap.push`, `nomgap.protocols`, `nomgap.social` |
|
||||
| PeakPulse | 4010 | `peakpulse.sessions`, `peakpulse.routes`, `peakpulse.weather` |
|
||||
| JarvisJr | 4012 | `jarvis.agents`, `jarvis.sessions`, `jarvis.memory`, `jarvis.marketplace`, `jarvis.teams` |
|
||||
| MindLyst | 4014 | `mindlyst.memory`, `mindlyst.brains`, `mindlyst.briefs`, `mindlyst.extractions` |
|
||||
| LysnrAI | 4015 | `lysnrai.transcripts`, `lysnrai.sessions`, `lysnrai.orgs`, `lysnrai.apiTokens`, `lysnrai.stt` |
|
||||
|
||||
@ -161,6 +161,34 @@
|
||||
- **MCP tool**
|
||||
- `dev.generateTelemetryDataset(shape, size, seed)`
|
||||
|
||||
## Key findings from product code scan (2026-03-05)
|
||||
|
||||
See [`DOMAIN_PRODUCTS.md`](./DOMAIN_PRODUCTS.md) for the full per-product breakdown.
|
||||
|
||||
**Critical cross-product gap found:**
|
||||
|
||||
- `@bytelyst/diagnostics-client` is **not initialised in any of the 6 product apps**.
|
||||
- Adding it to each app's bootstrap is the cheapest MCP win: it immediately enables `SupportTriageAgent` to start remote debug sessions from a single tool call — no per-product code beyond a one-line init.
|
||||
|
||||
**Extraction pipeline gaps found:**
|
||||
|
||||
- **LysnrAI**: `TranscriptDoc.extractions[]` + `extractedAt` fields exist in schema but are **not reliably populated** — the extraction pipeline needs a backfill agent.
|
||||
- **ChronoMind**: `nl-parser.ts` is a local 13 KB rule engine — good candidate for an extraction task (`nl-timer-parse`) to enable server-side model improvement + eval loop.
|
||||
|
||||
**New P0 additions from scan:**
|
||||
|
||||
### 11) LysnrAI transcript extraction backfill
|
||||
|
||||
- **Why**: `TranscriptDoc` already has `extractions[]`, `extractionMetadata`, `extractedAt`. The fields are empty for most historical transcripts.
|
||||
- **MCP tool**: `lysnrai.transcripts.runExtraction(transcriptId)`
|
||||
- **A2A agent**: `TranscriptExtractionPipelineAgent` — batch queries `extractedAt IS NULL`, calls extraction-service, updates docs.
|
||||
|
||||
### 12) Diagnostics-client bootstrap for all product apps
|
||||
|
||||
- **Why**: Enables SupportTriageAgent for all 6 products with near-zero per-product work.
|
||||
- **Action**: Add `DiagnosticsClient.getInstance({...}).start()` in each app's layout/main bootstrap.
|
||||
- **Products**: ChronoMind (`web/src/app/layout.tsx`), NomGap (`src/app/_layout.tsx`), MindLyst (`mindlyst-native/web/src/app/layout.tsx`), JarvisJr (`web/src/app/layout.tsx`), LysnrAI (`user-dashboard-web/src/app/layout.tsx`), PeakPulse (iOS `PeakPulseApp.swift`).
|
||||
|
||||
## Cross-product patterns that MCP/A2A should standardize
|
||||
|
||||
- **Telemetry**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user