AI - meeting supervisor - #325
AbhiramUdhayakumar18 wants to merge 2 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a new Meeting Supervisor sample app implemented as a NitroStack-based MCP server, with modules/tools for meetings, tasks, calendar OAuth, a “brain” vector-store stub, and agent workflow stubs, plus widget dashboards and Supabase schema + docs.
Changes:
- Introduces NitroStack MCP server bootstrapping (
AppModule,index.ts) and feature modules (meetings/tasks/calendar/brain/agents). - Adds widget dashboards (manifest + HTML/React widget UIs) and shared tool-data types.
- Adds Supabase schema, environment template, package scripts, and a node:test suite for core services/tools.
Reviewed changes
Copilot reviewed 31 out of 34 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| sample-apps/aiMeetingSuperVisor/tsconfig.json | TypeScript compiler config for the server build. |
| sample-apps/aiMeetingSuperVisor/src/widgets/widget-manifest.json | Declares widget URIs and tool bindings for dashboards. |
| sample-apps/aiMeetingSuperVisor/src/widgets/types/tool-data.ts | Defines widget-facing tool output types (meetings/tasks). |
| sample-apps/aiMeetingSuperVisor/src/widgets/out/task-board.html | Static HTML widget renderer for task board tool output. |
| sample-apps/aiMeetingSuperVisor/src/widgets/out/meeting-dashboard.html | Static HTML widget renderer for meeting list tool output. |
| sample-apps/aiMeetingSuperVisor/src/widgets/app/task-board/page.tsx | React widget page for task board rendering via postMessage. |
| sample-apps/aiMeetingSuperVisor/src/widgets/app/meeting-dashboard/page.tsx | React widget page for meeting dashboard rendering via postMessage. |
| sample-apps/aiMeetingSuperVisor/src/tests/project.test.ts | Node test coverage for meetings/tasks services/tools and calendar auth URL. |
| sample-apps/aiMeetingSuperVisor/src/services/database.service.ts | Injectable Supabase wrapper for DB access. |
| sample-apps/aiMeetingSuperVisor/src/modules/tasks/tasks.tools.ts | MCP tools for listing/creating/deciding/completing tasks + widget binding. |
| sample-apps/aiMeetingSuperVisor/src/modules/tasks/tasks.service.ts | Task persistence/business logic over Supabase. |
| sample-apps/aiMeetingSuperVisor/src/modules/tasks/tasks.module.ts | NitroStack module wiring for tasks. |
| sample-apps/aiMeetingSuperVisor/src/modules/meetings/meetings.tools.ts | MCP tools for meeting lifecycle + widget binding. |
| sample-apps/aiMeetingSuperVisor/src/modules/meetings/meetings.service.ts | Meeting persistence/business logic over Supabase. |
| sample-apps/aiMeetingSuperVisor/src/modules/meetings/meetings.module.ts | NitroStack module wiring for meetings. |
| sample-apps/aiMeetingSuperVisor/src/modules/calendar/calendar.tools.ts | MCP tools for calendar auth + sync entrypoints. |
| sample-apps/aiMeetingSuperVisor/src/modules/calendar/calendar.service.ts | Google OAuth2 helper + sync stub. |
| sample-apps/aiMeetingSuperVisor/src/modules/calendar/calendar.module.ts | NitroStack module wiring for calendar. |
| sample-apps/aiMeetingSuperVisor/src/modules/brain/brain.tools.ts | MCP tools to query meeting history + external context. |
| sample-apps/aiMeetingSuperVisor/src/modules/brain/brain.service.ts | Vector-store + web-search stubs for “Brain”. |
| sample-apps/aiMeetingSuperVisor/src/modules/brain/brain.module.ts | NitroStack module wiring for brain. |
| sample-apps/aiMeetingSuperVisor/src/modules/agents/agents.tools.ts | MCP tools for analyze meeting/task + suggestions/review entrypoints. |
| sample-apps/aiMeetingSuperVisor/src/modules/agents/agents.service.ts | Agent orchestration shapes (LLM calls stubbed). |
| sample-apps/aiMeetingSuperVisor/src/modules/agents/agents.module.ts | NitroStack module wiring for agents. |
| sample-apps/aiMeetingSuperVisor/src/index.ts | Server bootstrap via McpApplicationFactory. |
| sample-apps/aiMeetingSuperVisor/src/guards/jwt.guard.ts | JWT auth guard for protected tools. |
| sample-apps/aiMeetingSuperVisor/src/app.module.ts | Root NitroStack app module and MCP server metadata. |
| sample-apps/aiMeetingSuperVisor/README.md | Project documentation, architecture, and run instructions. |
| sample-apps/aiMeetingSuperVisor/plan.md | Prototype plan/roadmap and requirements narrative. |
| sample-apps/aiMeetingSuperVisor/package.json | App package metadata, deps, and NitroStack scripts. |
| sample-apps/aiMeetingSuperVisor/database/schema.sql | Supabase schema for users/meetings/tasks/participants. |
| sample-apps/aiMeetingSuperVisor/.gitignore | Ignores build output, env, logs. |
| sample-apps/aiMeetingSuperVisor/.env.example | Environment variable template for Supabase/Google/models/search/vector DB. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| if (input.participant_ids?.length) { | ||
| await this.db | ||
| .table('meeting_participants') | ||
| .insert(input.participant_ids.map((user_id) => ({ meeting_id: data.id, user_id }))); | ||
| } |
| }, | ||
| "include": ["src/**/*.ts"], | ||
| "exclude": ["node_modules", "dist", "src/widgets"] |
| 'use client'; | ||
|
|
||
| import { useEffect, useState } from 'react'; | ||
| import { ListMeetingsOutput, Meeting } from '../../types/tool-data.js'; |
| 'use client'; | ||
|
|
||
| import { useEffect, useState } from 'react'; | ||
| import { ListTasksOutput, Task } from '../../types/tool-data.js'; |
| private oauth2Client() { | ||
| return new google.auth.OAuth2( | ||
| process.env.GOOGLE_CLIENT_ID, | ||
| process.env.GOOGLE_CLIENT_SECRET, | ||
| process.env.GOOGLE_REDIRECT_URI | ||
| ); | ||
| } |
|
Changes Scope: ✅ Pass Generated/Redundant Files: ❌ Fail
Secrets & Credentials: ❌ Fail SDK Usage: ✅ Pass Overall Result: ❌ Does Not Meet Requirements |
Description
Type of Change
Related Issues
Changes Made
Testing
npm run lintnpm testScreenshots / Recordings
Checklist
CONTRIBUTING.md