Commit Graph

31 Commits

Author SHA1 Message Date
saravanakumardb1
af605a6e7d fix(mcp): align ChronoMind type enums with actual backend schema
Fix 3 type mismatches in MCP chronomind-client.ts + chronomind-tools.ts:

1. TimerDoc.type: Remove non-existent 'event', keep 'countdown'|'alarm'|'pomodoro'
2. TimerDoc.state: Remove non-existent 'idle', add missing 'snoozed'|'dismissed'
3. RoutineDoc.status: Replace wrong 'idle'|'running' with actual
   'template'|'ready'|'active'|'cancelled'

Fix cascading usages:
- chronomind.timers.create tool: default state 'idle' → 'active'
- chronomind.timers.list tool: update type/state enum in Zod schema + description
- calendar-import-pipeline.ts: 'idle' → 'active' for imported timers

MCP server typecheck passes. No runtime behavior change for existing tools.
2026-03-31 23:57:24 -07:00
saravanakumardb1
efde14ba6e feat(mcp): Phase A.3 — 5 new ChronoMind MCP tools + client functions
Extend centralized MCP server with 5 new ChronoMind tools:

- chronomind.timers.reschedule — shift timer by delta or set new target time
- chronomind.timers.availability — find free time slots in a window
- chronomind.routines.start — start a routine from ready/template status
- chronomind.agentActions.list — list agent action audit trail
- chronomind.agentActions.approve — approve a proposed agent action

Client functions added to chronomind-client.ts:
- chronomindTimerReschedule, chronomindTimerAvailability, chronomindRoutineStart
- chronomindAgentActionCreate, chronomindAgentActionsList, chronomindAgentActionApprove

Write tools (reschedule, routines.start) record agent actions for audit trail.
Audit recording is fail-open — failures don't block the actual operation.

MCP server typecheck passes. No breaking changes to existing tools.
2026-03-31 23:41:43 -07:00
58c47a751a fix(mcp-server): pass workspaceId to notelett note get/update/delete/summarize tools
Backend requires workspaceId query param on single-note endpoints.
Updated client functions and tool schemas accordingly.

Made-with: Cursor
2026-03-29 22:10:03 -07:00
6997dff8d9 feat(mcp-server): register NoteLett tools (notes, workspaces, tasks, artifacts, summarize)
Adds notelett-client.ts HTTP wrapper, notelett-tools.ts with 10 MCP tool registrations,
and NOTELETT_BACKEND_URL config entry.

Made-with: Cursor
2026-03-29 20:57:16 -07: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
daec38faf7 feat(a2a): persist incident pipeline runs 2026-03-15 05:58:15 +00:00
saravanakumardb1
ec3dd4bd66 feat(mcp-server): add notes tool integration 2026-03-10 09:39:07 -07:00
saravanakumardb1
63b0d20b07 fix(fastify-core): address jwt rollout review findings 2026-03-06 13:44:22 -08:00
saravanakumardb1
cfca118c71 feat(fastify-core): add shared optional jwt context 2026-03-06 12:52:49 -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
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
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
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
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
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
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