@burdenoff/mcp-libs 2026.719.2 → 2026.720.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/modules/atheletebridge/operations.ts","../../../src/modules/atheletebridge/tools/shared.ts","../../../src/modules/atheletebridge/tools/teams.ts","../../../src/modules/atheletebridge/tools/programs.ts","../../../src/modules/atheletebridge/tools/sessions.ts","../../../src/modules/atheletebridge/tools/fixtures.ts","../../../src/modules/atheletebridge/tools/workouts.ts","../../../src/modules/atheletebridge/tools/health.ts","../../../src/modules/atheletebridge/resources.ts","../../../src/modules/atheletebridge/prompts.ts","../../../src/modules/atheletebridge/index.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Centralized GraphQL operations for the AtheleteBridge MCP module.\n *\n * AtheleteBridge is the sports team / athlete training & performance platform\n * (future-products ecosystem). Backend subgraph:\n * ~/products/wspace/atheletebridge/wspace-atheletebridge-svc/\n * (Hive service name `atheletebridge`).\n *\n * All operations run against the WORKSPACE gateway. Workspace scoping is\n * carried by the gateway headers (x-workspace-id / X-Workspace-Authorization)\n * issued by the auth module — AtheleteBridge inputs do NOT carry a workspaceId.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical vibecontrols / kadaikodi modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const MEMBER_FIELDS = `\n id teamId userId displayName role status position jerseyNumber\n dominantSide height weight joinedAt notes workspaceId createdAt updatedAt\n`;\n\nexport const TEAM_FIELDS = `\n id name sport status season ageGroup homeVenue headCoachId description\n tags workspaceId createdAt updatedAt\n`;\n\nexport const DRILL_FIELDS = `\n id programId name description weekNumber orderIndex sets reps\n durationSec restSec video { id } workspaceId createdAt updatedAt\n`;\n\nexport const PROGRAM_FIELDS = `\n id coachId name sport level status summary weeks isTemplate tags\n workspaceId createdAt updatedAt\n`;\n\nexport const SESSION_FIELDS = `\n id coachId athleteId programId title type status scheduledAt durationMin\n location meetingUrl rating feedback completedAt workspaceId createdAt updatedAt\n`;\n\nexport const FIXTURE_FIELDS = `\n id homeTeamId awayTeamId type status competition round venue\n scheduledAt kickoffAt homeScore awayScore notes workspaceId createdAt updatedAt\n`;\n\nexport const STANDING_FIELDS = `\n id teamId competition played won drawn lost goalsFor goalsAgainst\n points rank workspaceId createdAt updatedAt\n`;\n\nexport const WORKOUT_LOG_FIELDS = `\n id athleteId programId title status performedAt durationMin rpe totalLoad\n metrics notes workspaceId createdAt updatedAt\n`;\n\nexport const METRIC_FIELDS = `\n id athleteId type label value unit source recordedAt workspaceId createdAt updatedAt\n`;\n\n// ---------------------------------------------------------------------------\n// Teams + members\n// ---------------------------------------------------------------------------\n\nexport const GET_TEAM = `\n query AtheletebridgeGetTeam($id: ID!) {\n athTeam(id: $id) {\n ${TEAM_FIELDS}\n members { ${MEMBER_FIELDS} }\n fixtures { id type status scheduledAt homeTeamId awayTeamId homeScore awayScore }\n }\n }\n`;\n\nexport const LIST_TEAMS = `\n query AtheletebridgeListTeams(\n $pagination: PaginationInput\n $sport: AthSport\n $status: AthTeamStatus\n ) {\n athListTeams(pagination: $pagination, sport: $sport, status: $status) {\n items { ${TEAM_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_TEAM = `\n mutation AtheletebridgeCreateTeam($input: AthCreateTeamInput!) {\n athCreateTeam(input: $input) {\n ${TEAM_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_TEAM = `\n mutation AtheletebridgeUpdateTeam($id: ID!, $input: AthUpdateTeamInput!) {\n athUpdateTeam(id: $id, input: $input) {\n ${TEAM_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_TEAM = `\n mutation AtheletebridgeArchiveTeam($id: ID!) {\n athArchiveTeam(id: $id)\n }\n`;\n\nexport const LIST_MEMBERS = `\n query AtheletebridgeListMembers($teamId: ID!, $status: AthMemberStatus) {\n athListMembers(teamId: $teamId, status: $status) {\n ${MEMBER_FIELDS}\n }\n }\n`;\n\nexport const ADD_MEMBER = `\n mutation AtheletebridgeAddMember($input: AthAddMemberInput!) {\n athAddMember(input: $input) {\n ${MEMBER_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_MEMBER = `\n mutation AtheletebridgeUpdateMember($id: ID!, $input: AthUpdateMemberInput!) {\n athUpdateMember(id: $id, input: $input) {\n ${MEMBER_FIELDS}\n }\n }\n`;\n\nexport const REMOVE_MEMBER = `\n mutation AtheletebridgeRemoveMember($id: ID!) {\n athRemoveMember(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Programs + drills\n// ---------------------------------------------------------------------------\n\nexport const GET_PROGRAM = `\n query AtheletebridgeGetProgram($id: ID!) {\n athProgram(id: $id) {\n ${PROGRAM_FIELDS}\n drills { ${DRILL_FIELDS} }\n }\n }\n`;\n\nexport const LIST_PROGRAMS = `\n query AtheletebridgeListPrograms(\n $pagination: PaginationInput\n $sport: AthSport\n $level: AthProgramLevel\n $status: AthProgramStatus\n ) {\n athListPrograms(\n pagination: $pagination\n sport: $sport\n level: $level\n status: $status\n ) {\n items { ${PROGRAM_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_PROGRAM = `\n mutation AtheletebridgeCreateProgram($input: AthCreateProgramInput!) {\n athCreateProgram(input: $input) {\n ${PROGRAM_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PROGRAM = `\n mutation AtheletebridgeUpdateProgram($id: ID!, $input: AthUpdateProgramInput!) {\n athUpdateProgram(id: $id, input: $input) {\n ${PROGRAM_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_PROGRAM = `\n mutation AtheletebridgeTransitionProgram($id: ID!, $status: AthProgramStatus!) {\n athTransitionProgram(id: $id, status: $status) {\n ${PROGRAM_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_PROGRAM = `\n mutation AtheletebridgeArchiveProgram($id: ID!) {\n athArchiveProgram(id: $id)\n }\n`;\n\nexport const ADD_DRILL = `\n mutation AtheletebridgeAddDrill($input: AthAddDrillInput!) {\n athAddDrill(input: $input) {\n ${DRILL_FIELDS}\n }\n }\n`;\n\nexport const REMOVE_DRILL = `\n mutation AtheletebridgeRemoveDrill($id: ID!) {\n athRemoveDrill(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Coaching sessions\n// ---------------------------------------------------------------------------\n\nexport const GET_SESSION = `\n query AtheletebridgeGetSession($id: ID!) {\n athSession(id: $id) {\n ${SESSION_FIELDS}\n }\n }\n`;\n\nexport const LIST_SESSIONS = `\n query AtheletebridgeListSessions(\n $pagination: PaginationInput\n $coachId: ID\n $athleteId: ID\n $status: AthSessionStatus\n ) {\n athListSessions(\n pagination: $pagination\n coachId: $coachId\n athleteId: $athleteId\n status: $status\n ) {\n items { ${SESSION_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const BOOK_SESSION = `\n mutation AtheletebridgeBookSession($input: AthBookSessionInput!) {\n athBookSession(input: $input) {\n ${SESSION_FIELDS}\n }\n }\n`;\n\nexport const CONFIRM_SESSION = `\n mutation AtheletebridgeConfirmSession($id: ID!) {\n athConfirmSession(id: $id) {\n ${SESSION_FIELDS}\n }\n }\n`;\n\nexport const COMPLETE_SESSION = `\n mutation AtheletebridgeCompleteSession($id: ID!, $input: AthCompleteSessionInput) {\n athCompleteSession(id: $id, input: $input) {\n ${SESSION_FIELDS}\n }\n }\n`;\n\nexport const CANCEL_SESSION = `\n mutation AtheletebridgeCancelSession($id: ID!) {\n athCancelSession(id: $id) {\n ${SESSION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Fixtures + standings\n// ---------------------------------------------------------------------------\n\nexport const GET_FIXTURE = `\n query AtheletebridgeGetFixture($id: ID!) {\n athFixture(id: $id) {\n ${FIXTURE_FIELDS}\n homeTeam { id name }\n awayTeam { id name }\n }\n }\n`;\n\nexport const LIST_FIXTURES = `\n query AtheletebridgeListFixtures(\n $pagination: PaginationInput\n $teamId: ID\n $status: AthFixtureStatus\n ) {\n athListFixtures(pagination: $pagination, teamId: $teamId, status: $status) {\n items { ${FIXTURE_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const SCHEDULE_FIXTURE = `\n mutation AtheletebridgeScheduleFixture($input: AthCreateFixtureInput!) {\n athScheduleFixture(input: $input) {\n ${FIXTURE_FIELDS}\n }\n }\n`;\n\nexport const RECORD_FIXTURE_RESULT = `\n mutation AtheletebridgeRecordFixtureResult($id: ID!, $input: AthRecordResultInput!) {\n athRecordFixtureResult(id: $id, input: $input) {\n ${FIXTURE_FIELDS}\n }\n }\n`;\n\nexport const LIST_STANDINGS = `\n query AtheletebridgeStandings($competition: String!) {\n athStandings(competition: $competition) {\n ${STANDING_FIELDS}\n team { id name }\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Workout logs\n// ---------------------------------------------------------------------------\n\nexport const LIST_WORKOUT_LOGS = `\n query AtheletebridgeListWorkoutLogs(\n $pagination: PaginationInput\n $athleteId: ID\n $programId: ID\n ) {\n athListWorkoutLogs(pagination: $pagination, athleteId: $athleteId, programId: $programId) {\n items { ${WORKOUT_LOG_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const LOG_WORKOUT = `\n mutation AtheletebridgeLogWorkout($input: AthLogWorkoutInput!) {\n athLogWorkout(input: $input) {\n ${WORKOUT_LOG_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Performance metrics\n// ---------------------------------------------------------------------------\n\nexport const LIST_PERFORMANCE_METRICS = `\n query AtheletebridgePerformanceMetrics($athleteId: ID!, $type: AthMetricType) {\n athPerformanceMetrics(athleteId: $athleteId, type: $type) {\n ${METRIC_FIELDS}\n }\n }\n`;\n\nexport const RECORD_METRIC = `\n mutation AtheletebridgeRecordMetric($input: AthRecordMetricInput!) {\n athRecordMetric(input: $input) {\n ${METRIC_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query AtheletebridgeHealth {\n athHealth\n }\n`;\n","/**\n * Shared zod schemas for the AtheleteBridge tool surface.\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop\n * grounds tool calls against the exact allowed values. The `JSON` scalar\n * input (workout `metrics`) is modelled as a permissive object record — the\n * backend accepts arbitrary JSON, but a record shape gives the LLM a typed\n * hint.\n */\n\nimport { z } from 'zod';\n\nexport const SportEnum = z\n .enum([\n 'ATHLETICS',\n 'BASKETBALL',\n 'CRICKET',\n 'ESPORTS',\n 'FOOTBALL',\n 'OTHER',\n 'SWIMMING',\n 'TENNIS',\n ])\n .describe('Sport a team or program is organised around');\n\nexport const TeamStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'FORMING', 'INACTIVE'])\n .describe('Lifecycle status of a team');\n\nexport const MemberRoleEnum = z\n .enum(['ASSISTANT_COACH', 'CAPTAIN', 'COACH', 'MANAGER', 'PHYSIO', 'PLAYER'])\n .describe('Role of a member within a team');\n\nexport const MemberStatusEnum = z\n .enum(['ACTIVE', 'INJURED', 'RELEASED', 'SUSPENDED', 'TRIAL'])\n .describe('Roster status of a team member');\n\nexport const ProgramLevelEnum = z\n .enum(['ADVANCED', 'BEGINNER', 'ELITE', 'INTERMEDIATE'])\n .describe('Difficulty level of a training program');\n\nexport const ProgramStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'PUBLISHED'])\n .describe('Publish lifecycle status of a training program');\n\nexport const SessionTypeEnum = z\n .enum(['HYBRID', 'IN_PERSON', 'ONLINE'])\n .describe('Delivery format of a coaching session');\n\nexport const SessionStatusEnum = z\n .enum(['CANCELLED', 'COMPLETED', 'CONFIRMED', 'NO_SHOW', 'REQUESTED'])\n .describe('Lifecycle status of a coaching session');\n\nexport const FixtureTypeEnum = z\n .enum(['CUP', 'FRIENDLY', 'LEAGUE', 'SCRIMMAGE', 'TOURNAMENT'])\n .describe('Competition type of a fixture');\n\nexport const FixtureStatusEnum = z\n .enum(['CANCELLED', 'COMPLETED', 'LIVE', 'POSTPONED', 'SCHEDULED'])\n .describe('Lifecycle status of a fixture');\n\nexport const WorkoutStatusEnum = z\n .enum(['COMPLETED', 'PLANNED', 'SKIPPED'])\n .describe('Status of a logged workout');\n\nexport const MetricTypeEnum = z\n .enum(['ACCURACY', 'AGILITY', 'CUSTOM', 'ENDURANCE', 'HEART_RATE', 'SPEED', 'STRENGTH', 'WEIGHT'])\n .describe('Category of a performance metric');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n","/**\n * AtheleteBridge team + roster tools.\n *\n * Surface (8): teams_{get,list,create,update,archive},\n * members_{list,add,update,remove}.\n * All Query/Mutation root fields carry the server's `ath` prefix\n * (athTeam / athListTeams / athCreateTeam / …) — they are called by their\n * REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { SportEnum, TeamStatusEnum, MemberRoleEnum, MemberStatusEnum } from './shared.js';\n\nexport function registerTeamTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'teams_get')),\n {\n title: 'Get Team',\n description:\n 'Fetch a single AtheleteBridge team by ID, including its roster (members) and fixtures.',\n inputSchema: { id: z.string().describe('Team ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athTeam: Record<string, unknown> | null;\n }>(ops.GET_TEAM, { id });\n if (!data.athTeam) return errorResult(`Team ${id} not found`);\n return jsonResult(data.athTeam);\n } catch (error) {\n ctx.logger.error('atheletebridge teams_get failed', { error: String(error) });\n return errorResult(\n `Failed to get team: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'teams_list')),\n {\n title: 'List Teams',\n description:\n 'List teams in the bound workspace with optional sport/status filters and pagination.',\n inputSchema: {\n sport: SportEnum.optional().describe('Filter by sport'),\n status: TeamStatusEnum.optional().describe('Filter by lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ sport, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athListTeams: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_TEAMS, {\n pagination: { limit: limit ?? 50, offset: offset ?? 0 },\n sport,\n status,\n });\n return jsonResult(data.athListTeams);\n } catch (error) {\n ctx.logger.error('atheletebridge teams_list failed', { error: String(error) });\n return errorResult(\n `Failed to list teams: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'teams_create')),\n {\n title: 'Create Team',\n description: 'Create a new team. `name` is required; sport and status default server-side.',\n inputSchema: {\n name: z.string().min(1).describe('Team display name'),\n sport: SportEnum.optional().describe('Sport (default OTHER)'),\n status: TeamStatusEnum.optional().describe('Initial status (default FORMING)'),\n season: z.string().optional().describe('Season label (e.g. \"2026\")'),\n ageGroup: z.string().optional().describe('Age group (e.g. \"U18\")'),\n homeVenue: z.string().optional().describe('Home venue / ground'),\n headCoachId: z.string().optional().describe('User ID of the head coach'),\n description: z.string().optional().describe('Team description'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({\n name,\n sport,\n status,\n season,\n ageGroup,\n homeVenue,\n headCoachId,\n description,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (sport !== undefined) input.sport = sport;\n if (status !== undefined) input.status = status;\n if (season !== undefined) input.season = season;\n if (ageGroup !== undefined) input.ageGroup = ageGroup;\n if (homeVenue !== undefined) input.homeVenue = homeVenue;\n if (headCoachId !== undefined) input.headCoachId = headCoachId;\n if (description !== undefined) input.description = description;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{ athCreateTeam: Record<string, unknown> }>(\n ops.CREATE_TEAM,\n { input },\n );\n return jsonResult(data.athCreateTeam);\n } catch (error) {\n ctx.logger.error('atheletebridge teams_create failed', { error: String(error) });\n return errorResult(\n `Failed to create team: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'teams_update')),\n {\n title: 'Update Team',\n description: 'Update a team. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Team ID'),\n name: z.string().optional().describe('Updated name'),\n sport: SportEnum.optional().describe('Updated sport'),\n status: TeamStatusEnum.optional().describe('Updated status'),\n season: z.string().optional().describe('Updated season'),\n ageGroup: z.string().optional().describe('Updated age group'),\n homeVenue: z.string().optional().describe('Updated home venue'),\n headCoachId: z.string().optional().describe('Updated head-coach user ID'),\n description: z.string().optional().describe('Updated description'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n sport,\n status,\n season,\n ageGroup,\n homeVenue,\n headCoachId,\n description,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (sport !== undefined) input.sport = sport;\n if (status !== undefined) input.status = status;\n if (season !== undefined) input.season = season;\n if (ageGroup !== undefined) input.ageGroup = ageGroup;\n if (homeVenue !== undefined) input.homeVenue = homeVenue;\n if (headCoachId !== undefined) input.headCoachId = headCoachId;\n if (description !== undefined) input.description = description;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/sport/status/season/ageGroup/homeVenue/headCoachId/description/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{ athUpdateTeam: Record<string, unknown> }>(\n ops.UPDATE_TEAM,\n { id, input },\n );\n return jsonResult(data.athUpdateTeam);\n } catch (error) {\n ctx.logger.error('atheletebridge teams_update failed', { error: String(error) });\n return errorResult(\n `Failed to update team: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'teams_archive')),\n {\n title: 'Archive Team',\n description: 'Archive (soft-delete) a team by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Team ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ athArchiveTeam: boolean }>(\n ops.ARCHIVE_TEAM,\n {\n id,\n },\n );\n return jsonResult({ archived: data.athArchiveTeam, id });\n } catch (error) {\n ctx.logger.error('atheletebridge teams_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive team: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Members (roster) ───────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'members_list')),\n {\n title: 'List Team Members',\n description: 'List the members (roster) of a team, optionally filtered by member status.',\n inputSchema: {\n teamId: z.string().describe('Team ID'),\n status: MemberStatusEnum.optional().describe('Filter by roster status'),\n },\n },\n async ({ teamId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athListMembers: Array<Record<string, unknown>>;\n }>(ops.LIST_MEMBERS, { teamId, status });\n return jsonResult(data.athListMembers);\n } catch (error) {\n ctx.logger.error('atheletebridge members_list failed', { error: String(error) });\n return errorResult(\n `Failed to list members: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'members_add')),\n {\n title: 'Add Team Member',\n description:\n 'Add a member to a team roster. `teamId`, `userId`, and `displayName` are required.',\n inputSchema: {\n teamId: z.string().min(1).describe('Team ID'),\n userId: z.string().min(1).describe('User ID of the member'),\n displayName: z.string().min(1).describe('Display name on the roster'),\n role: MemberRoleEnum.optional().describe('Role (default PLAYER)'),\n status: MemberStatusEnum.optional().describe('Initial status (default ACTIVE)'),\n position: z.string().optional().describe('Playing position'),\n jerseyNumber: z.number().int().optional().describe('Jersey number'),\n dominantSide: z.string().optional().describe('Dominant side/hand/foot'),\n height: z.number().optional().describe('Height (units per workspace convention)'),\n weight: z.number().optional().describe('Weight (units per workspace convention)'),\n joinedAt: z.string().optional().describe('Join date (ISO 8601 DateTime)'),\n notes: z.string().optional().describe('Free-form notes'),\n },\n },\n async ({\n teamId,\n userId,\n displayName,\n role,\n status,\n position,\n jerseyNumber,\n dominantSide,\n height,\n weight,\n joinedAt,\n notes,\n }) => {\n try {\n const input: Record<string, unknown> = { teamId, userId, displayName };\n if (role !== undefined) input.role = role;\n if (status !== undefined) input.status = status;\n if (position !== undefined) input.position = position;\n if (jerseyNumber !== undefined) input.jerseyNumber = jerseyNumber;\n if (dominantSide !== undefined) input.dominantSide = dominantSide;\n if (height !== undefined) input.height = height;\n if (weight !== undefined) input.weight = weight;\n if (joinedAt !== undefined) input.joinedAt = joinedAt;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{ athAddMember: Record<string, unknown> }>(\n ops.ADD_MEMBER,\n { input },\n );\n return jsonResult(data.athAddMember);\n } catch (error) {\n ctx.logger.error('atheletebridge members_add failed', { error: String(error) });\n return errorResult(\n `Failed to add member: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'members_update')),\n {\n title: 'Update Team Member',\n description: 'Update a roster member. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Member ID'),\n displayName: z.string().optional().describe('Updated display name'),\n role: MemberRoleEnum.optional().describe('Updated role'),\n status: MemberStatusEnum.optional().describe('Updated roster status'),\n position: z.string().optional().describe('Updated position'),\n jerseyNumber: z.number().int().optional().describe('Updated jersey number'),\n dominantSide: z.string().optional().describe('Updated dominant side'),\n height: z.number().optional().describe('Updated height'),\n weight: z.number().optional().describe('Updated weight'),\n notes: z.string().optional().describe('Updated notes'),\n },\n },\n async ({\n id,\n displayName,\n role,\n status,\n position,\n jerseyNumber,\n dominantSide,\n height,\n weight,\n notes,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (displayName !== undefined) input.displayName = displayName;\n if (role !== undefined) input.role = role;\n if (status !== undefined) input.status = status;\n if (position !== undefined) input.position = position;\n if (jerseyNumber !== undefined) input.jerseyNumber = jerseyNumber;\n if (dominantSide !== undefined) input.dominantSide = dominantSide;\n if (height !== undefined) input.height = height;\n if (weight !== undefined) input.weight = weight;\n if (notes !== undefined) input.notes = notes;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of displayName/role/status/position/jerseyNumber/dominantSide/height/weight/notes',\n );\n }\n\n const data = await ctx.gql.workspace.request<{ athUpdateMember: Record<string, unknown> }>(\n ops.UPDATE_MEMBER,\n { id, input },\n );\n return jsonResult(data.athUpdateMember);\n } catch (error) {\n ctx.logger.error('atheletebridge members_update failed', { error: String(error) });\n return errorResult(\n `Failed to update member: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'members_remove')),\n {\n title: 'Remove Team Member',\n description: 'Remove a member from the roster by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Member ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ athRemoveMember: boolean }>(\n ops.REMOVE_MEMBER,\n { id },\n );\n return jsonResult({ removed: data.athRemoveMember, id });\n } catch (error) {\n ctx.logger.error('atheletebridge members_remove failed', { error: String(error) });\n return errorResult(\n `Failed to remove member: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * AtheleteBridge training-program + drill tools.\n *\n * Surface (8): programs_{get,list,create,update,transition,archive},\n * drills_{add,remove}.\n * Root fields carry the server's `ath` prefix\n * (athProgram / athListPrograms / athCreateProgram / athTransitionProgram / …)\n * and are called by their REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { SportEnum, ProgramLevelEnum, ProgramStatusEnum } from './shared.js';\n\nexport function registerProgramTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_get')),\n {\n title: 'Get Training Program',\n description: 'Fetch a single training program by ID, including its drills.',\n inputSchema: { id: z.string().describe('Program ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athProgram: Record<string, unknown> | null;\n }>(ops.GET_PROGRAM, { id });\n if (!data.athProgram) return errorResult(`Program ${id} not found`);\n return jsonResult(data.athProgram);\n } catch (error) {\n ctx.logger.error('atheletebridge programs_get failed', { error: String(error) });\n return errorResult(\n `Failed to get program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_list')),\n {\n title: 'List Training Programs',\n description:\n 'List training programs with optional sport/level/status filters and pagination.',\n inputSchema: {\n sport: SportEnum.optional().describe('Filter by sport'),\n level: ProgramLevelEnum.optional().describe('Filter by difficulty level'),\n status: ProgramStatusEnum.optional().describe('Filter by publish status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ sport, level, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athListPrograms: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_PROGRAMS, {\n pagination: { limit: limit ?? 50, offset: offset ?? 0 },\n sport,\n level,\n status,\n });\n return jsonResult(data.athListPrograms);\n } catch (error) {\n ctx.logger.error('atheletebridge programs_list failed', { error: String(error) });\n return errorResult(\n `Failed to list programs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_create')),\n {\n title: 'Create Training Program',\n description: 'Create a new training program. `name` is required.',\n inputSchema: {\n name: z.string().min(1).describe('Program name'),\n sport: SportEnum.optional().describe('Sport (default OTHER)'),\n level: ProgramLevelEnum.optional().describe('Difficulty level (default BEGINNER)'),\n summary: z.string().optional().describe('Short summary'),\n weeks: z.number().int().optional().describe('Number of weeks the program spans'),\n isTemplate: z.boolean().optional().describe('Mark as a reusable template (default false)'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ name, sport, level, summary, weeks, isTemplate, tags }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (sport !== undefined) input.sport = sport;\n if (level !== undefined) input.level = level;\n if (summary !== undefined) input.summary = summary;\n if (weeks !== undefined) input.weeks = weeks;\n if (isTemplate !== undefined) input.isTemplate = isTemplate;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{ athCreateProgram: Record<string, unknown> }>(\n ops.CREATE_PROGRAM,\n { input },\n );\n return jsonResult(data.athCreateProgram);\n } catch (error) {\n ctx.logger.error('atheletebridge programs_create failed', { error: String(error) });\n return errorResult(\n `Failed to create program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_update')),\n {\n title: 'Update Training Program',\n description: 'Update a training program. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Program ID'),\n name: z.string().optional().describe('Updated name'),\n sport: SportEnum.optional().describe('Updated sport'),\n level: ProgramLevelEnum.optional().describe('Updated level'),\n summary: z.string().optional().describe('Updated summary'),\n weeks: z.number().int().optional().describe('Updated week count'),\n isTemplate: z.boolean().optional().describe('Updated template flag'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, name, sport, level, summary, weeks, isTemplate, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (sport !== undefined) input.sport = sport;\n if (level !== undefined) input.level = level;\n if (summary !== undefined) input.summary = summary;\n if (weeks !== undefined) input.weeks = weeks;\n if (isTemplate !== undefined) input.isTemplate = isTemplate;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/sport/level/summary/weeks/isTemplate/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{ athUpdateProgram: Record<string, unknown> }>(\n ops.UPDATE_PROGRAM,\n { id, input },\n );\n return jsonResult(data.athUpdateProgram);\n } catch (error) {\n ctx.logger.error('atheletebridge programs_update failed', { error: String(error) });\n return errorResult(\n `Failed to update program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_transition')),\n {\n title: 'Transition Program Status',\n description:\n 'Advance a program through its publish lifecycle (validated transitions: DRAFT -> PUBLISHED -> ARCHIVED).',\n inputSchema: {\n id: z.string().describe('Program ID'),\n status: ProgramStatusEnum.describe('Target status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athTransitionProgram: Record<string, unknown>;\n }>(ops.TRANSITION_PROGRAM, { id, status });\n return jsonResult(data.athTransitionProgram);\n } catch (error) {\n ctx.logger.error('atheletebridge programs_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_archive')),\n {\n title: 'Archive Training Program',\n description: 'Archive (soft-delete) a program by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Program ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ athArchiveProgram: boolean }>(\n ops.ARCHIVE_PROGRAM,\n { id },\n );\n return jsonResult({ archived: data.athArchiveProgram, id });\n } catch (error) {\n ctx.logger.error('atheletebridge programs_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Drills ───────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_add_drill')),\n {\n title: 'Add Drill',\n description:\n 'Add a drill to a training program. `programId` and `name` are required. `videoFileId` references a wspace-files-svc File (demo video).',\n inputSchema: {\n programId: z.string().min(1).describe('Program ID the drill belongs to'),\n name: z.string().min(1).describe('Drill name'),\n description: z.string().optional().describe('Drill description / instructions'),\n weekNumber: z.number().int().optional().describe('Program week (default 1)'),\n orderIndex: z.number().int().optional().describe('Ordering within the week (default 0)'),\n sets: z.number().int().optional().describe('Number of sets'),\n reps: z.number().int().optional().describe('Reps per set'),\n durationSec: z.number().int().optional().describe('Duration in seconds'),\n restSec: z.number().int().optional().describe('Rest between sets in seconds'),\n videoFileId: z.string().optional().describe('wspace-files-svc File ID for a demo video'),\n },\n },\n async ({\n programId,\n name,\n description,\n weekNumber,\n orderIndex,\n sets,\n reps,\n durationSec,\n restSec,\n videoFileId,\n }) => {\n try {\n const input: Record<string, unknown> = { programId, name };\n if (description !== undefined) input.description = description;\n if (weekNumber !== undefined) input.weekNumber = weekNumber;\n if (orderIndex !== undefined) input.orderIndex = orderIndex;\n if (sets !== undefined) input.sets = sets;\n if (reps !== undefined) input.reps = reps;\n if (durationSec !== undefined) input.durationSec = durationSec;\n if (restSec !== undefined) input.restSec = restSec;\n if (videoFileId !== undefined) input.videoFileId = videoFileId;\n\n const data = await ctx.gql.workspace.request<{ athAddDrill: Record<string, unknown> }>(\n ops.ADD_DRILL,\n { input },\n );\n return jsonResult(data.athAddDrill);\n } catch (error) {\n ctx.logger.error('atheletebridge drills_add failed', { error: String(error) });\n return errorResult(\n `Failed to add drill: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_remove_drill')),\n {\n title: 'Remove Drill',\n description: 'Remove a drill from its program by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Drill ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ athRemoveDrill: boolean }>(\n ops.REMOVE_DRILL,\n {\n id,\n },\n );\n return jsonResult({ removed: data.athRemoveDrill, id });\n } catch (error) {\n ctx.logger.error('atheletebridge drills_remove failed', { error: String(error) });\n return errorResult(\n `Failed to remove drill: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * AtheleteBridge coaching-session tools.\n *\n * Surface (6): sessions_{get,list,book,confirm,complete,cancel}.\n * Root fields carry the server's `ath` prefix\n * (athSession / athListSessions / athBookSession / …) and are called by their\n * REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { SessionTypeEnum, SessionStatusEnum } from './shared.js';\n\nexport function registerSessionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_get')),\n {\n title: 'Get Coaching Session',\n description: 'Fetch a single coaching session by ID.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athSession: Record<string, unknown> | null;\n }>(ops.GET_SESSION, { id });\n if (!data.athSession) return errorResult(`Session ${id} not found`);\n return jsonResult(data.athSession);\n } catch (error) {\n ctx.logger.error('atheletebridge sessions_get failed', { error: String(error) });\n return errorResult(\n `Failed to get session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_list')),\n {\n title: 'List Coaching Sessions',\n description:\n 'List coaching sessions with optional coach/athlete/status filters and pagination.',\n inputSchema: {\n coachId: z.string().optional().describe('Filter by coach user ID'),\n athleteId: z.string().optional().describe('Filter by athlete user ID'),\n status: SessionStatusEnum.optional().describe('Filter by session status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ coachId, athleteId, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athListSessions: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_SESSIONS, {\n pagination: { limit: limit ?? 50, offset: offset ?? 0 },\n coachId,\n athleteId,\n status,\n });\n return jsonResult(data.athListSessions);\n } catch (error) {\n ctx.logger.error('atheletebridge sessions_list failed', { error: String(error) });\n return errorResult(\n `Failed to list sessions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_book')),\n {\n title: 'Book Coaching Session',\n description:\n 'Book a coaching session. `coachId`, `athleteId`, `title`, and `scheduledAt` are required.',\n inputSchema: {\n coachId: z.string().min(1).describe('Coach user ID'),\n athleteId: z.string().min(1).describe('Athlete user ID'),\n title: z.string().min(1).describe('Session title'),\n scheduledAt: z.string().describe('Scheduled start (ISO 8601 DateTime)'),\n type: SessionTypeEnum.optional().describe('Delivery format (default IN_PERSON)'),\n durationMin: z.number().int().optional().describe('Duration in minutes'),\n location: z.string().optional().describe('Physical location'),\n meetingUrl: z.string().optional().describe('Online meeting URL'),\n programId: z.string().optional().describe('Linked training program ID'),\n },\n },\n async ({\n coachId,\n athleteId,\n title,\n scheduledAt,\n type,\n durationMin,\n location,\n meetingUrl,\n programId,\n }) => {\n try {\n const input: Record<string, unknown> = { coachId, athleteId, title, scheduledAt };\n if (type !== undefined) input.type = type;\n if (durationMin !== undefined) input.durationMin = durationMin;\n if (location !== undefined) input.location = location;\n if (meetingUrl !== undefined) input.meetingUrl = meetingUrl;\n if (programId !== undefined) input.programId = programId;\n\n const data = await ctx.gql.workspace.request<{ athBookSession: Record<string, unknown> }>(\n ops.BOOK_SESSION,\n { input },\n );\n return jsonResult(data.athBookSession);\n } catch (error) {\n ctx.logger.error('atheletebridge sessions_book failed', { error: String(error) });\n return errorResult(\n `Failed to book session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_confirm')),\n {\n title: 'Confirm Coaching Session',\n description: 'Confirm a requested coaching session by ID.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athConfirmSession: Record<string, unknown>;\n }>(ops.CONFIRM_SESSION, { id });\n return jsonResult(data.athConfirmSession);\n } catch (error) {\n ctx.logger.error('atheletebridge sessions_confirm failed', { error: String(error) });\n return errorResult(\n `Failed to confirm session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_complete')),\n {\n title: 'Complete Coaching Session',\n description:\n 'Mark a coaching session COMPLETED, optionally recording a rating (1-5) and feedback.',\n inputSchema: {\n id: z.string().describe('Session ID'),\n rating: z.number().int().optional().describe('Rating (e.g. 1-5)'),\n feedback: z.string().optional().describe('Coach/athlete feedback notes'),\n },\n },\n async ({ id, rating, feedback }) => {\n try {\n const input: Record<string, unknown> = {};\n if (rating !== undefined) input.rating = rating;\n if (feedback !== undefined) input.feedback = feedback;\n\n const data = await ctx.gql.workspace.request<{\n athCompleteSession: Record<string, unknown>;\n }>(ops.COMPLETE_SESSION, {\n id,\n input: Object.keys(input).length > 0 ? input : undefined,\n });\n return jsonResult(data.athCompleteSession);\n } catch (error) {\n ctx.logger.error('atheletebridge sessions_complete failed', { error: String(error) });\n return errorResult(\n `Failed to complete session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_cancel')),\n {\n title: 'Cancel Coaching Session',\n description: 'Cancel a coaching session by ID.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ athCancelSession: Record<string, unknown> }>(\n ops.CANCEL_SESSION,\n { id },\n );\n return jsonResult(data.athCancelSession);\n } catch (error) {\n ctx.logger.error('atheletebridge sessions_cancel failed', { error: String(error) });\n return errorResult(\n `Failed to cancel session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * AtheleteBridge fixture + standings tools.\n *\n * Surface (5): fixtures_{get,list,schedule,record_result}, standings_list.\n * Root fields carry the server's `ath` prefix\n * (athFixture / athListFixtures / athScheduleFixture / athRecordFixtureResult /\n * athStandings) and are called by their REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { FixtureTypeEnum, FixtureStatusEnum } from './shared.js';\n\nexport function registerFixtureTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'fixtures_get')),\n {\n title: 'Get Fixture',\n description: 'Fetch a single fixture by ID, including resolved home/away teams.',\n inputSchema: { id: z.string().describe('Fixture ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athFixture: Record<string, unknown> | null;\n }>(ops.GET_FIXTURE, { id });\n if (!data.athFixture) return errorResult(`Fixture ${id} not found`);\n return jsonResult(data.athFixture);\n } catch (error) {\n ctx.logger.error('atheletebridge fixtures_get failed', { error: String(error) });\n return errorResult(\n `Failed to get fixture: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'fixtures_list')),\n {\n title: 'List Fixtures',\n description: 'List fixtures with optional team/status filters and pagination.',\n inputSchema: {\n teamId: z.string().optional().describe('Filter by team ID (home or away)'),\n status: FixtureStatusEnum.optional().describe('Filter by fixture status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ teamId, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athListFixtures: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_FIXTURES, {\n pagination: { limit: limit ?? 50, offset: offset ?? 0 },\n teamId,\n status,\n });\n return jsonResult(data.athListFixtures);\n } catch (error) {\n ctx.logger.error('atheletebridge fixtures_list failed', { error: String(error) });\n return errorResult(\n `Failed to list fixtures: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'fixtures_schedule')),\n {\n title: 'Schedule Fixture',\n description:\n 'Schedule a new fixture. `homeTeamId` and `scheduledAt` are required; `awayTeamId` is optional for solo/athletics events.',\n inputSchema: {\n homeTeamId: z.string().min(1).describe('Home team ID'),\n scheduledAt: z.string().describe('Scheduled date/time (ISO 8601 DateTime)'),\n awayTeamId: z.string().optional().describe('Away team ID'),\n type: FixtureTypeEnum.optional().describe('Fixture type (default FRIENDLY)'),\n competition: z.string().optional().describe('Competition name'),\n round: z.string().optional().describe('Round / matchday label'),\n venue: z.string().optional().describe('Venue'),\n kickoffAt: z.string().optional().describe('Kickoff time (ISO 8601 DateTime)'),\n notes: z.string().optional().describe('Free-form notes'),\n },\n },\n async ({\n homeTeamId,\n scheduledAt,\n awayTeamId,\n type,\n competition,\n round,\n venue,\n kickoffAt,\n notes,\n }) => {\n try {\n const input: Record<string, unknown> = { homeTeamId, scheduledAt };\n if (awayTeamId !== undefined) input.awayTeamId = awayTeamId;\n if (type !== undefined) input.type = type;\n if (competition !== undefined) input.competition = competition;\n if (round !== undefined) input.round = round;\n if (venue !== undefined) input.venue = venue;\n if (kickoffAt !== undefined) input.kickoffAt = kickoffAt;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{\n athScheduleFixture: Record<string, unknown>;\n }>(ops.SCHEDULE_FIXTURE, { input });\n return jsonResult(data.athScheduleFixture);\n } catch (error) {\n ctx.logger.error('atheletebridge fixtures_schedule failed', { error: String(error) });\n return errorResult(\n `Failed to schedule fixture: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'fixtures_record_result')),\n {\n title: 'Record Fixture Result',\n description:\n 'Record a final result for a fixture, mark it COMPLETED, and recompute the competition standings for both teams.',\n inputSchema: {\n id: z.string().describe('Fixture ID'),\n homeScore: z.number().int().describe('Final home score'),\n awayScore: z.number().int().describe('Final away score'),\n },\n },\n async ({ id, homeScore, awayScore }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athRecordFixtureResult: Record<string, unknown>;\n }>(ops.RECORD_FIXTURE_RESULT, { id, input: { homeScore, awayScore } });\n return jsonResult(data.athRecordFixtureResult);\n } catch (error) {\n ctx.logger.error('atheletebridge fixtures_record_result failed', { error: String(error) });\n return errorResult(\n `Failed to record fixture result: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'fixtures_standings')),\n {\n title: 'List Standings',\n description:\n 'List the standings table for a competition, ordered as returned by the backend.',\n inputSchema: {\n competition: z.string().min(1).describe('Competition name to fetch standings for'),\n },\n },\n async ({ competition }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athStandings: Array<Record<string, unknown>>;\n }>(ops.LIST_STANDINGS, { competition });\n return jsonResult(data.athStandings);\n } catch (error) {\n ctx.logger.error('atheletebridge standings_list failed', { error: String(error) });\n return errorResult(\n `Failed to list standings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * AtheleteBridge workout-log + performance-metric tools.\n *\n * Surface (4): workouts_{list,log}, metrics_{list,record}.\n * Root fields carry the server's `ath` prefix\n * (athListWorkoutLogs / athLogWorkout / athPerformanceMetrics / athRecordMetric)\n * and are called by their REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { WorkoutStatusEnum, MetricTypeEnum, JsonObject } from './shared.js';\n\nexport function registerWorkoutTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workouts_list')),\n {\n title: 'List Workout Logs',\n description: 'List logged workouts with optional athlete/program filters and pagination.',\n inputSchema: {\n athleteId: z.string().optional().describe('Filter by athlete user ID'),\n programId: z.string().optional().describe('Filter by training program ID'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ athleteId, programId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athListWorkoutLogs: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_WORKOUT_LOGS, {\n pagination: { limit: limit ?? 50, offset: offset ?? 0 },\n athleteId,\n programId,\n });\n return jsonResult(data.athListWorkoutLogs);\n } catch (error) {\n ctx.logger.error('atheletebridge workouts_list failed', { error: String(error) });\n return errorResult(\n `Failed to list workout logs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workouts_log')),\n {\n title: 'Log Workout',\n description:\n 'Log a workout. `title` and `performedAt` are required. `metrics` is arbitrary JSON (e.g. per-exercise data).',\n inputSchema: {\n title: z.string().min(1).describe('Workout title'),\n performedAt: z.string().describe('When the workout was performed (ISO 8601 DateTime)'),\n athleteId: z.string().optional().describe('Athlete user ID'),\n programId: z.string().optional().describe('Linked training program ID'),\n status: WorkoutStatusEnum.optional().describe('Workout status (default COMPLETED)'),\n durationMin: z.number().int().optional().describe('Duration in minutes'),\n rpe: z.number().int().optional().describe('Rate of perceived exertion (e.g. 1-10)'),\n totalLoad: z.number().optional().describe('Total training load'),\n metrics: JsonObject.optional().describe('Arbitrary metrics JSON'),\n notes: z.string().optional().describe('Free-form notes'),\n },\n },\n async ({\n title,\n performedAt,\n athleteId,\n programId,\n status,\n durationMin,\n rpe,\n totalLoad,\n metrics,\n notes,\n }) => {\n try {\n const input: Record<string, unknown> = { title, performedAt };\n if (athleteId !== undefined) input.athleteId = athleteId;\n if (programId !== undefined) input.programId = programId;\n if (status !== undefined) input.status = status;\n if (durationMin !== undefined) input.durationMin = durationMin;\n if (rpe !== undefined) input.rpe = rpe;\n if (totalLoad !== undefined) input.totalLoad = totalLoad;\n if (metrics !== undefined) input.metrics = metrics;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{ athLogWorkout: Record<string, unknown> }>(\n ops.LOG_WORKOUT,\n { input },\n );\n return jsonResult(data.athLogWorkout);\n } catch (error) {\n ctx.logger.error('atheletebridge workouts_log failed', { error: String(error) });\n return errorResult(\n `Failed to log workout: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Performance metrics ────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'metrics_list')),\n {\n title: 'List Performance Metrics',\n description: 'List performance metrics for an athlete, optionally filtered by metric type.',\n inputSchema: {\n athleteId: z.string().describe('Athlete user ID'),\n type: MetricTypeEnum.optional().describe('Filter by metric type'),\n },\n },\n async ({ athleteId, type }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athPerformanceMetrics: Array<Record<string, unknown>>;\n }>(ops.LIST_PERFORMANCE_METRICS, { athleteId, type });\n return jsonResult(data.athPerformanceMetrics);\n } catch (error) {\n ctx.logger.error('atheletebridge metrics_list failed', { error: String(error) });\n return errorResult(\n `Failed to list performance metrics: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'metrics_record')),\n {\n title: 'Record Performance Metric',\n description:\n 'Record a performance metric for an athlete. `label`, `value`, and `recordedAt` are required.',\n inputSchema: {\n label: z.string().min(1).describe('Human-readable metric label'),\n value: z.number().describe('Recorded numeric value'),\n recordedAt: z.string().describe('When the metric was recorded (ISO 8601 DateTime)'),\n athleteId: z.string().optional().describe('Athlete user ID'),\n type: MetricTypeEnum.optional().describe('Metric type (default CUSTOM)'),\n unit: z.string().optional().describe('Unit of measure (e.g. \"kg\", \"s\", \"bpm\")'),\n source: z.string().optional().describe('Source of the measurement (device/manual)'),\n },\n },\n async ({ label, value, recordedAt, athleteId, type, unit, source }) => {\n try {\n const input: Record<string, unknown> = { label, value, recordedAt };\n if (athleteId !== undefined) input.athleteId = athleteId;\n if (type !== undefined) input.type = type;\n if (unit !== undefined) input.unit = unit;\n if (source !== undefined) input.source = source;\n\n const data = await ctx.gql.workspace.request<{ athRecordMetric: Record<string, unknown> }>(\n ops.RECORD_METRIC,\n { input },\n );\n return jsonResult(data.athRecordMetric);\n } catch (error) {\n ctx.logger.error('atheletebridge metrics_record failed', { error: String(error) });\n return errorResult(\n `Failed to record performance metric: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * AtheleteBridge health tool.\n *\n * Surface (1): health.\n * `health` maps to the @public athHealth query (no auth required); the schema\n * exposes a real `athHealth: String!` liveness/identity probe.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analytics_health')),\n {\n title: 'AtheleteBridge Health Check',\n description:\n 'Public health probe for the AtheleteBridge subgraph (athHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ athHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.athHealth });\n } catch (error) {\n ctx.logger.error('atheletebridge health failed', { error: String(error) });\n return errorResult(\n `AtheleteBridge health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_TEAMS, LIST_PROGRAMS } from './operations.js';\n\n/**\n * Read-only AtheleteBridge MCP resources. URIs are product-prefixed via\n * mcpResourceUri so they don't collide when multiple MCP servers run side by\n * side. Each is tracked at function entry so the shell manifest reflects what\n * was registered even though registration is imperative.\n */\nexport function registerAtheletebridgeResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const teamsUri = track(mcpResourceUri(ctx.productName, 'teams'));\n const programsUri = track(mcpResourceUri(ctx.productName, 'programs'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'atheletebridge-schema',\n schemaUri,\n {\n title: 'AtheleteBridge Domain Schema',\n description:\n 'Overview of the AtheleteBridge sports domain — entities, enums, and the per-entity tool surface.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug(`Resource ${schemaUri} requested`);\n const schema = `# AtheleteBridge Domain (Overview)\n\nSports team management, athlete training, coaching, and performance tracking.\n\n## Entities\n- AthTeam — a squad/club (members, fixtures)\n- AthMember — a roster entry on a team (player/coach/staff)\n- AthProgram — a training program (drills)\n- AthDrill — a drill within a program (optional demo video File)\n- AthSession — a coaching session (request → confirm → complete)\n- AthFixture — a scheduled match/event (result recompute standings)\n- AthStanding — a competition standings-table row\n- AthWorkoutLog — a logged workout for an athlete\n- AthPerformanceMetric — a recorded performance metric for an athlete\n\n## Enums\n- AthSport: ATHLETICS, BASKETBALL, CRICKET, ESPORTS, FOOTBALL, OTHER, SWIMMING, TENNIS\n- AthTeamStatus: ACTIVE, ARCHIVED, FORMING, INACTIVE\n- AthMemberRole: ASSISTANT_COACH, CAPTAIN, COACH, MANAGER, PHYSIO, PLAYER\n- AthMemberStatus: ACTIVE, INJURED, RELEASED, SUSPENDED, TRIAL\n- AthProgramLevel: ADVANCED, BEGINNER, ELITE, INTERMEDIATE\n- AthProgramStatus: ARCHIVED, DRAFT, PUBLISHED\n- AthSessionType: HYBRID, IN_PERSON, ONLINE\n- AthSessionStatus: CANCELLED, COMPLETED, CONFIRMED, NO_SHOW, REQUESTED\n- AthFixtureType: CUP, FRIENDLY, LEAGUE, SCRIMMAGE, TOURNAMENT\n- AthFixtureStatus: CANCELLED, COMPLETED, LIVE, POSTPONED, SCHEDULED\n- AthWorkoutStatus: COMPLETED, PLANNED, SKIPPED\n- AthMetricType: ACCURACY, AGILITY, CUSTOM, ENDURANCE, HEART_RATE, SPEED, STRENGTH, WEIGHT\n\n## Tool groups\nteams, members, programs, drills, sessions, fixtures, standings, workouts, metrics, health.\nAll run against the WORKSPACE gateway (workspace-scoped) except the public health probe.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://teams — team directory\n server.registerResource(\n 'atheletebridge-teams',\n teamsUri,\n {\n title: 'AtheleteBridge Team Directory',\n description: 'The first 50 teams in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${teamsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ athListTeams: unknown }>(LIST_TEAMS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: teamsUri,\n text: JSON.stringify(data.athListTeams, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: teamsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://programs — training-program catalog\n server.registerResource(\n 'atheletebridge-programs',\n programsUri,\n {\n title: 'AtheleteBridge Program Catalog',\n description: 'The first 50 training programs in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${programsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ athListPrograms: unknown }>(LIST_PROGRAMS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: programsUri,\n text: JSON.stringify(data.athListPrograms, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: programsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpPromptName, type McpContext } from '../../core/index.js';\n\n/**\n * AtheleteBridge MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerAtheletebridgePrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const setupName = track(mcpPromptName(p, 'team-setup'));\n const seasonName = track(mcpPromptName(p, 'season-ops'));\n\n // <product>-team-setup — stand up a team + roster + program\n server.registerPrompt(\n setupName,\n {\n title: 'Team Setup',\n description:\n 'Guide for standing up a new AtheleteBridge team end to end: create the team, add the roster, and attach a training program with drills.',\n argsSchema: {\n name: z.string().optional().describe('Team name'),\n sport: z.string().optional().describe('Sport (AthSport enum)'),\n },\n },\n ({ name, sport }) => {\n ctx.logger.debug(`Prompt ${setupName} called`, { name, sport });\n const nameNote = name ? `Use the team name \"${name}\".` : 'Ask the user for the team name.';\n const sportNote = sport ? `Use sport ${sport}.` : 'Help the user pick an AthSport.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me set up a new AtheleteBridge team.\n\n1. **Create Team**: Use ${p}_teams_create. ${nameNote} ${sportNote} Optionally set season, ageGroup, homeVenue, and headCoachId.\n2. **Add Roster**: Use ${p}_members_add for each player/coach — set userId, displayName, role (PLAYER/COACH/...), and optional position/jerseyNumber.\n3. **Verify Roster**: Use ${p}_members_list filtered by the new teamId.\n4. **Attach Program**: Use ${p}_programs_create for a training program, then ${p}_drills_add for each drill (weekNumber, sets, reps, durationSec).\n5. **Publish Program**: Use ${p}_programs_transition with status=PUBLISHED when ready.\n\nShow results at each step and confirm before publishing.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-season-ops — run a competition season\n server.registerPrompt(\n seasonName,\n {\n title: 'Season Operations',\n description:\n 'Operations workflow for running a competition season: schedule fixtures, record results, track standings, and review athlete performance.',\n argsSchema: {\n competition: z.string().optional().describe('Competition name'),\n teamId: z.string().optional().describe('Team ID to operate'),\n },\n },\n ({ competition, teamId }) => {\n ctx.logger.debug(`Prompt ${seasonName} called`, { competition, teamId });\n const teamNote = teamId\n ? `Operate team \"${teamId}\".`\n : `First list teams with ${p}_teams_list and pick one.`;\n const compNote = competition\n ? `Track the \"${competition}\" competition.`\n : 'Ask the user which competition to track.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run AtheleteBridge season operations. ${teamNote} ${compNote}\n\n1. **Fixtures**: Use ${p}_fixtures_list filtered by teamId/status to see upcoming and past fixtures. Schedule new ones with ${p}_fixtures_schedule.\n2. **Results**: For completed matches use ${p}_fixtures_record_result (homeScore/awayScore) — this recomputes standings automatically.\n3. **Standings**: Use ${p}_standings_list for the competition to review the table.\n4. **Coaching**: Use ${p}_sessions_list to triage requested sessions; ${p}_sessions_confirm and later ${p}_sessions_complete them.\n5. **Performance**: Use ${p}_workouts_list and ${p}_metrics_list per athlete to monitor load and progress; record new measurements with ${p}_metrics_record.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * AtheleteBridge module — domain module for the future-products ecosystem program.\n *\n * Covers all 9 @key entities of wspace-atheletebridge-svc grouped into\n * per-entity sub-APIs: teams (+members), programs (+drills), sessions,\n * fixtures (+standings), workouts, metrics, and health. Mirrors the rich\n * kadaikodi/crewfoundry modules' structure (tools/<entity>.ts + resources.ts +\n * prompts.ts) and the canonical tags module's typing discipline.\n *\n * Backend: ~/products/wspace/atheletebridge/wspace-atheletebridge-svc/\n * (Hive service name `atheletebridge`). All operations run against the\n * WORKSPACE gateway; the @public athHealth probe is exposed as `<product>_health`.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerTeamTools } from './tools/teams.js';\nimport { registerProgramTools } from './tools/programs.js';\nimport { registerSessionTools } from './tools/sessions.js';\nimport { registerFixtureTools } from './tools/fixtures.js';\nimport { registerWorkoutTools } from './tools/workouts.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerAtheletebridgeResources } from './resources.js';\nimport { registerAtheletebridgePrompts } from './prompts.js';\n\nconst atheletebridgeModule: McpModule = {\n id: 'atheletebridge',\n version: '0.0.1',\n displayName: 'AtheleteBridge',\n dependsOn: ['auth'],\n capabilities: { tools: {}, resources: {}, prompts: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const resources: string[] = [];\n const prompts: string[] = [];\n\n const trackTool = (n: string): string => {\n tools.push(n);\n return n;\n };\n const trackResource = (uri: string): string => {\n resources.push(uri);\n return uri;\n };\n const trackPrompt = (n: string): string => {\n prompts.push(n);\n return n;\n };\n\n registerTeamTools(server, ctx, trackTool);\n registerProgramTools(server, ctx, trackTool);\n registerSessionTools(server, ctx, trackTool);\n registerFixtureTools(server, ctx, trackTool);\n registerWorkoutTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerAtheletebridgeResources(server, ctx, trackResource);\n registerAtheletebridgePrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default atheletebridgeModule;\n"]}
1
+ {"version":3,"sources":["../../../src/modules/atheletebridge/operations.ts","../../../src/modules/atheletebridge/tools/shared.ts","../../../src/modules/atheletebridge/tools/teams.ts","../../../src/modules/atheletebridge/tools/programs.ts","../../../src/modules/atheletebridge/tools/sessions.ts","../../../src/modules/atheletebridge/tools/fixtures.ts","../../../src/modules/atheletebridge/tools/workouts.ts","../../../src/modules/atheletebridge/tools/health.ts","../../../src/modules/atheletebridge/resources.ts","../../../src/modules/atheletebridge/prompts.ts","../../../src/modules/atheletebridge/index.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Centralized GraphQL operations for the AtheleteBridge MCP module.\n *\n * AtheleteBridge is the sports team / athlete training & performance platform\n * (future-products ecosystem). Backend subgraph:\n * ~/products/wspace/atheletebridge/wspace-atheletebridge-svc/\n * (Hive service name `atheletebridge`).\n *\n * All operations run against the WORKSPACE gateway. Workspace scoping is\n * carried by the gateway headers (x-workspace-id / X-Workspace-Authorization)\n * issued by the auth module — AtheleteBridge inputs do NOT carry a workspaceId.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical vibecontrols / kadaikodi modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const MEMBER_FIELDS = `\n id teamId userId displayName role status position jerseyNumber\n dominantSide height weight joinedAt notes workspaceId createdAt updatedAt\n`;\n\nexport const TEAM_FIELDS = `\n id name sport status season ageGroup homeVenue headCoachId description\n tags workspaceId createdAt updatedAt\n`;\n\nexport const DRILL_FIELDS = `\n id programId name description weekNumber orderIndex sets reps\n durationSec restSec video { id } workspaceId createdAt updatedAt\n`;\n\nexport const PROGRAM_FIELDS = `\n id coachId name sport level status summary weeks isTemplate tags\n workspaceId createdAt updatedAt\n`;\n\nexport const SESSION_FIELDS = `\n id coachId athleteId programId title type status scheduledAt durationMin\n location meetingUrl rating feedback completedAt workspaceId createdAt updatedAt\n`;\n\nexport const FIXTURE_FIELDS = `\n id homeTeamId awayTeamId type status competition round venue\n scheduledAt kickoffAt homeScore awayScore notes workspaceId createdAt updatedAt\n`;\n\nexport const STANDING_FIELDS = `\n id teamId competition played won drawn lost goalsFor goalsAgainst\n points rank workspaceId createdAt updatedAt\n`;\n\nexport const WORKOUT_LOG_FIELDS = `\n id athleteId programId title status performedAt durationMin rpe totalLoad\n metrics notes workspaceId createdAt updatedAt\n`;\n\nexport const METRIC_FIELDS = `\n id athleteId type label value unit source recordedAt workspaceId createdAt updatedAt\n`;\n\n// ---------------------------------------------------------------------------\n// Teams + members\n// ---------------------------------------------------------------------------\n\nexport const GET_TEAM = `\n query AtheletebridgeGetTeam($id: ID!) {\n athTeam(id: $id) {\n ${TEAM_FIELDS}\n members { ${MEMBER_FIELDS} }\n fixtures { id type status scheduledAt homeTeamId awayTeamId homeScore awayScore }\n }\n }\n`;\n\nexport const LIST_TEAMS = `\n query AtheletebridgeListTeams(\n $pagination: PaginationInput\n $sport: AthSport\n $status: AthTeamStatus\n ) {\n athListTeams(pagination: $pagination, sport: $sport, status: $status) {\n items { ${TEAM_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_TEAM = `\n mutation AtheletebridgeCreateTeam($input: AthCreateTeamInput!) {\n athCreateTeam(input: $input) {\n ${TEAM_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_TEAM = `\n mutation AtheletebridgeUpdateTeam($id: ID!, $input: AthUpdateTeamInput!) {\n athUpdateTeam(id: $id, input: $input) {\n ${TEAM_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_TEAM = `\n mutation AtheletebridgeArchiveTeam($id: ID!) {\n athArchiveTeam(id: $id)\n }\n`;\n\nexport const LIST_MEMBERS = `\n query AtheletebridgeListMembers($teamId: ID!, $status: AthMemberStatus) {\n athListMembers(teamId: $teamId, status: $status) {\n ${MEMBER_FIELDS}\n }\n }\n`;\n\nexport const ADD_MEMBER = `\n mutation AtheletebridgeAddMember($input: AthAddMemberInput!) {\n athAddMember(input: $input) {\n ${MEMBER_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_MEMBER = `\n mutation AtheletebridgeUpdateMember($id: ID!, $input: AthUpdateMemberInput!) {\n athUpdateMember(id: $id, input: $input) {\n ${MEMBER_FIELDS}\n }\n }\n`;\n\nexport const REMOVE_MEMBER = `\n mutation AtheletebridgeRemoveMember($id: ID!) {\n athRemoveMember(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Programs + drills\n// ---------------------------------------------------------------------------\n\nexport const GET_PROGRAM = `\n query AtheletebridgeGetProgram($id: ID!) {\n athProgram(id: $id) {\n ${PROGRAM_FIELDS}\n drills { ${DRILL_FIELDS} }\n }\n }\n`;\n\nexport const LIST_PROGRAMS = `\n query AtheletebridgeListPrograms(\n $pagination: PaginationInput\n $sport: AthSport\n $level: AthProgramLevel\n $status: AthProgramStatus\n ) {\n athListPrograms(\n pagination: $pagination\n sport: $sport\n level: $level\n status: $status\n ) {\n items { ${PROGRAM_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_PROGRAM = `\n mutation AtheletebridgeCreateProgram($input: AthCreateProgramInput!) {\n athCreateProgram(input: $input) {\n ${PROGRAM_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PROGRAM = `\n mutation AtheletebridgeUpdateProgram($id: ID!, $input: AthUpdateProgramInput!) {\n athUpdateProgram(id: $id, input: $input) {\n ${PROGRAM_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_PROGRAM = `\n mutation AtheletebridgeTransitionProgram($id: ID!, $status: AthProgramStatus!) {\n athTransitionProgram(id: $id, status: $status) {\n ${PROGRAM_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_PROGRAM = `\n mutation AtheletebridgeArchiveProgram($id: ID!) {\n athArchiveProgram(id: $id)\n }\n`;\n\nexport const ADD_DRILL = `\n mutation AtheletebridgeAddDrill($input: AthAddDrillInput!) {\n athAddDrill(input: $input) {\n ${DRILL_FIELDS}\n }\n }\n`;\n\nexport const REMOVE_DRILL = `\n mutation AtheletebridgeRemoveDrill($id: ID!) {\n athRemoveDrill(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Coaching sessions\n// ---------------------------------------------------------------------------\n\nexport const GET_SESSION = `\n query AtheletebridgeGetSession($id: ID!) {\n athSession(id: $id) {\n ${SESSION_FIELDS}\n }\n }\n`;\n\nexport const LIST_SESSIONS = `\n query AtheletebridgeListSessions(\n $pagination: PaginationInput\n $coachId: ID\n $athleteId: ID\n $status: AthSessionStatus\n ) {\n athListSessions(\n pagination: $pagination\n coachId: $coachId\n athleteId: $athleteId\n status: $status\n ) {\n items { ${SESSION_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const BOOK_SESSION = `\n mutation AtheletebridgeBookSession($input: AthBookSessionInput!) {\n athBookSession(input: $input) {\n ${SESSION_FIELDS}\n }\n }\n`;\n\nexport const CONFIRM_SESSION = `\n mutation AtheletebridgeConfirmSession($id: ID!) {\n athConfirmSession(id: $id) {\n ${SESSION_FIELDS}\n }\n }\n`;\n\nexport const COMPLETE_SESSION = `\n mutation AtheletebridgeCompleteSession($id: ID!, $input: AthCompleteSessionInput) {\n athCompleteSession(id: $id, input: $input) {\n ${SESSION_FIELDS}\n }\n }\n`;\n\nexport const CANCEL_SESSION = `\n mutation AtheletebridgeCancelSession($id: ID!) {\n athCancelSession(id: $id) {\n ${SESSION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Fixtures + standings\n// ---------------------------------------------------------------------------\n\nexport const GET_FIXTURE = `\n query AtheletebridgeGetFixture($id: ID!) {\n athFixture(id: $id) {\n ${FIXTURE_FIELDS}\n homeTeam { id name }\n awayTeam { id name }\n }\n }\n`;\n\nexport const LIST_FIXTURES = `\n query AtheletebridgeListFixtures(\n $pagination: PaginationInput\n $teamId: ID\n $status: AthFixtureStatus\n ) {\n athListFixtures(pagination: $pagination, teamId: $teamId, status: $status) {\n items { ${FIXTURE_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const SCHEDULE_FIXTURE = `\n mutation AtheletebridgeScheduleFixture($input: AthCreateFixtureInput!) {\n athScheduleFixture(input: $input) {\n ${FIXTURE_FIELDS}\n }\n }\n`;\n\nexport const RECORD_FIXTURE_RESULT = `\n mutation AtheletebridgeRecordFixtureResult($id: ID!, $input: AthRecordResultInput!) {\n athRecordFixtureResult(id: $id, input: $input) {\n ${FIXTURE_FIELDS}\n }\n }\n`;\n\nexport const LIST_STANDINGS = `\n query AtheletebridgeStandings($competition: String!) {\n athStandings(competition: $competition) {\n ${STANDING_FIELDS}\n team { id name }\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Workout logs\n// ---------------------------------------------------------------------------\n\nexport const LIST_WORKOUT_LOGS = `\n query AtheletebridgeListWorkoutLogs(\n $pagination: PaginationInput\n $athleteId: ID\n $programId: ID\n ) {\n athListWorkoutLogs(pagination: $pagination, athleteId: $athleteId, programId: $programId) {\n items { ${WORKOUT_LOG_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const LOG_WORKOUT = `\n mutation AtheletebridgeLogWorkout($input: AthLogWorkoutInput!) {\n athLogWorkout(input: $input) {\n ${WORKOUT_LOG_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Performance metrics\n// ---------------------------------------------------------------------------\n\nexport const LIST_PERFORMANCE_METRICS = `\n query AtheletebridgePerformanceMetrics($athleteId: ID!, $type: AthMetricType) {\n athPerformanceMetrics(athleteId: $athleteId, type: $type) {\n ${METRIC_FIELDS}\n }\n }\n`;\n\nexport const RECORD_METRIC = `\n mutation AtheletebridgeRecordMetric($input: AthRecordMetricInput!) {\n athRecordMetric(input: $input) {\n ${METRIC_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query AtheletebridgeHealth {\n athHealth\n }\n`;\n","/**\n * Shared zod schemas for the AtheleteBridge tool surface.\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop\n * grounds tool calls against the exact allowed values. The `JSON` scalar\n * input (workout `metrics`) is modelled as a permissive object record — the\n * backend accepts arbitrary JSON, but a record shape gives the LLM a typed\n * hint.\n */\n\nimport { z } from 'zod';\n\nexport const SportEnum = z\n .enum([\n 'ATHLETICS',\n 'BASKETBALL',\n 'CRICKET',\n 'ESPORTS',\n 'FOOTBALL',\n 'OTHER',\n 'SWIMMING',\n 'TENNIS',\n ])\n .describe('Sport a team or program is organised around');\n\nexport const TeamStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'FORMING', 'INACTIVE'])\n .describe('Lifecycle status of a team');\n\nexport const MemberRoleEnum = z\n .enum(['ASSISTANT_COACH', 'CAPTAIN', 'COACH', 'MANAGER', 'PHYSIO', 'PLAYER'])\n .describe('Role of a member within a team');\n\nexport const MemberStatusEnum = z\n .enum(['ACTIVE', 'INJURED', 'RELEASED', 'SUSPENDED', 'TRIAL'])\n .describe('Roster status of a team member');\n\nexport const ProgramLevelEnum = z\n .enum(['ADVANCED', 'BEGINNER', 'ELITE', 'INTERMEDIATE'])\n .describe('Difficulty level of a training program');\n\nexport const ProgramStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'PUBLISHED'])\n .describe('Publish lifecycle status of a training program');\n\nexport const SessionTypeEnum = z\n .enum(['HYBRID', 'IN_PERSON', 'ONLINE'])\n .describe('Delivery format of a coaching session');\n\nexport const SessionStatusEnum = z\n .enum(['CANCELLED', 'COMPLETED', 'CONFIRMED', 'NO_SHOW', 'REQUESTED'])\n .describe('Lifecycle status of a coaching session');\n\nexport const FixtureTypeEnum = z\n .enum(['CUP', 'FRIENDLY', 'LEAGUE', 'SCRIMMAGE', 'TOURNAMENT'])\n .describe('Competition type of a fixture');\n\nexport const FixtureStatusEnum = z\n .enum(['CANCELLED', 'COMPLETED', 'LIVE', 'POSTPONED', 'SCHEDULED'])\n .describe('Lifecycle status of a fixture');\n\nexport const WorkoutStatusEnum = z\n .enum(['COMPLETED', 'PLANNED', 'SKIPPED'])\n .describe('Status of a logged workout');\n\nexport const MetricTypeEnum = z\n .enum(['ACCURACY', 'AGILITY', 'CUSTOM', 'ENDURANCE', 'HEART_RATE', 'SPEED', 'STRENGTH', 'WEIGHT'])\n .describe('Category of a performance metric');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n","/**\n * AtheleteBridge team + roster tools.\n *\n * Surface (8): teams_{get,list,create,update,archive},\n * members_{list,add,update,remove}.\n * All Query/Mutation root fields carry the server's `ath` prefix\n * (athTeam / athListTeams / athCreateTeam / …) — they are called by their\n * REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { SportEnum, TeamStatusEnum, MemberRoleEnum, MemberStatusEnum } from './shared.js';\n\nexport function registerTeamTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'teams_get')),\n {\n title: 'Get Team',\n description:\n 'Fetch a single AtheleteBridge team by ID, including its roster (members) and fixtures.',\n inputSchema: { id: z.string().describe('Team ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athTeam: Record<string, unknown> | null;\n }>(ops.GET_TEAM, { id });\n if (!data.athTeam) return errorResult(`Team ${id} not found`);\n return jsonResult(data.athTeam);\n } catch (error) {\n ctx.logger.error('atheletebridge teams_get failed', { error: String(error) });\n return errorResult(\n `Failed to get team: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'teams_list')),\n {\n title: 'List Teams',\n description:\n 'List teams in the bound workspace with optional sport/status filters and pagination.',\n inputSchema: {\n sport: SportEnum.optional().describe('Filter by sport'),\n status: TeamStatusEnum.optional().describe('Filter by lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ sport, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athListTeams: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_TEAMS, {\n pagination: { limit: limit ?? 50, offset: offset ?? 0 },\n sport,\n status,\n });\n return jsonResult(data.athListTeams);\n } catch (error) {\n ctx.logger.error('atheletebridge teams_list failed', { error: String(error) });\n return errorResult(\n `Failed to list teams: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'teams_create')),\n {\n title: 'Create Team',\n description: 'Create a new team. `name` is required; sport and status default server-side.',\n inputSchema: {\n name: z.string().min(1).describe('Team display name'),\n sport: SportEnum.optional().describe('Sport (default OTHER)'),\n status: TeamStatusEnum.optional().describe('Initial status (default FORMING)'),\n season: z.string().optional().describe('Season label (e.g. \"2026\")'),\n ageGroup: z.string().optional().describe('Age group (e.g. \"U18\")'),\n homeVenue: z.string().optional().describe('Home venue / ground'),\n headCoachId: z.string().optional().describe('User ID of the head coach'),\n description: z.string().optional().describe('Team description'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({\n name,\n sport,\n status,\n season,\n ageGroup,\n homeVenue,\n headCoachId,\n description,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (sport !== undefined) input.sport = sport;\n if (status !== undefined) input.status = status;\n if (season !== undefined) input.season = season;\n if (ageGroup !== undefined) input.ageGroup = ageGroup;\n if (homeVenue !== undefined) input.homeVenue = homeVenue;\n if (headCoachId !== undefined) input.headCoachId = headCoachId;\n if (description !== undefined) input.description = description;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{ athCreateTeam: Record<string, unknown> }>(\n ops.CREATE_TEAM,\n { input },\n );\n return jsonResult(data.athCreateTeam);\n } catch (error) {\n ctx.logger.error('atheletebridge teams_create failed', { error: String(error) });\n return errorResult(\n `Failed to create team: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'teams_update')),\n {\n title: 'Update Team',\n description: 'Update a team. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Team ID'),\n name: z.string().optional().describe('Updated name'),\n sport: SportEnum.optional().describe('Updated sport'),\n status: TeamStatusEnum.optional().describe('Updated status'),\n season: z.string().optional().describe('Updated season'),\n ageGroup: z.string().optional().describe('Updated age group'),\n homeVenue: z.string().optional().describe('Updated home venue'),\n headCoachId: z.string().optional().describe('Updated head-coach user ID'),\n description: z.string().optional().describe('Updated description'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n sport,\n status,\n season,\n ageGroup,\n homeVenue,\n headCoachId,\n description,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (sport !== undefined) input.sport = sport;\n if (status !== undefined) input.status = status;\n if (season !== undefined) input.season = season;\n if (ageGroup !== undefined) input.ageGroup = ageGroup;\n if (homeVenue !== undefined) input.homeVenue = homeVenue;\n if (headCoachId !== undefined) input.headCoachId = headCoachId;\n if (description !== undefined) input.description = description;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/sport/status/season/ageGroup/homeVenue/headCoachId/description/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{ athUpdateTeam: Record<string, unknown> }>(\n ops.UPDATE_TEAM,\n { id, input },\n );\n return jsonResult(data.athUpdateTeam);\n } catch (error) {\n ctx.logger.error('atheletebridge teams_update failed', { error: String(error) });\n return errorResult(\n `Failed to update team: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'teams_archive')),\n {\n title: 'Archive Team',\n description: 'Archive (soft-delete) a team by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Team ID') },\n // BOFF-3616/BOFF-3907: the fleet destructiveHint inference (tool-name.ts)\n // only matches a `delete` name segment, so an irreversible `archive` call\n // needs an explicit annotation to be caught by the confirmation gate that\n // atheletebridge-mcp/src/index.ts enables via enforceDestructiveConfirmation.\n annotations: { destructiveHint: true },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ athArchiveTeam: boolean }>(\n ops.ARCHIVE_TEAM,\n {\n id,\n },\n );\n return jsonResult({ archived: data.athArchiveTeam, id });\n } catch (error) {\n ctx.logger.error('atheletebridge teams_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive team: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Members (roster) ───────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'members_list')),\n {\n title: 'List Team Members',\n description: 'List the members (roster) of a team, optionally filtered by member status.',\n inputSchema: {\n teamId: z.string().describe('Team ID'),\n status: MemberStatusEnum.optional().describe('Filter by roster status'),\n },\n },\n async ({ teamId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athListMembers: Array<Record<string, unknown>>;\n }>(ops.LIST_MEMBERS, { teamId, status });\n return jsonResult(data.athListMembers);\n } catch (error) {\n ctx.logger.error('atheletebridge members_list failed', { error: String(error) });\n return errorResult(\n `Failed to list members: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'members_add')),\n {\n title: 'Add Team Member',\n description:\n 'Add a member to a team roster. `teamId`, `userId`, and `displayName` are required.',\n inputSchema: {\n teamId: z.string().min(1).describe('Team ID'),\n userId: z.string().min(1).describe('User ID of the member'),\n displayName: z.string().min(1).describe('Display name on the roster'),\n role: MemberRoleEnum.optional().describe('Role (default PLAYER)'),\n status: MemberStatusEnum.optional().describe('Initial status (default ACTIVE)'),\n position: z.string().optional().describe('Playing position'),\n jerseyNumber: z.number().int().optional().describe('Jersey number'),\n dominantSide: z.string().optional().describe('Dominant side/hand/foot'),\n height: z.number().optional().describe('Height (units per workspace convention)'),\n weight: z.number().optional().describe('Weight (units per workspace convention)'),\n joinedAt: z.string().optional().describe('Join date (ISO 8601 DateTime)'),\n notes: z.string().optional().describe('Free-form notes'),\n },\n },\n async ({\n teamId,\n userId,\n displayName,\n role,\n status,\n position,\n jerseyNumber,\n dominantSide,\n height,\n weight,\n joinedAt,\n notes,\n }) => {\n try {\n const input: Record<string, unknown> = { teamId, userId, displayName };\n if (role !== undefined) input.role = role;\n if (status !== undefined) input.status = status;\n if (position !== undefined) input.position = position;\n if (jerseyNumber !== undefined) input.jerseyNumber = jerseyNumber;\n if (dominantSide !== undefined) input.dominantSide = dominantSide;\n if (height !== undefined) input.height = height;\n if (weight !== undefined) input.weight = weight;\n if (joinedAt !== undefined) input.joinedAt = joinedAt;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{ athAddMember: Record<string, unknown> }>(\n ops.ADD_MEMBER,\n { input },\n );\n return jsonResult(data.athAddMember);\n } catch (error) {\n ctx.logger.error('atheletebridge members_add failed', { error: String(error) });\n return errorResult(\n `Failed to add member: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'members_update')),\n {\n title: 'Update Team Member',\n description: 'Update a roster member. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Member ID'),\n displayName: z.string().optional().describe('Updated display name'),\n role: MemberRoleEnum.optional().describe('Updated role'),\n status: MemberStatusEnum.optional().describe('Updated roster status'),\n position: z.string().optional().describe('Updated position'),\n jerseyNumber: z.number().int().optional().describe('Updated jersey number'),\n dominantSide: z.string().optional().describe('Updated dominant side'),\n height: z.number().optional().describe('Updated height'),\n weight: z.number().optional().describe('Updated weight'),\n notes: z.string().optional().describe('Updated notes'),\n },\n },\n async ({\n id,\n displayName,\n role,\n status,\n position,\n jerseyNumber,\n dominantSide,\n height,\n weight,\n notes,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (displayName !== undefined) input.displayName = displayName;\n if (role !== undefined) input.role = role;\n if (status !== undefined) input.status = status;\n if (position !== undefined) input.position = position;\n if (jerseyNumber !== undefined) input.jerseyNumber = jerseyNumber;\n if (dominantSide !== undefined) input.dominantSide = dominantSide;\n if (height !== undefined) input.height = height;\n if (weight !== undefined) input.weight = weight;\n if (notes !== undefined) input.notes = notes;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of displayName/role/status/position/jerseyNumber/dominantSide/height/weight/notes',\n );\n }\n\n const data = await ctx.gql.workspace.request<{ athUpdateMember: Record<string, unknown> }>(\n ops.UPDATE_MEMBER,\n { id, input },\n );\n return jsonResult(data.athUpdateMember);\n } catch (error) {\n ctx.logger.error('atheletebridge members_update failed', { error: String(error) });\n return errorResult(\n `Failed to update member: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'members_remove')),\n {\n title: 'Remove Team Member',\n description: 'Remove a member from the roster by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Member ID') },\n // BOFF-3616/BOFF-3907: see teams_archive above — `remove` is not caught\n // by the fleet's name-based destructiveHint inference.\n annotations: { destructiveHint: true },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ athRemoveMember: boolean }>(\n ops.REMOVE_MEMBER,\n { id },\n );\n return jsonResult({ removed: data.athRemoveMember, id });\n } catch (error) {\n ctx.logger.error('atheletebridge members_remove failed', { error: String(error) });\n return errorResult(\n `Failed to remove member: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * AtheleteBridge training-program + drill tools.\n *\n * Surface (8): programs_{get,list,create,update,transition,archive},\n * drills_{add,remove}.\n * Root fields carry the server's `ath` prefix\n * (athProgram / athListPrograms / athCreateProgram / athTransitionProgram / …)\n * and are called by their REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { SportEnum, ProgramLevelEnum, ProgramStatusEnum } from './shared.js';\n\nexport function registerProgramTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_get')),\n {\n title: 'Get Training Program',\n description: 'Fetch a single training program by ID, including its drills.',\n inputSchema: { id: z.string().describe('Program ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athProgram: Record<string, unknown> | null;\n }>(ops.GET_PROGRAM, { id });\n if (!data.athProgram) return errorResult(`Program ${id} not found`);\n return jsonResult(data.athProgram);\n } catch (error) {\n ctx.logger.error('atheletebridge programs_get failed', { error: String(error) });\n return errorResult(\n `Failed to get program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_list')),\n {\n title: 'List Training Programs',\n description:\n 'List training programs with optional sport/level/status filters and pagination.',\n inputSchema: {\n sport: SportEnum.optional().describe('Filter by sport'),\n level: ProgramLevelEnum.optional().describe('Filter by difficulty level'),\n status: ProgramStatusEnum.optional().describe('Filter by publish status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ sport, level, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athListPrograms: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_PROGRAMS, {\n pagination: { limit: limit ?? 50, offset: offset ?? 0 },\n sport,\n level,\n status,\n });\n return jsonResult(data.athListPrograms);\n } catch (error) {\n ctx.logger.error('atheletebridge programs_list failed', { error: String(error) });\n return errorResult(\n `Failed to list programs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_create')),\n {\n title: 'Create Training Program',\n description: 'Create a new training program. `name` is required.',\n inputSchema: {\n name: z.string().min(1).describe('Program name'),\n sport: SportEnum.optional().describe('Sport (default OTHER)'),\n level: ProgramLevelEnum.optional().describe('Difficulty level (default BEGINNER)'),\n summary: z.string().optional().describe('Short summary'),\n weeks: z.number().int().optional().describe('Number of weeks the program spans'),\n isTemplate: z.boolean().optional().describe('Mark as a reusable template (default false)'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ name, sport, level, summary, weeks, isTemplate, tags }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (sport !== undefined) input.sport = sport;\n if (level !== undefined) input.level = level;\n if (summary !== undefined) input.summary = summary;\n if (weeks !== undefined) input.weeks = weeks;\n if (isTemplate !== undefined) input.isTemplate = isTemplate;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{ athCreateProgram: Record<string, unknown> }>(\n ops.CREATE_PROGRAM,\n { input },\n );\n return jsonResult(data.athCreateProgram);\n } catch (error) {\n ctx.logger.error('atheletebridge programs_create failed', { error: String(error) });\n return errorResult(\n `Failed to create program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_update')),\n {\n title: 'Update Training Program',\n description: 'Update a training program. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Program ID'),\n name: z.string().optional().describe('Updated name'),\n sport: SportEnum.optional().describe('Updated sport'),\n level: ProgramLevelEnum.optional().describe('Updated level'),\n summary: z.string().optional().describe('Updated summary'),\n weeks: z.number().int().optional().describe('Updated week count'),\n isTemplate: z.boolean().optional().describe('Updated template flag'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, name, sport, level, summary, weeks, isTemplate, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (sport !== undefined) input.sport = sport;\n if (level !== undefined) input.level = level;\n if (summary !== undefined) input.summary = summary;\n if (weeks !== undefined) input.weeks = weeks;\n if (isTemplate !== undefined) input.isTemplate = isTemplate;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/sport/level/summary/weeks/isTemplate/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{ athUpdateProgram: Record<string, unknown> }>(\n ops.UPDATE_PROGRAM,\n { id, input },\n );\n return jsonResult(data.athUpdateProgram);\n } catch (error) {\n ctx.logger.error('atheletebridge programs_update failed', { error: String(error) });\n return errorResult(\n `Failed to update program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_transition')),\n {\n title: 'Transition Program Status',\n description:\n 'Advance a program through its publish lifecycle (validated transitions: DRAFT -> PUBLISHED -> ARCHIVED).',\n inputSchema: {\n id: z.string().describe('Program ID'),\n status: ProgramStatusEnum.describe('Target status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athTransitionProgram: Record<string, unknown>;\n }>(ops.TRANSITION_PROGRAM, { id, status });\n return jsonResult(data.athTransitionProgram);\n } catch (error) {\n ctx.logger.error('atheletebridge programs_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_archive')),\n {\n title: 'Archive Training Program',\n description: 'Archive (soft-delete) a program by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Program ID') },\n // BOFF-3616/BOFF-3907: the fleet destructiveHint inference (tool-name.ts)\n // only matches a `delete` name segment, so an irreversible `archive` call\n // needs an explicit annotation to be caught by the confirmation gate that\n // atheletebridge-mcp/src/index.ts enables via enforceDestructiveConfirmation.\n annotations: { destructiveHint: true },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ athArchiveProgram: boolean }>(\n ops.ARCHIVE_PROGRAM,\n { id },\n );\n return jsonResult({ archived: data.athArchiveProgram, id });\n } catch (error) {\n ctx.logger.error('atheletebridge programs_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Drills ───────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_add_drill')),\n {\n title: 'Add Drill',\n description:\n 'Add a drill to a training program. `programId` and `name` are required. `videoFileId` references a wspace-files-svc File (demo video).',\n inputSchema: {\n programId: z.string().min(1).describe('Program ID the drill belongs to'),\n name: z.string().min(1).describe('Drill name'),\n description: z.string().optional().describe('Drill description / instructions'),\n weekNumber: z.number().int().optional().describe('Program week (default 1)'),\n orderIndex: z.number().int().optional().describe('Ordering within the week (default 0)'),\n sets: z.number().int().optional().describe('Number of sets'),\n reps: z.number().int().optional().describe('Reps per set'),\n durationSec: z.number().int().optional().describe('Duration in seconds'),\n restSec: z.number().int().optional().describe('Rest between sets in seconds'),\n videoFileId: z.string().optional().describe('wspace-files-svc File ID for a demo video'),\n },\n },\n async ({\n programId,\n name,\n description,\n weekNumber,\n orderIndex,\n sets,\n reps,\n durationSec,\n restSec,\n videoFileId,\n }) => {\n try {\n const input: Record<string, unknown> = { programId, name };\n if (description !== undefined) input.description = description;\n if (weekNumber !== undefined) input.weekNumber = weekNumber;\n if (orderIndex !== undefined) input.orderIndex = orderIndex;\n if (sets !== undefined) input.sets = sets;\n if (reps !== undefined) input.reps = reps;\n if (durationSec !== undefined) input.durationSec = durationSec;\n if (restSec !== undefined) input.restSec = restSec;\n if (videoFileId !== undefined) input.videoFileId = videoFileId;\n\n const data = await ctx.gql.workspace.request<{ athAddDrill: Record<string, unknown> }>(\n ops.ADD_DRILL,\n { input },\n );\n return jsonResult(data.athAddDrill);\n } catch (error) {\n ctx.logger.error('atheletebridge drills_add failed', { error: String(error) });\n return errorResult(\n `Failed to add drill: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_remove_drill')),\n {\n title: 'Remove Drill',\n description: 'Remove a drill from its program by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Drill ID') },\n // BOFF-3616/BOFF-3907: see programs_archive above — `remove` is not\n // caught by the fleet's name-based destructiveHint inference.\n annotations: { destructiveHint: true },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ athRemoveDrill: boolean }>(\n ops.REMOVE_DRILL,\n {\n id,\n },\n );\n return jsonResult({ removed: data.athRemoveDrill, id });\n } catch (error) {\n ctx.logger.error('atheletebridge drills_remove failed', { error: String(error) });\n return errorResult(\n `Failed to remove drill: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * AtheleteBridge coaching-session tools.\n *\n * Surface (6): sessions_{get,list,book,confirm,complete,cancel}.\n * Root fields carry the server's `ath` prefix\n * (athSession / athListSessions / athBookSession / …) and are called by their\n * REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { SessionTypeEnum, SessionStatusEnum } from './shared.js';\n\nexport function registerSessionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_get')),\n {\n title: 'Get Coaching Session',\n description: 'Fetch a single coaching session by ID.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athSession: Record<string, unknown> | null;\n }>(ops.GET_SESSION, { id });\n if (!data.athSession) return errorResult(`Session ${id} not found`);\n return jsonResult(data.athSession);\n } catch (error) {\n ctx.logger.error('atheletebridge sessions_get failed', { error: String(error) });\n return errorResult(\n `Failed to get session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_list')),\n {\n title: 'List Coaching Sessions',\n description:\n 'List coaching sessions with optional coach/athlete/status filters and pagination.',\n inputSchema: {\n coachId: z.string().optional().describe('Filter by coach user ID'),\n athleteId: z.string().optional().describe('Filter by athlete user ID'),\n status: SessionStatusEnum.optional().describe('Filter by session status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ coachId, athleteId, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athListSessions: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_SESSIONS, {\n pagination: { limit: limit ?? 50, offset: offset ?? 0 },\n coachId,\n athleteId,\n status,\n });\n return jsonResult(data.athListSessions);\n } catch (error) {\n ctx.logger.error('atheletebridge sessions_list failed', { error: String(error) });\n return errorResult(\n `Failed to list sessions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_book')),\n {\n title: 'Book Coaching Session',\n description:\n 'Book a coaching session. `coachId`, `athleteId`, `title`, and `scheduledAt` are required.',\n inputSchema: {\n coachId: z.string().min(1).describe('Coach user ID'),\n athleteId: z.string().min(1).describe('Athlete user ID'),\n title: z.string().min(1).describe('Session title'),\n scheduledAt: z.string().describe('Scheduled start (ISO 8601 DateTime)'),\n type: SessionTypeEnum.optional().describe('Delivery format (default IN_PERSON)'),\n durationMin: z.number().int().optional().describe('Duration in minutes'),\n location: z.string().optional().describe('Physical location'),\n meetingUrl: z.string().optional().describe('Online meeting URL'),\n programId: z.string().optional().describe('Linked training program ID'),\n },\n },\n async ({\n coachId,\n athleteId,\n title,\n scheduledAt,\n type,\n durationMin,\n location,\n meetingUrl,\n programId,\n }) => {\n try {\n const input: Record<string, unknown> = { coachId, athleteId, title, scheduledAt };\n if (type !== undefined) input.type = type;\n if (durationMin !== undefined) input.durationMin = durationMin;\n if (location !== undefined) input.location = location;\n if (meetingUrl !== undefined) input.meetingUrl = meetingUrl;\n if (programId !== undefined) input.programId = programId;\n\n const data = await ctx.gql.workspace.request<{ athBookSession: Record<string, unknown> }>(\n ops.BOOK_SESSION,\n { input },\n );\n return jsonResult(data.athBookSession);\n } catch (error) {\n ctx.logger.error('atheletebridge sessions_book failed', { error: String(error) });\n return errorResult(\n `Failed to book session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_confirm')),\n {\n title: 'Confirm Coaching Session',\n description: 'Confirm a requested coaching session by ID.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athConfirmSession: Record<string, unknown>;\n }>(ops.CONFIRM_SESSION, { id });\n return jsonResult(data.athConfirmSession);\n } catch (error) {\n ctx.logger.error('atheletebridge sessions_confirm failed', { error: String(error) });\n return errorResult(\n `Failed to confirm session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_complete')),\n {\n title: 'Complete Coaching Session',\n description:\n 'Mark a coaching session COMPLETED, optionally recording a rating (1-5) and feedback.',\n inputSchema: {\n id: z.string().describe('Session ID'),\n rating: z.number().int().optional().describe('Rating (e.g. 1-5)'),\n feedback: z.string().optional().describe('Coach/athlete feedback notes'),\n },\n },\n async ({ id, rating, feedback }) => {\n try {\n const input: Record<string, unknown> = {};\n if (rating !== undefined) input.rating = rating;\n if (feedback !== undefined) input.feedback = feedback;\n\n const data = await ctx.gql.workspace.request<{\n athCompleteSession: Record<string, unknown>;\n }>(ops.COMPLETE_SESSION, {\n id,\n input: Object.keys(input).length > 0 ? input : undefined,\n });\n return jsonResult(data.athCompleteSession);\n } catch (error) {\n ctx.logger.error('atheletebridge sessions_complete failed', { error: String(error) });\n return errorResult(\n `Failed to complete session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_cancel')),\n {\n title: 'Cancel Coaching Session',\n description: 'Cancel a coaching session by ID.',\n inputSchema: { id: z.string().describe('Session ID') },\n // BOFF-3616/BOFF-3907: the fleet destructiveHint inference (tool-name.ts)\n // only matches a `delete` name segment, so an irreversible `cancel` call\n // needs an explicit annotation to be caught by the confirmation gate that\n // atheletebridge-mcp/src/index.ts enables via enforceDestructiveConfirmation.\n annotations: { destructiveHint: true },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ athCancelSession: Record<string, unknown> }>(\n ops.CANCEL_SESSION,\n { id },\n );\n return jsonResult(data.athCancelSession);\n } catch (error) {\n ctx.logger.error('atheletebridge sessions_cancel failed', { error: String(error) });\n return errorResult(\n `Failed to cancel session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * AtheleteBridge fixture + standings tools.\n *\n * Surface (5): fixtures_{get,list,schedule,record_result}, standings_list.\n * Root fields carry the server's `ath` prefix\n * (athFixture / athListFixtures / athScheduleFixture / athRecordFixtureResult /\n * athStandings) and are called by their REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { FixtureTypeEnum, FixtureStatusEnum } from './shared.js';\n\nexport function registerFixtureTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'fixtures_get')),\n {\n title: 'Get Fixture',\n description: 'Fetch a single fixture by ID, including resolved home/away teams.',\n inputSchema: { id: z.string().describe('Fixture ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athFixture: Record<string, unknown> | null;\n }>(ops.GET_FIXTURE, { id });\n if (!data.athFixture) return errorResult(`Fixture ${id} not found`);\n return jsonResult(data.athFixture);\n } catch (error) {\n ctx.logger.error('atheletebridge fixtures_get failed', { error: String(error) });\n return errorResult(\n `Failed to get fixture: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'fixtures_list')),\n {\n title: 'List Fixtures',\n description: 'List fixtures with optional team/status filters and pagination.',\n inputSchema: {\n teamId: z.string().optional().describe('Filter by team ID (home or away)'),\n status: FixtureStatusEnum.optional().describe('Filter by fixture status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ teamId, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athListFixtures: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_FIXTURES, {\n pagination: { limit: limit ?? 50, offset: offset ?? 0 },\n teamId,\n status,\n });\n return jsonResult(data.athListFixtures);\n } catch (error) {\n ctx.logger.error('atheletebridge fixtures_list failed', { error: String(error) });\n return errorResult(\n `Failed to list fixtures: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'fixtures_schedule')),\n {\n title: 'Schedule Fixture',\n description:\n 'Schedule a new fixture. `homeTeamId` and `scheduledAt` are required; `awayTeamId` is optional for solo/athletics events.',\n inputSchema: {\n homeTeamId: z.string().min(1).describe('Home team ID'),\n scheduledAt: z.string().describe('Scheduled date/time (ISO 8601 DateTime)'),\n awayTeamId: z.string().optional().describe('Away team ID'),\n type: FixtureTypeEnum.optional().describe('Fixture type (default FRIENDLY)'),\n competition: z.string().optional().describe('Competition name'),\n round: z.string().optional().describe('Round / matchday label'),\n venue: z.string().optional().describe('Venue'),\n kickoffAt: z.string().optional().describe('Kickoff time (ISO 8601 DateTime)'),\n notes: z.string().optional().describe('Free-form notes'),\n },\n },\n async ({\n homeTeamId,\n scheduledAt,\n awayTeamId,\n type,\n competition,\n round,\n venue,\n kickoffAt,\n notes,\n }) => {\n try {\n const input: Record<string, unknown> = { homeTeamId, scheduledAt };\n if (awayTeamId !== undefined) input.awayTeamId = awayTeamId;\n if (type !== undefined) input.type = type;\n if (competition !== undefined) input.competition = competition;\n if (round !== undefined) input.round = round;\n if (venue !== undefined) input.venue = venue;\n if (kickoffAt !== undefined) input.kickoffAt = kickoffAt;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{\n athScheduleFixture: Record<string, unknown>;\n }>(ops.SCHEDULE_FIXTURE, { input });\n return jsonResult(data.athScheduleFixture);\n } catch (error) {\n ctx.logger.error('atheletebridge fixtures_schedule failed', { error: String(error) });\n return errorResult(\n `Failed to schedule fixture: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'fixtures_record_result')),\n {\n title: 'Record Fixture Result',\n description:\n 'Record a final result for a fixture, mark it COMPLETED, and recompute the competition standings for both teams.',\n inputSchema: {\n id: z.string().describe('Fixture ID'),\n homeScore: z.number().int().describe('Final home score'),\n awayScore: z.number().int().describe('Final away score'),\n },\n },\n async ({ id, homeScore, awayScore }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athRecordFixtureResult: Record<string, unknown>;\n }>(ops.RECORD_FIXTURE_RESULT, { id, input: { homeScore, awayScore } });\n return jsonResult(data.athRecordFixtureResult);\n } catch (error) {\n ctx.logger.error('atheletebridge fixtures_record_result failed', { error: String(error) });\n return errorResult(\n `Failed to record fixture result: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'fixtures_standings')),\n {\n title: 'List Standings',\n description:\n 'List the standings table for a competition, ordered as returned by the backend.',\n inputSchema: {\n competition: z.string().min(1).describe('Competition name to fetch standings for'),\n },\n },\n async ({ competition }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athStandings: Array<Record<string, unknown>>;\n }>(ops.LIST_STANDINGS, { competition });\n return jsonResult(data.athStandings);\n } catch (error) {\n ctx.logger.error('atheletebridge standings_list failed', { error: String(error) });\n return errorResult(\n `Failed to list standings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * AtheleteBridge workout-log + performance-metric tools.\n *\n * Surface (4): workouts_{list,log}, metrics_{list,record}.\n * Root fields carry the server's `ath` prefix\n * (athListWorkoutLogs / athLogWorkout / athPerformanceMetrics / athRecordMetric)\n * and are called by their REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { WorkoutStatusEnum, MetricTypeEnum, JsonObject } from './shared.js';\n\nexport function registerWorkoutTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workouts_list')),\n {\n title: 'List Workout Logs',\n description: 'List logged workouts with optional athlete/program filters and pagination.',\n inputSchema: {\n athleteId: z.string().optional().describe('Filter by athlete user ID'),\n programId: z.string().optional().describe('Filter by training program ID'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ athleteId, programId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athListWorkoutLogs: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_WORKOUT_LOGS, {\n pagination: { limit: limit ?? 50, offset: offset ?? 0 },\n athleteId,\n programId,\n });\n return jsonResult(data.athListWorkoutLogs);\n } catch (error) {\n ctx.logger.error('atheletebridge workouts_list failed', { error: String(error) });\n return errorResult(\n `Failed to list workout logs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workouts_log')),\n {\n title: 'Log Workout',\n description:\n 'Log a workout. `title` and `performedAt` are required. `metrics` is arbitrary JSON (e.g. per-exercise data).',\n inputSchema: {\n title: z.string().min(1).describe('Workout title'),\n performedAt: z.string().describe('When the workout was performed (ISO 8601 DateTime)'),\n athleteId: z.string().optional().describe('Athlete user ID'),\n programId: z.string().optional().describe('Linked training program ID'),\n status: WorkoutStatusEnum.optional().describe('Workout status (default COMPLETED)'),\n durationMin: z.number().int().optional().describe('Duration in minutes'),\n rpe: z.number().int().optional().describe('Rate of perceived exertion (e.g. 1-10)'),\n totalLoad: z.number().optional().describe('Total training load'),\n metrics: JsonObject.optional().describe('Arbitrary metrics JSON'),\n notes: z.string().optional().describe('Free-form notes'),\n },\n },\n async ({\n title,\n performedAt,\n athleteId,\n programId,\n status,\n durationMin,\n rpe,\n totalLoad,\n metrics,\n notes,\n }) => {\n try {\n const input: Record<string, unknown> = { title, performedAt };\n if (athleteId !== undefined) input.athleteId = athleteId;\n if (programId !== undefined) input.programId = programId;\n if (status !== undefined) input.status = status;\n if (durationMin !== undefined) input.durationMin = durationMin;\n if (rpe !== undefined) input.rpe = rpe;\n if (totalLoad !== undefined) input.totalLoad = totalLoad;\n if (metrics !== undefined) input.metrics = metrics;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{ athLogWorkout: Record<string, unknown> }>(\n ops.LOG_WORKOUT,\n { input },\n );\n return jsonResult(data.athLogWorkout);\n } catch (error) {\n ctx.logger.error('atheletebridge workouts_log failed', { error: String(error) });\n return errorResult(\n `Failed to log workout: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Performance metrics ────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'metrics_list')),\n {\n title: 'List Performance Metrics',\n description: 'List performance metrics for an athlete, optionally filtered by metric type.',\n inputSchema: {\n athleteId: z.string().describe('Athlete user ID'),\n type: MetricTypeEnum.optional().describe('Filter by metric type'),\n },\n },\n async ({ athleteId, type }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n athPerformanceMetrics: Array<Record<string, unknown>>;\n }>(ops.LIST_PERFORMANCE_METRICS, { athleteId, type });\n return jsonResult(data.athPerformanceMetrics);\n } catch (error) {\n ctx.logger.error('atheletebridge metrics_list failed', { error: String(error) });\n return errorResult(\n `Failed to list performance metrics: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'metrics_record')),\n {\n title: 'Record Performance Metric',\n description:\n 'Record a performance metric for an athlete. `label`, `value`, and `recordedAt` are required.',\n inputSchema: {\n label: z.string().min(1).describe('Human-readable metric label'),\n value: z.number().describe('Recorded numeric value'),\n recordedAt: z.string().describe('When the metric was recorded (ISO 8601 DateTime)'),\n athleteId: z.string().optional().describe('Athlete user ID'),\n type: MetricTypeEnum.optional().describe('Metric type (default CUSTOM)'),\n unit: z.string().optional().describe('Unit of measure (e.g. \"kg\", \"s\", \"bpm\")'),\n source: z.string().optional().describe('Source of the measurement (device/manual)'),\n },\n },\n async ({ label, value, recordedAt, athleteId, type, unit, source }) => {\n try {\n const input: Record<string, unknown> = { label, value, recordedAt };\n if (athleteId !== undefined) input.athleteId = athleteId;\n if (type !== undefined) input.type = type;\n if (unit !== undefined) input.unit = unit;\n if (source !== undefined) input.source = source;\n\n const data = await ctx.gql.workspace.request<{ athRecordMetric: Record<string, unknown> }>(\n ops.RECORD_METRIC,\n { input },\n );\n return jsonResult(data.athRecordMetric);\n } catch (error) {\n ctx.logger.error('atheletebridge metrics_record failed', { error: String(error) });\n return errorResult(\n `Failed to record performance metric: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * AtheleteBridge health tool.\n *\n * Surface (1): health.\n * `health` maps to the @public athHealth query (no auth required); the schema\n * exposes a real `athHealth: String!` liveness/identity probe.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analytics_health')),\n {\n title: 'AtheleteBridge Health Check',\n description:\n 'Public health probe for the AtheleteBridge subgraph (athHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ athHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.athHealth });\n } catch (error) {\n ctx.logger.error('atheletebridge health failed', { error: String(error) });\n return errorResult(\n `AtheleteBridge health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_TEAMS, LIST_PROGRAMS } from './operations.js';\n\n/**\n * Read-only AtheleteBridge MCP resources. URIs are product-prefixed via\n * mcpResourceUri so they don't collide when multiple MCP servers run side by\n * side. Each is tracked at function entry so the shell manifest reflects what\n * was registered even though registration is imperative.\n */\nexport function registerAtheletebridgeResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const teamsUri = track(mcpResourceUri(ctx.productName, 'teams'));\n const programsUri = track(mcpResourceUri(ctx.productName, 'programs'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'atheletebridge-schema',\n schemaUri,\n {\n title: 'AtheleteBridge Domain Schema',\n description:\n 'Overview of the AtheleteBridge sports domain — entities, enums, and the per-entity tool surface.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug(`Resource ${schemaUri} requested`);\n const schema = `# AtheleteBridge Domain (Overview)\n\nSports team management, athlete training, coaching, and performance tracking.\n\n## Entities\n- AthTeam — a squad/club (members, fixtures)\n- AthMember — a roster entry on a team (player/coach/staff)\n- AthProgram — a training program (drills)\n- AthDrill — a drill within a program (optional demo video File)\n- AthSession — a coaching session (request → confirm → complete)\n- AthFixture — a scheduled match/event (result recompute standings)\n- AthStanding — a competition standings-table row\n- AthWorkoutLog — a logged workout for an athlete\n- AthPerformanceMetric — a recorded performance metric for an athlete\n\n## Enums\n- AthSport: ATHLETICS, BASKETBALL, CRICKET, ESPORTS, FOOTBALL, OTHER, SWIMMING, TENNIS\n- AthTeamStatus: ACTIVE, ARCHIVED, FORMING, INACTIVE\n- AthMemberRole: ASSISTANT_COACH, CAPTAIN, COACH, MANAGER, PHYSIO, PLAYER\n- AthMemberStatus: ACTIVE, INJURED, RELEASED, SUSPENDED, TRIAL\n- AthProgramLevel: ADVANCED, BEGINNER, ELITE, INTERMEDIATE\n- AthProgramStatus: ARCHIVED, DRAFT, PUBLISHED\n- AthSessionType: HYBRID, IN_PERSON, ONLINE\n- AthSessionStatus: CANCELLED, COMPLETED, CONFIRMED, NO_SHOW, REQUESTED\n- AthFixtureType: CUP, FRIENDLY, LEAGUE, SCRIMMAGE, TOURNAMENT\n- AthFixtureStatus: CANCELLED, COMPLETED, LIVE, POSTPONED, SCHEDULED\n- AthWorkoutStatus: COMPLETED, PLANNED, SKIPPED\n- AthMetricType: ACCURACY, AGILITY, CUSTOM, ENDURANCE, HEART_RATE, SPEED, STRENGTH, WEIGHT\n\n## Tool groups\nteams, members, programs, drills, sessions, fixtures, standings, workouts, metrics, health.\nAll run against the WORKSPACE gateway (workspace-scoped) except the public health probe.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://teams — team directory\n server.registerResource(\n 'atheletebridge-teams',\n teamsUri,\n {\n title: 'AtheleteBridge Team Directory',\n description: 'The first 50 teams in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${teamsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ athListTeams: unknown }>(LIST_TEAMS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: teamsUri,\n text: JSON.stringify(data.athListTeams, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: teamsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://programs — training-program catalog\n server.registerResource(\n 'atheletebridge-programs',\n programsUri,\n {\n title: 'AtheleteBridge Program Catalog',\n description: 'The first 50 training programs in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${programsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ athListPrograms: unknown }>(LIST_PROGRAMS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: programsUri,\n text: JSON.stringify(data.athListPrograms, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: programsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpPromptName, type McpContext } from '../../core/index.js';\n\n/**\n * AtheleteBridge MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerAtheletebridgePrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const setupName = track(mcpPromptName(p, 'team-setup'));\n const seasonName = track(mcpPromptName(p, 'season-ops'));\n\n // <product>-team-setup — stand up a team + roster + program\n server.registerPrompt(\n setupName,\n {\n title: 'Team Setup',\n description:\n 'Guide for standing up a new AtheleteBridge team end to end: create the team, add the roster, and attach a training program with drills.',\n argsSchema: {\n name: z.string().optional().describe('Team name'),\n sport: z.string().optional().describe('Sport (AthSport enum)'),\n },\n },\n ({ name, sport }) => {\n ctx.logger.debug(`Prompt ${setupName} called`, { name, sport });\n const nameNote = name ? `Use the team name \"${name}\".` : 'Ask the user for the team name.';\n const sportNote = sport ? `Use sport ${sport}.` : 'Help the user pick an AthSport.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me set up a new AtheleteBridge team.\n\n1. **Create Team**: Use ${p}_teams_create. ${nameNote} ${sportNote} Optionally set season, ageGroup, homeVenue, and headCoachId.\n2. **Add Roster**: Use ${p}_members_add for each player/coach — set userId, displayName, role (PLAYER/COACH/...), and optional position/jerseyNumber.\n3. **Verify Roster**: Use ${p}_members_list filtered by the new teamId.\n4. **Attach Program**: Use ${p}_programs_create for a training program, then ${p}_drills_add for each drill (weekNumber, sets, reps, durationSec).\n5. **Publish Program**: Use ${p}_programs_transition with status=PUBLISHED when ready.\n\nShow results at each step and confirm before publishing.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-season-ops — run a competition season\n server.registerPrompt(\n seasonName,\n {\n title: 'Season Operations',\n description:\n 'Operations workflow for running a competition season: schedule fixtures, record results, track standings, and review athlete performance.',\n argsSchema: {\n competition: z.string().optional().describe('Competition name'),\n teamId: z.string().optional().describe('Team ID to operate'),\n },\n },\n ({ competition, teamId }) => {\n ctx.logger.debug(`Prompt ${seasonName} called`, { competition, teamId });\n const teamNote = teamId\n ? `Operate team \"${teamId}\".`\n : `First list teams with ${p}_teams_list and pick one.`;\n const compNote = competition\n ? `Track the \"${competition}\" competition.`\n : 'Ask the user which competition to track.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run AtheleteBridge season operations. ${teamNote} ${compNote}\n\n1. **Fixtures**: Use ${p}_fixtures_list filtered by teamId/status to see upcoming and past fixtures. Schedule new ones with ${p}_fixtures_schedule.\n2. **Results**: For completed matches use ${p}_fixtures_record_result (homeScore/awayScore) — this recomputes standings automatically.\n3. **Standings**: Use ${p}_standings_list for the competition to review the table.\n4. **Coaching**: Use ${p}_sessions_list to triage requested sessions; ${p}_sessions_confirm and later ${p}_sessions_complete them.\n5. **Performance**: Use ${p}_workouts_list and ${p}_metrics_list per athlete to monitor load and progress; record new measurements with ${p}_metrics_record.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * AtheleteBridge module — domain module for the future-products ecosystem program.\n *\n * Covers all 9 @key entities of wspace-atheletebridge-svc grouped into\n * per-entity sub-APIs: teams (+members), programs (+drills), sessions,\n * fixtures (+standings), workouts, metrics, and health. Mirrors the rich\n * kadaikodi/crewfoundry modules' structure (tools/<entity>.ts + resources.ts +\n * prompts.ts) and the canonical tags module's typing discipline.\n *\n * Backend: ~/products/wspace/atheletebridge/wspace-atheletebridge-svc/\n * (Hive service name `atheletebridge`). All operations run against the\n * WORKSPACE gateway; the @public athHealth probe is exposed as `<product>_health`.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerTeamTools } from './tools/teams.js';\nimport { registerProgramTools } from './tools/programs.js';\nimport { registerSessionTools } from './tools/sessions.js';\nimport { registerFixtureTools } from './tools/fixtures.js';\nimport { registerWorkoutTools } from './tools/workouts.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerAtheletebridgeResources } from './resources.js';\nimport { registerAtheletebridgePrompts } from './prompts.js';\n\nconst atheletebridgeModule: McpModule = {\n id: 'atheletebridge',\n version: '0.0.1',\n displayName: 'AtheleteBridge',\n dependsOn: ['auth'],\n capabilities: { tools: {}, resources: {}, prompts: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const resources: string[] = [];\n const prompts: string[] = [];\n\n const trackTool = (n: string): string => {\n tools.push(n);\n return n;\n };\n const trackResource = (uri: string): string => {\n resources.push(uri);\n return uri;\n };\n const trackPrompt = (n: string): string => {\n prompts.push(n);\n return n;\n };\n\n registerTeamTools(server, ctx, trackTool);\n registerProgramTools(server, ctx, trackTool);\n registerSessionTools(server, ctx, trackTool);\n registerFixtureTools(server, ctx, trackTool);\n registerWorkoutTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerAtheletebridgeResources(server, ctx, trackResource);\n registerAtheletebridgePrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default atheletebridgeModule;\n"]}