@burdenoff/mcp-libs 2026.703.3 → 2026.719.1

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.
Files changed (185) hide show
  1. package/dist/{chunk-WWFVD7BO.js → chunk-RHWHUY5Y.js} +3 -3
  2. package/dist/{chunk-WWFVD7BO.js.map → chunk-RHWHUY5Y.js.map} +1 -1
  3. package/dist/{chunk-H2OYWLOA.js → chunk-YOSQUY3M.js} +101 -35
  4. package/dist/chunk-YOSQUY3M.js.map +1 -0
  5. package/dist/core/index.cjs +101 -32
  6. package/dist/core/index.cjs.map +1 -1
  7. package/dist/core/index.d.cts +1 -1
  8. package/dist/core/index.d.ts +1 -1
  9. package/dist/core/index.js +1 -1
  10. package/dist/index.cjs +97 -31
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.d.cts +1 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/modules/adaptercloud/index.cjs +14 -14
  16. package/dist/modules/adaptercloud/index.cjs.map +1 -1
  17. package/dist/modules/adaptercloud/index.js +1 -1
  18. package/dist/modules/artistrybase/index.cjs +14 -14
  19. package/dist/modules/artistrybase/index.cjs.map +1 -1
  20. package/dist/modules/artistrybase/index.js +1 -1
  21. package/dist/modules/assethandler/index.cjs +14 -14
  22. package/dist/modules/assethandler/index.cjs.map +1 -1
  23. package/dist/modules/assethandler/index.js +1 -1
  24. package/dist/modules/atheletebridge/index.cjs +14 -14
  25. package/dist/modules/atheletebridge/index.cjs.map +1 -1
  26. package/dist/modules/atheletebridge/index.js +1 -1
  27. package/dist/modules/auth/index.cjs +14 -14
  28. package/dist/modules/auth/index.cjs.map +1 -1
  29. package/dist/modules/auth/index.js +3 -3
  30. package/dist/modules/billing/index.cjs +14 -14
  31. package/dist/modules/billing/index.cjs.map +1 -1
  32. package/dist/modules/billing/index.js +1 -1
  33. package/dist/modules/brainyrich/index.cjs +14 -14
  34. package/dist/modules/brainyrich/index.cjs.map +1 -1
  35. package/dist/modules/brainyrich/index.js +1 -1
  36. package/dist/modules/buildmyiq/index.cjs +14 -14
  37. package/dist/modules/buildmyiq/index.cjs.map +1 -1
  38. package/dist/modules/buildmyiq/index.js +1 -1
  39. package/dist/modules/channels/index.cjs +14 -14
  40. package/dist/modules/channels/index.cjs.map +1 -1
  41. package/dist/modules/channels/index.js +1 -1
  42. package/dist/modules/collabkin/index.cjs +14 -14
  43. package/dist/modules/collabkin/index.cjs.map +1 -1
  44. package/dist/modules/collabkin/index.js +1 -1
  45. package/dist/modules/comradecircle/index.cjs +14 -14
  46. package/dist/modules/comradecircle/index.cjs.map +1 -1
  47. package/dist/modules/comradecircle/index.js +1 -1
  48. package/dist/modules/conversations/index.cjs +14 -14
  49. package/dist/modules/conversations/index.cjs.map +1 -1
  50. package/dist/modules/conversations/index.js +1 -1
  51. package/dist/modules/coolandlovely/index.cjs +14 -14
  52. package/dist/modules/coolandlovely/index.cjs.map +1 -1
  53. package/dist/modules/coolandlovely/index.js +1 -1
  54. package/dist/modules/cosmicintersection/index.cjs +14 -14
  55. package/dist/modules/cosmicintersection/index.cjs.map +1 -1
  56. package/dist/modules/cosmicintersection/index.js +1 -1
  57. package/dist/modules/crewfoundry/index.cjs +14 -14
  58. package/dist/modules/crewfoundry/index.cjs.map +1 -1
  59. package/dist/modules/crewfoundry/index.js +1 -1
  60. package/dist/modules/devportal/index.cjs +14 -14
  61. package/dist/modules/devportal/index.cjs.map +1 -1
  62. package/dist/modules/devportal/index.js +1 -1
  63. package/dist/modules/ecoimpacthub/index.cjs +14 -14
  64. package/dist/modules/ecoimpacthub/index.cjs.map +1 -1
  65. package/dist/modules/ecoimpacthub/index.js +1 -1
  66. package/dist/modules/eventfullymanaged/index.cjs +14 -14
  67. package/dist/modules/eventfullymanaged/index.cjs.map +1 -1
  68. package/dist/modules/eventfullymanaged/index.js +1 -1
  69. package/dist/modules/export/index.cjs +14 -14
  70. package/dist/modules/export/index.cjs.map +1 -1
  71. package/dist/modules/export/index.js +1 -1
  72. package/dist/modules/files/index.cjs +14 -14
  73. package/dist/modules/files/index.cjs.map +1 -1
  74. package/dist/modules/files/index.js +1 -1
  75. package/dist/modules/ggnomad/index.cjs +14 -14
  76. package/dist/modules/ggnomad/index.cjs.map +1 -1
  77. package/dist/modules/ggnomad/index.js +1 -1
  78. package/dist/modules/govcitizenhub/index.cjs +14 -14
  79. package/dist/modules/govcitizenhub/index.cjs.map +1 -1
  80. package/dist/modules/govcitizenhub/index.js +1 -1
  81. package/dist/modules/groups/index.cjs +14 -14
  82. package/dist/modules/groups/index.cjs.map +1 -1
  83. package/dist/modules/groups/index.js +1 -1
  84. package/dist/modules/headshotmarketing/index.cjs +14 -14
  85. package/dist/modules/headshotmarketing/index.cjs.map +1 -1
  86. package/dist/modules/headshotmarketing/index.js +1 -1
  87. package/dist/modules/health/index.cjs +21 -19
  88. package/dist/modules/health/index.cjs.map +1 -1
  89. package/dist/modules/health/index.js +1 -1
  90. package/dist/modules/hookmovies/index.cjs +14 -14
  91. package/dist/modules/hookmovies/index.cjs.map +1 -1
  92. package/dist/modules/hookmovies/index.js +1 -1
  93. package/dist/modules/housingvista/index.cjs +14 -14
  94. package/dist/modules/housingvista/index.cjs.map +1 -1
  95. package/dist/modules/housingvista/index.js +1 -1
  96. package/dist/modules/integrations/index.cjs +14 -14
  97. package/dist/modules/integrations/index.cjs.map +1 -1
  98. package/dist/modules/integrations/index.js +1 -1
  99. package/dist/modules/intelwatchtower/index.cjs +14 -14
  100. package/dist/modules/intelwatchtower/index.cjs.map +1 -1
  101. package/dist/modules/intelwatchtower/index.js +1 -1
  102. package/dist/modules/kadaikodi/index.cjs +14 -14
  103. package/dist/modules/kadaikodi/index.cjs.map +1 -1
  104. package/dist/modules/kadaikodi/index.js +1 -1
  105. package/dist/modules/labsofscience/index.cjs +14 -14
  106. package/dist/modules/labsofscience/index.cjs.map +1 -1
  107. package/dist/modules/labsofscience/index.js +1 -1
  108. package/dist/modules/manufacturedops/index.cjs +14 -14
  109. package/dist/modules/manufacturedops/index.cjs.map +1 -1
  110. package/dist/modules/manufacturedops/index.js +1 -1
  111. package/dist/modules/movethewheels/index.cjs +14 -14
  112. package/dist/modules/movethewheels/index.cjs.map +1 -1
  113. package/dist/modules/movethewheels/index.js +1 -1
  114. package/dist/modules/mybodyshield/index.cjs +14 -14
  115. package/dist/modules/mybodyshield/index.cjs.map +1 -1
  116. package/dist/modules/mybodyshield/index.js +1 -1
  117. package/dist/modules/notifications/index.cjs +14 -14
  118. package/dist/modules/notifications/index.cjs.map +1 -1
  119. package/dist/modules/notifications/index.js +1 -1
  120. package/dist/modules/organizations/index.cjs +14 -14
  121. package/dist/modules/organizations/index.cjs.map +1 -1
  122. package/dist/modules/organizations/index.js +1 -1
  123. package/dist/modules/planmagnet/index.cjs +14 -14
  124. package/dist/modules/planmagnet/index.cjs.map +1 -1
  125. package/dist/modules/planmagnet/index.js +1 -1
  126. package/dist/modules/products/index.cjs +14 -14
  127. package/dist/modules/products/index.cjs.map +1 -1
  128. package/dist/modules/products/index.js +1 -1
  129. package/dist/modules/proserviceworld/index.cjs +14 -14
  130. package/dist/modules/proserviceworld/index.cjs.map +1 -1
  131. package/dist/modules/proserviceworld/index.js +1 -1
  132. package/dist/modules/rbac/index.cjs +14 -14
  133. package/dist/modules/rbac/index.cjs.map +1 -1
  134. package/dist/modules/rbac/index.js +1 -1
  135. package/dist/modules/sandbox/index.cjs +14 -14
  136. package/dist/modules/sandbox/index.cjs.map +1 -1
  137. package/dist/modules/sandbox/index.js +1 -1
  138. package/dist/modules/scheduler/index.cjs +14 -14
  139. package/dist/modules/scheduler/index.cjs.map +1 -1
  140. package/dist/modules/scheduler/index.js +1 -1
  141. package/dist/modules/security/index.cjs +14 -14
  142. package/dist/modules/security/index.cjs.map +1 -1
  143. package/dist/modules/security/index.js +1 -1
  144. package/dist/modules/semanticfed/index.cjs +14 -14
  145. package/dist/modules/semanticfed/index.cjs.map +1 -1
  146. package/dist/modules/semanticfed/index.js +1 -1
  147. package/dist/modules/store/index.cjs +14 -14
  148. package/dist/modules/store/index.cjs.map +1 -1
  149. package/dist/modules/store/index.js +1 -1
  150. package/dist/modules/subscriberbot/index.cjs +14 -14
  151. package/dist/modules/subscriberbot/index.cjs.map +1 -1
  152. package/dist/modules/subscriberbot/index.js +1 -1
  153. package/dist/modules/support/index.cjs +14 -14
  154. package/dist/modules/support/index.cjs.map +1 -1
  155. package/dist/modules/support/index.js +1 -1
  156. package/dist/modules/tags/index.cjs +14 -14
  157. package/dist/modules/tags/index.cjs.map +1 -1
  158. package/dist/modules/tags/index.js +1 -1
  159. package/dist/modules/technospam/index.cjs +14 -14
  160. package/dist/modules/technospam/index.cjs.map +1 -1
  161. package/dist/modules/technospam/index.js +1 -1
  162. package/dist/modules/theculturepost/index.cjs +14 -14
  163. package/dist/modules/theculturepost/index.cjs.map +1 -1
  164. package/dist/modules/theculturepost/index.js +1 -1
  165. package/dist/modules/theglobalfuel/index.cjs +14 -14
  166. package/dist/modules/theglobalfuel/index.cjs.map +1 -1
  167. package/dist/modules/theglobalfuel/index.js +1 -1
  168. package/dist/modules/timecampus/index.cjs +21 -16
  169. package/dist/modules/timecampus/index.cjs.map +1 -1
  170. package/dist/modules/timecampus/index.js +8 -3
  171. package/dist/modules/timecampus/index.js.map +1 -1
  172. package/dist/modules/tours/index.cjs +14 -14
  173. package/dist/modules/tours/index.cjs.map +1 -1
  174. package/dist/modules/tours/index.js +1 -1
  175. package/dist/modules/vibecontrols/index.cjs +35 -17
  176. package/dist/modules/vibecontrols/index.cjs.map +1 -1
  177. package/dist/modules/vibecontrols/index.js +23 -5
  178. package/dist/modules/vibecontrols/index.js.map +1 -1
  179. package/dist/modules/workspaces/index.cjs +14 -14
  180. package/dist/modules/workspaces/index.cjs.map +1 -1
  181. package/dist/modules/workspaces/index.js +1 -1
  182. package/dist/{tool-name-DlnrBsZ6.d.ts → tool-name-BaPNMZdj.d.ts} +17 -1
  183. package/dist/{tool-name-CQf_IqAj.d.cts → tool-name-Bvb36qmq.d.cts} +17 -1
  184. package/package.json +1 -1
  185. package/dist/chunk-H2OYWLOA.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/modules/timecampus/operations.ts","../../../src/modules/timecampus/tools/shared.ts","../../../src/modules/timecampus/tools/timeentries.ts","../../../src/modules/timecampus/tools/projects.ts","../../../src/modules/timecampus/tools/tasks.ts","../../../src/modules/timecampus/tools/meetings.ts","../../../src/modules/timecampus/tools/pomodoro.ts","../../../src/modules/timecampus/tools/expenses.ts","../../../src/modules/timecampus/tools/approvals.ts","../../../src/modules/timecampus/tools/resourcing.ts","../../../src/modules/timecampus/tools/focus.ts","../../../src/modules/timecampus/tools/workpatterns.ts","../../../src/modules/timecampus/tools/appusage.ts","../../../src/modules/timecampus/tools/location.ts","../../../src/modules/timecampus/tools/channels.ts","../../../src/modules/timecampus/tools/clientportal.ts","../../../src/modules/timecampus/tools/email.ts","../../../src/modules/timecampus/tools/config.ts","../../../src/modules/timecampus/resources.ts","../../../src/modules/timecampus/prompts.ts","../../../src/modules/timecampus/index.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Centralized GraphQL operations for the Timecampus MCP module.\n *\n * Timecampus is the time-tracking, productivity & resource-planning workspace\n * product (future-products ecosystem). Backend subgraph:\n * ~/products/wspace/timecampus/wspace-timecampus-svc/ (Hive service name\n * `timecampus`).\n *\n * All operations run against the WORKSPACE gateway. Unlike kadaikodi, many\n * Timecampus root fields take an EXPLICIT `workspaceId: ID!` argument (meetings,\n * expenses, pomodoro) or carry it inside their create-input — those are wired\n * through verbatim to match the real schema. Pagination is `{ limit, offset }`\n * and most list queries return either a bare array or a `*ListResponse`\n * ({ items, total, hasMore }) object.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical kadaikodi / crewfoundry modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const TIME_ENTRY_FIELDS = `\n id description startTime endTime duration billable hourlyRate notes source\n isRunning projectId taskId workspaceId createdBy createdAt updatedAt\n`;\n\nexport const PROJECT_FIELDS = `\n id name description status color budget currency hourlyRate estimatedHours\n trackedHours clientId workspaceId createdBy createdAt updatedAt\n`;\n\nexport const TASK_FIELDS = `\n id title description status priority order projectId assigneeId dueDate\n estimatedHours trackedHours completedAt workspaceId createdAt updatedAt\n`;\n\nexport const MEETING_FIELDS = `\n id title meetingType startTime endTime duration cost rating notes recordingUrl\n calendarEventId workspaceId createdAt updatedAt\n`;\n\nexport const MEETING_PARTICIPANT_FIELDS = `\n id meetingMetaId userId role status workspaceId createdAt updatedAt\n`;\n\nexport const MEETING_ACTION_ITEM_FIELDS = `\n id meetingMetaId title notes status assigneeId dueDate completedAt\n workspaceId createdAt updatedAt\n`;\n\nexport const POMODORO_SESSION_FIELDS = `\n id type startTime endTime duration completed interrupted interruptions notes\n projectId taskId userId workspaceId createdAt updatedAt\n`;\n\nexport const POMODORO_GOAL_FIELDS = `\n id type period target current startDate endDate userId workspaceId\n createdAt updatedAt\n`;\n\nexport const POMODORO_SETTINGS_FIELDS = `\n id focusDuration shortBreakDuration longBreakDuration sessionsBeforeLongBreak\n autoStartBreaks autoStartFocus soundEnabled notificationsEnabled userId\n workspaceId createdAt updatedAt\n`;\n\nexport const EXPENSE_FIELDS = `\n id amount currency category description notes date status projectId receiptUrl\n approvedBy approvedAt userId workspaceId createdAt updatedAt\n`;\n\nexport const APPROVAL_FIELDS = `\n id period startDate endDate totalHours billableHours status approverId reviewer\n reviewerNotes submittedAt reviewedAt userId workspaceId createdAt updatedAt\n`;\n\nexport const RESOURCE_PLAN_FIELDS = `\n id name description status startDate endDate totalAllocatedHours\n totalActualHours workspaceId createdAt updatedAt\n`;\n\nexport const RESOURCE_ALLOCATION_FIELDS = `\n id resourcePlanId userId projectId allocatedHours actualHours utilizationRate\n startDate endDate notes workspaceId createdAt updatedAt\n`;\n\nexport const FOCUS_SCORE_FIELDS = `\n id date overallScore deepWorkScore distractionResistanceScore\n taskCompletionScore energyManagementScore consistencyScore factors userId\n workspaceId createdAt updatedAt\n`;\n\nexport const WORK_PATTERN_FIELDS = `\n id date focusHours meetingHours breakHours deepWorkSessions interruptions\n productivityScore energyLevel mood stressLevel peakHours userId workspaceId\n createdAt updatedAt\n`;\n\nexport const APP_USAGE_FIELDS = `\n id applicationName category date timeSpent sessions switches firstUsed\n lastUsed userId workspaceId createdAt updatedAt\n`;\n\nexport const GEOFENCE_FIELDS = `\n id name address latitude longitude radius trigger isActive linkedProjectId\n workspaceId createdAt updatedAt\n`;\n\nexport const GEOFENCE_EVENT_FIELDS = `\n id geofenceId type userId locationLatitude locationLongitude timestamp\n workspaceId createdAt updatedAt\n`;\n\nexport const LOCATION_ENTRY_FIELDS = `\n id latitude longitude accuracy address startTime endTime duration geofenceId\n projectId userId workspaceId createdAt updatedAt\n`;\n\nexport const CHANNEL_FIELDS = `\n id name type status syncInterval lastSync settings workspaceId\n createdAt updatedAt\n`;\n\nexport const CLIENT_PORTAL_FIELDS = `\n id clientName description contactEmail contactPhone logoUrl isActive\n permissions settings workspaceId createdAt updatedAt\n`;\n\nexport const EMAIL_ENTRY_FIELDS = `\n id subject sender recipients threadId category isImportant duration\n responseTime date userId workspaceId createdAt updatedAt\n`;\n\nexport const CONFIG_FIELDS = `\n id key value scope scopeId description isSecret workspaceId createdAt updatedAt\n`;\n\nexport const UI_SESSION_FIELDS = `\n id activeView preferences state userId workspaceId createdAt updatedAt\n`;\n\n// ---------------------------------------------------------------------------\n// Time entries + timers\n// ---------------------------------------------------------------------------\n\nexport const GET_TIME_ENTRY = `\n query TimecampusGetTimeEntry($id: ID!) {\n timeEntry(id: $id) { ${TIME_ENTRY_FIELDS} }\n }\n`;\n\nexport const LIST_TIME_ENTRIES = `\n query TimecampusListTimeEntries(\n $filter: TimeEntryFilterInput\n $limit: Int\n $offset: Int\n $orderBy: TimeEntryOrderByInput\n ) {\n timeEntries(filter: $filter, limit: $limit, offset: $offset, orderBy: $orderBy) {\n total hasMore items { ${TIME_ENTRY_FIELDS} }\n }\n }\n`;\n\nexport const TIME_ENTRIES_BY_DATE = `\n query TimecampusTimeEntriesByDate($date: DateTime!) {\n timeEntriesByDate(date: $date) { ${TIME_ENTRY_FIELDS} }\n }\n`;\n\nexport const TIME_ENTRY_COUNT = `\n query TimecampusTimeEntryCount($filter: TimeEntryFilterInput) {\n timeEntryCount(filter: $filter)\n }\n`;\n\nexport const TIME_ENTRY_STATS = `\n query TimecampusTimeEntryStats($startDate: DateTime, $endDate: DateTime) {\n timeEntryStats(startDate: $startDate, endDate: $endDate) {\n totalEntries totalHours billableHours activeTimers\n }\n }\n`;\n\nexport const RUNNING_TIMERS = `\n query TimecampusRunningTimers {\n runningTimers { elapsedSeconds timeEntry { ${TIME_ENTRY_FIELDS} } }\n }\n`;\n\nexport const CREATE_TIME_ENTRY = `\n mutation TimecampusCreateTimeEntry($input: CreateTimeEntryInput!) {\n createTimeEntry(input: $input) { ${TIME_ENTRY_FIELDS} }\n }\n`;\n\nexport const UPDATE_TIME_ENTRY = `\n mutation TimecampusUpdateTimeEntry($id: ID!, $input: UpdateTimeEntryInput!) {\n updateTimeEntry(id: $id, input: $input) { ${TIME_ENTRY_FIELDS} }\n }\n`;\n\nexport const DELETE_TIME_ENTRY = `\n mutation TimecampusDeleteTimeEntry($id: ID!) {\n deleteTimeEntry(id: $id) { ${TIME_ENTRY_FIELDS} }\n }\n`;\n\nexport const BULK_DELETE_TIME_ENTRIES = `\n mutation TimecampusBulkDeleteTimeEntries($ids: [ID!]!) {\n bulkDeleteTimeEntries(ids: $ids)\n }\n`;\n\nexport const DUPLICATE_TIME_ENTRY = `\n mutation TimecampusDuplicateTimeEntry($id: ID!) {\n duplicateTimeEntry(id: $id) { ${TIME_ENTRY_FIELDS} }\n }\n`;\n\nexport const START_TIMER = `\n mutation TimecampusStartTimer($input: StartTimerInput!) {\n startTimer(input: $input) { ${TIME_ENTRY_FIELDS} }\n }\n`;\n\nexport const STOP_TIMER = `\n mutation TimecampusStopTimer($id: ID!) {\n stopTimer(id: $id) { ${TIME_ENTRY_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Projects\n// ---------------------------------------------------------------------------\n\nexport const GET_PROJECT = `\n query TimecampusGetProject($id: ID!) {\n timeCampusProject(id: $id) {\n ${PROJECT_FIELDS}\n tasks { ${TASK_FIELDS} }\n }\n }\n`;\n\nexport const LIST_PROJECTS = `\n query TimecampusListProjects(\n $filter: TimeCampusProjectFilterInput\n $limit: Int\n $offset: Int\n $orderBy: TimeCampusProjectOrderByInput\n ) {\n timeCampusProjects(filter: $filter, limit: $limit, offset: $offset, orderBy: $orderBy) {\n total hasMore items { ${PROJECT_FIELDS} }\n }\n }\n`;\n\nexport const PROJECT_STATS = `\n query TimecampusProjectStats($id: ID!) {\n timeCampusProjectStats(id: $id) {\n totalTasks completedTasks totalHours budgetUsed budgetRemaining\n }\n }\n`;\n\nexport const CREATE_PROJECT = `\n mutation TimecampusCreateProject($input: CreateTimeCampusProjectInput!) {\n createTimeCampusProject(input: $input) { ${PROJECT_FIELDS} }\n }\n`;\n\nexport const UPDATE_PROJECT = `\n mutation TimecampusUpdateProject($id: ID!, $input: UpdateTimeCampusProjectInput!) {\n updateTimeCampusProject(id: $id, input: $input) { ${PROJECT_FIELDS} }\n }\n`;\n\nexport const ARCHIVE_PROJECT = `\n mutation TimecampusArchiveProject($id: ID!) {\n archiveTimeCampusProject(id: $id) { ${PROJECT_FIELDS} }\n }\n`;\n\nexport const DELETE_PROJECT = `\n mutation TimecampusDeleteProject($id: ID!) {\n deleteTimeCampusProject(id: $id) { ${PROJECT_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Tasks\n// ---------------------------------------------------------------------------\n\nexport const GET_TASK = `\n query TimecampusGetTask($id: ID!) {\n task(id: $id) { ${TASK_FIELDS} }\n }\n`;\n\nexport const LIST_TASKS = `\n query TimecampusListTasks(\n $projectId: ID!\n $filter: TaskFilterInput\n $limit: Int\n $offset: Int\n $orderBy: TaskOrderByInput\n ) {\n tasks(projectId: $projectId, filter: $filter, limit: $limit, offset: $offset, orderBy: $orderBy) {\n total hasMore items { ${TASK_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_TASK = `\n mutation TimecampusCreateTask($input: CreateTaskInput!) {\n createTask(input: $input) { ${TASK_FIELDS} }\n }\n`;\n\nexport const UPDATE_TASK = `\n mutation TimecampusUpdateTask($id: ID!, $input: UpdateTaskInput!) {\n updateTask(id: $id, input: $input) { ${TASK_FIELDS} }\n }\n`;\n\nexport const UPDATE_TASK_STATUS = `\n mutation TimecampusUpdateTaskStatus($id: ID!, $status: String!) {\n updateTaskStatus(id: $id, status: $status) { ${TASK_FIELDS} }\n }\n`;\n\nexport const REORDER_TASKS = `\n mutation TimecampusReorderTasks($projectId: ID!, $taskIds: [ID!]!) {\n reorderTasks(projectId: $projectId, taskIds: $taskIds) { ${TASK_FIELDS} }\n }\n`;\n\nexport const DELETE_TASK = `\n mutation TimecampusDeleteTask($id: ID!) {\n deleteTask(id: $id) { ${TASK_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Meetings (+ participants + action items)\n// ---------------------------------------------------------------------------\n\nexport const GET_MEETING = `\n query TimecampusGetMeeting($id: ID!, $workspaceId: ID!) {\n meeting(id: $id, workspaceId: $workspaceId) {\n ${MEETING_FIELDS}\n participants { ${MEETING_PARTICIPANT_FIELDS} }\n actionItems { ${MEETING_ACTION_ITEM_FIELDS} }\n }\n }\n`;\n\nexport const LIST_MEETINGS = `\n query TimecampusListMeetings(\n $workspaceId: ID!\n $filter: MeetingFilterInput\n $limit: Int\n $offset: Int\n $orderBy: MeetingOrderByInput\n ) {\n meetings(workspaceId: $workspaceId, filter: $filter, limit: $limit, offset: $offset, orderBy: $orderBy) {\n ${MEETING_FIELDS}\n }\n }\n`;\n\nexport const MEETING_STATS = `\n query TimecampusMeetingStats($workspaceId: ID!, $startDate: DateTime, $endDate: DateTime) {\n meetingStats(workspaceId: $workspaceId, startDate: $startDate, endDate: $endDate) {\n totalMeetings totalDuration averageDuration averageRating totalCost\n actionItemsTotal actionItemsCompleted\n }\n }\n`;\n\nexport const UPCOMING_MEETINGS = `\n query TimecampusUpcomingMeetings($workspaceId: ID!, $limit: Int) {\n upcomingMeetings(workspaceId: $workspaceId, limit: $limit) { ${MEETING_FIELDS} }\n }\n`;\n\nexport const CREATE_MEETING = `\n mutation TimecampusCreateMeeting($input: CreateMeetingInput!) {\n createMeeting(input: $input) { ${MEETING_FIELDS} }\n }\n`;\n\nexport const UPDATE_MEETING = `\n mutation TimecampusUpdateMeeting($id: ID!, $input: UpdateMeetingInput!, $workspaceId: ID!) {\n updateMeeting(id: $id, input: $input, workspaceId: $workspaceId) { ${MEETING_FIELDS} }\n }\n`;\n\nexport const DELETE_MEETING = `\n mutation TimecampusDeleteMeeting($id: ID!, $workspaceId: ID!) {\n deleteMeeting(id: $id, workspaceId: $workspaceId)\n }\n`;\n\nexport const RATE_MEETING = `\n mutation TimecampusRateMeeting($id: ID!, $rating: Int!, $workspaceId: ID!) {\n rateMeeting(id: $id, rating: $rating, workspaceId: $workspaceId) { ${MEETING_FIELDS} }\n }\n`;\n\nexport const ADD_MEETING_PARTICIPANT = `\n mutation TimecampusAddMeetingParticipant(\n $input: AddMeetingParticipantInput!\n $meetingId: ID!\n $workspaceId: ID!\n ) {\n addMeetingParticipant(input: $input, meetingId: $meetingId, workspaceId: $workspaceId) {\n ${MEETING_PARTICIPANT_FIELDS}\n }\n }\n`;\n\nexport const REMOVE_MEETING_PARTICIPANT = `\n mutation TimecampusRemoveMeetingParticipant($meetingId: ID!, $participantId: ID!, $workspaceId: ID!) {\n removeMeetingParticipant(meetingId: $meetingId, participantId: $participantId, workspaceId: $workspaceId)\n }\n`;\n\nexport const UPDATE_PARTICIPANT_STATUS = `\n mutation TimecampusUpdateParticipantStatus(\n $meetingId: ID!\n $participantId: ID!\n $status: MeetingParticipantStatus!\n $workspaceId: ID!\n ) {\n updateParticipantStatus(\n meetingId: $meetingId\n participantId: $participantId\n status: $status\n workspaceId: $workspaceId\n ) {\n ${MEETING_PARTICIPANT_FIELDS}\n }\n }\n`;\n\nexport const CREATE_ACTION_ITEM = `\n mutation TimecampusCreateActionItem($input: CreateActionItemInput!, $meetingId: ID!, $workspaceId: ID!) {\n createActionItem(input: $input, meetingId: $meetingId, workspaceId: $workspaceId) {\n ${MEETING_ACTION_ITEM_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_ACTION_ITEM = `\n mutation TimecampusUpdateActionItem($id: ID!, $input: UpdateActionItemInput!, $workspaceId: ID!) {\n updateActionItem(id: $id, input: $input, workspaceId: $workspaceId) {\n ${MEETING_ACTION_ITEM_FIELDS}\n }\n }\n`;\n\nexport const COMPLETE_ACTION_ITEM = `\n mutation TimecampusCompleteActionItem($id: ID!, $workspaceId: ID!) {\n completeActionItem(id: $id, workspaceId: $workspaceId) { ${MEETING_ACTION_ITEM_FIELDS} }\n }\n`;\n\nexport const DELETE_ACTION_ITEM = `\n mutation TimecampusDeleteActionItem($id: ID!, $workspaceId: ID!) {\n deleteActionItem(id: $id, workspaceId: $workspaceId)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Pomodoro (sessions + goals + settings)\n// ---------------------------------------------------------------------------\n\nexport const ACTIVE_POMODORO_SESSION = `\n query TimecampusActivePomodoroSession($workspaceId: ID!) {\n activePomodoroSession(workspaceId: $workspaceId) { ${POMODORO_SESSION_FIELDS} }\n }\n`;\n\nexport const GET_POMODORO_SESSION = `\n query TimecampusGetPomodoroSession($id: ID!, $workspaceId: ID!) {\n pomodoroSession(id: $id, workspaceId: $workspaceId) { ${POMODORO_SESSION_FIELDS} }\n }\n`;\n\nexport const LIST_POMODORO_SESSIONS = `\n query TimecampusListPomodoroSessions(\n $workspaceId: ID!\n $filter: PomodoroSessionFilterInput\n $limit: Int\n $offset: Int\n $orderBy: PomodoroSessionOrderByInput\n ) {\n pomodoroSessions(\n workspaceId: $workspaceId\n filter: $filter\n limit: $limit\n offset: $offset\n orderBy: $orderBy\n ) {\n ${POMODORO_SESSION_FIELDS}\n }\n }\n`;\n\nexport const POMODORO_STATS = `\n query TimecampusPomodoroStats($workspaceId: ID!, $startDate: DateTime, $endDate: DateTime) {\n pomodoroStats(workspaceId: $workspaceId, startDate: $startDate, endDate: $endDate) {\n totalSessions completedSessions totalFocusMinutes averageSessionMinutes\n completionRate streakDays\n }\n }\n`;\n\nexport const POMODORO_GOALS = `\n query TimecampusPomodoroGoals($workspaceId: ID!) {\n pomodoroGoals(workspaceId: $workspaceId) { ${POMODORO_GOAL_FIELDS} }\n }\n`;\n\nexport const POMODORO_SETTINGS = `\n query TimecampusPomodoroSettings($workspaceId: ID!) {\n pomodoroSettings(workspaceId: $workspaceId) { ${POMODORO_SETTINGS_FIELDS} }\n }\n`;\n\nexport const START_POMODORO_SESSION = `\n mutation TimecampusStartPomodoroSession($input: StartPomodoroSessionInput!) {\n startPomodoroSession(input: $input) { ${POMODORO_SESSION_FIELDS} }\n }\n`;\n\nexport const COMPLETE_POMODORO_SESSION = `\n mutation TimecampusCompletePomodoroSession($id: ID!, $workspaceId: ID!) {\n completePomodoroSession(id: $id, workspaceId: $workspaceId) { ${POMODORO_SESSION_FIELDS} }\n }\n`;\n\nexport const INTERRUPT_POMODORO_SESSION = `\n mutation TimecampusInterruptPomodoroSession($id: ID!, $reason: String, $workspaceId: ID!) {\n interruptPomodoroSession(id: $id, reason: $reason, workspaceId: $workspaceId) {\n ${POMODORO_SESSION_FIELDS}\n }\n }\n`;\n\nexport const CREATE_POMODORO_GOAL = `\n mutation TimecampusCreatePomodoroGoal($input: CreatePomodoroGoalInput!) {\n createPomodoroGoal(input: $input) { ${POMODORO_GOAL_FIELDS} }\n }\n`;\n\nexport const UPDATE_POMODORO_GOAL = `\n mutation TimecampusUpdatePomodoroGoal($id: ID!, $input: UpdatePomodoroGoalInput!, $workspaceId: ID!) {\n updatePomodoroGoal(id: $id, input: $input, workspaceId: $workspaceId) { ${POMODORO_GOAL_FIELDS} }\n }\n`;\n\nexport const DELETE_POMODORO_GOAL = `\n mutation TimecampusDeletePomodoroGoal($id: ID!, $workspaceId: ID!) {\n deletePomodoroGoal(id: $id, workspaceId: $workspaceId)\n }\n`;\n\nexport const UPDATE_POMODORO_SETTINGS = `\n mutation TimecampusUpdatePomodoroSettings($input: UpdatePomodoroSettingsInput!) {\n updatePomodoroSettings(input: $input) { ${POMODORO_SETTINGS_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Expenses\n// ---------------------------------------------------------------------------\n\nexport const GET_EXPENSE = `\n query TimecampusGetExpense($id: ID!, $workspaceId: ID!) {\n expense(id: $id, workspaceId: $workspaceId) { ${EXPENSE_FIELDS} }\n }\n`;\n\nexport const LIST_EXPENSES = `\n query TimecampusListExpenses(\n $workspaceId: ID!\n $filter: ExpenseFilterInput\n $limit: Int\n $offset: Int\n $orderBy: ExpenseOrderByInput\n ) {\n expenses(workspaceId: $workspaceId, filter: $filter, limit: $limit, offset: $offset, orderBy: $orderBy) {\n ${EXPENSE_FIELDS}\n }\n }\n`;\n\nexport const EXPENSE_STATS = `\n query TimecampusExpenseStats($workspaceId: ID!, $startDate: DateTime, $endDate: DateTime) {\n expenseStats(workspaceId: $workspaceId, startDate: $startDate, endDate: $endDate) {\n totalExpenses totalAmount approvedCount pendingCount averageAmount byCategory\n }\n }\n`;\n\nexport const EXPENSE_CATEGORIES = `\n query TimecampusExpenseCategories($workspaceId: ID!) {\n expenseCategories(workspaceId: $workspaceId)\n }\n`;\n\nexport const CREATE_EXPENSE = `\n mutation TimecampusCreateExpense($input: CreateExpenseInput!) {\n createExpense(input: $input) { ${EXPENSE_FIELDS} }\n }\n`;\n\nexport const UPDATE_EXPENSE = `\n mutation TimecampusUpdateExpense($id: ID!, $input: UpdateExpenseInput!, $workspaceId: ID!) {\n updateExpense(id: $id, input: $input, workspaceId: $workspaceId) { ${EXPENSE_FIELDS} }\n }\n`;\n\nexport const DELETE_EXPENSE = `\n mutation TimecampusDeleteExpense($id: ID!, $workspaceId: ID!) {\n deleteExpense(id: $id, workspaceId: $workspaceId)\n }\n`;\n\nexport const APPROVE_EXPENSE = `\n mutation TimecampusApproveExpense($id: ID!, $workspaceId: ID!) {\n approveExpense(id: $id, workspaceId: $workspaceId) { ${EXPENSE_FIELDS} }\n }\n`;\n\nexport const REJECT_EXPENSE = `\n mutation TimecampusRejectExpense($id: ID!, $reason: String, $workspaceId: ID!) {\n rejectExpense(id: $id, reason: $reason, workspaceId: $workspaceId) { ${EXPENSE_FIELDS} }\n }\n`;\n\nexport const SUBMIT_EXPENSE = `\n mutation TimecampusSubmitExpense($id: ID!, $workspaceId: ID!) {\n submitExpenseForApproval(id: $id, workspaceId: $workspaceId) { ${EXPENSE_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Approvals (TimeApprovalRequest)\n// ---------------------------------------------------------------------------\n\nexport const GET_APPROVAL = `\n query TimecampusGetApproval($id: ID!) {\n approvalRequest(id: $id) { ${APPROVAL_FIELDS} }\n }\n`;\n\nexport const LIST_APPROVALS = `\n query TimecampusListApprovals($filter: ApprovalRequestFilterInput, $limit: Int, $offset: Int) {\n approvalRequests(filter: $filter, limit: $limit, offset: $offset) {\n total hasMore items { ${APPROVAL_FIELDS} }\n }\n }\n`;\n\nexport const APPROVAL_STATS = `\n query TimecampusApprovalStats($startDate: DateTime, $endDate: DateTime) {\n approvalStats(startDate: $startDate, endDate: $endDate) {\n totalRequests pendingCount approvedCount rejectedCount averageReviewTime\n }\n }\n`;\n\nexport const MY_APPROVALS = `\n query TimecampusMyApprovals($status: ApprovalStatus) {\n myApprovalRequests(status: $status) { ${APPROVAL_FIELDS} }\n }\n`;\n\nexport const PENDING_APPROVALS = `\n query TimecampusPendingApprovals {\n pendingApprovals { ${APPROVAL_FIELDS} }\n }\n`;\n\nexport const SUBMIT_APPROVAL = `\n mutation TimecampusSubmitApproval($input: SubmitApprovalRequestInput!) {\n submitApprovalRequest(input: $input) { ${APPROVAL_FIELDS} }\n }\n`;\n\nexport const APPROVE_REQUEST = `\n mutation TimecampusApproveRequest($id: ID!, $notes: String) {\n approveRequest(id: $id, notes: $notes) { ${APPROVAL_FIELDS} }\n }\n`;\n\nexport const REJECT_REQUEST = `\n mutation TimecampusRejectRequest($id: ID!, $reason: String!) {\n rejectRequest(id: $id, reason: $reason) { ${APPROVAL_FIELDS} }\n }\n`;\n\nexport const REQUEST_REVISION = `\n mutation TimecampusRequestRevision($id: ID!, $notes: String!) {\n requestRevision(id: $id, notes: $notes) { ${APPROVAL_FIELDS} }\n }\n`;\n\nexport const WITHDRAW_REQUEST = `\n mutation TimecampusWithdrawRequest($id: ID!) {\n withdrawRequest(id: $id) { ${APPROVAL_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Resourcing (ResourcePlan + ResourceAllocation)\n// ---------------------------------------------------------------------------\n\nexport const GET_RESOURCE_PLAN = `\n query TimecampusGetResourcePlan($id: ID!) {\n resourcePlan(id: $id) {\n ${RESOURCE_PLAN_FIELDS}\n allocations { ${RESOURCE_ALLOCATION_FIELDS} }\n }\n }\n`;\n\nexport const LIST_RESOURCE_PLANS = `\n query TimecampusListResourcePlans($filter: ResourcePlanFilterInput, $limit: Int, $offset: Int) {\n resourcePlans(filter: $filter, limit: $limit, offset: $offset) {\n total hasMore items { ${RESOURCE_PLAN_FIELDS} }\n }\n }\n`;\n\nexport const LIST_RESOURCE_ALLOCATIONS = `\n query TimecampusListResourceAllocations($planId: ID!, $limit: Int, $offset: Int) {\n resourceAllocations(planId: $planId, limit: $limit, offset: $offset) {\n ${RESOURCE_ALLOCATION_FIELDS}\n }\n }\n`;\n\nexport const USER_ALLOCATIONS = `\n query TimecampusUserAllocations($userId: ID!, $startDate: DateTime, $endDate: DateTime) {\n userAllocations(userId: $userId, startDate: $startDate, endDate: $endDate) {\n ${RESOURCE_ALLOCATION_FIELDS}\n }\n }\n`;\n\nexport const CAPACITY_OVERVIEW = `\n query TimecampusCapacityOverview($startDate: DateTime!, $endDate: DateTime!) {\n capacityOverview(startDate: $startDate, endDate: $endDate) {\n totalCapacity allocatedCapacity availableCapacity utilizationRate\n overallocatedUsers\n }\n }\n`;\n\nexport const CREATE_RESOURCE_PLAN = `\n mutation TimecampusCreateResourcePlan($input: CreateResourcePlanInput!) {\n createResourcePlan(input: $input) { ${RESOURCE_PLAN_FIELDS} }\n }\n`;\n\nexport const UPDATE_RESOURCE_PLAN = `\n mutation TimecampusUpdateResourcePlan($id: ID!, $input: UpdateResourcePlanInput!) {\n updateResourcePlan(id: $id, input: $input) { ${RESOURCE_PLAN_FIELDS} }\n }\n`;\n\nexport const DELETE_RESOURCE_PLAN = `\n mutation TimecampusDeleteResourcePlan($id: ID!) {\n deleteResourcePlan(id: $id) { ${RESOURCE_PLAN_FIELDS} }\n }\n`;\n\nexport const ACTIVATE_RESOURCE_PLAN = `\n mutation TimecampusActivateResourcePlan($id: ID!) {\n activateResourcePlan(id: $id) { ${RESOURCE_PLAN_FIELDS} }\n }\n`;\n\nexport const CREATE_ALLOCATION = `\n mutation TimecampusCreateAllocation($input: CreateAllocationInput!) {\n createAllocation(input: $input) { ${RESOURCE_ALLOCATION_FIELDS} }\n }\n`;\n\nexport const UPDATE_ALLOCATION = `\n mutation TimecampusUpdateAllocation($id: ID!, $input: UpdateAllocationInput!) {\n updateAllocation(id: $id, input: $input) { ${RESOURCE_ALLOCATION_FIELDS} }\n }\n`;\n\nexport const DELETE_ALLOCATION = `\n mutation TimecampusDeleteAllocation($id: ID!) {\n deleteAllocation(id: $id) { ${RESOURCE_ALLOCATION_FIELDS} }\n }\n`;\n\nexport const BULK_CREATE_ALLOCATIONS = `\n mutation TimecampusBulkCreateAllocations($planId: ID!, $allocations: [BulkAllocationInput!]!) {\n bulkCreateAllocations(planId: $planId, allocations: $allocations) {\n ${RESOURCE_ALLOCATION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Focus scores\n// ---------------------------------------------------------------------------\n\nexport const GET_FOCUS_SCORE = `\n query TimecampusGetFocusScore($id: ID!) {\n focusScore(id: $id) { ${FOCUS_SCORE_FIELDS} }\n }\n`;\n\nexport const LIST_FOCUS_SCORES = `\n query TimecampusListFocusScores(\n $startDate: DateTime\n $endDate: DateTime\n $limit: Int\n $offset: Int\n $userId: ID\n ) {\n focusScores(startDate: $startDate, endDate: $endDate, limit: $limit, offset: $offset, userId: $userId) {\n ${FOCUS_SCORE_FIELDS}\n }\n }\n`;\n\nexport const FOCUS_SCORE_SUMMARY = `\n query TimecampusFocusScoreSummary($startDate: DateTime, $endDate: DateTime, $userId: ID) {\n focusScoreSummary(startDate: $startDate, endDate: $endDate, userId: $userId) {\n averageScore highestScore lowestScore trend topFactor improvementArea\n }\n }\n`;\n\nexport const FOCUS_SCORE_TREND = `\n query TimecampusFocusScoreTrend($days: Int, $userId: ID) {\n focusScoreTrend(days: $days, userId: $userId) { date score change }\n }\n`;\n\nexport const TODAY_FOCUS_SCORE = `\n query TimecampusTodayFocusScore {\n todayFocusScore { ${FOCUS_SCORE_FIELDS} }\n }\n`;\n\nexport const CALCULATE_FOCUS_SCORE = `\n mutation TimecampusCalculateFocusScore($date: DateTime, $userId: ID) {\n calculateFocusScore(date: $date, userId: $userId) { ${FOCUS_SCORE_FIELDS} }\n }\n`;\n\nexport const RECORD_FOCUS_SCORE = `\n mutation TimecampusRecordFocusScore($input: RecordFocusScoreInput!) {\n recordFocusScore(input: $input) { ${FOCUS_SCORE_FIELDS} }\n }\n`;\n\nexport const UPDATE_FOCUS_SCORE = `\n mutation TimecampusUpdateFocusScore($id: ID!, $input: UpdateFocusScoreInput!) {\n updateFocusScore(id: $id, input: $input) { ${FOCUS_SCORE_FIELDS} }\n }\n`;\n\nexport const DELETE_FOCUS_SCORE = `\n mutation TimecampusDeleteFocusScore($id: ID!) {\n deleteFocusScore(id: $id) { ${FOCUS_SCORE_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Work patterns\n// ---------------------------------------------------------------------------\n\nexport const GET_WORK_PATTERN = `\n query TimecampusGetWorkPattern($id: ID!) {\n workPattern(id: $id) { ${WORK_PATTERN_FIELDS} }\n }\n`;\n\nexport const LIST_WORK_PATTERNS = `\n query TimecampusListWorkPatterns(\n $startDate: DateTime\n $endDate: DateTime\n $limit: Int\n $offset: Int\n $userId: ID\n ) {\n workPatterns(startDate: $startDate, endDate: $endDate, limit: $limit, offset: $offset, userId: $userId) {\n ${WORK_PATTERN_FIELDS}\n }\n }\n`;\n\nexport const WORK_PATTERN_SUMMARY = `\n query TimecampusWorkPatternSummary($startDate: DateTime, $endDate: DateTime, $userId: ID) {\n workPatternSummary(startDate: $startDate, endDate: $endDate, userId: $userId) {\n averageFocusHours averageMeetingHours averageProductivity mostProductiveDay\n leastProductiveDay\n insights { type title description impact recommendation }\n }\n }\n`;\n\nexport const TODAY_WORK_PATTERN = `\n query TimecampusTodayWorkPattern {\n todayWorkPattern { ${WORK_PATTERN_FIELDS} }\n }\n`;\n\nexport const RECORD_WORK_PATTERN = `\n mutation TimecampusRecordWorkPattern($input: RecordWorkPatternInput!) {\n recordWorkPattern(input: $input) { ${WORK_PATTERN_FIELDS} }\n }\n`;\n\nexport const UPDATE_WORK_PATTERN = `\n mutation TimecampusUpdateWorkPattern($id: ID!, $input: UpdateWorkPatternInput!) {\n updateWorkPattern(id: $id, input: $input) { ${WORK_PATTERN_FIELDS} }\n }\n`;\n\nexport const DELETE_WORK_PATTERN = `\n mutation TimecampusDeleteWorkPattern($id: ID!) {\n deleteWorkPattern(id: $id) { ${WORK_PATTERN_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Application usage\n// ---------------------------------------------------------------------------\n\nexport const GET_APP_USAGE = `\n query TimecampusGetAppUsage($id: ID!) {\n applicationUsage(id: $id) { ${APP_USAGE_FIELDS} }\n }\n`;\n\nexport const LIST_APP_USAGE = `\n query TimecampusListAppUsage(\n $category: String\n $date: DateTime\n $limit: Int\n $offset: Int\n $userId: ID\n ) {\n applicationUsages(category: $category, date: $date, limit: $limit, offset: $offset, userId: $userId) {\n ${APP_USAGE_FIELDS}\n }\n }\n`;\n\nexport const APP_USAGE_SUMMARY = `\n query TimecampusAppUsageSummary($startDate: DateTime, $endDate: DateTime, $userId: ID) {\n appUsageSummary(startDate: $startDate, endDate: $endDate, userId: $userId) {\n totalApps productiveTime neutralTime distractingTime productivityRatio\n topApps { name category timeSpent sessions }\n }\n }\n`;\n\nexport const TOP_APPLICATIONS = `\n query TimecampusTopApplications($startDate: DateTime, $endDate: DateTime, $limit: Int, $userId: ID) {\n topApplications(startDate: $startDate, endDate: $endDate, limit: $limit, userId: $userId) {\n name category timeSpent sessions\n }\n }\n`;\n\nexport const RECORD_APP_USAGE = `\n mutation TimecampusRecordAppUsage($input: RecordApplicationUsageInput!) {\n recordApplicationUsage(input: $input) { ${APP_USAGE_FIELDS} }\n }\n`;\n\nexport const UPDATE_APP_USAGE = `\n mutation TimecampusUpdateAppUsage($id: ID!, $input: UpdateApplicationUsageInput!) {\n updateApplicationUsage(id: $id, input: $input) { ${APP_USAGE_FIELDS} }\n }\n`;\n\nexport const DELETE_APP_USAGE = `\n mutation TimecampusDeleteAppUsage($id: ID!) {\n deleteApplicationUsage(id: $id) { ${APP_USAGE_FIELDS} }\n }\n`;\n\nexport const CATEGORIZE_APPLICATION = `\n mutation TimecampusCategorizeApplication($applicationName: String!, $category: String!) {\n categorizeApplication(applicationName: $applicationName, category: $category) {\n ${APP_USAGE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Location (geofences + geofence events + location entries)\n// ---------------------------------------------------------------------------\n\nexport const GET_GEOFENCE = `\n query TimecampusGetGeofence($id: ID!) {\n geofence(id: $id) {\n ${GEOFENCE_FIELDS}\n events { ${GEOFENCE_EVENT_FIELDS} }\n }\n }\n`;\n\nexport const LIST_GEOFENCES = `\n query TimecampusListGeofences($filter: GeofenceFilterInput, $limit: Int, $offset: Int) {\n geofences(filter: $filter, limit: $limit, offset: $offset) {\n total hasMore items { ${GEOFENCE_FIELDS} }\n }\n }\n`;\n\nexport const LIST_GEOFENCE_EVENTS = `\n query TimecampusListGeofenceEvents($geofenceId: ID!, $limit: Int, $offset: Int) {\n geofenceEvents(geofenceId: $geofenceId, limit: $limit, offset: $offset) {\n ${GEOFENCE_EVENT_FIELDS}\n }\n }\n`;\n\nexport const CREATE_GEOFENCE = `\n mutation TimecampusCreateGeofence($input: CreateGeofenceInput!) {\n createGeofence(input: $input) { ${GEOFENCE_FIELDS} }\n }\n`;\n\nexport const UPDATE_GEOFENCE = `\n mutation TimecampusUpdateGeofence($id: ID!, $input: UpdateGeofenceInput!) {\n updateGeofence(id: $id, input: $input) { ${GEOFENCE_FIELDS} }\n }\n`;\n\nexport const DELETE_GEOFENCE = `\n mutation TimecampusDeleteGeofence($id: ID!) {\n deleteGeofence(id: $id) { ${GEOFENCE_FIELDS} }\n }\n`;\n\nexport const TOGGLE_GEOFENCE = `\n mutation TimecampusToggleGeofence($id: ID!, $isActive: Boolean!) {\n toggleGeofence(id: $id, isActive: $isActive) { ${GEOFENCE_FIELDS} }\n }\n`;\n\nexport const RECORD_GEOFENCE_EVENT = `\n mutation TimecampusRecordGeofenceEvent($input: RecordGeofenceEventInput!) {\n recordGeofenceEvent(input: $input) { ${GEOFENCE_EVENT_FIELDS} }\n }\n`;\n\nexport const GET_LOCATION_ENTRY = `\n query TimecampusGetLocationEntry($id: ID!) {\n locationEntry(id: $id) { ${LOCATION_ENTRY_FIELDS} }\n }\n`;\n\nexport const ACTIVE_LOCATION_ENTRY = `\n query TimecampusActiveLocationEntry {\n activeLocationEntry { ${LOCATION_ENTRY_FIELDS} }\n }\n`;\n\nexport const LIST_LOCATION_ENTRIES = `\n query TimecampusListLocationEntries($filter: LocationEntryFilterInput, $limit: Int, $offset: Int) {\n locationEntries(filter: $filter, limit: $limit, offset: $offset) {\n total hasMore items { ${LOCATION_ENTRY_FIELDS} }\n }\n }\n`;\n\nexport const LOCATION_STATS = `\n query TimecampusLocationStats($startDate: DateTime, $endDate: DateTime) {\n locationStats(startDate: $startDate, endDate: $endDate) {\n totalLocations totalDuration uniqueAddresses mostFrequentLocation\n }\n }\n`;\n\nexport const CREATE_LOCATION_ENTRY = `\n mutation TimecampusCreateLocationEntry($input: CreateLocationEntryInput!) {\n createLocationEntry(input: $input) { ${LOCATION_ENTRY_FIELDS} }\n }\n`;\n\nexport const UPDATE_LOCATION_ENTRY = `\n mutation TimecampusUpdateLocationEntry($id: ID!, $input: UpdateLocationEntryInput!) {\n updateLocationEntry(id: $id, input: $input) { ${LOCATION_ENTRY_FIELDS} }\n }\n`;\n\nexport const DELETE_LOCATION_ENTRY = `\n mutation TimecampusDeleteLocationEntry($id: ID!) {\n deleteLocationEntry(id: $id) { ${LOCATION_ENTRY_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Channels\n// ---------------------------------------------------------------------------\n\nexport const GET_CHANNEL = `\n query TimecampusGetChannel($id: ID!) {\n channelConfig(id: $id) { ${CHANNEL_FIELDS} }\n }\n`;\n\nexport const LIST_CHANNELS = `\n query TimecampusListChannels($limit: Int, $offset: Int) {\n channelConfigs(limit: $limit, offset: $offset) { ${CHANNEL_FIELDS} }\n }\n`;\n\nexport const ACTIVE_CHANNELS = `\n query TimecampusActiveChannels {\n activeChannels { ${CHANNEL_FIELDS} }\n }\n`;\n\nexport const CHANNEL_STATUSES = `\n query TimecampusChannelStatuses {\n channelStatuses { channelId name type status isHealthy lastSync }\n }\n`;\n\nexport const CREATE_CHANNEL = `\n mutation TimecampusCreateChannel($input: CreateChannelConfigInput!) {\n createChannelConfig(input: $input) { ${CHANNEL_FIELDS} }\n }\n`;\n\nexport const UPDATE_CHANNEL = `\n mutation TimecampusUpdateChannel($id: ID!, $input: UpdateChannelConfigInput!) {\n updateChannelConfig(id: $id, input: $input) { ${CHANNEL_FIELDS} }\n }\n`;\n\nexport const DELETE_CHANNEL = `\n mutation TimecampusDeleteChannel($id: ID!) {\n deleteChannelConfig(id: $id) { ${CHANNEL_FIELDS} }\n }\n`;\n\nexport const SYNC_CHANNEL = `\n mutation TimecampusSyncChannel($id: ID!) {\n syncChannel(id: $id) { ${CHANNEL_FIELDS} }\n }\n`;\n\nexport const TOGGLE_CHANNEL = `\n mutation TimecampusToggleChannel($id: ID!, $status: ChannelStatus!) {\n toggleChannel(id: $id, status: $status) { ${CHANNEL_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Client portals\n// ---------------------------------------------------------------------------\n\nexport const GET_CLIENT_PORTAL = `\n query TimecampusGetClientPortal($id: ID!) {\n clientPortalConfig(id: $id) { ${CLIENT_PORTAL_FIELDS} }\n }\n`;\n\nexport const LIST_CLIENT_PORTALS = `\n query TimecampusListClientPortals($limit: Int, $offset: Int) {\n clientPortalConfigs(limit: $limit, offset: $offset) {\n total hasMore items { ${CLIENT_PORTAL_FIELDS} }\n }\n }\n`;\n\nexport const CLIENT_PORTAL_STATS = `\n query TimecampusClientPortalStats {\n clientPortalStats { totalClients activeClients totalProjectsShared }\n }\n`;\n\nexport const CREATE_CLIENT_PORTAL = `\n mutation TimecampusCreateClientPortal($input: CreateClientPortalConfigInput!) {\n createClientPortalConfig(input: $input) { ${CLIENT_PORTAL_FIELDS} }\n }\n`;\n\nexport const UPDATE_CLIENT_PORTAL = `\n mutation TimecampusUpdateClientPortal($id: ID!, $input: UpdateClientPortalConfigInput!) {\n updateClientPortalConfig(id: $id, input: $input) { ${CLIENT_PORTAL_FIELDS} }\n }\n`;\n\nexport const DELETE_CLIENT_PORTAL = `\n mutation TimecampusDeleteClientPortal($id: ID!) {\n deleteClientPortalConfig(id: $id) { ${CLIENT_PORTAL_FIELDS} }\n }\n`;\n\nexport const TOGGLE_CLIENT_PORTAL = `\n mutation TimecampusToggleClientPortal($id: ID!, $isActive: Boolean!) {\n toggleClientPortal(id: $id, isActive: $isActive) { ${CLIENT_PORTAL_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Email tracking\n// ---------------------------------------------------------------------------\n\nexport const GET_EMAIL_ENTRY = `\n query TimecampusGetEmailEntry($id: ID!) {\n emailTimeEntry(id: $id) { ${EMAIL_ENTRY_FIELDS} }\n }\n`;\n\nexport const LIST_EMAIL_ENTRIES = `\n query TimecampusListEmailEntries(\n $filter: EmailTimeEntryFilterInput\n $startDate: DateTime\n $endDate: DateTime\n $limit: Int\n $offset: Int\n $userId: ID\n ) {\n emailTimeEntries(\n filter: $filter\n startDate: $startDate\n endDate: $endDate\n limit: $limit\n offset: $offset\n userId: $userId\n ) {\n ${EMAIL_ENTRY_FIELDS}\n }\n }\n`;\n\nexport const EMAIL_TRACKING_STATS = `\n query TimecampusEmailTrackingStats($startDate: DateTime, $endDate: DateTime, $userId: ID) {\n emailTrackingStats(startDate: $startDate, endDate: $endDate, userId: $userId) {\n totalEmails importantCount totalDuration averageResponseTime byCategory\n }\n }\n`;\n\nexport const CREATE_EMAIL_ENTRY = `\n mutation TimecampusCreateEmailEntry($input: CreateEmailTimeEntryInput!) {\n createEmailTimeEntry(input: $input) { ${EMAIL_ENTRY_FIELDS} }\n }\n`;\n\nexport const BULK_CREATE_EMAIL_ENTRIES = `\n mutation TimecampusBulkCreateEmailEntries($inputs: [CreateEmailTimeEntryInput!]!) {\n bulkCreateEmailTimeEntries(inputs: $inputs) { ${EMAIL_ENTRY_FIELDS} }\n }\n`;\n\nexport const UPDATE_EMAIL_ENTRY = `\n mutation TimecampusUpdateEmailEntry($id: ID!, $input: UpdateEmailTimeEntryInput!) {\n updateEmailTimeEntry(id: $id, input: $input) { ${EMAIL_ENTRY_FIELDS} }\n }\n`;\n\nexport const DELETE_EMAIL_ENTRY = `\n mutation TimecampusDeleteEmailEntry($id: ID!) {\n deleteEmailTimeEntry(id: $id) { ${EMAIL_ENTRY_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Configuration + UI session\n// ---------------------------------------------------------------------------\n\nexport const GET_CONFIG = `\n query TimecampusGetConfig($id: ID!) {\n timeCampusConfiguration(id: $id) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const GET_CONFIG_BY_KEY = `\n query TimecampusGetConfigByKey($key: String!, $scope: TimeCampusConfigScope, $scopeId: String) {\n timeCampusConfigurationByKey(key: $key, scope: $scope, scopeId: $scopeId) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const CONFIG_VALUE = `\n query TimecampusConfigValue($key: String!, $scope: TimeCampusConfigScope, $scopeId: String) {\n timeCampusConfigurationValue(key: $key, scope: $scope, scopeId: $scopeId)\n }\n`;\n\nexport const LIST_CONFIGS = `\n query TimecampusListConfigs($scope: TimeCampusConfigScope, $scopeId: String, $limit: Int, $offset: Int) {\n timeCampusConfigurations(scope: $scope, scopeId: $scopeId, limit: $limit, offset: $offset) {\n ${CONFIG_FIELDS}\n }\n }\n`;\n\nexport const SET_CONFIG = `\n mutation TimecampusSetConfig($input: SetTimeCampusConfigurationInput!) {\n setTimeCampusConfiguration(input: $input) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const BULK_SET_CONFIGS = `\n mutation TimecampusBulkSetConfigs($inputs: [SetTimeCampusConfigurationInput!]!) {\n bulkSetTimeCampusConfigurations(inputs: $inputs) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const UPDATE_CONFIG = `\n mutation TimecampusUpdateConfig($id: ID!, $input: UpdateTimeCampusConfigurationInput!) {\n updateTimeCampusConfiguration(id: $id, input: $input) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const DELETE_CONFIG = `\n mutation TimecampusDeleteConfig($id: ID!) {\n deleteTimeCampusConfiguration(id: $id) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const GET_UI_SESSION = `\n query TimecampusGetUISession {\n timeCampusUISession { ${UI_SESSION_FIELDS} }\n }\n`;\n\nexport const UI_SESSION_BY_USER = `\n query TimecampusUISessionByUser($userId: ID!) {\n timeCampusUISessionByUser(userId: $userId) { ${UI_SESSION_FIELDS} }\n }\n`;\n\nexport const SAVE_UI_SESSION = `\n mutation TimecampusSaveUISession($input: SaveTimeCampusUISessionInput!) {\n saveTimeCampusUISession(input: $input) { ${UI_SESSION_FIELDS} }\n }\n`;\n\nexport const UPDATE_UI_SESSION = `\n mutation TimecampusUpdateUISession($id: ID!, $input: UpdateTimeCampusUISessionInput!) {\n updateTimeCampusUISession(id: $id, input: $input) { ${UI_SESSION_FIELDS} }\n }\n`;\n\nexport const CLEAR_UI_SESSION = `\n mutation TimecampusClearUISession {\n clearTimeCampusUISession\n }\n`;\n","/**\n * Shared zod schemas for the Timecampus tool surface.\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop grounds\n * tool calls against the exact allowed values. Project/task `status` and\n * `priority` are plain `String` in the real schema (free-form), so they stay\n * `z.string()` rather than enums. JSON scalar inputs (context, settings,\n * permissions, factors, peakHours, tags, state, preferences, value) are\n * modelled as permissive object records — the backend accepts arbitrary JSON,\n * but a record shape gives the LLM a typed hint.\n */\n\nimport { z } from 'zod';\n\nexport const ApprovalStatusEnum = z\n .enum(['PENDING', 'APPROVED', 'REJECTED', 'REVISION_REQUESTED'])\n .describe('Lifecycle status of a time-approval request');\n\nexport const ChannelStatusEnum = z\n .enum(['ACTIVE', 'INACTIVE', 'SETUP'])\n .describe('Operational status of a tracking channel');\n\nexport const ChannelTypeEnum = z\n .enum(['API', 'BROWSER', 'CALENDAR', 'CLI', 'CUSTOM', 'DESKTOP', 'IDE', 'MOBILE'])\n .describe('Source type of a tracking channel');\n\nexport const ExpenseStatusEnum = z\n .enum(['PENDING', 'APPROVED', 'REJECTED', 'REIMBURSED'])\n .describe('Status of an expense entry');\n\nexport const ExpenseOrderByFieldEnum = z\n .enum(['amount', 'category', 'createdAt', 'date', 'status', 'updatedAt'])\n .describe('Sortable field for expense listings');\n\nexport const GeofenceTriggerEnum = z\n .enum(['ENTER', 'EXIT', 'BOTH'])\n .describe('Which boundary crossings a geofence reacts to');\n\nexport const GeofenceEventTypeEnum = z\n .enum(['ENTER', 'EXIT'])\n .describe('Type of a recorded geofence crossing');\n\nexport const MeetingTypeEnum = z\n .enum(['STANDUP', 'PLANNING', 'REVIEW', 'RETROSPECTIVE', 'ONE_ON_ONE', 'TEAM', 'EXTERNAL'])\n .describe('Category of a meeting');\n\nexport const MeetingParticipantRoleEnum = z\n .enum(['ORGANIZER', 'REQUIRED', 'OPTIONAL'])\n .describe('Role of a meeting participant');\n\nexport const MeetingParticipantStatusEnum = z\n .enum(['PENDING', 'ACCEPTED', 'DECLINED', 'TENTATIVE'])\n .describe('RSVP status of a meeting participant');\n\nexport const MeetingActionItemStatusEnum = z\n .enum(['PENDING', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED'])\n .describe('Status of a meeting action item');\n\nexport const MeetingOrderByFieldEnum = z\n .enum(['cost', 'createdAt', 'duration', 'endTime', 'rating', 'startTime', 'updatedAt'])\n .describe('Sortable field for meeting listings');\n\nexport const PomodoroSessionTypeEnum = z\n .enum(['FOCUS', 'SHORT_BREAK', 'LONG_BREAK'])\n .describe('Type of a pomodoro session');\n\nexport const PomodoroGoalTypeEnum = z\n .enum(['DAILY', 'WEEKLY', 'MONTHLY'])\n .describe('Cadence of a pomodoro goal');\n\nexport const PomodoroSessionOrderByFieldEnum = z\n .enum(['createdAt', 'duration', 'endTime', 'startTime', 'updatedAt'])\n .describe('Sortable field for pomodoro-session listings');\n\nexport const ConfigScopeEnum = z\n .enum(['GLOBAL', 'WORKSPACE', 'PROJECT', 'USER'])\n .describe('Scope at which a configuration value applies');\n\nexport const OrderDirectionEnum = z\n .enum(['ASC', 'DESC'])\n .describe('Sort direction (uppercase) for OrderDirection-typed list args');\n\nexport const SortDirectionEnum = z\n .enum(['asc', 'desc'])\n .describe('Sort direction (lowercase) for TimeCampusSortDirection-typed list args');\n\nexport const TaskOrderFieldEnum = z\n .enum(['CREATED_AT', 'DUE_DATE', 'ORDER', 'PRIORITY', 'STATUS', 'TITLE'])\n .describe('Sortable field for task listings');\n\nexport const TimeEntryOrderFieldEnum = z\n .enum(['CREATED_AT', 'DESCRIPTION', 'DURATION', 'START_TIME'])\n .describe('Sortable field for time-entry listings');\n\nexport const ProjectOrderFieldEnum = z\n .enum(['BUDGET', 'CREATED_AT', 'NAME', 'STATUS', 'TRACKED_HOURS'])\n .describe('Sortable field for project listings');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n","/**\n * Timecampus time-entry + timer tools.\n *\n * Surface (13): timeentries_{get,list,by_date,count,stats,create,update,delete,\n * bulk_delete,duplicate} and timers_{running,start,stop}. Time entries are the\n * core tracking record; the timer trio drives the live stopwatch (startTimer /\n * stopTimer / runningTimers). Workspace scoping is carried by the gateway\n * headers — these fields take no explicit workspaceId.\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 { JsonObject, OrderDirectionEnum, TimeEntryOrderFieldEnum } from './shared.js';\n\nexport function registerTimeEntryTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_get')),\n {\n title: 'Get Time Entry',\n description: 'Fetch a single time entry by ID.',\n inputSchema: { id: z.string().describe('Time entry ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeEntry: Record<string, unknown> | null;\n }>(ops.GET_TIME_ENTRY, { id });\n if (!data.timeEntry) return errorResult(`Time entry ${id} not found`);\n return jsonResult(data.timeEntry);\n } catch (error) {\n ctx.logger.error('timecampus timeentries_get failed', { error: String(error) });\n return errorResult(\n `Failed to get time entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_list')),\n {\n title: 'List Time Entries',\n description:\n 'List time entries with optional filter (project/task/billable/running/source/date range/text), pagination and ordering. Returns { items, total, hasMore }.',\n inputSchema: {\n projectId: z.string().optional().describe('Filter by project ID'),\n taskId: z.string().optional().describe('Filter by task ID'),\n billable: z.boolean().optional().describe('Filter by billable flag'),\n isRunning: z.boolean().optional().describe('Filter by running flag'),\n source: z.string().optional().describe('Filter by capture source (e.g. \"manual\", \"timer\")'),\n search: z.string().optional().describe('Free-text search across description'),\n startDate: z.string().optional().describe('ISO start of date range (inclusive)'),\n endDate: z.string().optional().describe('ISO end of date range (inclusive)'),\n orderByField: TimeEntryOrderFieldEnum.optional().describe('Sort field'),\n orderByDirection: OrderDirectionEnum.optional().describe('Sort direction'),\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 ({\n projectId,\n taskId,\n billable,\n isRunning,\n source,\n search,\n startDate,\n endDate,\n orderByField,\n orderByDirection,\n limit,\n offset,\n }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (projectId !== undefined) filter.projectId = projectId;\n if (taskId !== undefined) filter.taskId = taskId;\n if (billable !== undefined) filter.billable = billable;\n if (isRunning !== undefined) filter.isRunning = isRunning;\n if (source !== undefined) filter.source = source;\n if (search !== undefined) filter.search = search;\n if (startDate !== undefined) filter.startDate = startDate;\n if (endDate !== undefined) filter.endDate = endDate;\n const orderBy =\n orderByField !== undefined\n ? { field: orderByField, direction: orderByDirection ?? 'DESC' }\n : undefined;\n\n const data = await ctx.gql.workspace.request<{\n timeEntries: Record<string, unknown>;\n }>(ops.LIST_TIME_ENTRIES, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n orderBy,\n });\n return jsonResult(data.timeEntries);\n } catch (error) {\n ctx.logger.error('timecampus timeentries_list failed', { error: String(error) });\n return errorResult(\n `Failed to list time entries: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_by_date')),\n {\n title: 'Time Entries By Date',\n description: 'List all time entries logged on a specific date.',\n inputSchema: { date: z.string().describe('ISO date to fetch entries for') },\n },\n async ({ date }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeEntriesByDate: Array<Record<string, unknown>>;\n }>(ops.TIME_ENTRIES_BY_DATE, { date });\n return jsonResult(data.timeEntriesByDate);\n } catch (error) {\n ctx.logger.error('timecampus timeentries_by_date failed', { error: String(error) });\n return errorResult(\n `Failed to list time entries by date: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_count')),\n {\n title: 'Count Time Entries',\n description: 'Count time entries matching an optional filter.',\n inputSchema: {\n projectId: z.string().optional().describe('Filter by project ID'),\n taskId: z.string().optional().describe('Filter by task ID'),\n billable: z.boolean().optional().describe('Filter by billable flag'),\n startDate: z.string().optional().describe('ISO start of date range'),\n endDate: z.string().optional().describe('ISO end of date range'),\n },\n },\n async ({ projectId, taskId, billable, startDate, endDate }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (projectId !== undefined) filter.projectId = projectId;\n if (taskId !== undefined) filter.taskId = taskId;\n if (billable !== undefined) filter.billable = billable;\n if (startDate !== undefined) filter.startDate = startDate;\n if (endDate !== undefined) filter.endDate = endDate;\n const data = await ctx.gql.workspace.request<{ timeEntryCount: number }>(\n ops.TIME_ENTRY_COUNT,\n { filter: Object.keys(filter).length > 0 ? filter : undefined },\n );\n return jsonResult({ count: data.timeEntryCount });\n } catch (error) {\n ctx.logger.error('timecampus timeentries_count failed', { error: String(error) });\n return errorResult(\n `Failed to count time entries: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_stats')),\n {\n title: 'Time Entry Stats',\n description:\n 'Aggregate time-entry stats (total entries, total/billable hours, active timers) over an optional date range.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO start of date range'),\n endDate: z.string().optional().describe('ISO end of date range'),\n },\n },\n async ({ startDate, endDate }) => {\n try {\n const data = await ctx.gql.workspace.request<{ timeEntryStats: Record<string, unknown> }>(\n ops.TIME_ENTRY_STATS,\n { startDate, endDate },\n );\n return jsonResult(data.timeEntryStats);\n } catch (error) {\n ctx.logger.error('timecampus timeentries_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get time-entry stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_create')),\n {\n title: 'Create Time Entry',\n description:\n 'Create a time entry. `startTime` is required; provide `endTime` or `duration` (seconds) for a closed entry.',\n inputSchema: {\n startTime: z.string().describe('ISO start time'),\n endTime: z.string().optional().describe('ISO end time'),\n duration: z.number().int().optional().describe('Duration in seconds'),\n description: z.string().optional().describe('What was worked on'),\n notes: z.string().optional().describe('Additional notes'),\n projectId: z.string().optional().describe('Project to attribute time to'),\n taskId: z.string().optional().describe('Task to attribute time to'),\n billable: z.boolean().optional().describe('Whether the entry is billable (default false)'),\n hourlyRate: z.number().optional().describe('Override hourly rate'),\n source: z.string().optional().describe('Capture source (default \"manual\")'),\n tags: JsonObject.optional().describe('Tags JSON'),\n },\n },\n async ({\n startTime,\n endTime,\n duration,\n description,\n notes,\n projectId,\n taskId,\n billable,\n hourlyRate,\n source,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { startTime };\n if (endTime !== undefined) input.endTime = endTime;\n if (duration !== undefined) input.duration = duration;\n if (description !== undefined) input.description = description;\n if (notes !== undefined) input.notes = notes;\n if (projectId !== undefined) input.projectId = projectId;\n if (taskId !== undefined) input.taskId = taskId;\n if (billable !== undefined) input.billable = billable;\n if (hourlyRate !== undefined) input.hourlyRate = hourlyRate;\n if (source !== undefined) input.source = source;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{ createTimeEntry: Record<string, unknown> }>(\n ops.CREATE_TIME_ENTRY,\n { input },\n );\n return jsonResult(data.createTimeEntry);\n } catch (error) {\n ctx.logger.error('timecampus timeentries_create failed', { error: String(error) });\n return errorResult(\n `Failed to create time entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_update')),\n {\n title: 'Update Time Entry',\n description: 'Update a time entry. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Time entry ID'),\n startTime: z.string().optional().describe('Updated ISO start time'),\n endTime: z.string().optional().describe('Updated ISO end time'),\n duration: z.number().int().optional().describe('Updated duration in seconds'),\n description: z.string().optional().describe('Updated description'),\n notes: z.string().optional().describe('Updated notes'),\n projectId: z.string().optional().describe('Updated project ID'),\n taskId: z.string().optional().describe('Updated task ID'),\n billable: z.boolean().optional().describe('Updated billable flag'),\n hourlyRate: z.number().optional().describe('Updated hourly rate'),\n source: z.string().optional().describe('Updated capture source'),\n tags: JsonObject.optional().describe('Updated tags JSON'),\n },\n },\n async ({\n id,\n startTime,\n endTime,\n duration,\n description,\n notes,\n projectId,\n taskId,\n billable,\n hourlyRate,\n source,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (startTime !== undefined) input.startTime = startTime;\n if (endTime !== undefined) input.endTime = endTime;\n if (duration !== undefined) input.duration = duration;\n if (description !== undefined) input.description = description;\n if (notes !== undefined) input.notes = notes;\n if (projectId !== undefined) input.projectId = projectId;\n if (taskId !== undefined) input.taskId = taskId;\n if (billable !== undefined) input.billable = billable;\n if (hourlyRate !== undefined) input.hourlyRate = hourlyRate;\n if (source !== undefined) input.source = source;\n if (tags !== undefined) input.tags = tags;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{ updateTimeEntry: Record<string, unknown> }>(\n ops.UPDATE_TIME_ENTRY,\n { id, input },\n );\n return jsonResult(data.updateTimeEntry);\n } catch (error) {\n ctx.logger.error('timecampus timeentries_update failed', { error: String(error) });\n return errorResult(\n `Failed to update time entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_delete')),\n {\n title: 'Delete Time Entry',\n description: 'Delete a time entry by ID.',\n inputSchema: { id: z.string().describe('Time entry ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteTimeEntry: Record<string, unknown> }>(\n ops.DELETE_TIME_ENTRY,\n { id },\n );\n return jsonResult(data.deleteTimeEntry);\n } catch (error) {\n ctx.logger.error('timecampus timeentries_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete time entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_bulk_delete')),\n {\n title: 'Bulk Delete Time Entries',\n description: 'Delete multiple time entries by ID. Returns the number deleted.',\n inputSchema: { ids: z.array(z.string()).min(1).describe('Time entry IDs to delete') },\n },\n async ({ ids }) => {\n try {\n const data = await ctx.gql.workspace.request<{ bulkDeleteTimeEntries: number }>(\n ops.BULK_DELETE_TIME_ENTRIES,\n { ids },\n );\n return jsonResult({ deleted: data.bulkDeleteTimeEntries });\n } catch (error) {\n ctx.logger.error('timecampus timeentries_bulk_delete failed', { error: String(error) });\n return errorResult(\n `Failed to bulk-delete time entries: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_duplicate')),\n {\n title: 'Duplicate Time Entry',\n description: 'Duplicate an existing time entry as a new draft.',\n inputSchema: { id: z.string().describe('Time entry ID to duplicate') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n duplicateTimeEntry: Record<string, unknown>;\n }>(ops.DUPLICATE_TIME_ENTRY, { id });\n return jsonResult(data.duplicateTimeEntry);\n } catch (error) {\n ctx.logger.error('timecampus timeentries_duplicate failed', { error: String(error) });\n return errorResult(\n `Failed to duplicate time entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timers_running')),\n {\n title: 'List Running Timers',\n description: 'List all currently-running timers with their elapsed seconds.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n runningTimers: Array<Record<string, unknown>>;\n }>(ops.RUNNING_TIMERS, {});\n return jsonResult(data.runningTimers);\n } catch (error) {\n ctx.logger.error('timecampus timers_running failed', { error: String(error) });\n return errorResult(\n `Failed to list running timers: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timers_start')),\n {\n title: 'Start Timer',\n description:\n 'Start a live timer (creates a running time entry). Provide an optional project/task/description.',\n inputSchema: {\n description: z.string().optional().describe('What you are starting work on'),\n notes: z.string().optional().describe('Additional notes'),\n projectId: z.string().optional().describe('Project to attribute time to'),\n taskId: z.string().optional().describe('Task to attribute time to'),\n billable: z.boolean().optional().describe('Whether billable (default false)'),\n hourlyRate: z.number().optional().describe('Override hourly rate'),\n source: z.string().optional().describe('Capture source (default \"timer\")'),\n tags: JsonObject.optional().describe('Tags JSON'),\n },\n },\n async ({ description, notes, projectId, taskId, billable, hourlyRate, source, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (description !== undefined) input.description = description;\n if (notes !== undefined) input.notes = notes;\n if (projectId !== undefined) input.projectId = projectId;\n if (taskId !== undefined) input.taskId = taskId;\n if (billable !== undefined) input.billable = billable;\n if (hourlyRate !== undefined) input.hourlyRate = hourlyRate;\n if (source !== undefined) input.source = source;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{ startTimer: Record<string, unknown> }>(\n ops.START_TIMER,\n { input },\n );\n return jsonResult(data.startTimer);\n } catch (error) {\n ctx.logger.error('timecampus timers_start failed', { error: String(error) });\n return errorResult(\n `Failed to start timer: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timers_stop')),\n {\n title: 'Stop Timer',\n description: 'Stop a running timer by its time-entry ID.',\n inputSchema: { id: z.string().describe('Running time entry ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ stopTimer: Record<string, unknown> }>(\n ops.STOP_TIMER,\n { id },\n );\n return jsonResult(data.stopTimer);\n } catch (error) {\n ctx.logger.error('timecampus timers_stop failed', { error: String(error) });\n return errorResult(\n `Failed to stop timer: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus project tools.\n *\n * Surface (7): projects_{get,list,stats,create,update,archive,delete}.\n * Project `status` is a free-form String in the backend schema, so it stays a\n * plain string here. Workspace scoping comes from the gateway headers.\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 { JsonObject, OrderDirectionEnum, ProjectOrderFieldEnum } from './shared.js';\n\nexport function registerProjectTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'projects_get')),\n {\n title: 'Get Project',\n description: 'Fetch a single Timecampus project by ID, including its tasks.',\n inputSchema: { id: z.string().describe('Project ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeCampusProject: Record<string, unknown> | null;\n }>(ops.GET_PROJECT, { id });\n if (!data.timeCampusProject) return errorResult(`Project ${id} not found`);\n return jsonResult(data.timeCampusProject);\n } catch (error) {\n ctx.logger.error('timecampus projects_get failed', { error: String(error) });\n return errorResult(\n `Failed to get project: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'projects_list')),\n {\n title: 'List Projects',\n description:\n 'List projects with optional status/client/text filter, pagination and ordering. Returns { items, total, hasMore }.',\n inputSchema: {\n status: z.string().optional().describe('Filter by status (e.g. \"ACTIVE\", \"ARCHIVED\")'),\n clientId: z.string().optional().describe('Filter by client ID'),\n createdBy: z.string().optional().describe('Filter by creator'),\n search: z.string().optional().describe('Free-text search across name/description'),\n orderByField: ProjectOrderFieldEnum.optional().describe('Sort field'),\n orderByDirection: OrderDirectionEnum.optional().describe('Sort direction'),\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 ({\n status,\n clientId,\n createdBy,\n search,\n orderByField,\n orderByDirection,\n limit,\n offset,\n }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n if (clientId !== undefined) filter.clientId = clientId;\n if (createdBy !== undefined) filter.createdBy = createdBy;\n if (search !== undefined) filter.search = search;\n const orderBy =\n orderByField !== undefined\n ? { field: orderByField, direction: orderByDirection ?? 'DESC' }\n : undefined;\n\n const data = await ctx.gql.workspace.request<{\n timeCampusProjects: Record<string, unknown>;\n }>(ops.LIST_PROJECTS, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n orderBy,\n });\n return jsonResult(data.timeCampusProjects);\n } catch (error) {\n ctx.logger.error('timecampus projects_list failed', { error: String(error) });\n return errorResult(\n `Failed to list projects: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'projects_stats')),\n {\n title: 'Project Stats',\n description: 'Aggregate stats for a project (tasks, hours, budget used/remaining).',\n inputSchema: { id: z.string().describe('Project ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeCampusProjectStats: Record<string, unknown>;\n }>(ops.PROJECT_STATS, { id });\n return jsonResult(data.timeCampusProjectStats);\n } catch (error) {\n ctx.logger.error('timecampus projects_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get project stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'projects_create')),\n {\n title: 'Create Project',\n description: 'Create a new project. `name` is required.',\n inputSchema: {\n name: z.string().min(1).describe('Project name'),\n description: z.string().optional().describe('Project description'),\n status: z.string().optional().describe('Initial status (default \"ACTIVE\")'),\n color: z.string().optional().describe('Display color'),\n budget: z.number().optional().describe('Budget amount'),\n currency: z.string().optional().describe('Currency code (default \"USD\")'),\n hourlyRate: z.number().optional().describe('Default hourly rate'),\n estimatedHours: z.number().optional().describe('Estimated hours'),\n clientId: z.string().optional().describe('Associated client ID'),\n context: JsonObject.optional().describe('Operation context JSON'),\n },\n },\n async ({\n name,\n description,\n status,\n color,\n budget,\n currency,\n hourlyRate,\n estimatedHours,\n clientId,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (color !== undefined) input.color = color;\n if (budget !== undefined) input.budget = budget;\n if (currency !== undefined) input.currency = currency;\n if (hourlyRate !== undefined) input.hourlyRate = hourlyRate;\n if (estimatedHours !== undefined) input.estimatedHours = estimatedHours;\n if (clientId !== undefined) input.clientId = clientId;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n createTimeCampusProject: Record<string, unknown>;\n }>(ops.CREATE_PROJECT, { input });\n return jsonResult(data.createTimeCampusProject);\n } catch (error) {\n ctx.logger.error('timecampus projects_create failed', { error: String(error) });\n return errorResult(\n `Failed to create project: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'projects_update')),\n {\n title: 'Update Project',\n description: 'Update a project. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Project ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n status: z.string().optional().describe('Updated status'),\n color: z.string().optional().describe('Updated color'),\n budget: z.number().optional().describe('Updated budget'),\n currency: z.string().optional().describe('Updated currency'),\n hourlyRate: z.number().optional().describe('Updated hourly rate'),\n estimatedHours: z.number().optional().describe('Updated estimated hours'),\n clientId: z.string().optional().describe('Updated client ID'),\n },\n },\n async ({\n id,\n name,\n description,\n status,\n color,\n budget,\n currency,\n hourlyRate,\n estimatedHours,\n clientId,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (color !== undefined) input.color = color;\n if (budget !== undefined) input.budget = budget;\n if (currency !== undefined) input.currency = currency;\n if (hourlyRate !== undefined) input.hourlyRate = hourlyRate;\n if (estimatedHours !== undefined) input.estimatedHours = estimatedHours;\n if (clientId !== undefined) input.clientId = clientId;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateTimeCampusProject: Record<string, unknown>;\n }>(ops.UPDATE_PROJECT, { id, input });\n return jsonResult(data.updateTimeCampusProject);\n } catch (error) {\n ctx.logger.error('timecampus projects_update failed', { error: String(error) });\n return errorResult(\n `Failed to update project: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'projects_archive')),\n {\n title: 'Archive Project',\n description: 'Archive a project (soft-close without deleting).',\n inputSchema: { id: z.string().describe('Project ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n archiveTimeCampusProject: Record<string, unknown>;\n }>(ops.ARCHIVE_PROJECT, { id });\n return jsonResult(data.archiveTimeCampusProject);\n } catch (error) {\n ctx.logger.error('timecampus projects_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive project: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'projects_delete')),\n {\n title: 'Delete Project',\n description: 'Delete a project by ID.',\n inputSchema: { id: z.string().describe('Project ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteTimeCampusProject: Record<string, unknown>;\n }>(ops.DELETE_PROJECT, { id });\n return jsonResult(data.deleteTimeCampusProject);\n } catch (error) {\n ctx.logger.error('timecampus projects_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete project: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus task tools — project task board.\n *\n * Surface (7): tasks_{get,list,create,update,update_status,reorder,delete}.\n * Task `status` and `priority` are free-form Strings in the backend schema.\n * `tasks_list` requires a projectId (the backend `tasks` query is project-scoped)\n * and returns { items, total, hasMore }.\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 { JsonObject, OrderDirectionEnum, TaskOrderFieldEnum } from './shared.js';\n\nexport function registerTaskTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_get')),\n {\n title: 'Get Task',\n description: 'Fetch a single task by ID.',\n inputSchema: { id: z.string().describe('Task ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ task: Record<string, unknown> | null }>(\n ops.GET_TASK,\n { id },\n );\n if (!data.task) return errorResult(`Task ${id} not found`);\n return jsonResult(data.task);\n } catch (error) {\n ctx.logger.error('timecampus tasks_get failed', { error: String(error) });\n return errorResult(\n `Failed to get task: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_list')),\n {\n title: 'List Tasks',\n description:\n 'List the tasks of a project with optional status/priority/assignee/overdue/text filter, pagination and ordering. Returns { items, total, hasMore }.',\n inputSchema: {\n projectId: z.string().describe('Project ID (required — tasks are project-scoped)'),\n status: z.string().optional().describe('Filter by status'),\n priority: z.string().optional().describe('Filter by priority'),\n assigneeId: z.string().optional().describe('Filter by assignee'),\n overdue: z.boolean().optional().describe('Only overdue tasks'),\n hasDueDate: z.boolean().optional().describe('Only tasks with a due date'),\n search: z.string().optional().describe('Free-text search across title/description'),\n orderByField: TaskOrderFieldEnum.optional().describe('Sort field'),\n orderByDirection: OrderDirectionEnum.optional().describe('Sort direction'),\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 ({\n projectId,\n status,\n priority,\n assigneeId,\n overdue,\n hasDueDate,\n search,\n orderByField,\n orderByDirection,\n limit,\n offset,\n }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n if (priority !== undefined) filter.priority = priority;\n if (assigneeId !== undefined) filter.assigneeId = assigneeId;\n if (overdue !== undefined) filter.overdue = overdue;\n if (hasDueDate !== undefined) filter.hasDueDate = hasDueDate;\n if (search !== undefined) filter.search = search;\n const orderBy =\n orderByField !== undefined\n ? { field: orderByField, direction: orderByDirection ?? 'ASC' }\n : undefined;\n\n const data = await ctx.gql.workspace.request<{ tasks: Record<string, unknown> }>(\n ops.LIST_TASKS,\n {\n projectId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n orderBy,\n },\n );\n return jsonResult(data.tasks);\n } catch (error) {\n ctx.logger.error('timecampus tasks_list failed', { error: String(error) });\n return errorResult(\n `Failed to list tasks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_create')),\n {\n title: 'Create Task',\n description: 'Create a task within a project. `projectId` and `title` are required.',\n inputSchema: {\n projectId: z.string().describe('Project to add the task to'),\n title: z.string().min(1).describe('Task title'),\n description: z.string().optional().describe('Task description'),\n status: z.string().optional().describe('Initial status (default \"TODO\")'),\n priority: z.string().optional().describe('Priority (default \"MEDIUM\")'),\n order: z.number().int().optional().describe('Board order position'),\n assigneeId: z.string().optional().describe('Assignee user ID'),\n dueDate: z.string().optional().describe('ISO due date'),\n estimatedHours: z.number().optional().describe('Estimated hours'),\n context: JsonObject.optional().describe('Operation context JSON'),\n },\n },\n async ({\n projectId,\n title,\n description,\n status,\n priority,\n order,\n assigneeId,\n dueDate,\n estimatedHours,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { projectId, title };\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (priority !== undefined) input.priority = priority;\n if (order !== undefined) input.order = order;\n if (assigneeId !== undefined) input.assigneeId = assigneeId;\n if (dueDate !== undefined) input.dueDate = dueDate;\n if (estimatedHours !== undefined) input.estimatedHours = estimatedHours;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{ createTask: Record<string, unknown> }>(\n ops.CREATE_TASK,\n { input },\n );\n return jsonResult(data.createTask);\n } catch (error) {\n ctx.logger.error('timecampus tasks_create failed', { error: String(error) });\n return errorResult(\n `Failed to create task: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_update')),\n {\n title: 'Update Task',\n description: 'Update a task. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Task ID'),\n title: z.string().optional().describe('Updated title'),\n description: z.string().optional().describe('Updated description'),\n status: z.string().optional().describe('Updated status'),\n priority: z.string().optional().describe('Updated priority'),\n order: z.number().int().optional().describe('Updated board order'),\n assigneeId: z.string().optional().describe('Updated assignee'),\n dueDate: z.string().optional().describe('Updated ISO due date'),\n estimatedHours: z.number().optional().describe('Updated estimated hours'),\n },\n },\n async ({\n id,\n title,\n description,\n status,\n priority,\n order,\n assigneeId,\n dueDate,\n estimatedHours,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (priority !== undefined) input.priority = priority;\n if (order !== undefined) input.order = order;\n if (assigneeId !== undefined) input.assigneeId = assigneeId;\n if (dueDate !== undefined) input.dueDate = dueDate;\n if (estimatedHours !== undefined) input.estimatedHours = estimatedHours;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{ updateTask: Record<string, unknown> }>(\n ops.UPDATE_TASK,\n { id, input },\n );\n return jsonResult(data.updateTask);\n } catch (error) {\n ctx.logger.error('timecampus tasks_update failed', { error: String(error) });\n return errorResult(\n `Failed to update task: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_update_status')),\n {\n title: 'Update Task Status',\n description: 'Set just the status of a task (e.g. \"TODO\" → \"IN_PROGRESS\" → \"DONE\").',\n inputSchema: {\n id: z.string().describe('Task ID'),\n status: z.string().min(1).describe('New status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{ updateTaskStatus: Record<string, unknown> }>(\n ops.UPDATE_TASK_STATUS,\n { id, status },\n );\n return jsonResult(data.updateTaskStatus);\n } catch (error) {\n ctx.logger.error('timecampus tasks_update_status failed', { error: String(error) });\n return errorResult(\n `Failed to update task status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_reorder')),\n {\n title: 'Reorder Tasks',\n description: 'Reorder a project’s task board by providing the task IDs in the desired order.',\n inputSchema: {\n projectId: z.string().describe('Project ID'),\n taskIds: z.array(z.string()).min(1).describe('Task IDs in the new order'),\n },\n },\n async ({ projectId, taskIds }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n reorderTasks: Array<Record<string, unknown>>;\n }>(ops.REORDER_TASKS, { projectId, taskIds });\n return jsonResult(data.reorderTasks);\n } catch (error) {\n ctx.logger.error('timecampus tasks_reorder failed', { error: String(error) });\n return errorResult(\n `Failed to reorder tasks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_delete')),\n {\n title: 'Delete Task',\n description: 'Delete a task by ID.',\n inputSchema: { id: z.string().describe('Task ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteTask: Record<string, unknown> }>(\n ops.DELETE_TASK,\n { id },\n );\n return jsonResult(data.deleteTask);\n } catch (error) {\n ctx.logger.error('timecampus tasks_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete task: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus meeting tools — meetings + participants + action items.\n *\n * Surface (15): meetings_{get,list,stats,upcoming,create,update,delete,rate},\n * meetings_{add_participant,remove_participant,update_participant_status} and\n * meetings_{create_action_item,update_action_item,complete_action_item,\n * delete_action_item}.\n *\n * IMPORTANT: every meeting field takes an EXPLICIT `workspaceId: ID!` argument\n * (the create-meeting input carries it inside the input). This matches the real\n * backend schema and is wired through verbatim.\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 {\n JsonObject,\n MeetingOrderByFieldEnum,\n MeetingParticipantRoleEnum,\n MeetingParticipantStatusEnum,\n MeetingTypeEnum,\n SortDirectionEnum,\n} from './shared.js';\n\nexport function registerMeetingTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_get')),\n {\n title: 'Get Meeting',\n description:\n 'Fetch a single meeting by ID (with participants + action items). Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Meeting ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n meeting: Record<string, unknown> | null;\n }>(ops.GET_MEETING, { id, workspaceId });\n if (!data.meeting) return errorResult(`Meeting ${id} not found`);\n return jsonResult(data.meeting);\n } catch (error) {\n ctx.logger.error('timecampus meetings_get failed', { error: String(error) });\n return errorResult(\n `Failed to get meeting: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_list')),\n {\n title: 'List Meetings',\n description:\n 'List meetings in a workspace with optional type/participant/rating/date filters, pagination and ordering.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n meetingType: MeetingTypeEnum.optional().describe('Filter by meeting type'),\n participantUserId: z.string().optional().describe('Filter by participant user ID'),\n minRating: z.number().int().optional().describe('Minimum rating'),\n hasActionItems: z.boolean().optional().describe('Only meetings with action items'),\n startDateFrom: z.string().optional().describe('ISO range start'),\n startDateTo: z.string().optional().describe('ISO range end'),\n orderByField: MeetingOrderByFieldEnum.optional().describe('Sort field'),\n orderByDirection: SortDirectionEnum.optional().describe('Sort direction (asc/desc)'),\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 ({\n workspaceId,\n meetingType,\n participantUserId,\n minRating,\n hasActionItems,\n startDateFrom,\n startDateTo,\n orderByField,\n orderByDirection,\n limit,\n offset,\n }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (meetingType !== undefined) filter.meetingType = meetingType;\n if (participantUserId !== undefined) filter.participantUserId = participantUserId;\n if (minRating !== undefined) filter.minRating = minRating;\n if (hasActionItems !== undefined) filter.hasActionItems = hasActionItems;\n if (startDateFrom !== undefined) filter.startDateFrom = startDateFrom;\n if (startDateTo !== undefined) filter.startDateTo = startDateTo;\n const orderBy =\n orderByField !== undefined\n ? { field: orderByField, direction: orderByDirection ?? 'desc' }\n : undefined;\n\n const data = await ctx.gql.workspace.request<{ meetings: Array<Record<string, unknown>> }>(\n ops.LIST_MEETINGS,\n {\n workspaceId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n orderBy,\n },\n );\n return jsonResult(data.meetings);\n } catch (error) {\n ctx.logger.error('timecampus meetings_list failed', { error: String(error) });\n return errorResult(\n `Failed to list meetings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_stats')),\n {\n title: 'Meeting Stats',\n description: 'Aggregate meeting stats for a workspace over an optional date range.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n startDate: z.string().optional().describe('ISO start of date range'),\n endDate: z.string().optional().describe('ISO end of date range'),\n },\n },\n async ({ workspaceId, startDate, endDate }) => {\n try {\n const data = await ctx.gql.workspace.request<{ meetingStats: Record<string, unknown> }>(\n ops.MEETING_STATS,\n { workspaceId, startDate, endDate },\n );\n return jsonResult(data.meetingStats);\n } catch (error) {\n ctx.logger.error('timecampus meetings_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get meeting stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_upcoming')),\n {\n title: 'Upcoming Meetings',\n description: 'List upcoming meetings in a workspace.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n limit: z.number().int().optional().describe('Max results (default 10)'),\n },\n },\n async ({ workspaceId, limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n upcomingMeetings: Array<Record<string, unknown>>;\n }>(ops.UPCOMING_MEETINGS, { workspaceId, limit: limit ?? 10 });\n return jsonResult(data.upcomingMeetings);\n } catch (error) {\n ctx.logger.error('timecampus meetings_upcoming failed', { error: String(error) });\n return errorResult(\n `Failed to list upcoming meetings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_create')),\n {\n title: 'Create Meeting',\n description:\n 'Create a meeting. `workspaceId`, `title`, `meetingType` and `startTime` are required.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n title: z.string().min(1).describe('Meeting title'),\n meetingType: MeetingTypeEnum.describe('Meeting type'),\n startTime: z.string().describe('ISO start time'),\n endTime: z.string().optional().describe('ISO end time'),\n cost: z.number().optional().describe('Estimated meeting cost'),\n notes: z.string().optional().describe('Notes'),\n recordingUrl: z.string().optional().describe('Recording URL'),\n calendarEventId: z.string().optional().describe('Linked calendar event ID'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n workspaceId,\n title,\n meetingType,\n startTime,\n endTime,\n cost,\n notes,\n recordingUrl,\n calendarEventId,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { workspaceId, title, meetingType, startTime };\n if (endTime !== undefined) input.endTime = endTime;\n if (cost !== undefined) input.cost = cost;\n if (notes !== undefined) input.notes = notes;\n if (recordingUrl !== undefined) input.recordingUrl = recordingUrl;\n if (calendarEventId !== undefined) input.calendarEventId = calendarEventId;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{ createMeeting: Record<string, unknown> }>(\n ops.CREATE_MEETING,\n { input },\n );\n return jsonResult(data.createMeeting);\n } catch (error) {\n ctx.logger.error('timecampus meetings_create failed', { error: String(error) });\n return errorResult(\n `Failed to create meeting: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_update')),\n {\n title: 'Update Meeting',\n description: 'Update a meeting. Requires workspaceId and at least one mutable field.',\n inputSchema: {\n id: z.string().describe('Meeting ID'),\n workspaceId: z.string().describe('Workspace ID'),\n title: z.string().optional().describe('Updated title'),\n meetingType: MeetingTypeEnum.optional().describe('Updated meeting type'),\n startTime: z.string().optional().describe('Updated ISO start time'),\n endTime: z.string().optional().describe('Updated ISO end time'),\n cost: z.number().optional().describe('Updated cost'),\n notes: z.string().optional().describe('Updated notes'),\n recordingUrl: z.string().optional().describe('Updated recording URL'),\n calendarEventId: z.string().optional().describe('Updated calendar event ID'),\n },\n },\n async ({\n id,\n workspaceId,\n title,\n meetingType,\n startTime,\n endTime,\n cost,\n notes,\n recordingUrl,\n calendarEventId,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (meetingType !== undefined) input.meetingType = meetingType;\n if (startTime !== undefined) input.startTime = startTime;\n if (endTime !== undefined) input.endTime = endTime;\n if (cost !== undefined) input.cost = cost;\n if (notes !== undefined) input.notes = notes;\n if (recordingUrl !== undefined) input.recordingUrl = recordingUrl;\n if (calendarEventId !== undefined) input.calendarEventId = calendarEventId;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{ updateMeeting: Record<string, unknown> }>(\n ops.UPDATE_MEETING,\n { id, input, workspaceId },\n );\n return jsonResult(data.updateMeeting);\n } catch (error) {\n ctx.logger.error('timecampus meetings_update failed', { error: String(error) });\n return errorResult(\n `Failed to update meeting: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_delete')),\n {\n title: 'Delete Meeting',\n description: 'Delete a meeting by ID. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Meeting ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteMeeting: boolean }>(\n ops.DELETE_MEETING,\n {\n id,\n workspaceId,\n },\n );\n return jsonResult({ deleted: data.deleteMeeting });\n } catch (error) {\n ctx.logger.error('timecampus meetings_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete meeting: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_rate')),\n {\n title: 'Rate Meeting',\n description: 'Rate a meeting (typically 1–5). Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Meeting ID'),\n rating: z.number().int().describe('Rating value'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, rating, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ rateMeeting: Record<string, unknown> }>(\n ops.RATE_MEETING,\n { id, rating, workspaceId },\n );\n return jsonResult(data.rateMeeting);\n } catch (error) {\n ctx.logger.error('timecampus meetings_rate failed', { error: String(error) });\n return errorResult(\n `Failed to rate meeting: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_add_participant')),\n {\n title: 'Add Meeting Participant',\n description: 'Add a participant to a meeting. Requires meetingId, workspaceId and userId.',\n inputSchema: {\n meetingId: z.string().describe('Meeting ID'),\n workspaceId: z.string().describe('Workspace ID'),\n userId: z.string().describe('Participant user ID'),\n role: MeetingParticipantRoleEnum.optional().describe('Participant role'),\n status: MeetingParticipantStatusEnum.optional().describe('Initial RSVP status'),\n },\n },\n async ({ meetingId, workspaceId, userId, role, status }) => {\n try {\n const input: Record<string, unknown> = { userId };\n if (role !== undefined) input.role = role;\n if (status !== undefined) input.status = status;\n\n const data = await ctx.gql.workspace.request<{\n addMeetingParticipant: Record<string, unknown>;\n }>(ops.ADD_MEETING_PARTICIPANT, { input, meetingId, workspaceId });\n return jsonResult(data.addMeetingParticipant);\n } catch (error) {\n ctx.logger.error('timecampus meetings_add_participant failed', { error: String(error) });\n return errorResult(\n `Failed to add meeting participant: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_remove_participant')),\n {\n title: 'Remove Meeting Participant',\n description:\n 'Remove a participant from a meeting. Requires meetingId, participantId, workspaceId.',\n inputSchema: {\n meetingId: z.string().describe('Meeting ID'),\n participantId: z.string().describe('Participant ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ meetingId, participantId, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ removeMeetingParticipant: boolean }>(\n ops.REMOVE_MEETING_PARTICIPANT,\n { meetingId, participantId, workspaceId },\n );\n return jsonResult({ removed: data.removeMeetingParticipant });\n } catch (error) {\n ctx.logger.error('timecampus meetings_remove_participant failed', { error: String(error) });\n return errorResult(\n `Failed to remove meeting participant: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_update_participant_status')),\n {\n title: 'Update Participant Status',\n description:\n 'Update a participant’s RSVP status. Requires meetingId, participantId, workspaceId.',\n inputSchema: {\n meetingId: z.string().describe('Meeting ID'),\n participantId: z.string().describe('Participant ID'),\n status: MeetingParticipantStatusEnum.describe('New RSVP status'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ meetingId, participantId, status, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n updateParticipantStatus: Record<string, unknown>;\n }>(ops.UPDATE_PARTICIPANT_STATUS, { meetingId, participantId, status, workspaceId });\n return jsonResult(data.updateParticipantStatus);\n } catch (error) {\n ctx.logger.error('timecampus meetings_update_participant_status failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to update participant status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_create_action_item')),\n {\n title: 'Create Meeting Action Item',\n description:\n 'Create an action item for a meeting. Requires meetingId, workspaceId and a title.',\n inputSchema: {\n meetingId: z.string().describe('Meeting ID'),\n workspaceId: z.string().describe('Workspace ID'),\n title: z.string().min(1).describe('Action item title'),\n notes: z.string().optional().describe('Notes'),\n assigneeId: z.string().optional().describe('Assignee user ID'),\n dueDate: z.string().optional().describe('ISO due date'),\n },\n },\n async ({ meetingId, workspaceId, title, notes, assigneeId, dueDate }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (notes !== undefined) input.notes = notes;\n if (assigneeId !== undefined) input.assigneeId = assigneeId;\n if (dueDate !== undefined) input.dueDate = dueDate;\n\n const data = await ctx.gql.workspace.request<{ createActionItem: Record<string, unknown> }>(\n ops.CREATE_ACTION_ITEM,\n { input, meetingId, workspaceId },\n );\n return jsonResult(data.createActionItem);\n } catch (error) {\n ctx.logger.error('timecampus meetings_create_action_item failed', { error: String(error) });\n return errorResult(\n `Failed to create action item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_update_action_item')),\n {\n title: 'Update Meeting Action Item',\n description:\n 'Update a meeting action item. Requires workspaceId and at least one mutable field.',\n inputSchema: {\n id: z.string().describe('Action item ID'),\n workspaceId: z.string().describe('Workspace ID'),\n title: z.string().optional().describe('Updated title'),\n notes: z.string().optional().describe('Updated notes'),\n status: z\n .enum(['PENDING', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED'])\n .optional()\n .describe('Updated status'),\n assigneeId: z.string().optional().describe('Updated assignee'),\n dueDate: z.string().optional().describe('Updated ISO due date'),\n },\n },\n async ({ id, workspaceId, title, notes, status, assigneeId, dueDate }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (notes !== undefined) input.notes = notes;\n if (status !== undefined) input.status = status;\n if (assigneeId !== undefined) input.assigneeId = assigneeId;\n if (dueDate !== undefined) input.dueDate = dueDate;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{ updateActionItem: Record<string, unknown> }>(\n ops.UPDATE_ACTION_ITEM,\n { id, input, workspaceId },\n );\n return jsonResult(data.updateActionItem);\n } catch (error) {\n ctx.logger.error('timecampus meetings_update_action_item failed', { error: String(error) });\n return errorResult(\n `Failed to update action item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_complete_action_item')),\n {\n title: 'Complete Meeting Action Item',\n description: 'Mark a meeting action item as completed. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Action item ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n completeActionItem: Record<string, unknown>;\n }>(ops.COMPLETE_ACTION_ITEM, { id, workspaceId });\n return jsonResult(data.completeActionItem);\n } catch (error) {\n ctx.logger.error('timecampus meetings_complete_action_item failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to complete action item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_delete_action_item')),\n {\n title: 'Delete Meeting Action Item',\n description: 'Delete a meeting action item by ID. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Action item ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteActionItem: boolean }>(\n ops.DELETE_ACTION_ITEM,\n { id, workspaceId },\n );\n return jsonResult({ deleted: data.deleteActionItem });\n } catch (error) {\n ctx.logger.error('timecampus meetings_delete_action_item failed', { error: String(error) });\n return errorResult(\n `Failed to delete action item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus pomodoro tools — focus sessions, goals and settings.\n *\n * Surface (13): pomodoro_{active_session,session,sessions,stats,goals,settings,\n * start_session,complete_session,interrupt_session,create_goal,update_goal,\n * delete_goal,update_settings}.\n *\n * Every pomodoro field takes an EXPLICIT `workspaceId: ID!` argument; the\n * start-session / create-goal / update-settings inputs carry workspaceId inside\n * the input. Matches the real backend schema.\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 {\n JsonObject,\n PomodoroGoalTypeEnum,\n PomodoroSessionOrderByFieldEnum,\n PomodoroSessionTypeEnum,\n SortDirectionEnum,\n} from './shared.js';\n\nexport function registerPomodoroTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_active_session')),\n {\n title: 'Active Pomodoro Session',\n description: 'Fetch the currently-active pomodoro session in a workspace, if any.',\n inputSchema: { workspaceId: z.string().describe('Workspace ID') },\n },\n async ({ workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n activePomodoroSession: Record<string, unknown> | null;\n }>(ops.ACTIVE_POMODORO_SESSION, { workspaceId });\n return jsonResult(data.activePomodoroSession);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_active_session failed', { error: String(error) });\n return errorResult(\n `Failed to get active pomodoro session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_session')),\n {\n title: 'Get Pomodoro Session',\n description: 'Fetch a single pomodoro session by ID. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Pomodoro session ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n pomodoroSession: Record<string, unknown> | null;\n }>(ops.GET_POMODORO_SESSION, { id, workspaceId });\n if (!data.pomodoroSession) return errorResult(`Pomodoro session ${id} not found`);\n return jsonResult(data.pomodoroSession);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_session failed', { error: String(error) });\n return errorResult(\n `Failed to get pomodoro session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_sessions')),\n {\n title: 'List Pomodoro Sessions',\n description:\n 'List pomodoro sessions in a workspace with optional filters, pagination and ordering.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n type: PomodoroSessionTypeEnum.optional().describe('Filter by session type'),\n completed: z.boolean().optional().describe('Filter by completed flag'),\n interrupted: z.boolean().optional().describe('Filter by interrupted flag'),\n projectId: z.string().optional().describe('Filter by project ID'),\n taskId: z.string().optional().describe('Filter by task ID'),\n userId: z.string().optional().describe('Filter by user ID'),\n startDateFrom: z.string().optional().describe('ISO range start'),\n startDateTo: z.string().optional().describe('ISO range end'),\n orderByField: PomodoroSessionOrderByFieldEnum.optional().describe('Sort field'),\n orderByDirection: SortDirectionEnum.optional().describe('Sort direction (asc/desc)'),\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 ({\n workspaceId,\n type,\n completed,\n interrupted,\n projectId,\n taskId,\n userId,\n startDateFrom,\n startDateTo,\n orderByField,\n orderByDirection,\n limit,\n offset,\n }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (type !== undefined) filter.type = type;\n if (completed !== undefined) filter.completed = completed;\n if (interrupted !== undefined) filter.interrupted = interrupted;\n if (projectId !== undefined) filter.projectId = projectId;\n if (taskId !== undefined) filter.taskId = taskId;\n if (userId !== undefined) filter.userId = userId;\n if (startDateFrom !== undefined) filter.startDateFrom = startDateFrom;\n if (startDateTo !== undefined) filter.startDateTo = startDateTo;\n const orderBy =\n orderByField !== undefined\n ? { field: orderByField, direction: orderByDirection ?? 'desc' }\n : undefined;\n\n const data = await ctx.gql.workspace.request<{\n pomodoroSessions: Array<Record<string, unknown>>;\n }>(ops.LIST_POMODORO_SESSIONS, {\n workspaceId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n orderBy,\n });\n return jsonResult(data.pomodoroSessions);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_sessions failed', { error: String(error) });\n return errorResult(\n `Failed to list pomodoro sessions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_stats')),\n {\n title: 'Pomodoro Stats',\n description: 'Aggregate pomodoro stats for a workspace over an optional date range.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n startDate: z.string().optional().describe('ISO start of date range'),\n endDate: z.string().optional().describe('ISO end of date range'),\n },\n },\n async ({ workspaceId, startDate, endDate }) => {\n try {\n const data = await ctx.gql.workspace.request<{ pomodoroStats: Record<string, unknown> }>(\n ops.POMODORO_STATS,\n { workspaceId, startDate, endDate },\n );\n return jsonResult(data.pomodoroStats);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get pomodoro stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_goals')),\n {\n title: 'List Pomodoro Goals',\n description: 'List pomodoro goals in a workspace.',\n inputSchema: { workspaceId: z.string().describe('Workspace ID') },\n },\n async ({ workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n pomodoroGoals: Array<Record<string, unknown>>;\n }>(ops.POMODORO_GOALS, { workspaceId });\n return jsonResult(data.pomodoroGoals);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_goals failed', { error: String(error) });\n return errorResult(\n `Failed to list pomodoro goals: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_settings')),\n {\n title: 'Get Pomodoro Settings',\n description: 'Fetch the pomodoro settings for a workspace.',\n inputSchema: { workspaceId: z.string().describe('Workspace ID') },\n },\n async ({ workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n pomodoroSettings: Record<string, unknown> | null;\n }>(ops.POMODORO_SETTINGS, { workspaceId });\n return jsonResult(data.pomodoroSettings);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_settings failed', { error: String(error) });\n return errorResult(\n `Failed to get pomodoro settings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_start_session')),\n {\n title: 'Start Pomodoro Session',\n description: 'Start a pomodoro session. `workspaceId` and `type` are required.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n type: PomodoroSessionTypeEnum.describe('Session type (FOCUS / SHORT_BREAK / LONG_BREAK)'),\n projectId: z.string().optional().describe('Project to attribute focus to'),\n taskId: z.string().optional().describe('Task to attribute focus to'),\n notes: z.string().optional().describe('Notes'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({ workspaceId, type, projectId, taskId, notes, context }) => {\n try {\n const input: Record<string, unknown> = { workspaceId, type };\n if (projectId !== undefined) input.projectId = projectId;\n if (taskId !== undefined) input.taskId = taskId;\n if (notes !== undefined) input.notes = notes;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n startPomodoroSession: Record<string, unknown>;\n }>(ops.START_POMODORO_SESSION, { input });\n return jsonResult(data.startPomodoroSession);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_start_session failed', { error: String(error) });\n return errorResult(\n `Failed to start pomodoro session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_complete_session')),\n {\n title: 'Complete Pomodoro Session',\n description: 'Mark a pomodoro session as completed. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Pomodoro session ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n completePomodoroSession: Record<string, unknown>;\n }>(ops.COMPLETE_POMODORO_SESSION, { id, workspaceId });\n return jsonResult(data.completePomodoroSession);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_complete_session failed', { error: String(error) });\n return errorResult(\n `Failed to complete pomodoro session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_interrupt_session')),\n {\n title: 'Interrupt Pomodoro Session',\n description: 'Interrupt a running pomodoro session. Requires workspaceId; reason optional.',\n inputSchema: {\n id: z.string().describe('Pomodoro session ID'),\n workspaceId: z.string().describe('Workspace ID'),\n reason: z.string().optional().describe('Interruption reason'),\n },\n },\n async ({ id, workspaceId, reason }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n interruptPomodoroSession: Record<string, unknown>;\n }>(ops.INTERRUPT_POMODORO_SESSION, { id, workspaceId, reason });\n return jsonResult(data.interruptPomodoroSession);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_interrupt_session failed', { error: String(error) });\n return errorResult(\n `Failed to interrupt pomodoro session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_create_goal')),\n {\n title: 'Create Pomodoro Goal',\n description:\n 'Create a pomodoro goal. `workspaceId`, `type`, `period`, `target`, dates required.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n type: PomodoroGoalTypeEnum.describe('Goal cadence (DAILY / WEEKLY / MONTHLY)'),\n period: z.string().describe('Period label (e.g. \"2026-W26\")'),\n target: z.number().int().describe('Target session count'),\n startDate: z.string().describe('ISO period start'),\n endDate: z.string().describe('ISO period end'),\n },\n },\n async ({ workspaceId, type, period, target, startDate, endDate }) => {\n try {\n const input: Record<string, unknown> = {\n workspaceId,\n type,\n period,\n target,\n startDate,\n endDate,\n };\n const data = await ctx.gql.workspace.request<{\n createPomodoroGoal: Record<string, unknown>;\n }>(ops.CREATE_POMODORO_GOAL, { input });\n return jsonResult(data.createPomodoroGoal);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_create_goal failed', { error: String(error) });\n return errorResult(\n `Failed to create pomodoro goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_update_goal')),\n {\n title: 'Update Pomodoro Goal',\n description: 'Update a pomodoro goal. Requires workspaceId and at least one mutable field.',\n inputSchema: {\n id: z.string().describe('Pomodoro goal ID'),\n workspaceId: z.string().describe('Workspace ID'),\n type: PomodoroGoalTypeEnum.optional().describe('Updated cadence'),\n period: z.string().optional().describe('Updated period'),\n target: z.number().int().optional().describe('Updated target'),\n startDate: z.string().optional().describe('Updated ISO start'),\n endDate: z.string().optional().describe('Updated ISO end'),\n },\n },\n async ({ id, workspaceId, type, period, target, startDate, endDate }) => {\n try {\n const input: Record<string, unknown> = {};\n if (type !== undefined) input.type = type;\n if (period !== undefined) input.period = period;\n if (target !== undefined) input.target = target;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updatePomodoroGoal: Record<string, unknown>;\n }>(ops.UPDATE_POMODORO_GOAL, { id, input, workspaceId });\n return jsonResult(data.updatePomodoroGoal);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_update_goal failed', { error: String(error) });\n return errorResult(\n `Failed to update pomodoro goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_delete_goal')),\n {\n title: 'Delete Pomodoro Goal',\n description: 'Delete a pomodoro goal by ID. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Pomodoro goal ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deletePomodoroGoal: boolean }>(\n ops.DELETE_POMODORO_GOAL,\n { id, workspaceId },\n );\n return jsonResult({ deleted: data.deletePomodoroGoal });\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_delete_goal failed', { error: String(error) });\n return errorResult(\n `Failed to delete pomodoro goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_update_settings')),\n {\n title: 'Update Pomodoro Settings',\n description:\n 'Update pomodoro settings for a workspace. `workspaceId` is required; provide any settings to change.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n focusDuration: z.number().int().optional().describe('Focus duration (minutes)'),\n shortBreakDuration: z.number().int().optional().describe('Short break duration (minutes)'),\n longBreakDuration: z.number().int().optional().describe('Long break duration (minutes)'),\n sessionsBeforeLongBreak: z\n .number()\n .int()\n .optional()\n .describe('Sessions before a long break'),\n autoStartBreaks: z.boolean().optional().describe('Auto-start breaks'),\n autoStartFocus: z.boolean().optional().describe('Auto-start focus sessions'),\n soundEnabled: z.boolean().optional().describe('Sound enabled'),\n notificationsEnabled: z.boolean().optional().describe('Notifications enabled'),\n },\n },\n async ({\n workspaceId,\n focusDuration,\n shortBreakDuration,\n longBreakDuration,\n sessionsBeforeLongBreak,\n autoStartBreaks,\n autoStartFocus,\n soundEnabled,\n notificationsEnabled,\n }) => {\n try {\n const input: Record<string, unknown> = { workspaceId };\n if (focusDuration !== undefined) input.focusDuration = focusDuration;\n if (shortBreakDuration !== undefined) input.shortBreakDuration = shortBreakDuration;\n if (longBreakDuration !== undefined) input.longBreakDuration = longBreakDuration;\n if (sessionsBeforeLongBreak !== undefined)\n input.sessionsBeforeLongBreak = sessionsBeforeLongBreak;\n if (autoStartBreaks !== undefined) input.autoStartBreaks = autoStartBreaks;\n if (autoStartFocus !== undefined) input.autoStartFocus = autoStartFocus;\n if (soundEnabled !== undefined) input.soundEnabled = soundEnabled;\n if (notificationsEnabled !== undefined) input.notificationsEnabled = notificationsEnabled;\n\n const data = await ctx.gql.workspace.request<{\n updatePomodoroSettings: Record<string, unknown>;\n }>(ops.UPDATE_POMODORO_SETTINGS, { input });\n return jsonResult(data.updatePomodoroSettings);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_update_settings failed', { error: String(error) });\n return errorResult(\n `Failed to update pomodoro settings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus expense tools.\n *\n * Surface (10): expenses_{get,list,stats,categories,create,update,delete,\n * approve,reject,submit}.\n *\n * Every expense field takes an EXPLICIT `workspaceId: ID!` argument (the\n * create-expense input carries workspaceId inside the input). Matches the real\n * backend schema.\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 {\n ExpenseOrderByFieldEnum,\n ExpenseStatusEnum,\n JsonObject,\n SortDirectionEnum,\n} from './shared.js';\n\nexport function registerExpenseTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_get')),\n {\n title: 'Get Expense',\n description: 'Fetch a single expense entry by ID. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Expense ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n expense: Record<string, unknown> | null;\n }>(ops.GET_EXPENSE, { id, workspaceId });\n if (!data.expense) return errorResult(`Expense ${id} not found`);\n return jsonResult(data.expense);\n } catch (error) {\n ctx.logger.error('timecampus expenses_get failed', { error: String(error) });\n return errorResult(\n `Failed to get expense: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_list')),\n {\n title: 'List Expenses',\n description: 'List expenses in a workspace with optional filters, pagination and ordering.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n status: ExpenseStatusEnum.optional().describe('Filter by status'),\n category: z.string().optional().describe('Filter by category'),\n currency: z.string().optional().describe('Filter by currency'),\n projectId: z.string().optional().describe('Filter by project ID'),\n userId: z.string().optional().describe('Filter by user ID'),\n minAmount: z.number().optional().describe('Minimum amount'),\n maxAmount: z.number().optional().describe('Maximum amount'),\n dateFrom: z.string().optional().describe('ISO range start'),\n dateTo: z.string().optional().describe('ISO range end'),\n orderByField: ExpenseOrderByFieldEnum.optional().describe('Sort field'),\n orderByDirection: SortDirectionEnum.optional().describe('Sort direction (asc/desc)'),\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 ({\n workspaceId,\n status,\n category,\n currency,\n projectId,\n userId,\n minAmount,\n maxAmount,\n dateFrom,\n dateTo,\n orderByField,\n orderByDirection,\n limit,\n offset,\n }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n if (category !== undefined) filter.category = category;\n if (currency !== undefined) filter.currency = currency;\n if (projectId !== undefined) filter.projectId = projectId;\n if (userId !== undefined) filter.userId = userId;\n if (minAmount !== undefined) filter.minAmount = minAmount;\n if (maxAmount !== undefined) filter.maxAmount = maxAmount;\n if (dateFrom !== undefined) filter.dateFrom = dateFrom;\n if (dateTo !== undefined) filter.dateTo = dateTo;\n const orderBy =\n orderByField !== undefined\n ? { field: orderByField, direction: orderByDirection ?? 'desc' }\n : undefined;\n\n const data = await ctx.gql.workspace.request<{ expenses: Array<Record<string, unknown>> }>(\n ops.LIST_EXPENSES,\n {\n workspaceId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n orderBy,\n },\n );\n return jsonResult(data.expenses);\n } catch (error) {\n ctx.logger.error('timecampus expenses_list failed', { error: String(error) });\n return errorResult(\n `Failed to list expenses: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_stats')),\n {\n title: 'Expense Stats',\n description: 'Aggregate expense stats for a workspace over an optional date range.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n startDate: z.string().optional().describe('ISO start of date range'),\n endDate: z.string().optional().describe('ISO end of date range'),\n },\n },\n async ({ workspaceId, startDate, endDate }) => {\n try {\n const data = await ctx.gql.workspace.request<{ expenseStats: Record<string, unknown> }>(\n ops.EXPENSE_STATS,\n { workspaceId, startDate, endDate },\n );\n return jsonResult(data.expenseStats);\n } catch (error) {\n ctx.logger.error('timecampus expenses_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get expense stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_categories')),\n {\n title: 'Expense Categories',\n description: 'List the distinct expense categories used in a workspace.',\n inputSchema: { workspaceId: z.string().describe('Workspace ID') },\n },\n async ({ workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ expenseCategories: string[] }>(\n ops.EXPENSE_CATEGORIES,\n { workspaceId },\n );\n return jsonResult(data.expenseCategories);\n } catch (error) {\n ctx.logger.error('timecampus expenses_categories failed', { error: String(error) });\n return errorResult(\n `Failed to list expense categories: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_create')),\n {\n title: 'Create Expense',\n description:\n 'Create an expense. `workspaceId`, `amount`, `category` and `date` are required.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n amount: z.number().describe('Expense amount'),\n category: z.string().min(1).describe('Expense category'),\n date: z.string().describe('ISO expense date'),\n currency: z.string().optional().describe('Currency code'),\n description: z.string().optional().describe('Description'),\n notes: z.string().optional().describe('Notes'),\n projectId: z.string().optional().describe('Associated project ID'),\n receiptUrl: z.string().optional().describe('Receipt URL'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n workspaceId,\n amount,\n category,\n date,\n currency,\n description,\n notes,\n projectId,\n receiptUrl,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { workspaceId, amount, category, date };\n if (currency !== undefined) input.currency = currency;\n if (description !== undefined) input.description = description;\n if (notes !== undefined) input.notes = notes;\n if (projectId !== undefined) input.projectId = projectId;\n if (receiptUrl !== undefined) input.receiptUrl = receiptUrl;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{ createExpense: Record<string, unknown> }>(\n ops.CREATE_EXPENSE,\n { input },\n );\n return jsonResult(data.createExpense);\n } catch (error) {\n ctx.logger.error('timecampus expenses_create failed', { error: String(error) });\n return errorResult(\n `Failed to create expense: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_update')),\n {\n title: 'Update Expense',\n description: 'Update an expense. Requires workspaceId and at least one mutable field.',\n inputSchema: {\n id: z.string().describe('Expense ID'),\n workspaceId: z.string().describe('Workspace ID'),\n amount: z.number().optional().describe('Updated amount'),\n category: z.string().optional().describe('Updated category'),\n currency: z.string().optional().describe('Updated currency'),\n date: z.string().optional().describe('Updated ISO date'),\n description: z.string().optional().describe('Updated description'),\n notes: z.string().optional().describe('Updated notes'),\n projectId: z.string().optional().describe('Updated project ID'),\n receiptUrl: z.string().optional().describe('Updated receipt URL'),\n },\n },\n async ({\n id,\n workspaceId,\n amount,\n category,\n currency,\n date,\n description,\n notes,\n projectId,\n receiptUrl,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (amount !== undefined) input.amount = amount;\n if (category !== undefined) input.category = category;\n if (currency !== undefined) input.currency = currency;\n if (date !== undefined) input.date = date;\n if (description !== undefined) input.description = description;\n if (notes !== undefined) input.notes = notes;\n if (projectId !== undefined) input.projectId = projectId;\n if (receiptUrl !== undefined) input.receiptUrl = receiptUrl;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{ updateExpense: Record<string, unknown> }>(\n ops.UPDATE_EXPENSE,\n { id, input, workspaceId },\n );\n return jsonResult(data.updateExpense);\n } catch (error) {\n ctx.logger.error('timecampus expenses_update failed', { error: String(error) });\n return errorResult(\n `Failed to update expense: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_delete')),\n {\n title: 'Delete Expense',\n description: 'Delete an expense by ID. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Expense ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteExpense: boolean }>(\n ops.DELETE_EXPENSE,\n {\n id,\n workspaceId,\n },\n );\n return jsonResult({ deleted: data.deleteExpense });\n } catch (error) {\n ctx.logger.error('timecampus expenses_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete expense: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_submit')),\n {\n title: 'Submit Expense For Approval',\n description: 'Submit an expense for approval. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Expense ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n submitExpenseForApproval: Record<string, unknown>;\n }>(ops.SUBMIT_EXPENSE, { id, workspaceId });\n return jsonResult(data.submitExpenseForApproval);\n } catch (error) {\n ctx.logger.error('timecampus expenses_submit failed', { error: String(error) });\n return errorResult(\n `Failed to submit expense: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_approve')),\n {\n title: 'Approve Expense',\n description: 'Approve an expense. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Expense ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ approveExpense: Record<string, unknown> }>(\n ops.APPROVE_EXPENSE,\n { id, workspaceId },\n );\n return jsonResult(data.approveExpense);\n } catch (error) {\n ctx.logger.error('timecampus expenses_approve failed', { error: String(error) });\n return errorResult(\n `Failed to approve expense: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_reject')),\n {\n title: 'Reject Expense',\n description: 'Reject an expense. Requires workspaceId; reason optional.',\n inputSchema: {\n id: z.string().describe('Expense ID'),\n workspaceId: z.string().describe('Workspace ID'),\n reason: z.string().optional().describe('Rejection reason'),\n },\n },\n async ({ id, workspaceId, reason }) => {\n try {\n const data = await ctx.gql.workspace.request<{ rejectExpense: Record<string, unknown> }>(\n ops.REJECT_EXPENSE,\n { id, workspaceId, reason },\n );\n return jsonResult(data.rejectExpense);\n } catch (error) {\n ctx.logger.error('timecampus expenses_reject failed', { error: String(error) });\n return errorResult(\n `Failed to reject expense: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus time-approval tools (TimeApprovalRequest).\n *\n * Surface (10): approvals_{get,list,stats,mine,pending,submit,approve,reject,\n * request_revision,withdraw}. Workspace scoping comes from the gateway headers.\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 { ApprovalStatusEnum, JsonObject } from './shared.js';\n\nexport function registerApprovalTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_get')),\n {\n title: 'Get Approval Request',\n description: 'Fetch a single time-approval request by ID.',\n inputSchema: { id: z.string().describe('Approval request ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n approvalRequest: Record<string, unknown> | null;\n }>(ops.GET_APPROVAL, { id });\n if (!data.approvalRequest) return errorResult(`Approval request ${id} not found`);\n return jsonResult(data.approvalRequest);\n } catch (error) {\n ctx.logger.error('timecampus approvals_get failed', { error: String(error) });\n return errorResult(\n `Failed to get approval request: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_list')),\n {\n title: 'List Approval Requests',\n description:\n 'List time-approval requests with optional filter (status/user/approver/date range), pagination. Returns { items, total, hasMore }.',\n inputSchema: {\n status: ApprovalStatusEnum.optional().describe('Filter by status'),\n userId: z.string().optional().describe('Filter by requesting user'),\n approverId: z.string().optional().describe('Filter by approver'),\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\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 ({ status, userId, approverId, startDate, endDate, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n if (userId !== undefined) filter.userId = userId;\n if (approverId !== undefined) filter.approverId = approverId;\n if (startDate !== undefined) filter.startDate = startDate;\n if (endDate !== undefined) filter.endDate = endDate;\n\n const data = await ctx.gql.workspace.request<{ approvalRequests: Record<string, unknown> }>(\n ops.LIST_APPROVALS,\n {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n },\n );\n return jsonResult(data.approvalRequests);\n } catch (error) {\n ctx.logger.error('timecampus approvals_list failed', { error: String(error) });\n return errorResult(\n `Failed to list approval requests: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_stats')),\n {\n title: 'Approval Stats',\n description: 'Aggregate approval stats over an optional date range.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO start of date range'),\n endDate: z.string().optional().describe('ISO end of date range'),\n },\n },\n async ({ startDate, endDate }) => {\n try {\n const data = await ctx.gql.workspace.request<{ approvalStats: Record<string, unknown> }>(\n ops.APPROVAL_STATS,\n { startDate, endDate },\n );\n return jsonResult(data.approvalStats);\n } catch (error) {\n ctx.logger.error('timecampus approvals_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get approval stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_mine')),\n {\n title: 'My Approval Requests',\n description: 'List the calling user’s own approval requests, optionally filtered by status.',\n inputSchema: { status: ApprovalStatusEnum.optional().describe('Filter by status') },\n },\n async ({ status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n myApprovalRequests: Array<Record<string, unknown>>;\n }>(ops.MY_APPROVALS, { status });\n return jsonResult(data.myApprovalRequests);\n } catch (error) {\n ctx.logger.error('timecampus approvals_mine failed', { error: String(error) });\n return errorResult(\n `Failed to list my approval requests: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_pending')),\n {\n title: 'Pending Approvals',\n description: 'List approval requests pending the calling reviewer’s decision.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n pendingApprovals: Array<Record<string, unknown>>;\n }>(ops.PENDING_APPROVALS, {});\n return jsonResult(data.pendingApprovals);\n } catch (error) {\n ctx.logger.error('timecampus approvals_pending failed', { error: String(error) });\n return errorResult(\n `Failed to list pending approvals: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_submit')),\n {\n title: 'Submit Approval Request',\n description:\n 'Submit a time-approval request for a period. `period`, `startDate`, `endDate`, `totalHours` are required.',\n inputSchema: {\n period: z.string().describe('Period label (e.g. \"2026-W26\")'),\n startDate: z.string().describe('ISO period start'),\n endDate: z.string().describe('ISO period end'),\n totalHours: z.number().describe('Total hours in the period'),\n billableHours: z.number().optional().describe('Billable hours (default 0)'),\n approverId: z.string().optional().describe('Target approver user ID'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({ period, startDate, endDate, totalHours, billableHours, approverId, context }) => {\n try {\n const input: Record<string, unknown> = { period, startDate, endDate, totalHours };\n if (billableHours !== undefined) input.billableHours = billableHours;\n if (approverId !== undefined) input.approverId = approverId;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n submitApprovalRequest: Record<string, unknown>;\n }>(ops.SUBMIT_APPROVAL, { input });\n return jsonResult(data.submitApprovalRequest);\n } catch (error) {\n ctx.logger.error('timecampus approvals_submit failed', { error: String(error) });\n return errorResult(\n `Failed to submit approval request: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_approve')),\n {\n title: 'Approve Request',\n description: 'Approve a time-approval request, with optional reviewer notes.',\n inputSchema: {\n id: z.string().describe('Approval request ID'),\n notes: z.string().optional().describe('Reviewer notes'),\n },\n },\n async ({ id, notes }) => {\n try {\n const data = await ctx.gql.workspace.request<{ approveRequest: Record<string, unknown> }>(\n ops.APPROVE_REQUEST,\n { id, notes },\n );\n return jsonResult(data.approveRequest);\n } catch (error) {\n ctx.logger.error('timecampus approvals_approve failed', { error: String(error) });\n return errorResult(\n `Failed to approve request: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_reject')),\n {\n title: 'Reject Request',\n description: 'Reject a time-approval request with a required reason.',\n inputSchema: {\n id: z.string().describe('Approval request ID'),\n reason: z.string().min(1).describe('Rejection reason'),\n },\n },\n async ({ id, reason }) => {\n try {\n const data = await ctx.gql.workspace.request<{ rejectRequest: Record<string, unknown> }>(\n ops.REJECT_REQUEST,\n { id, reason },\n );\n return jsonResult(data.rejectRequest);\n } catch (error) {\n ctx.logger.error('timecampus approvals_reject failed', { error: String(error) });\n return errorResult(\n `Failed to reject request: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_request_revision')),\n {\n title: 'Request Revision',\n description: 'Send a time-approval request back for revision with required notes.',\n inputSchema: {\n id: z.string().describe('Approval request ID'),\n notes: z.string().min(1).describe('Revision notes'),\n },\n },\n async ({ id, notes }) => {\n try {\n const data = await ctx.gql.workspace.request<{ requestRevision: Record<string, unknown> }>(\n ops.REQUEST_REVISION,\n { id, notes },\n );\n return jsonResult(data.requestRevision);\n } catch (error) {\n ctx.logger.error('timecampus approvals_request_revision failed', { error: String(error) });\n return errorResult(\n `Failed to request revision: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_withdraw')),\n {\n title: 'Withdraw Request',\n description: 'Withdraw a pending time-approval request.',\n inputSchema: { id: z.string().describe('Approval request ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ withdrawRequest: Record<string, unknown> }>(\n ops.WITHDRAW_REQUEST,\n { id },\n );\n return jsonResult(data.withdrawRequest);\n } catch (error) {\n ctx.logger.error('timecampus approvals_withdraw failed', { error: String(error) });\n return errorResult(\n `Failed to withdraw request: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus resource-planning tools — resource plans + allocations.\n *\n * Surface (13): resource_plans_{get,list,create,update,delete,activate},\n * resource_allocations_{list,user,create,update,delete,bulk_create} and\n * resource_capacity_overview. Workspace scoping comes from the gateway headers.\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 { JsonObject } from './shared.js';\n\nexport function registerResourcingTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_plans_get')),\n {\n title: 'Get Resource Plan',\n description: 'Fetch a single resource plan by ID, including its allocations.',\n inputSchema: { id: z.string().describe('Resource plan ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n resourcePlan: Record<string, unknown> | null;\n }>(ops.GET_RESOURCE_PLAN, { id });\n if (!data.resourcePlan) return errorResult(`Resource plan ${id} not found`);\n return jsonResult(data.resourcePlan);\n } catch (error) {\n ctx.logger.error('timecampus resource_plans_get failed', { error: String(error) });\n return errorResult(\n `Failed to get resource plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_plans_list')),\n {\n title: 'List Resource Plans',\n description:\n 'List resource plans with optional status/date/text filter and pagination. Returns { items, total, hasMore }.',\n inputSchema: {\n status: z.string().optional().describe('Filter by status'),\n search: z.string().optional().describe('Free-text search across name/description'),\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\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 ({ status, search, startDate, endDate, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n if (search !== undefined) filter.search = search;\n if (startDate !== undefined) filter.startDate = startDate;\n if (endDate !== undefined) filter.endDate = endDate;\n\n const data = await ctx.gql.workspace.request<{ resourcePlans: Record<string, unknown> }>(\n ops.LIST_RESOURCE_PLANS,\n {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n },\n );\n return jsonResult(data.resourcePlans);\n } catch (error) {\n ctx.logger.error('timecampus resource_plans_list failed', { error: String(error) });\n return errorResult(\n `Failed to list resource plans: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_plans_create')),\n {\n title: 'Create Resource Plan',\n description: 'Create a resource plan. `name`, `startDate`, `endDate` are required.',\n inputSchema: {\n name: z.string().min(1).describe('Plan name'),\n startDate: z.string().describe('ISO plan start'),\n endDate: z.string().describe('ISO plan end'),\n description: z.string().optional().describe('Plan description'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({ name, startDate, endDate, description, context }) => {\n try {\n const input: Record<string, unknown> = { name, startDate, endDate };\n if (description !== undefined) input.description = description;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n createResourcePlan: Record<string, unknown>;\n }>(ops.CREATE_RESOURCE_PLAN, { input });\n return jsonResult(data.createResourcePlan);\n } catch (error) {\n ctx.logger.error('timecampus resource_plans_create failed', { error: String(error) });\n return errorResult(\n `Failed to create resource plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_plans_update')),\n {\n title: 'Update Resource Plan',\n description: 'Update a resource plan. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Resource plan ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n status: z.string().optional().describe('Updated status'),\n startDate: z.string().optional().describe('Updated ISO start'),\n endDate: z.string().optional().describe('Updated ISO end'),\n },\n },\n async ({ id, name, description, status, startDate, endDate }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateResourcePlan: Record<string, unknown>;\n }>(ops.UPDATE_RESOURCE_PLAN, { id, input });\n return jsonResult(data.updateResourcePlan);\n } catch (error) {\n ctx.logger.error('timecampus resource_plans_update failed', { error: String(error) });\n return errorResult(\n `Failed to update resource plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_plans_delete')),\n {\n title: 'Delete Resource Plan',\n description: 'Delete a resource plan by ID.',\n inputSchema: { id: z.string().describe('Resource plan ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteResourcePlan: Record<string, unknown>;\n }>(ops.DELETE_RESOURCE_PLAN, { id });\n return jsonResult(data.deleteResourcePlan);\n } catch (error) {\n ctx.logger.error('timecampus resource_plans_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete resource plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_plans_activate')),\n {\n title: 'Activate Resource Plan',\n description: 'Activate a resource plan by ID.',\n inputSchema: { id: z.string().describe('Resource plan ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n activateResourcePlan: Record<string, unknown>;\n }>(ops.ACTIVATE_RESOURCE_PLAN, { id });\n return jsonResult(data.activateResourcePlan);\n } catch (error) {\n ctx.logger.error('timecampus resource_plans_activate failed', { error: String(error) });\n return errorResult(\n `Failed to activate resource plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_allocations_list')),\n {\n title: 'List Resource Allocations',\n description: 'List the allocations of a resource plan.',\n inputSchema: {\n planId: z.string().describe('Resource plan 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 ({ planId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n resourceAllocations: Array<Record<string, unknown>>;\n }>(ops.LIST_RESOURCE_ALLOCATIONS, { planId, limit: limit ?? 50, offset: offset ?? 0 });\n return jsonResult(data.resourceAllocations);\n } catch (error) {\n ctx.logger.error('timecampus resource_allocations_list failed', { error: String(error) });\n return errorResult(\n `Failed to list resource allocations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_allocations_user')),\n {\n title: 'User Allocations',\n description: 'List a user’s resource allocations over an optional date range.',\n inputSchema: {\n userId: z.string().describe('User ID'),\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n },\n },\n async ({ userId, startDate, endDate }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n userAllocations: Array<Record<string, unknown>>;\n }>(ops.USER_ALLOCATIONS, { userId, startDate, endDate });\n return jsonResult(data.userAllocations);\n } catch (error) {\n ctx.logger.error('timecampus resource_allocations_user failed', { error: String(error) });\n return errorResult(\n `Failed to list user allocations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_capacity_overview')),\n {\n title: 'Capacity Overview',\n description: 'Capacity vs allocation overview across a required date range.',\n inputSchema: {\n startDate: z.string().describe('ISO range start'),\n endDate: z.string().describe('ISO range end'),\n },\n },\n async ({ startDate, endDate }) => {\n try {\n const data = await ctx.gql.workspace.request<{ capacityOverview: Record<string, unknown> }>(\n ops.CAPACITY_OVERVIEW,\n { startDate, endDate },\n );\n return jsonResult(data.capacityOverview);\n } catch (error) {\n ctx.logger.error('timecampus resource_capacity_overview failed', { error: String(error) });\n return errorResult(\n `Failed to get capacity overview: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_allocations_create')),\n {\n title: 'Create Resource Allocation',\n description:\n 'Allocate a user to a plan. `resourcePlanId`, `userId`, `allocatedHours`, dates required.',\n inputSchema: {\n resourcePlanId: z.string().describe('Resource plan ID'),\n userId: z.string().describe('User to allocate'),\n allocatedHours: z.number().describe('Hours allocated'),\n startDate: z.string().describe('ISO allocation start'),\n endDate: z.string().describe('ISO allocation end'),\n projectId: z.string().optional().describe('Project ID'),\n notes: z.string().optional().describe('Notes'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n resourcePlanId,\n userId,\n allocatedHours,\n startDate,\n endDate,\n projectId,\n notes,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = {\n resourcePlanId,\n userId,\n allocatedHours,\n startDate,\n endDate,\n };\n if (projectId !== undefined) input.projectId = projectId;\n if (notes !== undefined) input.notes = notes;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{ createAllocation: Record<string, unknown> }>(\n ops.CREATE_ALLOCATION,\n { input },\n );\n return jsonResult(data.createAllocation);\n } catch (error) {\n ctx.logger.error('timecampus resource_allocations_create failed', { error: String(error) });\n return errorResult(\n `Failed to create allocation: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_allocations_update')),\n {\n title: 'Update Resource Allocation',\n description: 'Update a resource allocation. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Allocation ID'),\n userId: z.string().optional().describe('Updated user'),\n projectId: z.string().optional().describe('Updated project'),\n allocatedHours: z.number().optional().describe('Updated allocated hours'),\n actualHours: z.number().optional().describe('Updated actual hours'),\n startDate: z.string().optional().describe('Updated ISO start'),\n endDate: z.string().optional().describe('Updated ISO end'),\n notes: z.string().optional().describe('Updated notes'),\n },\n },\n async ({ id, userId, projectId, allocatedHours, actualHours, startDate, endDate, notes }) => {\n try {\n const input: Record<string, unknown> = {};\n if (userId !== undefined) input.userId = userId;\n if (projectId !== undefined) input.projectId = projectId;\n if (allocatedHours !== undefined) input.allocatedHours = allocatedHours;\n if (actualHours !== undefined) input.actualHours = actualHours;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (notes !== undefined) input.notes = notes;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{ updateAllocation: Record<string, unknown> }>(\n ops.UPDATE_ALLOCATION,\n { id, input },\n );\n return jsonResult(data.updateAllocation);\n } catch (error) {\n ctx.logger.error('timecampus resource_allocations_update failed', { error: String(error) });\n return errorResult(\n `Failed to update allocation: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_allocations_delete')),\n {\n title: 'Delete Resource Allocation',\n description: 'Delete a resource allocation by ID.',\n inputSchema: { id: z.string().describe('Allocation ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteAllocation: Record<string, unknown> }>(\n ops.DELETE_ALLOCATION,\n { id },\n );\n return jsonResult(data.deleteAllocation);\n } catch (error) {\n ctx.logger.error('timecampus resource_allocations_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete allocation: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_allocations_bulk_create')),\n {\n title: 'Bulk Create Allocations',\n description:\n 'Create multiple allocations for a plan in one call. Each allocation needs userId, allocatedHours and a date range.',\n inputSchema: {\n planId: z.string().describe('Resource plan ID'),\n allocations: z\n .array(\n z.object({\n userId: z.string().describe('User to allocate'),\n allocatedHours: z.number().describe('Hours allocated'),\n startDate: z.string().describe('ISO allocation start'),\n endDate: z.string().describe('ISO allocation end'),\n projectId: z.string().optional().describe('Project ID'),\n notes: z.string().optional().describe('Notes'),\n }),\n )\n .min(1)\n .describe('Allocations to create'),\n },\n },\n async ({ planId, allocations }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n bulkCreateAllocations: Array<Record<string, unknown>>;\n }>(ops.BULK_CREATE_ALLOCATIONS, { planId, allocations });\n return jsonResult(data.bulkCreateAllocations);\n } catch (error) {\n ctx.logger.error('timecampus resource_allocations_bulk_create failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to bulk-create allocations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus focus-score tools.\n *\n * Surface (9): focus_{get,list,summary,trend,today,calculate,record,update,\n * delete}. Workspace scoping comes from the gateway headers.\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 { JsonObject } from './shared.js';\n\nexport function registerFocusTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_get')),\n {\n title: 'Get Focus Score',\n description: 'Fetch a single focus score by ID.',\n inputSchema: { id: z.string().describe('Focus score ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n focusScore: Record<string, unknown> | null;\n }>(ops.GET_FOCUS_SCORE, { id });\n if (!data.focusScore) return errorResult(`Focus score ${id} not found`);\n return jsonResult(data.focusScore);\n } catch (error) {\n ctx.logger.error('timecampus focus_get failed', { error: String(error) });\n return errorResult(\n `Failed to get focus score: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_list')),\n {\n title: 'List Focus Scores',\n description: 'List focus scores over an optional date range / user, with pagination.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n userId: z.string().optional().describe('Filter by user 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 ({ startDate, endDate, userId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n focusScores: Array<Record<string, unknown>>;\n }>(ops.LIST_FOCUS_SCORES, {\n startDate,\n endDate,\n userId,\n limit: limit ?? 50,\n offset: offset ?? 0,\n });\n return jsonResult(data.focusScores);\n } catch (error) {\n ctx.logger.error('timecampus focus_list failed', { error: String(error) });\n return errorResult(\n `Failed to list focus scores: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_summary')),\n {\n title: 'Focus Score Summary',\n description: 'Summary of focus scores (average/high/low, trend, top factor) over a range.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n userId: z.string().optional().describe('Filter by user ID'),\n },\n },\n async ({ startDate, endDate, userId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n focusScoreSummary: Record<string, unknown>;\n }>(ops.FOCUS_SCORE_SUMMARY, { startDate, endDate, userId });\n return jsonResult(data.focusScoreSummary);\n } catch (error) {\n ctx.logger.error('timecampus focus_summary failed', { error: String(error) });\n return errorResult(\n `Failed to get focus summary: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_trend')),\n {\n title: 'Focus Score Trend',\n description: 'Daily focus-score trend over the last N days.',\n inputSchema: {\n days: z.number().int().optional().describe('Number of days (default 30)'),\n userId: z.string().optional().describe('Filter by user ID'),\n },\n },\n async ({ days, userId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n focusScoreTrend: Array<Record<string, unknown>>;\n }>(ops.FOCUS_SCORE_TREND, { days: days ?? 30, userId });\n return jsonResult(data.focusScoreTrend);\n } catch (error) {\n ctx.logger.error('timecampus focus_trend failed', { error: String(error) });\n return errorResult(\n `Failed to get focus trend: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_today')),\n {\n title: 'Today Focus Score',\n description: 'Fetch today’s focus score for the calling user, if recorded.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n todayFocusScore: Record<string, unknown> | null;\n }>(ops.TODAY_FOCUS_SCORE, {});\n return jsonResult(data.todayFocusScore);\n } catch (error) {\n ctx.logger.error('timecampus focus_today failed', { error: String(error) });\n return errorResult(\n `Failed to get today focus score: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_calculate')),\n {\n title: 'Calculate Focus Score',\n description: 'Compute (and persist) a focus score for a date / user from tracked activity.',\n inputSchema: {\n date: z.string().optional().describe('ISO date (default today)'),\n userId: z.string().optional().describe('User ID (default calling user)'),\n },\n },\n async ({ date, userId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n calculateFocusScore: Record<string, unknown>;\n }>(ops.CALCULATE_FOCUS_SCORE, { date, userId });\n return jsonResult(data.calculateFocusScore);\n } catch (error) {\n ctx.logger.error('timecampus focus_calculate failed', { error: String(error) });\n return errorResult(\n `Failed to calculate focus score: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_record')),\n {\n title: 'Record Focus Score',\n description: 'Record a focus score. `date` and `overallScore` are required.',\n inputSchema: {\n date: z.string().describe('ISO date'),\n overallScore: z.number().describe('Overall focus score'),\n deepWorkScore: z.number().optional().describe('Deep-work sub-score'),\n distractionResistanceScore: z\n .number()\n .optional()\n .describe('Distraction-resistance sub-score'),\n taskCompletionScore: z.number().optional().describe('Task-completion sub-score'),\n energyManagementScore: z.number().optional().describe('Energy-management sub-score'),\n consistencyScore: z.number().optional().describe('Consistency sub-score'),\n factors: JsonObject.optional().describe('Contributing factors JSON'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n date,\n overallScore,\n deepWorkScore,\n distractionResistanceScore,\n taskCompletionScore,\n energyManagementScore,\n consistencyScore,\n factors,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { date, overallScore };\n if (deepWorkScore !== undefined) input.deepWorkScore = deepWorkScore;\n if (distractionResistanceScore !== undefined)\n input.distractionResistanceScore = distractionResistanceScore;\n if (taskCompletionScore !== undefined) input.taskCompletionScore = taskCompletionScore;\n if (energyManagementScore !== undefined)\n input.energyManagementScore = energyManagementScore;\n if (consistencyScore !== undefined) input.consistencyScore = consistencyScore;\n if (factors !== undefined) input.factors = factors;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{ recordFocusScore: Record<string, unknown> }>(\n ops.RECORD_FOCUS_SCORE,\n { input },\n );\n return jsonResult(data.recordFocusScore);\n } catch (error) {\n ctx.logger.error('timecampus focus_record failed', { error: String(error) });\n return errorResult(\n `Failed to record focus score: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_update')),\n {\n title: 'Update Focus Score',\n description: 'Update a focus score. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Focus score ID'),\n overallScore: z.number().optional().describe('Updated overall score'),\n deepWorkScore: z.number().optional().describe('Updated deep-work sub-score'),\n distractionResistanceScore: z\n .number()\n .optional()\n .describe('Updated distraction-resistance sub-score'),\n taskCompletionScore: z.number().optional().describe('Updated task-completion sub-score'),\n energyManagementScore: z\n .number()\n .optional()\n .describe('Updated energy-management sub-score'),\n consistencyScore: z.number().optional().describe('Updated consistency sub-score'),\n factors: JsonObject.optional().describe('Updated factors JSON'),\n },\n },\n async ({\n id,\n overallScore,\n deepWorkScore,\n distractionResistanceScore,\n taskCompletionScore,\n energyManagementScore,\n consistencyScore,\n factors,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (overallScore !== undefined) input.overallScore = overallScore;\n if (deepWorkScore !== undefined) input.deepWorkScore = deepWorkScore;\n if (distractionResistanceScore !== undefined)\n input.distractionResistanceScore = distractionResistanceScore;\n if (taskCompletionScore !== undefined) input.taskCompletionScore = taskCompletionScore;\n if (energyManagementScore !== undefined)\n input.energyManagementScore = energyManagementScore;\n if (consistencyScore !== undefined) input.consistencyScore = consistencyScore;\n if (factors !== undefined) input.factors = factors;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{ updateFocusScore: Record<string, unknown> }>(\n ops.UPDATE_FOCUS_SCORE,\n { id, input },\n );\n return jsonResult(data.updateFocusScore);\n } catch (error) {\n ctx.logger.error('timecampus focus_update failed', { error: String(error) });\n return errorResult(\n `Failed to update focus score: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_delete')),\n {\n title: 'Delete Focus Score',\n description: 'Delete a focus score by ID.',\n inputSchema: { id: z.string().describe('Focus score ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteFocusScore: Record<string, unknown> }>(\n ops.DELETE_FOCUS_SCORE,\n { id },\n );\n return jsonResult(data.deleteFocusScore);\n } catch (error) {\n ctx.logger.error('timecampus focus_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete focus score: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus work-pattern tools.\n *\n * Surface (7): workpatterns_{get,list,summary,today,record,update,delete}.\n * Workspace scoping comes from the gateway headers. `energyLevel`, `mood` and\n * `stressLevel` are free-form Strings in the record/update inputs.\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 { JsonObject } from './shared.js';\n\nexport function registerWorkPatternTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workpatterns_get')),\n {\n title: 'Get Work Pattern',\n description: 'Fetch a single work pattern by ID.',\n inputSchema: { id: z.string().describe('Work pattern ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n workPattern: Record<string, unknown> | null;\n }>(ops.GET_WORK_PATTERN, { id });\n if (!data.workPattern) return errorResult(`Work pattern ${id} not found`);\n return jsonResult(data.workPattern);\n } catch (error) {\n ctx.logger.error('timecampus workpatterns_get failed', { error: String(error) });\n return errorResult(\n `Failed to get work pattern: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workpatterns_list')),\n {\n title: 'List Work Patterns',\n description: 'List work patterns over an optional date range / user, with pagination.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n userId: z.string().optional().describe('Filter by user 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 ({ startDate, endDate, userId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n workPatterns: Array<Record<string, unknown>>;\n }>(ops.LIST_WORK_PATTERNS, {\n startDate,\n endDate,\n userId,\n limit: limit ?? 50,\n offset: offset ?? 0,\n });\n return jsonResult(data.workPatterns);\n } catch (error) {\n ctx.logger.error('timecampus workpatterns_list failed', { error: String(error) });\n return errorResult(\n `Failed to list work patterns: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workpatterns_summary')),\n {\n title: 'Work Pattern Summary',\n description:\n 'Summary of work patterns (avg focus/meeting hours, productivity, best/worst day, insights) over a range.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n userId: z.string().optional().describe('Filter by user ID'),\n },\n },\n async ({ startDate, endDate, userId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n workPatternSummary: Record<string, unknown>;\n }>(ops.WORK_PATTERN_SUMMARY, { startDate, endDate, userId });\n return jsonResult(data.workPatternSummary);\n } catch (error) {\n ctx.logger.error('timecampus workpatterns_summary failed', { error: String(error) });\n return errorResult(\n `Failed to get work pattern summary: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workpatterns_today')),\n {\n title: 'Today Work Pattern',\n description: 'Fetch today’s work pattern for the calling user, if recorded.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n todayWorkPattern: Record<string, unknown> | null;\n }>(ops.TODAY_WORK_PATTERN, {});\n return jsonResult(data.todayWorkPattern);\n } catch (error) {\n ctx.logger.error('timecampus workpatterns_today failed', { error: String(error) });\n return errorResult(\n `Failed to get today work pattern: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workpatterns_record')),\n {\n title: 'Record Work Pattern',\n description:\n 'Record a work pattern. `date`, `focusHours`, `meetingHours` and `breakHours` are required.',\n inputSchema: {\n date: z.string().describe('ISO date'),\n focusHours: z.number().describe('Focus hours'),\n meetingHours: z.number().describe('Meeting hours'),\n breakHours: z.number().describe('Break hours'),\n deepWorkSessions: z.number().int().optional().describe('Deep-work session count'),\n interruptions: z.number().int().optional().describe('Interruption count'),\n productivityScore: z.number().optional().describe('Productivity score'),\n energyLevel: z.string().optional().describe('Energy level (free-form)'),\n mood: z.string().optional().describe('Mood (free-form)'),\n stressLevel: z.string().optional().describe('Stress level (free-form)'),\n peakHours: JsonObject.optional().describe('Peak-hours JSON'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n date,\n focusHours,\n meetingHours,\n breakHours,\n deepWorkSessions,\n interruptions,\n productivityScore,\n energyLevel,\n mood,\n stressLevel,\n peakHours,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { date, focusHours, meetingHours, breakHours };\n if (deepWorkSessions !== undefined) input.deepWorkSessions = deepWorkSessions;\n if (interruptions !== undefined) input.interruptions = interruptions;\n if (productivityScore !== undefined) input.productivityScore = productivityScore;\n if (energyLevel !== undefined) input.energyLevel = energyLevel;\n if (mood !== undefined) input.mood = mood;\n if (stressLevel !== undefined) input.stressLevel = stressLevel;\n if (peakHours !== undefined) input.peakHours = peakHours;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n recordWorkPattern: Record<string, unknown>;\n }>(ops.RECORD_WORK_PATTERN, { input });\n return jsonResult(data.recordWorkPattern);\n } catch (error) {\n ctx.logger.error('timecampus workpatterns_record failed', { error: String(error) });\n return errorResult(\n `Failed to record work pattern: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workpatterns_update')),\n {\n title: 'Update Work Pattern',\n description: 'Update a work pattern. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Work pattern ID'),\n focusHours: z.number().optional().describe('Updated focus hours'),\n meetingHours: z.number().optional().describe('Updated meeting hours'),\n breakHours: z.number().optional().describe('Updated break hours'),\n deepWorkSessions: z.number().int().optional().describe('Updated deep-work sessions'),\n interruptions: z.number().int().optional().describe('Updated interruptions'),\n productivityScore: z.number().optional().describe('Updated productivity score'),\n energyLevel: z.string().optional().describe('Updated energy level'),\n mood: z.string().optional().describe('Updated mood'),\n stressLevel: z.string().optional().describe('Updated stress level'),\n peakHours: JsonObject.optional().describe('Updated peak-hours JSON'),\n },\n },\n async ({\n id,\n focusHours,\n meetingHours,\n breakHours,\n deepWorkSessions,\n interruptions,\n productivityScore,\n energyLevel,\n mood,\n stressLevel,\n peakHours,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (focusHours !== undefined) input.focusHours = focusHours;\n if (meetingHours !== undefined) input.meetingHours = meetingHours;\n if (breakHours !== undefined) input.breakHours = breakHours;\n if (deepWorkSessions !== undefined) input.deepWorkSessions = deepWorkSessions;\n if (interruptions !== undefined) input.interruptions = interruptions;\n if (productivityScore !== undefined) input.productivityScore = productivityScore;\n if (energyLevel !== undefined) input.energyLevel = energyLevel;\n if (mood !== undefined) input.mood = mood;\n if (stressLevel !== undefined) input.stressLevel = stressLevel;\n if (peakHours !== undefined) input.peakHours = peakHours;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateWorkPattern: Record<string, unknown>;\n }>(ops.UPDATE_WORK_PATTERN, { id, input });\n return jsonResult(data.updateWorkPattern);\n } catch (error) {\n ctx.logger.error('timecampus workpatterns_update failed', { error: String(error) });\n return errorResult(\n `Failed to update work pattern: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workpatterns_delete')),\n {\n title: 'Delete Work Pattern',\n description: 'Delete a work pattern by ID.',\n inputSchema: { id: z.string().describe('Work pattern ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteWorkPattern: Record<string, unknown>;\n }>(ops.DELETE_WORK_PATTERN, { id });\n return jsonResult(data.deleteWorkPattern);\n } catch (error) {\n ctx.logger.error('timecampus workpatterns_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete work pattern: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus application-usage tools.\n *\n * Surface (8): appusage_{get,list,summary,top,record,update,delete,categorize}.\n * Workspace scoping comes from the gateway headers. `category` is a free-form\n * String in the backend (PRODUCTIVE / NEUTRAL / DISTRACTING are the conventional\n * values surfaced by AppCategory but the input column is a String).\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 { JsonObject } from './shared.js';\n\nexport function registerAppUsageTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'appusage_get')),\n {\n title: 'Get Application Usage',\n description: 'Fetch a single application-usage record by ID.',\n inputSchema: { id: z.string().describe('Application usage ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n applicationUsage: Record<string, unknown> | null;\n }>(ops.GET_APP_USAGE, { id });\n if (!data.applicationUsage) return errorResult(`Application usage ${id} not found`);\n return jsonResult(data.applicationUsage);\n } catch (error) {\n ctx.logger.error('timecampus appusage_get failed', { error: String(error) });\n return errorResult(\n `Failed to get application usage: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'appusage_list')),\n {\n title: 'List Application Usage',\n description: 'List application-usage records with optional category/date/user filter.',\n inputSchema: {\n category: z.string().optional().describe('Filter by category'),\n date: z.string().optional().describe('Filter by ISO date'),\n userId: z.string().optional().describe('Filter by user 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 ({ category, date, userId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n applicationUsages: Array<Record<string, unknown>>;\n }>(ops.LIST_APP_USAGE, { category, date, userId, limit: limit ?? 50, offset: offset ?? 0 });\n return jsonResult(data.applicationUsages);\n } catch (error) {\n ctx.logger.error('timecampus appusage_list failed', { error: String(error) });\n return errorResult(\n `Failed to list application usage: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'appusage_summary')),\n {\n title: 'Application Usage Summary',\n description:\n 'Summary of application usage (productive/neutral/distracting time, ratio, top apps) over a range.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n userId: z.string().optional().describe('Filter by user ID'),\n },\n },\n async ({ startDate, endDate, userId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ appUsageSummary: Record<string, unknown> }>(\n ops.APP_USAGE_SUMMARY,\n { startDate, endDate, userId },\n );\n return jsonResult(data.appUsageSummary);\n } catch (error) {\n ctx.logger.error('timecampus appusage_summary failed', { error: String(error) });\n return errorResult(\n `Failed to get application usage summary: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'appusage_top')),\n {\n title: 'Top Applications',\n description: 'List the most-used applications over an optional date range.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n limit: z.number().int().optional().describe('Max results (default 10)'),\n userId: z.string().optional().describe('Filter by user ID'),\n },\n },\n async ({ startDate, endDate, limit, userId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n topApplications: Array<Record<string, unknown>>;\n }>(ops.TOP_APPLICATIONS, { startDate, endDate, limit: limit ?? 10, userId });\n return jsonResult(data.topApplications);\n } catch (error) {\n ctx.logger.error('timecampus appusage_top failed', { error: String(error) });\n return errorResult(\n `Failed to list top applications: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'appusage_record')),\n {\n title: 'Record Application Usage',\n description:\n 'Record application usage. `applicationName`, `date` and `timeSpent` (seconds) are required.',\n inputSchema: {\n applicationName: z.string().min(1).describe('Application name'),\n date: z.string().describe('ISO date'),\n timeSpent: z.number().int().describe('Time spent in seconds'),\n category: z.string().optional().describe('Category (default \"NEUTRAL\")'),\n sessions: z.number().int().optional().describe('Session count (default 0)'),\n switches: z.number().int().optional().describe('Context-switch count (default 0)'),\n firstUsed: z.string().optional().describe('ISO first-used timestamp'),\n lastUsed: z.string().optional().describe('ISO last-used timestamp'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n applicationName,\n date,\n timeSpent,\n category,\n sessions,\n switches,\n firstUsed,\n lastUsed,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { applicationName, date, timeSpent };\n if (category !== undefined) input.category = category;\n if (sessions !== undefined) input.sessions = sessions;\n if (switches !== undefined) input.switches = switches;\n if (firstUsed !== undefined) input.firstUsed = firstUsed;\n if (lastUsed !== undefined) input.lastUsed = lastUsed;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n recordApplicationUsage: Record<string, unknown>;\n }>(ops.RECORD_APP_USAGE, { input });\n return jsonResult(data.recordApplicationUsage);\n } catch (error) {\n ctx.logger.error('timecampus appusage_record failed', { error: String(error) });\n return errorResult(\n `Failed to record application usage: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'appusage_update')),\n {\n title: 'Update Application Usage',\n description:\n 'Update an application-usage record. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Application usage ID'),\n applicationName: z.string().optional().describe('Updated application name'),\n category: z.string().optional().describe('Updated category'),\n timeSpent: z.number().int().optional().describe('Updated time spent (seconds)'),\n sessions: z.number().int().optional().describe('Updated session count'),\n switches: z.number().int().optional().describe('Updated context-switch count'),\n firstUsed: z.string().optional().describe('Updated ISO first-used'),\n lastUsed: z.string().optional().describe('Updated ISO last-used'),\n },\n },\n async ({\n id,\n applicationName,\n category,\n timeSpent,\n sessions,\n switches,\n firstUsed,\n lastUsed,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (applicationName !== undefined) input.applicationName = applicationName;\n if (category !== undefined) input.category = category;\n if (timeSpent !== undefined) input.timeSpent = timeSpent;\n if (sessions !== undefined) input.sessions = sessions;\n if (switches !== undefined) input.switches = switches;\n if (firstUsed !== undefined) input.firstUsed = firstUsed;\n if (lastUsed !== undefined) input.lastUsed = lastUsed;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateApplicationUsage: Record<string, unknown>;\n }>(ops.UPDATE_APP_USAGE, { id, input });\n return jsonResult(data.updateApplicationUsage);\n } catch (error) {\n ctx.logger.error('timecampus appusage_update failed', { error: String(error) });\n return errorResult(\n `Failed to update application usage: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'appusage_delete')),\n {\n title: 'Delete Application Usage',\n description: 'Delete an application-usage record by ID.',\n inputSchema: { id: z.string().describe('Application usage ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteApplicationUsage: Record<string, unknown>;\n }>(ops.DELETE_APP_USAGE, { id });\n return jsonResult(data.deleteApplicationUsage);\n } catch (error) {\n ctx.logger.error('timecampus appusage_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete application usage: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'appusage_categorize')),\n {\n title: 'Categorize Application',\n description:\n 'Reclassify all usage records of an application into a category (e.g. PRODUCTIVE / NEUTRAL / DISTRACTING).',\n inputSchema: {\n applicationName: z.string().min(1).describe('Application name to recategorize'),\n category: z.string().min(1).describe('Target category'),\n },\n },\n async ({ applicationName, category }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n categorizeApplication: Array<Record<string, unknown>>;\n }>(ops.CATEGORIZE_APPLICATION, { applicationName, category });\n return jsonResult(data.categorizeApplication);\n } catch (error) {\n ctx.logger.error('timecampus appusage_categorize failed', { error: String(error) });\n return errorResult(\n `Failed to categorize application: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus location tools — geofences, geofence events and location entries.\n *\n * Surface (15): geofences_{get,list,create,update,delete,toggle},\n * geofence_events_{list,record} and locations_{get,active,list,stats,create,\n * update,delete}. Workspace scoping comes from the gateway headers.\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 { GeofenceEventTypeEnum, GeofenceTriggerEnum, JsonObject } from './shared.js';\n\nexport function registerLocationTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Geofences ──────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'geofences_get')),\n {\n title: 'Get Geofence',\n description: 'Fetch a single geofence by ID, including its events.',\n inputSchema: { id: z.string().describe('Geofence ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n geofence: Record<string, unknown> | null;\n }>(ops.GET_GEOFENCE, { id });\n if (!data.geofence) return errorResult(`Geofence ${id} not found`);\n return jsonResult(data.geofence);\n } catch (error) {\n ctx.logger.error('timecampus geofences_get failed', { error: String(error) });\n return errorResult(\n `Failed to get geofence: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'geofences_list')),\n {\n title: 'List Geofences',\n description:\n 'List geofences with optional active/text filter and pagination. Returns { items, total, hasMore }.',\n inputSchema: {\n isActive: z.boolean().optional().describe('Filter by active flag'),\n search: z.string().optional().describe('Free-text search across name'),\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 ({ isActive, search, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (isActive !== undefined) filter.isActive = isActive;\n if (search !== undefined) filter.search = search;\n\n const data = await ctx.gql.workspace.request<{ geofences: Record<string, unknown> }>(\n ops.LIST_GEOFENCES,\n {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n },\n );\n return jsonResult(data.geofences);\n } catch (error) {\n ctx.logger.error('timecampus geofences_list failed', { error: String(error) });\n return errorResult(\n `Failed to list geofences: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'geofences_create')),\n {\n title: 'Create Geofence',\n description:\n 'Create a geofence. `name`, `latitude`, `longitude` and `radius` (metres) are required.',\n inputSchema: {\n name: z.string().min(1).describe('Geofence name'),\n latitude: z.number().describe('Centre latitude'),\n longitude: z.number().describe('Centre longitude'),\n radius: z.number().describe('Radius in metres'),\n address: z.string().optional().describe('Human-readable address'),\n trigger: GeofenceTriggerEnum.optional().describe('Trigger mode (default BOTH)'),\n isActive: z.boolean().optional().describe('Whether active (default true)'),\n linkedProjectId: z.string().optional().describe('Project to link entries to'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n name,\n latitude,\n longitude,\n radius,\n address,\n trigger,\n isActive,\n linkedProjectId,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { name, latitude, longitude, radius };\n if (address !== undefined) input.address = address;\n if (trigger !== undefined) input.trigger = trigger;\n if (isActive !== undefined) input.isActive = isActive;\n if (linkedProjectId !== undefined) input.linkedProjectId = linkedProjectId;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{ createGeofence: Record<string, unknown> }>(\n ops.CREATE_GEOFENCE,\n { input },\n );\n return jsonResult(data.createGeofence);\n } catch (error) {\n ctx.logger.error('timecampus geofences_create failed', { error: String(error) });\n return errorResult(\n `Failed to create geofence: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'geofences_update')),\n {\n title: 'Update Geofence',\n description: 'Update a geofence. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Geofence ID'),\n name: z.string().optional().describe('Updated name'),\n latitude: z.number().optional().describe('Updated latitude'),\n longitude: z.number().optional().describe('Updated longitude'),\n radius: z.number().optional().describe('Updated radius (metres)'),\n address: z.string().optional().describe('Updated address'),\n trigger: GeofenceTriggerEnum.optional().describe('Updated trigger mode'),\n isActive: z.boolean().optional().describe('Updated active flag'),\n linkedProjectId: z.string().optional().describe('Updated linked project'),\n },\n },\n async ({\n id,\n name,\n latitude,\n longitude,\n radius,\n address,\n trigger,\n isActive,\n linkedProjectId,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (latitude !== undefined) input.latitude = latitude;\n if (longitude !== undefined) input.longitude = longitude;\n if (radius !== undefined) input.radius = radius;\n if (address !== undefined) input.address = address;\n if (trigger !== undefined) input.trigger = trigger;\n if (isActive !== undefined) input.isActive = isActive;\n if (linkedProjectId !== undefined) input.linkedProjectId = linkedProjectId;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{ updateGeofence: Record<string, unknown> }>(\n ops.UPDATE_GEOFENCE,\n { id, input },\n );\n return jsonResult(data.updateGeofence);\n } catch (error) {\n ctx.logger.error('timecampus geofences_update failed', { error: String(error) });\n return errorResult(\n `Failed to update geofence: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'geofences_delete')),\n {\n title: 'Delete Geofence',\n description: 'Delete a geofence by ID.',\n inputSchema: { id: z.string().describe('Geofence ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteGeofence: Record<string, unknown> }>(\n ops.DELETE_GEOFENCE,\n { id },\n );\n return jsonResult(data.deleteGeofence);\n } catch (error) {\n ctx.logger.error('timecampus geofences_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete geofence: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'geofences_toggle')),\n {\n title: 'Toggle Geofence',\n description: 'Activate or deactivate a geofence.',\n inputSchema: {\n id: z.string().describe('Geofence ID'),\n isActive: z.boolean().describe('New active state'),\n },\n },\n async ({ id, isActive }) => {\n try {\n const data = await ctx.gql.workspace.request<{ toggleGeofence: Record<string, unknown> }>(\n ops.TOGGLE_GEOFENCE,\n { id, isActive },\n );\n return jsonResult(data.toggleGeofence);\n } catch (error) {\n ctx.logger.error('timecampus geofences_toggle failed', { error: String(error) });\n return errorResult(\n `Failed to toggle geofence: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Geofence events ──────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'geofence_events_list')),\n {\n title: 'List Geofence Events',\n description: 'List the recorded enter/exit events for a geofence.',\n inputSchema: {\n geofenceId: z.string().describe('Geofence 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 ({ geofenceId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n geofenceEvents: Array<Record<string, unknown>>;\n }>(ops.LIST_GEOFENCE_EVENTS, { geofenceId, limit: limit ?? 50, offset: offset ?? 0 });\n return jsonResult(data.geofenceEvents);\n } catch (error) {\n ctx.logger.error('timecampus geofence_events_list failed', { error: String(error) });\n return errorResult(\n `Failed to list geofence events: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'geofence_events_record')),\n {\n title: 'Record Geofence Event',\n description:\n 'Record an enter/exit geofence event. `geofenceId`, `type`, `userId` and location are required.',\n inputSchema: {\n geofenceId: z.string().describe('Geofence ID'),\n type: GeofenceEventTypeEnum.describe('Event type (ENTER / EXIT)'),\n userId: z.string().describe('User ID'),\n locationLatitude: z.number().describe('Latitude at crossing'),\n locationLongitude: z.number().describe('Longitude at crossing'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({ geofenceId, type, userId, locationLatitude, locationLongitude, context }) => {\n try {\n const input: Record<string, unknown> = {\n geofenceId,\n type,\n userId,\n locationLatitude,\n locationLongitude,\n };\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n recordGeofenceEvent: Record<string, unknown>;\n }>(ops.RECORD_GEOFENCE_EVENT, { input });\n return jsonResult(data.recordGeofenceEvent);\n } catch (error) {\n ctx.logger.error('timecampus geofence_events_record failed', { error: String(error) });\n return errorResult(\n `Failed to record geofence event: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Location entries ─────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'locations_get')),\n {\n title: 'Get Location Entry',\n description: 'Fetch a single location entry by ID.',\n inputSchema: { id: z.string().describe('Location entry ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n locationEntry: Record<string, unknown> | null;\n }>(ops.GET_LOCATION_ENTRY, { id });\n if (!data.locationEntry) return errorResult(`Location entry ${id} not found`);\n return jsonResult(data.locationEntry);\n } catch (error) {\n ctx.logger.error('timecampus locations_get failed', { error: String(error) });\n return errorResult(\n `Failed to get location entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'locations_active')),\n {\n title: 'Active Location Entry',\n description: 'Fetch the currently-open (no end time) location entry for the calling user.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n activeLocationEntry: Record<string, unknown> | null;\n }>(ops.ACTIVE_LOCATION_ENTRY, {});\n return jsonResult(data.activeLocationEntry);\n } catch (error) {\n ctx.logger.error('timecampus locations_active failed', { error: String(error) });\n return errorResult(\n `Failed to get active location entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'locations_list')),\n {\n title: 'List Location Entries',\n description:\n 'List location entries with optional user/project/geofence/date/text filter and pagination. Returns { items, total, hasMore }.',\n inputSchema: {\n userId: z.string().optional().describe('Filter by user ID'),\n projectId: z.string().optional().describe('Filter by project ID'),\n geofenceId: z.string().optional().describe('Filter by geofence ID'),\n search: z.string().optional().describe('Free-text search across address'),\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\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 ({ userId, projectId, geofenceId, search, startDate, endDate, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (userId !== undefined) filter.userId = userId;\n if (projectId !== undefined) filter.projectId = projectId;\n if (geofenceId !== undefined) filter.geofenceId = geofenceId;\n if (search !== undefined) filter.search = search;\n if (startDate !== undefined) filter.startDate = startDate;\n if (endDate !== undefined) filter.endDate = endDate;\n\n const data = await ctx.gql.workspace.request<{ locationEntries: Record<string, unknown> }>(\n ops.LIST_LOCATION_ENTRIES,\n {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n },\n );\n return jsonResult(data.locationEntries);\n } catch (error) {\n ctx.logger.error('timecampus locations_list failed', { error: String(error) });\n return errorResult(\n `Failed to list location entries: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'locations_stats')),\n {\n title: 'Location Stats',\n description: 'Aggregate location stats over an optional date range.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n },\n },\n async ({ startDate, endDate }) => {\n try {\n const data = await ctx.gql.workspace.request<{ locationStats: Record<string, unknown> }>(\n ops.LOCATION_STATS,\n { startDate, endDate },\n );\n return jsonResult(data.locationStats);\n } catch (error) {\n ctx.logger.error('timecampus locations_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get location stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'locations_create')),\n {\n title: 'Create Location Entry',\n description:\n 'Create a location entry. `userId`, `latitude`, `longitude` and `startTime` are required.',\n inputSchema: {\n userId: z.string().describe('User ID'),\n latitude: z.number().describe('Latitude'),\n longitude: z.number().describe('Longitude'),\n startTime: z.string().describe('ISO start time'),\n endTime: z.string().optional().describe('ISO end time'),\n duration: z.number().int().optional().describe('Duration in seconds'),\n accuracy: z.number().optional().describe('GPS accuracy (metres)'),\n address: z.string().optional().describe('Human-readable address'),\n geofenceId: z.string().optional().describe('Associated geofence ID'),\n projectId: z.string().optional().describe('Associated project ID'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n userId,\n latitude,\n longitude,\n startTime,\n endTime,\n duration,\n accuracy,\n address,\n geofenceId,\n projectId,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { userId, latitude, longitude, startTime };\n if (endTime !== undefined) input.endTime = endTime;\n if (duration !== undefined) input.duration = duration;\n if (accuracy !== undefined) input.accuracy = accuracy;\n if (address !== undefined) input.address = address;\n if (geofenceId !== undefined) input.geofenceId = geofenceId;\n if (projectId !== undefined) input.projectId = projectId;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n createLocationEntry: Record<string, unknown>;\n }>(ops.CREATE_LOCATION_ENTRY, { input });\n return jsonResult(data.createLocationEntry);\n } catch (error) {\n ctx.logger.error('timecampus locations_create failed', { error: String(error) });\n return errorResult(\n `Failed to create location entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'locations_update')),\n {\n title: 'Update Location Entry',\n description: 'Update a location entry. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Location entry ID'),\n latitude: z.number().optional().describe('Updated latitude'),\n longitude: z.number().optional().describe('Updated longitude'),\n startTime: z.string().optional().describe('Updated ISO start'),\n endTime: z.string().optional().describe('Updated ISO end'),\n duration: z.number().int().optional().describe('Updated duration (seconds)'),\n accuracy: z.number().optional().describe('Updated accuracy'),\n address: z.string().optional().describe('Updated address'),\n geofenceId: z.string().optional().describe('Updated geofence ID'),\n projectId: z.string().optional().describe('Updated project ID'),\n },\n },\n async ({\n id,\n latitude,\n longitude,\n startTime,\n endTime,\n duration,\n accuracy,\n address,\n geofenceId,\n projectId,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (latitude !== undefined) input.latitude = latitude;\n if (longitude !== undefined) input.longitude = longitude;\n if (startTime !== undefined) input.startTime = startTime;\n if (endTime !== undefined) input.endTime = endTime;\n if (duration !== undefined) input.duration = duration;\n if (accuracy !== undefined) input.accuracy = accuracy;\n if (address !== undefined) input.address = address;\n if (geofenceId !== undefined) input.geofenceId = geofenceId;\n if (projectId !== undefined) input.projectId = projectId;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateLocationEntry: Record<string, unknown>;\n }>(ops.UPDATE_LOCATION_ENTRY, { id, input });\n return jsonResult(data.updateLocationEntry);\n } catch (error) {\n ctx.logger.error('timecampus locations_update failed', { error: String(error) });\n return errorResult(\n `Failed to update location entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'locations_delete')),\n {\n title: 'Delete Location Entry',\n description: 'Delete a location entry by ID.',\n inputSchema: { id: z.string().describe('Location entry ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteLocationEntry: Record<string, unknown>;\n }>(ops.DELETE_LOCATION_ENTRY, { id });\n return jsonResult(data.deleteLocationEntry);\n } catch (error) {\n ctx.logger.error('timecampus locations_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete location entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus tracking-channel tools (ChannelConfig).\n *\n * Surface (9): commchannels_{get,list,active,statuses,create,update,delete,sync,\n * toggle}. Workspace scoping comes from the gateway headers.\n *\n * Note: the MCP tool prefix is `commchannels_*` (not `channels_*`) to avoid\n * colliding with the generic `channels` module's tool names when both are\n * mounted in a shell. The GraphQL operations/types are unchanged.\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 { ChannelStatusEnum, ChannelTypeEnum, JsonObject } from './shared.js';\n\nexport function registerChannelTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_get')),\n {\n title: 'Get Channel Config',\n description: 'Fetch a single tracking-channel config by ID.',\n inputSchema: { id: z.string().describe('Channel config ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n channelConfig: Record<string, unknown> | null;\n }>(ops.GET_CHANNEL, { id });\n if (!data.channelConfig) return errorResult(`Channel config ${id} not found`);\n return jsonResult(data.channelConfig);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_get failed', { error: String(error) });\n return errorResult(\n `Failed to get channel config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_list')),\n {\n title: 'List Channel Configs',\n description: 'List tracking-channel configs with pagination.',\n inputSchema: {\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 ({ limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n channelConfigs: Array<Record<string, unknown>>;\n }>(ops.LIST_CHANNELS, { limit: limit ?? 50, offset: offset ?? 0 });\n return jsonResult(data.channelConfigs);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_list failed', { error: String(error) });\n return errorResult(\n `Failed to list channel configs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_active')),\n {\n title: 'Active Channels',\n description: 'List the currently-active tracking channels.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n activeChannels: Array<Record<string, unknown>>;\n }>(ops.ACTIVE_CHANNELS, {});\n return jsonResult(data.activeChannels);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_active failed', { error: String(error) });\n return errorResult(\n `Failed to list active channels: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_statuses')),\n {\n title: 'Channel Statuses',\n description: 'Health/status snapshot of every tracking channel.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n channelStatuses: Array<Record<string, unknown>>;\n }>(ops.CHANNEL_STATUSES, {});\n return jsonResult(data.channelStatuses);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_statuses failed', { error: String(error) });\n return errorResult(\n `Failed to get channel statuses: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_create')),\n {\n title: 'Create Channel Config',\n description: 'Create a tracking channel. `name` and `type` are required.',\n inputSchema: {\n name: z.string().min(1).describe('Channel name'),\n type: ChannelTypeEnum.describe('Channel source type'),\n status: ChannelStatusEnum.optional().describe('Initial status (default SETUP)'),\n syncInterval: z.number().int().optional().describe('Sync interval (seconds)'),\n settings: JsonObject.optional().describe('Channel settings JSON'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({ name, type, status, syncInterval, settings, context }) => {\n try {\n const input: Record<string, unknown> = { name, type };\n if (status !== undefined) input.status = status;\n if (syncInterval !== undefined) input.syncInterval = syncInterval;\n if (settings !== undefined) input.settings = settings;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n createChannelConfig: Record<string, unknown>;\n }>(ops.CREATE_CHANNEL, { input });\n return jsonResult(data.createChannelConfig);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_create failed', { error: String(error) });\n return errorResult(\n `Failed to create channel config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_update')),\n {\n title: 'Update Channel Config',\n description: 'Update a tracking channel. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Channel config ID'),\n name: z.string().optional().describe('Updated name'),\n type: ChannelTypeEnum.optional().describe('Updated type'),\n status: ChannelStatusEnum.optional().describe('Updated status'),\n syncInterval: z.number().int().optional().describe('Updated sync interval (seconds)'),\n settings: JsonObject.optional().describe('Updated settings JSON'),\n },\n },\n async ({ id, name, type, status, syncInterval, settings }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (type !== undefined) input.type = type;\n if (status !== undefined) input.status = status;\n if (syncInterval !== undefined) input.syncInterval = syncInterval;\n if (settings !== undefined) input.settings = settings;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateChannelConfig: Record<string, unknown>;\n }>(ops.UPDATE_CHANNEL, { id, input });\n return jsonResult(data.updateChannelConfig);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_update failed', { error: String(error) });\n return errorResult(\n `Failed to update channel config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_delete')),\n {\n title: 'Delete Channel Config',\n description: 'Delete a tracking channel by ID.',\n inputSchema: { id: z.string().describe('Channel config ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteChannelConfig: Record<string, unknown>;\n }>(ops.DELETE_CHANNEL, { id });\n return jsonResult(data.deleteChannelConfig);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete channel config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_sync')),\n {\n title: 'Sync Channel',\n description: 'Trigger a sync for a tracking channel.',\n inputSchema: { id: z.string().describe('Channel config ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ syncChannel: Record<string, unknown> }>(\n ops.SYNC_CHANNEL,\n { id },\n );\n return jsonResult(data.syncChannel);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_sync failed', { error: String(error) });\n return errorResult(\n `Failed to sync channel: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_toggle')),\n {\n title: 'Toggle Channel',\n description: 'Set a tracking channel’s status (ACTIVE / INACTIVE / SETUP).',\n inputSchema: {\n id: z.string().describe('Channel config ID'),\n status: ChannelStatusEnum.describe('New status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{ toggleChannel: Record<string, unknown> }>(\n ops.TOGGLE_CHANNEL,\n { id, status },\n );\n return jsonResult(data.toggleChannel);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_toggle failed', { error: String(error) });\n return errorResult(\n `Failed to toggle channel: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus client-portal tools (ClientPortalConfig).\n *\n * Surface (7): client_portals_{get,list,stats,create,update,delete,toggle}.\n * Workspace scoping comes from the gateway headers.\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 { JsonObject } from './shared.js';\n\nexport function registerClientPortalTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'client_portals_get')),\n {\n title: 'Get Client Portal',\n description: 'Fetch a single client-portal config by ID.',\n inputSchema: { id: z.string().describe('Client portal config ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n clientPortalConfig: Record<string, unknown> | null;\n }>(ops.GET_CLIENT_PORTAL, { id });\n if (!data.clientPortalConfig) return errorResult(`Client portal ${id} not found`);\n return jsonResult(data.clientPortalConfig);\n } catch (error) {\n ctx.logger.error('timecampus client_portals_get failed', { error: String(error) });\n return errorResult(\n `Failed to get client portal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'client_portals_list')),\n {\n title: 'List Client Portals',\n description: 'List client-portal configs with pagination. Returns { items, total, hasMore }.',\n inputSchema: {\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 ({ limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n clientPortalConfigs: Record<string, unknown>;\n }>(ops.LIST_CLIENT_PORTALS, { limit: limit ?? 50, offset: offset ?? 0 });\n return jsonResult(data.clientPortalConfigs);\n } catch (error) {\n ctx.logger.error('timecampus client_portals_list failed', { error: String(error) });\n return errorResult(\n `Failed to list client portals: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'client_portals_stats')),\n {\n title: 'Client Portal Stats',\n description: 'Headline client-portal stats (total/active clients, projects shared).',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n clientPortalStats: Record<string, unknown>;\n }>(ops.CLIENT_PORTAL_STATS, {});\n return jsonResult(data.clientPortalStats);\n } catch (error) {\n ctx.logger.error('timecampus client_portals_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get client portal stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'client_portals_create')),\n {\n title: 'Create Client Portal',\n description: 'Create a client-portal config. `clientName` is required.',\n inputSchema: {\n clientName: z.string().min(1).describe('Client display name'),\n description: z.string().optional().describe('Description'),\n contactEmail: z.string().optional().describe('Contact email'),\n contactPhone: z.string().optional().describe('Contact phone'),\n logoUrl: z.string().optional().describe('Logo URL'),\n isActive: z.boolean().optional().describe('Whether active (default true)'),\n permissions: JsonObject.optional().describe('Permissions JSON'),\n settings: JsonObject.optional().describe('Settings JSON'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n clientName,\n description,\n contactEmail,\n contactPhone,\n logoUrl,\n isActive,\n permissions,\n settings,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { clientName };\n if (description !== undefined) input.description = description;\n if (contactEmail !== undefined) input.contactEmail = contactEmail;\n if (contactPhone !== undefined) input.contactPhone = contactPhone;\n if (logoUrl !== undefined) input.logoUrl = logoUrl;\n if (isActive !== undefined) input.isActive = isActive;\n if (permissions !== undefined) input.permissions = permissions;\n if (settings !== undefined) input.settings = settings;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n createClientPortalConfig: Record<string, unknown>;\n }>(ops.CREATE_CLIENT_PORTAL, { input });\n return jsonResult(data.createClientPortalConfig);\n } catch (error) {\n ctx.logger.error('timecampus client_portals_create failed', { error: String(error) });\n return errorResult(\n `Failed to create client portal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'client_portals_update')),\n {\n title: 'Update Client Portal',\n description: 'Update a client-portal config. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Client portal config ID'),\n clientName: z.string().optional().describe('Updated client name'),\n description: z.string().optional().describe('Updated description'),\n contactEmail: z.string().optional().describe('Updated contact email'),\n contactPhone: z.string().optional().describe('Updated contact phone'),\n logoUrl: z.string().optional().describe('Updated logo URL'),\n isActive: z.boolean().optional().describe('Updated active flag'),\n permissions: JsonObject.optional().describe('Updated permissions JSON'),\n settings: JsonObject.optional().describe('Updated settings JSON'),\n },\n },\n async ({\n id,\n clientName,\n description,\n contactEmail,\n contactPhone,\n logoUrl,\n isActive,\n permissions,\n settings,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (clientName !== undefined) input.clientName = clientName;\n if (description !== undefined) input.description = description;\n if (contactEmail !== undefined) input.contactEmail = contactEmail;\n if (contactPhone !== undefined) input.contactPhone = contactPhone;\n if (logoUrl !== undefined) input.logoUrl = logoUrl;\n if (isActive !== undefined) input.isActive = isActive;\n if (permissions !== undefined) input.permissions = permissions;\n if (settings !== undefined) input.settings = settings;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateClientPortalConfig: Record<string, unknown>;\n }>(ops.UPDATE_CLIENT_PORTAL, { id, input });\n return jsonResult(data.updateClientPortalConfig);\n } catch (error) {\n ctx.logger.error('timecampus client_portals_update failed', { error: String(error) });\n return errorResult(\n `Failed to update client portal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'client_portals_delete')),\n {\n title: 'Delete Client Portal',\n description: 'Delete a client-portal config by ID.',\n inputSchema: { id: z.string().describe('Client portal config ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteClientPortalConfig: Record<string, unknown>;\n }>(ops.DELETE_CLIENT_PORTAL, { id });\n return jsonResult(data.deleteClientPortalConfig);\n } catch (error) {\n ctx.logger.error('timecampus client_portals_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete client portal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'client_portals_toggle')),\n {\n title: 'Toggle Client Portal',\n description: 'Activate or deactivate a client-portal config.',\n inputSchema: {\n id: z.string().describe('Client portal config ID'),\n isActive: z.boolean().describe('New active state'),\n },\n },\n async ({ id, isActive }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n toggleClientPortal: Record<string, unknown>;\n }>(ops.TOGGLE_CLIENT_PORTAL, { id, isActive });\n return jsonResult(data.toggleClientPortal);\n } catch (error) {\n ctx.logger.error('timecampus client_portals_toggle failed', { error: String(error) });\n return errorResult(\n `Failed to toggle client portal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus email-tracking tools (EmailTimeEntry).\n *\n * Surface (7): email_entries_{get,list,stats,create,bulk_create,update,delete}.\n * Workspace scoping comes from the gateway headers.\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 { JsonObject } from './shared.js';\n\nconst emailEntryInputShape = {\n date: z.string().describe('ISO date'),\n subject: z.string().optional().describe('Email subject'),\n sender: z.string().optional().describe('Sender'),\n recipients: z.string().optional().describe('Recipients'),\n threadId: z.string().optional().describe('Thread ID'),\n category: z.string().optional().describe('Category'),\n isImportant: z.boolean().optional().describe('Whether flagged important (default false)'),\n duration: z.number().int().optional().describe('Time spent (seconds)'),\n responseTime: z.number().int().optional().describe('Response time (seconds)'),\n context: JsonObject.optional().describe('Context JSON'),\n} as const;\n\nfunction buildEmailInput(args: {\n date: string;\n subject?: string;\n sender?: string;\n recipients?: string;\n threadId?: string;\n category?: string;\n isImportant?: boolean;\n duration?: number;\n responseTime?: number;\n context?: Record<string, unknown>;\n}): Record<string, unknown> {\n const input: Record<string, unknown> = { date: args.date };\n if (args.subject !== undefined) input.subject = args.subject;\n if (args.sender !== undefined) input.sender = args.sender;\n if (args.recipients !== undefined) input.recipients = args.recipients;\n if (args.threadId !== undefined) input.threadId = args.threadId;\n if (args.category !== undefined) input.category = args.category;\n if (args.isImportant !== undefined) input.isImportant = args.isImportant;\n if (args.duration !== undefined) input.duration = args.duration;\n if (args.responseTime !== undefined) input.responseTime = args.responseTime;\n if (args.context !== undefined) input.context = args.context;\n return input;\n}\n\nexport function registerEmailTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'email_entries_get')),\n {\n title: 'Get Email Time Entry',\n description: 'Fetch a single email-time entry by ID.',\n inputSchema: { id: z.string().describe('Email time entry ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n emailTimeEntry: Record<string, unknown> | null;\n }>(ops.GET_EMAIL_ENTRY, { id });\n if (!data.emailTimeEntry) return errorResult(`Email time entry ${id} not found`);\n return jsonResult(data.emailTimeEntry);\n } catch (error) {\n ctx.logger.error('timecampus email_entries_get failed', { error: String(error) });\n return errorResult(\n `Failed to get email entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'email_entries_list')),\n {\n title: 'List Email Time Entries',\n description:\n 'List email-time entries with optional filter (sender/thread/category/important/text), date range and user.',\n inputSchema: {\n sender: z.string().optional().describe('Filter by sender'),\n threadId: z.string().optional().describe('Filter by thread ID'),\n category: z.string().optional().describe('Filter by category'),\n isImportant: z.boolean().optional().describe('Filter by important flag'),\n search: z.string().optional().describe('Free-text search'),\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n userId: z.string().optional().describe('Filter by user 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 ({\n sender,\n threadId,\n category,\n isImportant,\n search,\n startDate,\n endDate,\n userId,\n limit,\n offset,\n }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (sender !== undefined) filter.sender = sender;\n if (threadId !== undefined) filter.threadId = threadId;\n if (category !== undefined) filter.category = category;\n if (isImportant !== undefined) filter.isImportant = isImportant;\n if (search !== undefined) filter.search = search;\n\n const data = await ctx.gql.workspace.request<{\n emailTimeEntries: Array<Record<string, unknown>>;\n }>(ops.LIST_EMAIL_ENTRIES, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n startDate,\n endDate,\n userId,\n limit: limit ?? 50,\n offset: offset ?? 0,\n });\n return jsonResult(data.emailTimeEntries);\n } catch (error) {\n ctx.logger.error('timecampus email_entries_list failed', { error: String(error) });\n return errorResult(\n `Failed to list email entries: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'email_entries_stats')),\n {\n title: 'Email Tracking Stats',\n description: 'Aggregate email-tracking stats over an optional date range / user.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n userId: z.string().optional().describe('Filter by user ID'),\n },\n },\n async ({ startDate, endDate, userId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n emailTrackingStats: Record<string, unknown>;\n }>(ops.EMAIL_TRACKING_STATS, { startDate, endDate, userId });\n return jsonResult(data.emailTrackingStats);\n } catch (error) {\n ctx.logger.error('timecampus email_entries_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get email tracking stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'email_entries_create')),\n {\n title: 'Create Email Time Entry',\n description: 'Record an email-time entry. `date` is required.',\n inputSchema: emailEntryInputShape,\n },\n async (args) => {\n try {\n const data = await ctx.gql.workspace.request<{\n createEmailTimeEntry: Record<string, unknown>;\n }>(ops.CREATE_EMAIL_ENTRY, { input: buildEmailInput(args) });\n return jsonResult(data.createEmailTimeEntry);\n } catch (error) {\n ctx.logger.error('timecampus email_entries_create failed', { error: String(error) });\n return errorResult(\n `Failed to create email entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'email_entries_bulk_create')),\n {\n title: 'Bulk Create Email Time Entries',\n description: 'Record multiple email-time entries in one call. Each entry requires a `date`.',\n inputSchema: {\n inputs: z\n .array(\n z.object({\n date: z.string().describe('ISO date'),\n subject: z.string().optional(),\n sender: z.string().optional(),\n recipients: z.string().optional(),\n threadId: z.string().optional(),\n category: z.string().optional(),\n isImportant: z.boolean().optional(),\n duration: z.number().int().optional(),\n responseTime: z.number().int().optional(),\n }),\n )\n .min(1)\n .describe('Email entries to create'),\n },\n },\n async ({ inputs }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n bulkCreateEmailTimeEntries: Array<Record<string, unknown>>;\n }>(ops.BULK_CREATE_EMAIL_ENTRIES, { inputs });\n return jsonResult(data.bulkCreateEmailTimeEntries);\n } catch (error) {\n ctx.logger.error('timecampus email_entries_bulk_create failed', { error: String(error) });\n return errorResult(\n `Failed to bulk-create email entries: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'email_entries_update')),\n {\n title: 'Update Email Time Entry',\n description: 'Update an email-time entry. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Email time entry ID'),\n date: z.string().optional().describe('Updated ISO date'),\n subject: z.string().optional().describe('Updated subject'),\n sender: z.string().optional().describe('Updated sender'),\n recipients: z.string().optional().describe('Updated recipients'),\n threadId: z.string().optional().describe('Updated thread ID'),\n category: z.string().optional().describe('Updated category'),\n isImportant: z.boolean().optional().describe('Updated important flag'),\n duration: z.number().int().optional().describe('Updated duration (seconds)'),\n responseTime: z.number().int().optional().describe('Updated response time (seconds)'),\n },\n },\n async ({\n id,\n date,\n subject,\n sender,\n recipients,\n threadId,\n category,\n isImportant,\n duration,\n responseTime,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (date !== undefined) input.date = date;\n if (subject !== undefined) input.subject = subject;\n if (sender !== undefined) input.sender = sender;\n if (recipients !== undefined) input.recipients = recipients;\n if (threadId !== undefined) input.threadId = threadId;\n if (category !== undefined) input.category = category;\n if (isImportant !== undefined) input.isImportant = isImportant;\n if (duration !== undefined) input.duration = duration;\n if (responseTime !== undefined) input.responseTime = responseTime;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateEmailTimeEntry: Record<string, unknown>;\n }>(ops.UPDATE_EMAIL_ENTRY, { id, input });\n return jsonResult(data.updateEmailTimeEntry);\n } catch (error) {\n ctx.logger.error('timecampus email_entries_update failed', { error: String(error) });\n return errorResult(\n `Failed to update email entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'email_entries_delete')),\n {\n title: 'Delete Email Time Entry',\n description: 'Delete an email-time entry by ID.',\n inputSchema: { id: z.string().describe('Email time entry ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteEmailTimeEntry: Record<string, unknown>;\n }>(ops.DELETE_EMAIL_ENTRY, { id });\n return jsonResult(data.deleteEmailTimeEntry);\n } catch (error) {\n ctx.logger.error('timecampus email_entries_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete email entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus configuration + UI-session tools.\n *\n * Surface (13): config_{get,get_by_key,value,list,set,bulk_set,update,delete}\n * and ui_session_{get,by_user,save,update,clear}. Workspace scoping comes from\n * the gateway headers.\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 { ConfigScopeEnum, JsonObject } from './shared.js';\n\nexport function registerConfigTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Configuration ───────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_get')),\n {\n title: 'Get Configuration',\n description: 'Fetch a single configuration entry by ID.',\n inputSchema: { id: z.string().describe('Configuration ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeCampusConfiguration: Record<string, unknown> | null;\n }>(ops.GET_CONFIG, { id });\n if (!data.timeCampusConfiguration) return errorResult(`Configuration ${id} not found`);\n return jsonResult(data.timeCampusConfiguration);\n } catch (error) {\n ctx.logger.error('timecampus config_get failed', { error: String(error) });\n return errorResult(\n `Failed to get configuration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_get_by_key')),\n {\n title: 'Get Configuration By Key',\n description: 'Fetch a configuration entry by key (optionally scoped).',\n inputSchema: {\n key: z.string().describe('Configuration key'),\n scope: ConfigScopeEnum.optional().describe('Scope (GLOBAL/WORKSPACE/PROJECT/USER)'),\n scopeId: z.string().optional().describe('Scope ID (e.g. projectId/userId)'),\n },\n },\n async ({ key, scope, scopeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeCampusConfigurationByKey: Record<string, unknown> | null;\n }>(ops.GET_CONFIG_BY_KEY, { key, scope, scopeId });\n return jsonResult(data.timeCampusConfigurationByKey);\n } catch (error) {\n ctx.logger.error('timecampus config_get_by_key failed', { error: String(error) });\n return errorResult(\n `Failed to get configuration by key: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_value')),\n {\n title: 'Get Configuration Value',\n description: 'Fetch just the JSON value of a configuration key (optionally scoped).',\n inputSchema: {\n key: z.string().describe('Configuration key'),\n scope: ConfigScopeEnum.optional().describe('Scope'),\n scopeId: z.string().optional().describe('Scope ID'),\n },\n },\n async ({ key, scope, scopeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ timeCampusConfigurationValue: unknown }>(\n ops.CONFIG_VALUE,\n { key, scope, scopeId },\n );\n return jsonResult({ value: data.timeCampusConfigurationValue });\n } catch (error) {\n ctx.logger.error('timecampus config_value failed', { error: String(error) });\n return errorResult(\n `Failed to get configuration value: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_list')),\n {\n title: 'List Configurations',\n description: 'List configuration entries with optional scope filter and pagination.',\n inputSchema: {\n scope: ConfigScopeEnum.optional().describe('Scope filter'),\n scopeId: z.string().optional().describe('Scope ID filter'),\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 ({ scope, scopeId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeCampusConfigurations: Array<Record<string, unknown>>;\n }>(ops.LIST_CONFIGS, { scope, scopeId, limit: limit ?? 50, offset: offset ?? 0 });\n return jsonResult(data.timeCampusConfigurations);\n } catch (error) {\n ctx.logger.error('timecampus config_list failed', { error: String(error) });\n return errorResult(\n `Failed to list configurations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_set')),\n {\n title: 'Set Configuration',\n description: 'Set (upsert) a configuration key. `key` and `value` are required.',\n inputSchema: {\n key: z.string().min(1).describe('Configuration key'),\n value: JsonObject.describe('Configuration value JSON'),\n scope: ConfigScopeEnum.optional().describe('Scope (default WORKSPACE)'),\n scopeId: z.string().optional().describe('Scope ID'),\n description: z.string().optional().describe('Description'),\n isSecret: z.boolean().optional().describe('Whether the value is secret (default false)'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({ key, value, scope, scopeId, description, isSecret, context }) => {\n try {\n const input: Record<string, unknown> = { key, value };\n if (scope !== undefined) input.scope = scope;\n if (scopeId !== undefined) input.scopeId = scopeId;\n if (description !== undefined) input.description = description;\n if (isSecret !== undefined) input.isSecret = isSecret;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n setTimeCampusConfiguration: Record<string, unknown>;\n }>(ops.SET_CONFIG, { input });\n return jsonResult(data.setTimeCampusConfiguration);\n } catch (error) {\n ctx.logger.error('timecampus config_set failed', { error: String(error) });\n return errorResult(\n `Failed to set configuration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_bulk_set')),\n {\n title: 'Bulk Set Configurations',\n description: 'Set (upsert) multiple configuration keys in one call.',\n inputSchema: {\n inputs: z\n .array(\n z.object({\n key: z.string().describe('Configuration key'),\n value: JsonObject.describe('Value JSON'),\n scope: ConfigScopeEnum.optional(),\n scopeId: z.string().optional(),\n description: z.string().optional(),\n isSecret: z.boolean().optional(),\n }),\n )\n .min(1)\n .describe('Configuration entries to set'),\n },\n },\n async ({ inputs }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n bulkSetTimeCampusConfigurations: Array<Record<string, unknown>>;\n }>(ops.BULK_SET_CONFIGS, { inputs });\n return jsonResult(data.bulkSetTimeCampusConfigurations);\n } catch (error) {\n ctx.logger.error('timecampus config_bulk_set failed', { error: String(error) });\n return errorResult(\n `Failed to bulk-set configurations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_update')),\n {\n title: 'Update Configuration',\n description: 'Update a configuration entry. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Configuration ID'),\n value: JsonObject.optional().describe('Updated value JSON'),\n description: z.string().optional().describe('Updated description'),\n isSecret: z.boolean().optional().describe('Updated secret flag'),\n context: JsonObject.optional().describe('Updated context JSON'),\n },\n },\n async ({ id, value, description, isSecret, context }) => {\n try {\n const input: Record<string, unknown> = {};\n if (value !== undefined) input.value = value;\n if (description !== undefined) input.description = description;\n if (isSecret !== undefined) input.isSecret = isSecret;\n if (context !== undefined) input.context = context;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateTimeCampusConfiguration: Record<string, unknown>;\n }>(ops.UPDATE_CONFIG, { id, input });\n return jsonResult(data.updateTimeCampusConfiguration);\n } catch (error) {\n ctx.logger.error('timecampus config_update failed', { error: String(error) });\n return errorResult(\n `Failed to update configuration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_delete')),\n {\n title: 'Delete Configuration',\n description: 'Delete a configuration entry by ID.',\n inputSchema: { id: z.string().describe('Configuration ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteTimeCampusConfiguration: Record<string, unknown>;\n }>(ops.DELETE_CONFIG, { id });\n return jsonResult(data.deleteTimeCampusConfiguration);\n } catch (error) {\n ctx.logger.error('timecampus config_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete configuration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── UI session ──────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ui_session_get')),\n {\n title: 'Get UI Session',\n description: 'Fetch the calling user’s saved UI session (view, preferences, state).',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeCampusUISession: Record<string, unknown> | null;\n }>(ops.GET_UI_SESSION, {});\n return jsonResult(data.timeCampusUISession);\n } catch (error) {\n ctx.logger.error('timecampus ui_session_get failed', { error: String(error) });\n return errorResult(\n `Failed to get UI session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ui_session_by_user')),\n {\n title: 'Get UI Session By User',\n description: 'Fetch a specific user’s saved UI session.',\n inputSchema: { userId: z.string().describe('User ID') },\n },\n async ({ userId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeCampusUISessionByUser: Record<string, unknown> | null;\n }>(ops.UI_SESSION_BY_USER, { userId });\n return jsonResult(data.timeCampusUISessionByUser);\n } catch (error) {\n ctx.logger.error('timecampus ui_session_by_user failed', { error: String(error) });\n return errorResult(\n `Failed to get UI session by user: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ui_session_save')),\n {\n title: 'Save UI Session',\n description: 'Save (upsert) the calling user’s UI session.',\n inputSchema: {\n activeView: z.string().optional().describe('Active view'),\n preferences: JsonObject.optional().describe('Preferences JSON'),\n state: JsonObject.optional().describe('State JSON'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({ activeView, preferences, state, context }) => {\n try {\n const input: Record<string, unknown> = {};\n if (activeView !== undefined) input.activeView = activeView;\n if (preferences !== undefined) input.preferences = preferences;\n if (state !== undefined) input.state = state;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n saveTimeCampusUISession: Record<string, unknown>;\n }>(ops.SAVE_UI_SESSION, { input });\n return jsonResult(data.saveTimeCampusUISession);\n } catch (error) {\n ctx.logger.error('timecampus ui_session_save failed', { error: String(error) });\n return errorResult(\n `Failed to save UI session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ui_session_update')),\n {\n title: 'Update UI Session',\n description: 'Update a UI session by ID. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('UI session ID'),\n activeView: z.string().optional().describe('Updated active view'),\n preferences: JsonObject.optional().describe('Updated preferences JSON'),\n state: JsonObject.optional().describe('Updated state JSON'),\n },\n },\n async ({ id, activeView, preferences, state }) => {\n try {\n const input: Record<string, unknown> = {};\n if (activeView !== undefined) input.activeView = activeView;\n if (preferences !== undefined) input.preferences = preferences;\n if (state !== undefined) input.state = state;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateTimeCampusUISession: Record<string, unknown>;\n }>(ops.UPDATE_UI_SESSION, { id, input });\n return jsonResult(data.updateTimeCampusUISession);\n } catch (error) {\n ctx.logger.error('timecampus ui_session_update failed', { error: String(error) });\n return errorResult(\n `Failed to update UI session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ui_session_clear')),\n {\n title: 'Clear UI Session',\n description: 'Clear the calling user’s saved UI session.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ clearTimeCampusUISession: boolean }>(\n ops.CLEAR_UI_SESSION,\n {},\n );\n return jsonResult({ cleared: data.clearTimeCampusUISession });\n } catch (error) {\n ctx.logger.error('timecampus ui_session_clear failed', { error: String(error) });\n return errorResult(\n `Failed to clear UI session: ${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_PROJECTS, RUNNING_TIMERS, TIME_ENTRY_STATS } from './operations.js';\n\n/**\n * Read-only Timecampus 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 registerTimecampusResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const statsUri = track(mcpResourceUri(ctx.productName, 'stats'));\n const timersUri = track(mcpResourceUri(ctx.productName, 'timers'));\n const projectsUri = track(mcpResourceUri(ctx.productName, 'projects'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'timecampus-schema',\n schemaUri,\n {\n title: 'Timecampus Domain Schema',\n description:\n 'Overview of the Timecampus time-tracking & productivity 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 = `# Timecampus Domain (Overview)\n\nTime tracking, productivity analytics & resource planning for workspaces.\n\n## Entities\n- TimeEntry (+ timers / RunningTimer) — the core tracked-time record\n- TimeCampusProject + Task — project board with tasks\n- MeetingMeta (+ MeetingParticipant, MeetingActionItem) — meeting tracking\n- PomodoroSession / PomodoroGoal / PomodoroSettings — focus timers\n- ExpenseEntry — billable/reimbursable expenses\n- TimeApprovalRequest — period time-sheet approvals\n- ResourcePlan + ResourceAllocation — capacity planning\n- FocusScore / WorkPattern / ApplicationUsage — productivity analytics\n- Geofence (+ GeofenceEvent) / LocationEntry — location-based tracking\n- ChannelConfig — capture channels (CLI/IDE/Browser/Mobile/…)\n- ClientPortalConfig — external client portals\n- EmailTimeEntry — email-time tracking\n- TimeCampusConfiguration / TimeCampusUISession — config + UI state\n\n## Workspace scoping\nMost fields scope via the gateway headers (no explicit workspaceId). The\nmeeting, expense and pomodoro fields take an EXPLICIT workspaceId argument\n(create-inputs carry it inside the input) — match the tool's required args.\n\n## Pagination\n{ limit, offset }. Many list queries return a *ListResponse object\n({ items, total, hasMore }); others return a bare array.\n\n## Tool groups\ntimeentries/timers, projects, tasks, meetings, pomodoro, expenses, approvals,\nresource_plans/resource_allocations, focus, workpatterns, appusage,\ngeofences/locations, channels, client_portals, email_entries, config/ui_session.\nThe subgraph exposes no @public health field (only federation _empty), so there\nis intentionally no health tool.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://stats — headline time-entry stats\n server.registerResource(\n 'timecampus-stats',\n statsUri,\n {\n title: 'Timecampus Time Stats',\n description: 'Live headline time-entry stats (entries, total/billable hours, active timers).',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${statsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ timeEntryStats: unknown }>(\n TIME_ENTRY_STATS,\n {},\n );\n return {\n contents: [\n {\n uri: statsUri,\n text: JSON.stringify(data.timeEntryStats, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: statsUri,\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>://timers — currently-running timers\n server.registerResource(\n 'timecampus-timers',\n timersUri,\n {\n title: 'Timecampus Running Timers',\n description: 'The timers currently running in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${timersUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ runningTimers: unknown }>(\n RUNNING_TIMERS,\n {},\n );\n return {\n contents: [\n {\n uri: timersUri,\n text: JSON.stringify(data.runningTimers, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: timersUri,\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>://projects — project directory\n server.registerResource(\n 'timecampus-projects',\n projectsUri,\n {\n title: 'Timecampus Project Directory',\n description: 'The first 50 projects in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${projectsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ timeCampusProjects: unknown }>(\n LIST_PROJECTS,\n {\n limit: 50,\n offset: 0,\n },\n );\n return {\n contents: [\n {\n uri: projectsUri,\n text: JSON.stringify(data.timeCampusProjects, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: projectsUri,\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 * Timecampus MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerTimecampusPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const setupName = track(mcpPromptName(p, 'project-setup'));\n const reviewName = track(mcpPromptName(p, 'time-review'));\n\n // <product>-project-setup — stand up a project + tasks + tracking\n server.registerPrompt(\n setupName,\n {\n title: 'Project Setup',\n description:\n 'Guide for setting up a new Timecampus project end to end: create the project, seed its task board, and start tracking time against it.',\n argsSchema: {\n name: z.string().optional().describe('Project name'),\n clientId: z.string().optional().describe('Client to bill against'),\n },\n },\n ({ name, clientId }) => {\n ctx.logger.debug(`Prompt ${setupName} called`, { name, clientId });\n const nameNote = name\n ? `Use the project name \"${name}\".`\n : 'Ask the user for the project name.';\n const clientNote = clientId ? `Bill against clientId ${clientId}.` : '';\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 Timecampus project.\n\n1. **Create Project**: Use ${p}_projects_create. ${nameNote} ${clientNote} Optionally set budget, currency, hourlyRate and estimatedHours.\n2. **Seed Tasks**: Use ${p}_tasks_create for each task — set title, priority and an optional dueDate; pass the new projectId.\n3. **Order the Board**: Use ${p}_tasks_reorder to set the task order.\n4. **Start Tracking**: Use ${p}_timers_start (projectId + taskId) to begin a live timer, or ${p}_timeentries_create to log a closed entry.\n5. **Verify**: Use ${p}_tasks_list (projectId) and ${p}_projects_stats to confirm.\n\nShow results at each step and confirm before starting timers.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-time-review — periodic time / productivity review\n server.registerPrompt(\n reviewName,\n {\n title: 'Time & Productivity Review',\n description:\n 'Periodic review workflow: examine tracked time, productivity analytics, pending approvals, and submit a time sheet.',\n argsSchema: {\n workspaceId: z\n .string()\n .optional()\n .describe('Workspace ID (needed for meeting/pomodoro tools)'),\n period: z.string().optional().describe('Period label, e.g. \"2026-W26\"'),\n },\n },\n ({ workspaceId, period }) => {\n ctx.logger.debug(`Prompt ${reviewName} called`, { workspaceId, period });\n const wsNote = workspaceId\n ? `Use workspaceId \"${workspaceId}\" for meeting/pomodoro tools.`\n : `Meeting and pomodoro tools need a workspaceId — ask the user for it.`;\n const periodNote = period\n ? `Review the period \"${period}\".`\n : 'Ask for the period to review.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run a Timecampus time & productivity review. ${periodNote} ${wsNote}\n\n1. **Tracked Time**: Use ${p}_timeentries_stats and ${p}_timeentries_list (date range) to total hours and billable hours.\n2. **Productivity**: Use ${p}_focus_summary, ${p}_workpatterns_summary and ${p}_appusage_summary to inspect focus, work patterns and app usage.\n3. **Meetings**: Use ${p}_meetings_stats (workspaceId) to gauge meeting load and unfinished action items.\n4. **Expenses**: Use ${p}_expenses_stats (workspaceId) to see pending vs approved spend.\n5. **Approvals**: Use ${p}_approvals_pending to triage, then ${p}_approvals_submit to submit the period's time sheet.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Timecampus module — domain module for the future-products ecosystem program.\n *\n * Covers the full @key-entity surface of wspace-timecampus-svc grouped into\n * per-entity sub-APIs: time entries/timers, projects, tasks, meetings, pomodoro,\n * expenses, approvals, resourcing, focus scores, work patterns, application\n * usage, location (geofences/locations), channels, client portals, email\n * tracking, and configuration/UI session. Mirrors the rich kadaikodi /\n * crewfoundry modules' structure (tools/<entity>.ts + resources.ts + prompts.ts)\n * and the canonical tags module's typing discipline.\n *\n * Backend: ~/products/wspace/timecampus/wspace-timecampus-svc/ (Hive service\n * name `timecampus`). All operations run against the WORKSPACE gateway. The\n * subgraph exposes NO @public health field (only the federation `_empty` noop),\n * so there is intentionally no health tool.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerTimeEntryTools } from './tools/timeentries.js';\nimport { registerProjectTools } from './tools/projects.js';\nimport { registerTaskTools } from './tools/tasks.js';\nimport { registerMeetingTools } from './tools/meetings.js';\nimport { registerPomodoroTools } from './tools/pomodoro.js';\nimport { registerExpenseTools } from './tools/expenses.js';\nimport { registerApprovalTools } from './tools/approvals.js';\nimport { registerResourcingTools } from './tools/resourcing.js';\nimport { registerFocusTools } from './tools/focus.js';\nimport { registerWorkPatternTools } from './tools/workpatterns.js';\nimport { registerAppUsageTools } from './tools/appusage.js';\nimport { registerLocationTools } from './tools/location.js';\nimport { registerChannelTools } from './tools/channels.js';\nimport { registerClientPortalTools } from './tools/clientportal.js';\nimport { registerEmailTools } from './tools/email.js';\nimport { registerConfigTools } from './tools/config.js';\nimport { registerTimecampusResources } from './resources.js';\nimport { registerTimecampusPrompts } from './prompts.js';\n\nconst timecampusModule: McpModule = {\n id: 'timecampus',\n version: '0.0.1',\n displayName: 'Timecampus',\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 registerTimeEntryTools(server, ctx, trackTool);\n registerProjectTools(server, ctx, trackTool);\n registerTaskTools(server, ctx, trackTool);\n registerMeetingTools(server, ctx, trackTool);\n registerPomodoroTools(server, ctx, trackTool);\n registerExpenseTools(server, ctx, trackTool);\n registerApprovalTools(server, ctx, trackTool);\n registerResourcingTools(server, ctx, trackTool);\n registerFocusTools(server, ctx, trackTool);\n registerWorkPatternTools(server, ctx, trackTool);\n registerAppUsageTools(server, ctx, trackTool);\n registerLocationTools(server, ctx, trackTool);\n registerChannelTools(server, ctx, trackTool);\n registerClientPortalTools(server, ctx, trackTool);\n registerEmailTools(server, ctx, trackTool);\n registerConfigTools(server, ctx, trackTool);\n\n registerTimecampusResources(server, ctx, trackResource);\n registerTimecampusPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default timecampusModule;\n"]}
1
+ {"version":3,"sources":["../../../src/modules/timecampus/operations.ts","../../../src/modules/timecampus/tools/shared.ts","../../../src/modules/timecampus/tools/timeentries.ts","../../../src/modules/timecampus/tools/projects.ts","../../../src/modules/timecampus/tools/tasks.ts","../../../src/modules/timecampus/tools/meetings.ts","../../../src/modules/timecampus/tools/pomodoro.ts","../../../src/modules/timecampus/tools/expenses.ts","../../../src/modules/timecampus/tools/approvals.ts","../../../src/modules/timecampus/tools/resourcing.ts","../../../src/modules/timecampus/tools/focus.ts","../../../src/modules/timecampus/tools/workpatterns.ts","../../../src/modules/timecampus/tools/appusage.ts","../../../src/modules/timecampus/tools/location.ts","../../../src/modules/timecampus/tools/channels.ts","../../../src/modules/timecampus/tools/clientportal.ts","../../../src/modules/timecampus/tools/email.ts","../../../src/modules/timecampus/tools/config.ts","../../../src/modules/timecampus/resources.ts","../../../src/modules/timecampus/prompts.ts","../../../src/modules/timecampus/index.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Centralized GraphQL operations for the Timecampus MCP module.\n *\n * Timecampus is the time-tracking, productivity & resource-planning workspace\n * product (future-products ecosystem). Backend subgraph:\n * ~/products/wspace/timecampus/wspace-timecampus-svc/ (Hive service name\n * `timecampus`).\n *\n * All operations run against the WORKSPACE gateway. Unlike kadaikodi, many\n * Timecampus root fields take an EXPLICIT `workspaceId: ID!` argument (meetings,\n * expenses, pomodoro) or carry it inside their create-input — those are wired\n * through verbatim to match the real schema. Pagination is `{ limit, offset }`\n * and most list queries return either a bare array or a `*ListResponse`\n * ({ items, total, hasMore }) object.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical kadaikodi / crewfoundry modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const TIME_ENTRY_FIELDS = `\n id description startTime endTime duration billable hourlyRate notes source\n isRunning projectId taskId workspaceId createdBy createdAt updatedAt\n`;\n\nexport const PROJECT_FIELDS = `\n id name description status color budget currency hourlyRate estimatedHours\n trackedHours clientId workspaceId createdBy createdAt updatedAt\n`;\n\nexport const TASK_FIELDS = `\n id title description status priority order projectId assigneeId dueDate\n estimatedHours trackedHours completedAt workspaceId createdAt updatedAt\n`;\n\nexport const MEETING_FIELDS = `\n id title meetingType startTime endTime duration cost rating notes recordingUrl\n calendarEventId workspaceId createdAt updatedAt\n`;\n\nexport const MEETING_PARTICIPANT_FIELDS = `\n id meetingMetaId userId role status workspaceId createdAt updatedAt\n`;\n\nexport const MEETING_ACTION_ITEM_FIELDS = `\n id meetingMetaId title notes status assigneeId dueDate completedAt\n workspaceId createdAt updatedAt\n`;\n\nexport const POMODORO_SESSION_FIELDS = `\n id type startTime endTime duration completed interrupted interruptions notes\n projectId taskId userId workspaceId createdAt updatedAt\n`;\n\nexport const POMODORO_GOAL_FIELDS = `\n id type period target current startDate endDate userId workspaceId\n createdAt updatedAt\n`;\n\nexport const POMODORO_SETTINGS_FIELDS = `\n id focusDuration shortBreakDuration longBreakDuration sessionsBeforeLongBreak\n autoStartBreaks autoStartFocus soundEnabled notificationsEnabled userId\n workspaceId createdAt updatedAt\n`;\n\nexport const EXPENSE_FIELDS = `\n id amount currency category description notes date status projectId receiptUrl\n approvedBy approvedAt userId workspaceId createdAt updatedAt\n`;\n\nexport const APPROVAL_FIELDS = `\n id period startDate endDate totalHours billableHours status approverId reviewer\n reviewerNotes submittedAt reviewedAt userId workspaceId createdAt updatedAt\n`;\n\nexport const RESOURCE_PLAN_FIELDS = `\n id name description status startDate endDate totalAllocatedHours\n totalActualHours workspaceId createdAt updatedAt\n`;\n\nexport const RESOURCE_ALLOCATION_FIELDS = `\n id resourcePlanId userId projectId allocatedHours actualHours utilizationRate\n startDate endDate notes workspaceId createdAt updatedAt\n`;\n\nexport const FOCUS_SCORE_FIELDS = `\n id date overallScore deepWorkScore distractionResistanceScore\n taskCompletionScore energyManagementScore consistencyScore factors userId\n workspaceId createdAt updatedAt\n`;\n\nexport const WORK_PATTERN_FIELDS = `\n id date focusHours meetingHours breakHours deepWorkSessions interruptions\n productivityScore energyLevel mood stressLevel peakHours userId workspaceId\n createdAt updatedAt\n`;\n\nexport const APP_USAGE_FIELDS = `\n id applicationName category date timeSpent sessions switches firstUsed\n lastUsed userId workspaceId createdAt updatedAt\n`;\n\nexport const GEOFENCE_FIELDS = `\n id name address latitude longitude radius trigger isActive linkedProjectId\n workspaceId createdAt updatedAt\n`;\n\nexport const GEOFENCE_EVENT_FIELDS = `\n id geofenceId type userId locationLatitude locationLongitude timestamp\n workspaceId createdAt updatedAt\n`;\n\nexport const LOCATION_ENTRY_FIELDS = `\n id latitude longitude accuracy address startTime endTime duration geofenceId\n projectId userId workspaceId createdAt updatedAt\n`;\n\nexport const CHANNEL_FIELDS = `\n id name type status syncInterval lastSync settings workspaceId\n createdAt updatedAt\n`;\n\nexport const CLIENT_PORTAL_FIELDS = `\n id clientName description contactEmail contactPhone logoUrl isActive\n permissions settings workspaceId createdAt updatedAt\n`;\n\nexport const EMAIL_ENTRY_FIELDS = `\n id subject sender recipients threadId category isImportant duration\n responseTime date userId workspaceId createdAt updatedAt\n`;\n\nexport const CONFIG_FIELDS = `\n id key value scope scopeId description isSecret workspaceId createdAt updatedAt\n`;\n\nexport const UI_SESSION_FIELDS = `\n id activeView preferences state userId workspaceId createdAt updatedAt\n`;\n\n// ---------------------------------------------------------------------------\n// Time entries + timers\n// ---------------------------------------------------------------------------\n\nexport const GET_TIME_ENTRY = `\n query TimecampusGetTimeEntry($id: ID!) {\n timeEntry(id: $id) { ${TIME_ENTRY_FIELDS} }\n }\n`;\n\nexport const LIST_TIME_ENTRIES = `\n query TimecampusListTimeEntries(\n $filter: TimeEntryFilterInput\n $limit: Int\n $offset: Int\n $orderBy: TimeEntryOrderByInput\n ) {\n timeEntries(filter: $filter, limit: $limit, offset: $offset, orderBy: $orderBy) {\n total hasMore items { ${TIME_ENTRY_FIELDS} }\n }\n }\n`;\n\nexport const TIME_ENTRIES_BY_DATE = `\n query TimecampusTimeEntriesByDate($date: DateTime!) {\n timeEntriesByDate(date: $date) { ${TIME_ENTRY_FIELDS} }\n }\n`;\n\nexport const TIME_ENTRY_COUNT = `\n query TimecampusTimeEntryCount($filter: TimeEntryFilterInput) {\n timeEntryCount(filter: $filter)\n }\n`;\n\nexport const TIME_ENTRY_STATS = `\n query TimecampusTimeEntryStats($startDate: DateTime, $endDate: DateTime) {\n timeEntryStats(startDate: $startDate, endDate: $endDate) {\n totalEntries totalHours billableHours activeTimers\n }\n }\n`;\n\nexport const RUNNING_TIMERS = `\n query TimecampusRunningTimers {\n runningTimers { elapsedSeconds timeEntry { ${TIME_ENTRY_FIELDS} } }\n }\n`;\n\nexport const CREATE_TIME_ENTRY = `\n mutation TimecampusCreateTimeEntry($input: CreateTimeEntryInput!) {\n createTimeEntry(input: $input) { ${TIME_ENTRY_FIELDS} }\n }\n`;\n\nexport const UPDATE_TIME_ENTRY = `\n mutation TimecampusUpdateTimeEntry($id: ID!, $input: UpdateTimeEntryInput!) {\n updateTimeEntry(id: $id, input: $input) { ${TIME_ENTRY_FIELDS} }\n }\n`;\n\nexport const DELETE_TIME_ENTRY = `\n mutation TimecampusDeleteTimeEntry($id: ID!) {\n deleteTimeEntry(id: $id) { ${TIME_ENTRY_FIELDS} }\n }\n`;\n\nexport const BULK_DELETE_TIME_ENTRIES = `\n mutation TimecampusBulkDeleteTimeEntries($ids: [ID!]!) {\n bulkDeleteTimeEntries(ids: $ids)\n }\n`;\n\nexport const DUPLICATE_TIME_ENTRY = `\n mutation TimecampusDuplicateTimeEntry($id: ID!) {\n duplicateTimeEntry(id: $id) { ${TIME_ENTRY_FIELDS} }\n }\n`;\n\nexport const START_TIMER = `\n mutation TimecampusStartTimer($input: StartTimerInput!) {\n startTimer(input: $input) { ${TIME_ENTRY_FIELDS} }\n }\n`;\n\nexport const STOP_TIMER = `\n mutation TimecampusStopTimer($id: ID!) {\n stopTimer(id: $id) { ${TIME_ENTRY_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Projects\n// ---------------------------------------------------------------------------\n\nexport const GET_PROJECT = `\n query TimecampusGetProject($id: ID!) {\n timeCampusProject(id: $id) {\n ${PROJECT_FIELDS}\n tasks { ${TASK_FIELDS} }\n }\n }\n`;\n\nexport const LIST_PROJECTS = `\n query TimecampusListProjects(\n $filter: TimeCampusProjectFilterInput\n $limit: Int\n $offset: Int\n $orderBy: TimeCampusProjectOrderByInput\n ) {\n timeCampusProjects(filter: $filter, limit: $limit, offset: $offset, orderBy: $orderBy) {\n total hasMore items { ${PROJECT_FIELDS} }\n }\n }\n`;\n\nexport const PROJECT_STATS = `\n query TimecampusProjectStats($id: ID!) {\n timeCampusProjectStats(id: $id) {\n totalTasks completedTasks totalHours budgetUsed budgetRemaining\n }\n }\n`;\n\nexport const CREATE_PROJECT = `\n mutation TimecampusCreateProject($input: CreateTimeCampusProjectInput!) {\n createTimeCampusProject(input: $input) { ${PROJECT_FIELDS} }\n }\n`;\n\nexport const UPDATE_PROJECT = `\n mutation TimecampusUpdateProject($id: ID!, $input: UpdateTimeCampusProjectInput!) {\n updateTimeCampusProject(id: $id, input: $input) { ${PROJECT_FIELDS} }\n }\n`;\n\nexport const ARCHIVE_PROJECT = `\n mutation TimecampusArchiveProject($id: ID!) {\n archiveTimeCampusProject(id: $id) { ${PROJECT_FIELDS} }\n }\n`;\n\nexport const DELETE_PROJECT = `\n mutation TimecampusDeleteProject($id: ID!) {\n deleteTimeCampusProject(id: $id) { ${PROJECT_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Tasks\n// ---------------------------------------------------------------------------\n\nexport const GET_TASK = `\n query TimecampusGetTask($id: ID!) {\n task(id: $id) { ${TASK_FIELDS} }\n }\n`;\n\nexport const LIST_TASKS = `\n query TimecampusListTasks(\n $projectId: ID!\n $filter: TaskFilterInput\n $limit: Int\n $offset: Int\n $orderBy: TaskOrderByInput\n ) {\n tasks(projectId: $projectId, filter: $filter, limit: $limit, offset: $offset, orderBy: $orderBy) {\n total hasMore items { ${TASK_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_TASK = `\n mutation TimecampusCreateTask($input: CreateTaskInput!) {\n createTask(input: $input) { ${TASK_FIELDS} }\n }\n`;\n\nexport const UPDATE_TASK = `\n mutation TimecampusUpdateTask($id: ID!, $input: UpdateTaskInput!) {\n updateTask(id: $id, input: $input) { ${TASK_FIELDS} }\n }\n`;\n\nexport const UPDATE_TASK_STATUS = `\n mutation TimecampusUpdateTaskStatus($id: ID!, $status: String!) {\n updateTaskStatus(id: $id, status: $status) { ${TASK_FIELDS} }\n }\n`;\n\nexport const REORDER_TASKS = `\n mutation TimecampusReorderTasks($projectId: ID!, $taskIds: [ID!]!) {\n reorderTasks(projectId: $projectId, taskIds: $taskIds) { ${TASK_FIELDS} }\n }\n`;\n\nexport const DELETE_TASK = `\n mutation TimecampusDeleteTask($id: ID!) {\n deleteTask(id: $id) { ${TASK_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Meetings (+ participants + action items)\n// ---------------------------------------------------------------------------\n\nexport const GET_MEETING = `\n query TimecampusGetMeeting($id: ID!, $workspaceId: ID!) {\n meeting(id: $id, workspaceId: $workspaceId) {\n ${MEETING_FIELDS}\n participants { ${MEETING_PARTICIPANT_FIELDS} }\n actionItems { ${MEETING_ACTION_ITEM_FIELDS} }\n }\n }\n`;\n\nexport const LIST_MEETINGS = `\n query TimecampusListMeetings(\n $workspaceId: ID!\n $filter: MeetingFilterInput\n $limit: Int\n $offset: Int\n $orderBy: MeetingOrderByInput\n ) {\n meetings(workspaceId: $workspaceId, filter: $filter, limit: $limit, offset: $offset, orderBy: $orderBy) {\n ${MEETING_FIELDS}\n }\n }\n`;\n\nexport const MEETING_STATS = `\n query TimecampusMeetingStats($workspaceId: ID!, $startDate: DateTime, $endDate: DateTime) {\n meetingStats(workspaceId: $workspaceId, startDate: $startDate, endDate: $endDate) {\n totalMeetings totalDuration averageDuration averageRating totalCost\n actionItemsTotal actionItemsCompleted\n }\n }\n`;\n\nexport const UPCOMING_MEETINGS = `\n query TimecampusUpcomingMeetings($workspaceId: ID!, $limit: Int) {\n upcomingMeetings(workspaceId: $workspaceId, limit: $limit) { ${MEETING_FIELDS} }\n }\n`;\n\nexport const CREATE_MEETING = `\n mutation TimecampusCreateMeeting($input: CreateMeetingInput!) {\n createMeeting(input: $input) { ${MEETING_FIELDS} }\n }\n`;\n\nexport const UPDATE_MEETING = `\n mutation TimecampusUpdateMeeting($id: ID!, $input: UpdateMeetingInput!, $workspaceId: ID!) {\n updateMeeting(id: $id, input: $input, workspaceId: $workspaceId) { ${MEETING_FIELDS} }\n }\n`;\n\nexport const DELETE_MEETING = `\n mutation TimecampusDeleteMeeting($id: ID!, $workspaceId: ID!) {\n deleteMeeting(id: $id, workspaceId: $workspaceId)\n }\n`;\n\nexport const RATE_MEETING = `\n mutation TimecampusRateMeeting($id: ID!, $rating: Int!, $workspaceId: ID!) {\n rateMeeting(id: $id, rating: $rating, workspaceId: $workspaceId) { ${MEETING_FIELDS} }\n }\n`;\n\nexport const ADD_MEETING_PARTICIPANT = `\n mutation TimecampusAddMeetingParticipant(\n $input: AddMeetingParticipantInput!\n $meetingId: ID!\n $workspaceId: ID!\n ) {\n addMeetingParticipant(input: $input, meetingId: $meetingId, workspaceId: $workspaceId) {\n ${MEETING_PARTICIPANT_FIELDS}\n }\n }\n`;\n\nexport const REMOVE_MEETING_PARTICIPANT = `\n mutation TimecampusRemoveMeetingParticipant($meetingId: ID!, $participantId: ID!, $workspaceId: ID!) {\n removeMeetingParticipant(meetingId: $meetingId, participantId: $participantId, workspaceId: $workspaceId)\n }\n`;\n\nexport const UPDATE_PARTICIPANT_STATUS = `\n mutation TimecampusUpdateParticipantStatus(\n $meetingId: ID!\n $participantId: ID!\n $status: MeetingParticipantStatus!\n $workspaceId: ID!\n ) {\n updateParticipantStatus(\n meetingId: $meetingId\n participantId: $participantId\n status: $status\n workspaceId: $workspaceId\n ) {\n ${MEETING_PARTICIPANT_FIELDS}\n }\n }\n`;\n\nexport const CREATE_ACTION_ITEM = `\n mutation TimecampusCreateActionItem($input: CreateActionItemInput!, $meetingId: ID!, $workspaceId: ID!) {\n createActionItem(input: $input, meetingId: $meetingId, workspaceId: $workspaceId) {\n ${MEETING_ACTION_ITEM_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_ACTION_ITEM = `\n mutation TimecampusUpdateActionItem($id: ID!, $input: UpdateActionItemInput!, $workspaceId: ID!) {\n updateActionItem(id: $id, input: $input, workspaceId: $workspaceId) {\n ${MEETING_ACTION_ITEM_FIELDS}\n }\n }\n`;\n\nexport const COMPLETE_ACTION_ITEM = `\n mutation TimecampusCompleteActionItem($id: ID!, $workspaceId: ID!) {\n completeActionItem(id: $id, workspaceId: $workspaceId) { ${MEETING_ACTION_ITEM_FIELDS} }\n }\n`;\n\nexport const DELETE_ACTION_ITEM = `\n mutation TimecampusDeleteActionItem($id: ID!, $workspaceId: ID!) {\n deleteActionItem(id: $id, workspaceId: $workspaceId)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Pomodoro (sessions + goals + settings)\n// ---------------------------------------------------------------------------\n\nexport const ACTIVE_POMODORO_SESSION = `\n query TimecampusActivePomodoroSession($workspaceId: ID!) {\n activePomodoroSession(workspaceId: $workspaceId) { ${POMODORO_SESSION_FIELDS} }\n }\n`;\n\nexport const GET_POMODORO_SESSION = `\n query TimecampusGetPomodoroSession($id: ID!, $workspaceId: ID!) {\n pomodoroSession(id: $id, workspaceId: $workspaceId) { ${POMODORO_SESSION_FIELDS} }\n }\n`;\n\nexport const LIST_POMODORO_SESSIONS = `\n query TimecampusListPomodoroSessions(\n $workspaceId: ID!\n $filter: PomodoroSessionFilterInput\n $limit: Int\n $offset: Int\n $orderBy: PomodoroSessionOrderByInput\n ) {\n pomodoroSessions(\n workspaceId: $workspaceId\n filter: $filter\n limit: $limit\n offset: $offset\n orderBy: $orderBy\n ) {\n ${POMODORO_SESSION_FIELDS}\n }\n }\n`;\n\nexport const POMODORO_STATS = `\n query TimecampusPomodoroStats($workspaceId: ID!, $startDate: DateTime, $endDate: DateTime) {\n pomodoroStats(workspaceId: $workspaceId, startDate: $startDate, endDate: $endDate) {\n totalSessions completedSessions totalFocusMinutes averageSessionMinutes\n completionRate streakDays\n }\n }\n`;\n\nexport const POMODORO_GOALS = `\n query TimecampusPomodoroGoals($workspaceId: ID!) {\n pomodoroGoals(workspaceId: $workspaceId) { ${POMODORO_GOAL_FIELDS} }\n }\n`;\n\nexport const POMODORO_SETTINGS = `\n query TimecampusPomodoroSettings($workspaceId: ID!) {\n pomodoroSettings(workspaceId: $workspaceId) { ${POMODORO_SETTINGS_FIELDS} }\n }\n`;\n\nexport const START_POMODORO_SESSION = `\n mutation TimecampusStartPomodoroSession($input: StartPomodoroSessionInput!) {\n startPomodoroSession(input: $input) { ${POMODORO_SESSION_FIELDS} }\n }\n`;\n\nexport const COMPLETE_POMODORO_SESSION = `\n mutation TimecampusCompletePomodoroSession($id: ID!, $workspaceId: ID!) {\n completePomodoroSession(id: $id, workspaceId: $workspaceId) { ${POMODORO_SESSION_FIELDS} }\n }\n`;\n\nexport const INTERRUPT_POMODORO_SESSION = `\n mutation TimecampusInterruptPomodoroSession($id: ID!, $reason: String, $workspaceId: ID!) {\n interruptPomodoroSession(id: $id, reason: $reason, workspaceId: $workspaceId) {\n ${POMODORO_SESSION_FIELDS}\n }\n }\n`;\n\nexport const CREATE_POMODORO_GOAL = `\n mutation TimecampusCreatePomodoroGoal($input: CreatePomodoroGoalInput!) {\n createPomodoroGoal(input: $input) { ${POMODORO_GOAL_FIELDS} }\n }\n`;\n\nexport const UPDATE_POMODORO_GOAL = `\n mutation TimecampusUpdatePomodoroGoal($id: ID!, $input: UpdatePomodoroGoalInput!, $workspaceId: ID!) {\n updatePomodoroGoal(id: $id, input: $input, workspaceId: $workspaceId) { ${POMODORO_GOAL_FIELDS} }\n }\n`;\n\nexport const DELETE_POMODORO_GOAL = `\n mutation TimecampusDeletePomodoroGoal($id: ID!, $workspaceId: ID!) {\n deletePomodoroGoal(id: $id, workspaceId: $workspaceId)\n }\n`;\n\nexport const UPDATE_POMODORO_SETTINGS = `\n mutation TimecampusUpdatePomodoroSettings($input: UpdatePomodoroSettingsInput!) {\n updatePomodoroSettings(input: $input) { ${POMODORO_SETTINGS_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Expenses\n// ---------------------------------------------------------------------------\n\nexport const GET_EXPENSE = `\n query TimecampusGetExpense($id: ID!, $workspaceId: ID!) {\n expense(id: $id, workspaceId: $workspaceId) { ${EXPENSE_FIELDS} }\n }\n`;\n\nexport const LIST_EXPENSES = `\n query TimecampusListExpenses(\n $workspaceId: ID!\n $filter: ExpenseFilterInput\n $limit: Int\n $offset: Int\n $orderBy: ExpenseOrderByInput\n ) {\n expenses(workspaceId: $workspaceId, filter: $filter, limit: $limit, offset: $offset, orderBy: $orderBy) {\n ${EXPENSE_FIELDS}\n }\n }\n`;\n\nexport const EXPENSE_STATS = `\n query TimecampusExpenseStats($workspaceId: ID!, $startDate: DateTime, $endDate: DateTime) {\n expenseStats(workspaceId: $workspaceId, startDate: $startDate, endDate: $endDate) {\n totalExpenses totalAmount approvedCount pendingCount averageAmount byCategory\n }\n }\n`;\n\nexport const EXPENSE_CATEGORIES = `\n query TimecampusExpenseCategories($workspaceId: ID!) {\n expenseCategories(workspaceId: $workspaceId)\n }\n`;\n\nexport const CREATE_EXPENSE = `\n mutation TimecampusCreateExpense($input: CreateExpenseInput!) {\n createExpense(input: $input) { ${EXPENSE_FIELDS} }\n }\n`;\n\nexport const UPDATE_EXPENSE = `\n mutation TimecampusUpdateExpense($id: ID!, $input: UpdateExpenseInput!, $workspaceId: ID!) {\n updateExpense(id: $id, input: $input, workspaceId: $workspaceId) { ${EXPENSE_FIELDS} }\n }\n`;\n\nexport const DELETE_EXPENSE = `\n mutation TimecampusDeleteExpense($id: ID!, $workspaceId: ID!) {\n deleteExpense(id: $id, workspaceId: $workspaceId)\n }\n`;\n\nexport const APPROVE_EXPENSE = `\n mutation TimecampusApproveExpense($id: ID!, $workspaceId: ID!) {\n approveExpense(id: $id, workspaceId: $workspaceId) { ${EXPENSE_FIELDS} }\n }\n`;\n\nexport const REJECT_EXPENSE = `\n mutation TimecampusRejectExpense($id: ID!, $reason: String, $workspaceId: ID!) {\n rejectExpense(id: $id, reason: $reason, workspaceId: $workspaceId) { ${EXPENSE_FIELDS} }\n }\n`;\n\nexport const SUBMIT_EXPENSE = `\n mutation TimecampusSubmitExpense($id: ID!, $workspaceId: ID!) {\n submitExpenseForApproval(id: $id, workspaceId: $workspaceId) { ${EXPENSE_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Approvals (TimeApprovalRequest)\n// ---------------------------------------------------------------------------\n\nexport const GET_APPROVAL = `\n query TimecampusGetApproval($id: ID!) {\n approvalRequest(id: $id) { ${APPROVAL_FIELDS} }\n }\n`;\n\nexport const LIST_APPROVALS = `\n query TimecampusListApprovals($filter: ApprovalRequestFilterInput, $limit: Int, $offset: Int) {\n approvalRequests(filter: $filter, limit: $limit, offset: $offset) {\n total hasMore items { ${APPROVAL_FIELDS} }\n }\n }\n`;\n\nexport const APPROVAL_STATS = `\n query TimecampusApprovalStats($startDate: DateTime, $endDate: DateTime) {\n approvalStats(startDate: $startDate, endDate: $endDate) {\n totalRequests pendingCount approvedCount rejectedCount averageReviewTime\n }\n }\n`;\n\nexport const MY_APPROVALS = `\n query TimecampusMyApprovals($status: ApprovalStatus) {\n myApprovalRequests(status: $status) { ${APPROVAL_FIELDS} }\n }\n`;\n\nexport const PENDING_APPROVALS = `\n query TimecampusPendingApprovals {\n pendingApprovals { ${APPROVAL_FIELDS} }\n }\n`;\n\nexport const SUBMIT_APPROVAL = `\n mutation TimecampusSubmitApproval($input: SubmitApprovalRequestInput!) {\n submitApprovalRequest(input: $input) { ${APPROVAL_FIELDS} }\n }\n`;\n\nexport const APPROVE_REQUEST = `\n mutation TimecampusApproveRequest($id: ID!, $notes: String) {\n approveRequest(id: $id, notes: $notes) { ${APPROVAL_FIELDS} }\n }\n`;\n\nexport const REJECT_REQUEST = `\n mutation TimecampusRejectRequest($id: ID!, $reason: String!) {\n rejectRequest(id: $id, reason: $reason) { ${APPROVAL_FIELDS} }\n }\n`;\n\nexport const REQUEST_REVISION = `\n mutation TimecampusRequestRevision($id: ID!, $notes: String!) {\n requestRevision(id: $id, notes: $notes) { ${APPROVAL_FIELDS} }\n }\n`;\n\nexport const WITHDRAW_REQUEST = `\n mutation TimecampusWithdrawRequest($id: ID!) {\n withdrawRequest(id: $id) { ${APPROVAL_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Resourcing (ResourcePlan + ResourceAllocation)\n// ---------------------------------------------------------------------------\n\nexport const GET_RESOURCE_PLAN = `\n query TimecampusGetResourcePlan($id: ID!) {\n resourcePlan(id: $id) {\n ${RESOURCE_PLAN_FIELDS}\n allocations { ${RESOURCE_ALLOCATION_FIELDS} }\n }\n }\n`;\n\nexport const LIST_RESOURCE_PLANS = `\n query TimecampusListResourcePlans($filter: ResourcePlanFilterInput, $limit: Int, $offset: Int) {\n resourcePlans(filter: $filter, limit: $limit, offset: $offset) {\n total hasMore items { ${RESOURCE_PLAN_FIELDS} }\n }\n }\n`;\n\nexport const LIST_RESOURCE_ALLOCATIONS = `\n query TimecampusListResourceAllocations($planId: ID!, $limit: Int, $offset: Int) {\n resourceAllocations(planId: $planId, limit: $limit, offset: $offset) {\n ${RESOURCE_ALLOCATION_FIELDS}\n }\n }\n`;\n\nexport const USER_ALLOCATIONS = `\n query TimecampusUserAllocations($userId: ID!, $startDate: DateTime, $endDate: DateTime) {\n userAllocations(userId: $userId, startDate: $startDate, endDate: $endDate) {\n ${RESOURCE_ALLOCATION_FIELDS}\n }\n }\n`;\n\nexport const CAPACITY_OVERVIEW = `\n query TimecampusCapacityOverview($startDate: DateTime!, $endDate: DateTime!) {\n capacityOverview(startDate: $startDate, endDate: $endDate) {\n totalCapacity allocatedCapacity availableCapacity utilizationRate\n overallocatedUsers\n }\n }\n`;\n\nexport const CREATE_RESOURCE_PLAN = `\n mutation TimecampusCreateResourcePlan($input: CreateResourcePlanInput!) {\n createResourcePlan(input: $input) { ${RESOURCE_PLAN_FIELDS} }\n }\n`;\n\nexport const UPDATE_RESOURCE_PLAN = `\n mutation TimecampusUpdateResourcePlan($id: ID!, $input: UpdateResourcePlanInput!) {\n updateResourcePlan(id: $id, input: $input) { ${RESOURCE_PLAN_FIELDS} }\n }\n`;\n\nexport const DELETE_RESOURCE_PLAN = `\n mutation TimecampusDeleteResourcePlan($id: ID!) {\n deleteResourcePlan(id: $id) { ${RESOURCE_PLAN_FIELDS} }\n }\n`;\n\nexport const ACTIVATE_RESOURCE_PLAN = `\n mutation TimecampusActivateResourcePlan($id: ID!) {\n activateResourcePlan(id: $id) { ${RESOURCE_PLAN_FIELDS} }\n }\n`;\n\nexport const CREATE_ALLOCATION = `\n mutation TimecampusCreateAllocation($input: CreateAllocationInput!) {\n createAllocation(input: $input) { ${RESOURCE_ALLOCATION_FIELDS} }\n }\n`;\n\nexport const UPDATE_ALLOCATION = `\n mutation TimecampusUpdateAllocation($id: ID!, $input: UpdateAllocationInput!) {\n updateAllocation(id: $id, input: $input) { ${RESOURCE_ALLOCATION_FIELDS} }\n }\n`;\n\nexport const DELETE_ALLOCATION = `\n mutation TimecampusDeleteAllocation($id: ID!) {\n deleteAllocation(id: $id) { ${RESOURCE_ALLOCATION_FIELDS} }\n }\n`;\n\nexport const BULK_CREATE_ALLOCATIONS = `\n mutation TimecampusBulkCreateAllocations($planId: ID!, $allocations: [BulkAllocationInput!]!) {\n bulkCreateAllocations(planId: $planId, allocations: $allocations) {\n ${RESOURCE_ALLOCATION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Focus scores\n// ---------------------------------------------------------------------------\n\nexport const GET_FOCUS_SCORE = `\n query TimecampusGetFocusScore($id: ID!) {\n focusScore(id: $id) { ${FOCUS_SCORE_FIELDS} }\n }\n`;\n\nexport const LIST_FOCUS_SCORES = `\n query TimecampusListFocusScores(\n $startDate: DateTime\n $endDate: DateTime\n $limit: Int\n $offset: Int\n $userId: ID\n ) {\n focusScores(startDate: $startDate, endDate: $endDate, limit: $limit, offset: $offset, userId: $userId) {\n ${FOCUS_SCORE_FIELDS}\n }\n }\n`;\n\nexport const FOCUS_SCORE_SUMMARY = `\n query TimecampusFocusScoreSummary($startDate: DateTime, $endDate: DateTime, $userId: ID) {\n focusScoreSummary(startDate: $startDate, endDate: $endDate, userId: $userId) {\n averageScore highestScore lowestScore trend topFactor improvementArea\n }\n }\n`;\n\nexport const FOCUS_SCORE_TREND = `\n query TimecampusFocusScoreTrend($days: Int, $userId: ID) {\n focusScoreTrend(days: $days, userId: $userId) { date score change }\n }\n`;\n\nexport const TODAY_FOCUS_SCORE = `\n query TimecampusTodayFocusScore {\n todayFocusScore { ${FOCUS_SCORE_FIELDS} }\n }\n`;\n\nexport const CALCULATE_FOCUS_SCORE = `\n mutation TimecampusCalculateFocusScore($date: DateTime, $userId: ID) {\n calculateFocusScore(date: $date, userId: $userId) { ${FOCUS_SCORE_FIELDS} }\n }\n`;\n\nexport const RECORD_FOCUS_SCORE = `\n mutation TimecampusRecordFocusScore($input: RecordFocusScoreInput!) {\n recordFocusScore(input: $input) { ${FOCUS_SCORE_FIELDS} }\n }\n`;\n\nexport const UPDATE_FOCUS_SCORE = `\n mutation TimecampusUpdateFocusScore($id: ID!, $input: UpdateFocusScoreInput!) {\n updateFocusScore(id: $id, input: $input) { ${FOCUS_SCORE_FIELDS} }\n }\n`;\n\nexport const DELETE_FOCUS_SCORE = `\n mutation TimecampusDeleteFocusScore($id: ID!) {\n deleteFocusScore(id: $id) { ${FOCUS_SCORE_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Work patterns\n// ---------------------------------------------------------------------------\n\nexport const GET_WORK_PATTERN = `\n query TimecampusGetWorkPattern($id: ID!) {\n workPattern(id: $id) { ${WORK_PATTERN_FIELDS} }\n }\n`;\n\nexport const LIST_WORK_PATTERNS = `\n query TimecampusListWorkPatterns(\n $startDate: DateTime\n $endDate: DateTime\n $limit: Int\n $offset: Int\n $userId: ID\n ) {\n workPatterns(startDate: $startDate, endDate: $endDate, limit: $limit, offset: $offset, userId: $userId) {\n ${WORK_PATTERN_FIELDS}\n }\n }\n`;\n\nexport const WORK_PATTERN_SUMMARY = `\n query TimecampusWorkPatternSummary($startDate: DateTime, $endDate: DateTime, $userId: ID) {\n workPatternSummary(startDate: $startDate, endDate: $endDate, userId: $userId) {\n averageFocusHours averageMeetingHours averageProductivity mostProductiveDay\n leastProductiveDay\n insights { type title description impact recommendation }\n }\n }\n`;\n\nexport const TODAY_WORK_PATTERN = `\n query TimecampusTodayWorkPattern {\n todayWorkPattern { ${WORK_PATTERN_FIELDS} }\n }\n`;\n\nexport const RECORD_WORK_PATTERN = `\n mutation TimecampusRecordWorkPattern($input: RecordWorkPatternInput!) {\n recordWorkPattern(input: $input) { ${WORK_PATTERN_FIELDS} }\n }\n`;\n\nexport const UPDATE_WORK_PATTERN = `\n mutation TimecampusUpdateWorkPattern($id: ID!, $input: UpdateWorkPatternInput!) {\n updateWorkPattern(id: $id, input: $input) { ${WORK_PATTERN_FIELDS} }\n }\n`;\n\nexport const DELETE_WORK_PATTERN = `\n mutation TimecampusDeleteWorkPattern($id: ID!) {\n deleteWorkPattern(id: $id) { ${WORK_PATTERN_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Application usage\n// ---------------------------------------------------------------------------\n\nexport const GET_APP_USAGE = `\n query TimecampusGetAppUsage($id: ID!) {\n applicationUsage(id: $id) { ${APP_USAGE_FIELDS} }\n }\n`;\n\nexport const LIST_APP_USAGE = `\n query TimecampusListAppUsage(\n $category: String\n $date: DateTime\n $limit: Int\n $offset: Int\n $userId: ID\n ) {\n applicationUsages(category: $category, date: $date, limit: $limit, offset: $offset, userId: $userId) {\n ${APP_USAGE_FIELDS}\n }\n }\n`;\n\nexport const APP_USAGE_SUMMARY = `\n query TimecampusAppUsageSummary($startDate: DateTime, $endDate: DateTime, $userId: ID) {\n appUsageSummary(startDate: $startDate, endDate: $endDate, userId: $userId) {\n totalApps productiveTime neutralTime distractingTime productivityRatio\n topApps { name category timeSpent sessions }\n }\n }\n`;\n\nexport const TOP_APPLICATIONS = `\n query TimecampusTopApplications($startDate: DateTime, $endDate: DateTime, $limit: Int, $userId: ID) {\n topApplications(startDate: $startDate, endDate: $endDate, limit: $limit, userId: $userId) {\n name category timeSpent sessions\n }\n }\n`;\n\nexport const RECORD_APP_USAGE = `\n mutation TimecampusRecordAppUsage($input: RecordApplicationUsageInput!) {\n recordApplicationUsage(input: $input) { ${APP_USAGE_FIELDS} }\n }\n`;\n\nexport const UPDATE_APP_USAGE = `\n mutation TimecampusUpdateAppUsage($id: ID!, $input: UpdateApplicationUsageInput!) {\n updateApplicationUsage(id: $id, input: $input) { ${APP_USAGE_FIELDS} }\n }\n`;\n\nexport const DELETE_APP_USAGE = `\n mutation TimecampusDeleteAppUsage($id: ID!) {\n deleteApplicationUsage(id: $id) { ${APP_USAGE_FIELDS} }\n }\n`;\n\nexport const CATEGORIZE_APPLICATION = `\n mutation TimecampusCategorizeApplication($applicationName: String!, $category: String!) {\n categorizeApplication(applicationName: $applicationName, category: $category) {\n ${APP_USAGE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Location (geofences + geofence events + location entries)\n// ---------------------------------------------------------------------------\n\nexport const GET_GEOFENCE = `\n query TimecampusGetGeofence($id: ID!) {\n geofence(id: $id) {\n ${GEOFENCE_FIELDS}\n events { ${GEOFENCE_EVENT_FIELDS} }\n }\n }\n`;\n\nexport const LIST_GEOFENCES = `\n query TimecampusListGeofences($filter: GeofenceFilterInput, $limit: Int, $offset: Int) {\n geofences(filter: $filter, limit: $limit, offset: $offset) {\n total hasMore items { ${GEOFENCE_FIELDS} }\n }\n }\n`;\n\nexport const LIST_GEOFENCE_EVENTS = `\n query TimecampusListGeofenceEvents($geofenceId: ID!, $limit: Int, $offset: Int) {\n geofenceEvents(geofenceId: $geofenceId, limit: $limit, offset: $offset) {\n ${GEOFENCE_EVENT_FIELDS}\n }\n }\n`;\n\nexport const CREATE_GEOFENCE = `\n mutation TimecampusCreateGeofence($input: CreateGeofenceInput!) {\n createGeofence(input: $input) { ${GEOFENCE_FIELDS} }\n }\n`;\n\nexport const UPDATE_GEOFENCE = `\n mutation TimecampusUpdateGeofence($id: ID!, $input: UpdateGeofenceInput!) {\n updateGeofence(id: $id, input: $input) { ${GEOFENCE_FIELDS} }\n }\n`;\n\nexport const DELETE_GEOFENCE = `\n mutation TimecampusDeleteGeofence($id: ID!) {\n deleteGeofence(id: $id) { ${GEOFENCE_FIELDS} }\n }\n`;\n\nexport const TOGGLE_GEOFENCE = `\n mutation TimecampusToggleGeofence($id: ID!, $isActive: Boolean!) {\n toggleGeofence(id: $id, isActive: $isActive) { ${GEOFENCE_FIELDS} }\n }\n`;\n\nexport const RECORD_GEOFENCE_EVENT = `\n mutation TimecampusRecordGeofenceEvent($input: RecordGeofenceEventInput!) {\n recordGeofenceEvent(input: $input) { ${GEOFENCE_EVENT_FIELDS} }\n }\n`;\n\nexport const GET_LOCATION_ENTRY = `\n query TimecampusGetLocationEntry($id: ID!) {\n locationEntry(id: $id) { ${LOCATION_ENTRY_FIELDS} }\n }\n`;\n\nexport const ACTIVE_LOCATION_ENTRY = `\n query TimecampusActiveLocationEntry {\n activeLocationEntry { ${LOCATION_ENTRY_FIELDS} }\n }\n`;\n\nexport const LIST_LOCATION_ENTRIES = `\n query TimecampusListLocationEntries($filter: LocationEntryFilterInput, $limit: Int, $offset: Int) {\n locationEntries(filter: $filter, limit: $limit, offset: $offset) {\n total hasMore items { ${LOCATION_ENTRY_FIELDS} }\n }\n }\n`;\n\nexport const LOCATION_STATS = `\n query TimecampusLocationStats($startDate: DateTime, $endDate: DateTime) {\n locationStats(startDate: $startDate, endDate: $endDate) {\n totalLocations totalDuration uniqueAddresses mostFrequentLocation\n }\n }\n`;\n\nexport const CREATE_LOCATION_ENTRY = `\n mutation TimecampusCreateLocationEntry($input: CreateLocationEntryInput!) {\n createLocationEntry(input: $input) { ${LOCATION_ENTRY_FIELDS} }\n }\n`;\n\nexport const UPDATE_LOCATION_ENTRY = `\n mutation TimecampusUpdateLocationEntry($id: ID!, $input: UpdateLocationEntryInput!) {\n updateLocationEntry(id: $id, input: $input) { ${LOCATION_ENTRY_FIELDS} }\n }\n`;\n\nexport const DELETE_LOCATION_ENTRY = `\n mutation TimecampusDeleteLocationEntry($id: ID!) {\n deleteLocationEntry(id: $id) { ${LOCATION_ENTRY_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Channels\n// ---------------------------------------------------------------------------\n\nexport const GET_CHANNEL = `\n query TimecampusGetChannel($id: ID!) {\n channelConfig(id: $id) { ${CHANNEL_FIELDS} }\n }\n`;\n\nexport const LIST_CHANNELS = `\n query TimecampusListChannels($limit: Int, $offset: Int) {\n channelConfigs(limit: $limit, offset: $offset) { ${CHANNEL_FIELDS} }\n }\n`;\n\nexport const ACTIVE_CHANNELS = `\n query TimecampusActiveChannels {\n activeChannels { ${CHANNEL_FIELDS} }\n }\n`;\n\nexport const CHANNEL_STATUSES = `\n query TimecampusChannelStatuses {\n channelStatuses { channelId name type status isHealthy lastSync }\n }\n`;\n\nexport const CREATE_CHANNEL = `\n mutation TimecampusCreateChannel($input: CreateChannelConfigInput!) {\n createChannelConfig(input: $input) { ${CHANNEL_FIELDS} }\n }\n`;\n\nexport const UPDATE_CHANNEL = `\n mutation TimecampusUpdateChannel($id: ID!, $input: UpdateChannelConfigInput!) {\n updateChannelConfig(id: $id, input: $input) { ${CHANNEL_FIELDS} }\n }\n`;\n\nexport const DELETE_CHANNEL = `\n mutation TimecampusDeleteChannel($id: ID!) {\n deleteChannelConfig(id: $id) { ${CHANNEL_FIELDS} }\n }\n`;\n\nexport const SYNC_CHANNEL = `\n mutation TimecampusSyncChannel($id: ID!) {\n syncChannel(id: $id) { ${CHANNEL_FIELDS} }\n }\n`;\n\nexport const TOGGLE_CHANNEL = `\n mutation TimecampusToggleChannel($id: ID!, $status: ChannelStatus!) {\n toggleChannel(id: $id, status: $status) { ${CHANNEL_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Client portals\n// ---------------------------------------------------------------------------\n\nexport const GET_CLIENT_PORTAL = `\n query TimecampusGetClientPortal($id: ID!) {\n clientPortalConfig(id: $id) { ${CLIENT_PORTAL_FIELDS} }\n }\n`;\n\nexport const LIST_CLIENT_PORTALS = `\n query TimecampusListClientPortals($limit: Int, $offset: Int) {\n clientPortalConfigs(limit: $limit, offset: $offset) {\n total hasMore items { ${CLIENT_PORTAL_FIELDS} }\n }\n }\n`;\n\nexport const CLIENT_PORTAL_STATS = `\n query TimecampusClientPortalStats {\n clientPortalStats { totalClients activeClients totalProjectsShared }\n }\n`;\n\nexport const CREATE_CLIENT_PORTAL = `\n mutation TimecampusCreateClientPortal($input: CreateClientPortalConfigInput!) {\n createClientPortalConfig(input: $input) { ${CLIENT_PORTAL_FIELDS} }\n }\n`;\n\nexport const UPDATE_CLIENT_PORTAL = `\n mutation TimecampusUpdateClientPortal($id: ID!, $input: UpdateClientPortalConfigInput!) {\n updateClientPortalConfig(id: $id, input: $input) { ${CLIENT_PORTAL_FIELDS} }\n }\n`;\n\nexport const DELETE_CLIENT_PORTAL = `\n mutation TimecampusDeleteClientPortal($id: ID!) {\n deleteClientPortalConfig(id: $id) { ${CLIENT_PORTAL_FIELDS} }\n }\n`;\n\nexport const TOGGLE_CLIENT_PORTAL = `\n mutation TimecampusToggleClientPortal($id: ID!, $isActive: Boolean!) {\n toggleClientPortal(id: $id, isActive: $isActive) { ${CLIENT_PORTAL_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Email tracking\n// ---------------------------------------------------------------------------\n\nexport const GET_EMAIL_ENTRY = `\n query TimecampusGetEmailEntry($id: ID!) {\n emailTimeEntry(id: $id) { ${EMAIL_ENTRY_FIELDS} }\n }\n`;\n\nexport const LIST_EMAIL_ENTRIES = `\n query TimecampusListEmailEntries(\n $filter: EmailTimeEntryFilterInput\n $startDate: DateTime\n $endDate: DateTime\n $limit: Int\n $offset: Int\n $userId: ID\n ) {\n emailTimeEntries(\n filter: $filter\n startDate: $startDate\n endDate: $endDate\n limit: $limit\n offset: $offset\n userId: $userId\n ) {\n ${EMAIL_ENTRY_FIELDS}\n }\n }\n`;\n\nexport const EMAIL_TRACKING_STATS = `\n query TimecampusEmailTrackingStats($startDate: DateTime, $endDate: DateTime, $userId: ID) {\n emailTrackingStats(startDate: $startDate, endDate: $endDate, userId: $userId) {\n totalEmails importantCount totalDuration averageResponseTime byCategory\n }\n }\n`;\n\nexport const CREATE_EMAIL_ENTRY = `\n mutation TimecampusCreateEmailEntry($input: CreateEmailTimeEntryInput!) {\n createEmailTimeEntry(input: $input) { ${EMAIL_ENTRY_FIELDS} }\n }\n`;\n\nexport const BULK_CREATE_EMAIL_ENTRIES = `\n mutation TimecampusBulkCreateEmailEntries($inputs: [CreateEmailTimeEntryInput!]!) {\n bulkCreateEmailTimeEntries(inputs: $inputs) { ${EMAIL_ENTRY_FIELDS} }\n }\n`;\n\nexport const UPDATE_EMAIL_ENTRY = `\n mutation TimecampusUpdateEmailEntry($id: ID!, $input: UpdateEmailTimeEntryInput!) {\n updateEmailTimeEntry(id: $id, input: $input) { ${EMAIL_ENTRY_FIELDS} }\n }\n`;\n\nexport const DELETE_EMAIL_ENTRY = `\n mutation TimecampusDeleteEmailEntry($id: ID!) {\n deleteEmailTimeEntry(id: $id) { ${EMAIL_ENTRY_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Configuration + UI session\n// ---------------------------------------------------------------------------\n\nexport const GET_CONFIG = `\n query TimecampusGetConfig($id: ID!) {\n timeCampusConfiguration(id: $id) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const GET_CONFIG_BY_KEY = `\n query TimecampusGetConfigByKey($key: String!, $scope: TimeCampusConfigScope, $scopeId: String) {\n timeCampusConfigurationByKey(key: $key, scope: $scope, scopeId: $scopeId) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const CONFIG_VALUE = `\n query TimecampusConfigValue($key: String!, $scope: TimeCampusConfigScope, $scopeId: String) {\n timeCampusConfigurationValue(key: $key, scope: $scope, scopeId: $scopeId)\n }\n`;\n\nexport const LIST_CONFIGS = `\n query TimecampusListConfigs($scope: TimeCampusConfigScope, $scopeId: String, $limit: Int, $offset: Int) {\n timeCampusConfigurations(scope: $scope, scopeId: $scopeId, limit: $limit, offset: $offset) {\n ${CONFIG_FIELDS}\n }\n }\n`;\n\nexport const SET_CONFIG = `\n mutation TimecampusSetConfig($input: SetTimeCampusConfigurationInput!) {\n setTimeCampusConfiguration(input: $input) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const BULK_SET_CONFIGS = `\n mutation TimecampusBulkSetConfigs($inputs: [SetTimeCampusConfigurationInput!]!) {\n bulkSetTimeCampusConfigurations(inputs: $inputs) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const UPDATE_CONFIG = `\n mutation TimecampusUpdateConfig($id: ID!, $input: UpdateTimeCampusConfigurationInput!) {\n updateTimeCampusConfiguration(id: $id, input: $input) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const DELETE_CONFIG = `\n mutation TimecampusDeleteConfig($id: ID!) {\n deleteTimeCampusConfiguration(id: $id) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const GET_UI_SESSION = `\n query TimecampusGetUISession {\n timeCampusUISession { ${UI_SESSION_FIELDS} }\n }\n`;\n\nexport const UI_SESSION_BY_USER = `\n query TimecampusUISessionByUser($userId: ID!) {\n timeCampusUISessionByUser(userId: $userId) { ${UI_SESSION_FIELDS} }\n }\n`;\n\nexport const SAVE_UI_SESSION = `\n mutation TimecampusSaveUISession($input: SaveTimeCampusUISessionInput!) {\n saveTimeCampusUISession(input: $input) { ${UI_SESSION_FIELDS} }\n }\n`;\n\nexport const UPDATE_UI_SESSION = `\n mutation TimecampusUpdateUISession($id: ID!, $input: UpdateTimeCampusUISessionInput!) {\n updateTimeCampusUISession(id: $id, input: $input) { ${UI_SESSION_FIELDS} }\n }\n`;\n\nexport const CLEAR_UI_SESSION = `\n mutation TimecampusClearUISession {\n clearTimeCampusUISession\n }\n`;\n","/**\n * Shared zod schemas for the Timecampus tool surface.\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop grounds\n * tool calls against the exact allowed values. Project/task `status` and\n * `priority` are plain `String` in the real schema (free-form), so they stay\n * `z.string()` rather than enums. JSON scalar inputs (context, settings,\n * permissions, factors, peakHours, tags, state, preferences, value) are\n * modelled as permissive object records — the backend accepts arbitrary JSON,\n * but a record shape gives the LLM a typed hint.\n */\n\nimport { z } from 'zod';\n\nexport const ApprovalStatusEnum = z\n .enum(['PENDING', 'APPROVED', 'REJECTED', 'REVISION_REQUESTED'])\n .describe('Lifecycle status of a time-approval request');\n\nexport const ChannelStatusEnum = z\n .enum(['ACTIVE', 'INACTIVE', 'SETUP'])\n .describe('Operational status of a tracking channel');\n\nexport const ChannelTypeEnum = z\n .enum(['API', 'BROWSER', 'CALENDAR', 'CLI', 'CUSTOM', 'DESKTOP', 'IDE', 'MOBILE'])\n .describe('Source type of a tracking channel');\n\nexport const ExpenseStatusEnum = z\n .enum(['PENDING', 'APPROVED', 'REJECTED', 'REIMBURSED'])\n .describe('Status of an expense entry');\n\nexport const ExpenseOrderByFieldEnum = z\n .enum(['amount', 'category', 'createdAt', 'date', 'status', 'updatedAt'])\n .describe('Sortable field for expense listings');\n\nexport const GeofenceTriggerEnum = z\n .enum(['ENTER', 'EXIT', 'BOTH'])\n .describe('Which boundary crossings a geofence reacts to');\n\nexport const GeofenceEventTypeEnum = z\n .enum(['ENTER', 'EXIT'])\n .describe('Type of a recorded geofence crossing');\n\nexport const MeetingTypeEnum = z\n .enum(['STANDUP', 'PLANNING', 'REVIEW', 'RETROSPECTIVE', 'ONE_ON_ONE', 'TEAM', 'EXTERNAL'])\n .describe('Category of a meeting');\n\nexport const MeetingParticipantRoleEnum = z\n .enum(['ORGANIZER', 'REQUIRED', 'OPTIONAL'])\n .describe('Role of a meeting participant');\n\nexport const MeetingParticipantStatusEnum = z\n .enum(['PENDING', 'ACCEPTED', 'DECLINED', 'TENTATIVE'])\n .describe('RSVP status of a meeting participant');\n\nexport const MeetingActionItemStatusEnum = z\n .enum(['PENDING', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED'])\n .describe('Status of a meeting action item');\n\nexport const MeetingOrderByFieldEnum = z\n .enum(['cost', 'createdAt', 'duration', 'endTime', 'rating', 'startTime', 'updatedAt'])\n .describe('Sortable field for meeting listings');\n\nexport const PomodoroSessionTypeEnum = z\n .enum(['FOCUS', 'SHORT_BREAK', 'LONG_BREAK'])\n .describe('Type of a pomodoro session');\n\nexport const PomodoroGoalTypeEnum = z\n .enum(['DAILY', 'WEEKLY', 'MONTHLY'])\n .describe('Cadence of a pomodoro goal');\n\nexport const PomodoroSessionOrderByFieldEnum = z\n .enum(['createdAt', 'duration', 'endTime', 'startTime', 'updatedAt'])\n .describe('Sortable field for pomodoro-session listings');\n\nexport const ConfigScopeEnum = z\n .enum(['GLOBAL', 'WORKSPACE', 'PROJECT', 'USER'])\n .describe('Scope at which a configuration value applies');\n\nexport const OrderDirectionEnum = z\n .enum(['ASC', 'DESC'])\n .describe('Sort direction (uppercase) for OrderDirection-typed list args');\n\nexport const SortDirectionEnum = z\n .enum(['asc', 'desc'])\n .describe('Sort direction (lowercase) for TimeCampusSortDirection-typed list args');\n\nexport const TaskOrderFieldEnum = z\n .enum(['CREATED_AT', 'DUE_DATE', 'ORDER', 'PRIORITY', 'STATUS', 'TITLE'])\n .describe('Sortable field for task listings');\n\nexport const TimeEntryOrderFieldEnum = z\n .enum(['CREATED_AT', 'DESCRIPTION', 'DURATION', 'START_TIME'])\n .describe('Sortable field for time-entry listings');\n\nexport const ProjectOrderFieldEnum = z\n .enum(['BUDGET', 'CREATED_AT', 'NAME', 'STATUS', 'TRACKED_HOURS'])\n .describe('Sortable field for project listings');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n","/**\n * Timecampus time-entry + timer tools.\n *\n * Surface (13): timeentries_{get,list,by_date,count,stats,create,update,delete,\n * bulk_delete,duplicate} and timers_{running,start,stop}. Time entries are the\n * core tracking record; the timer trio drives the live stopwatch (startTimer /\n * stopTimer / runningTimers). Workspace scoping is carried by the gateway\n * headers — these fields take no explicit workspaceId.\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 { JsonObject, OrderDirectionEnum, TimeEntryOrderFieldEnum } from './shared.js';\n\nexport function registerTimeEntryTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_get')),\n {\n title: 'Get Time Entry',\n description: 'Fetch a single time entry by ID.',\n inputSchema: { id: z.string().describe('Time entry ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeEntry: Record<string, unknown> | null;\n }>(ops.GET_TIME_ENTRY, { id });\n if (!data.timeEntry) return errorResult(`Time entry ${id} not found`);\n return jsonResult(data.timeEntry);\n } catch (error) {\n ctx.logger.error('timecampus timeentries_get failed', { error: String(error) });\n return errorResult(\n `Failed to get time entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_list')),\n {\n title: 'List Time Entries',\n description:\n 'List time entries with optional filter (project/task/billable/running/source/date range/text), pagination and ordering. Returns { items, total, hasMore }.',\n inputSchema: {\n projectId: z.string().optional().describe('Filter by project ID'),\n taskId: z.string().optional().describe('Filter by task ID'),\n billable: z.boolean().optional().describe('Filter by billable flag'),\n isRunning: z.boolean().optional().describe('Filter by running flag'),\n source: z.string().optional().describe('Filter by capture source (e.g. \"manual\", \"timer\")'),\n search: z.string().optional().describe('Free-text search across description'),\n startDate: z.string().optional().describe('ISO start of date range (inclusive)'),\n endDate: z.string().optional().describe('ISO end of date range (inclusive)'),\n orderByField: TimeEntryOrderFieldEnum.optional().describe('Sort field'),\n orderByDirection: OrderDirectionEnum.optional().describe('Sort direction'),\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 ({\n projectId,\n taskId,\n billable,\n isRunning,\n source,\n search,\n startDate,\n endDate,\n orderByField,\n orderByDirection,\n limit,\n offset,\n }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (projectId !== undefined) filter.projectId = projectId;\n if (taskId !== undefined) filter.taskId = taskId;\n if (billable !== undefined) filter.billable = billable;\n if (isRunning !== undefined) filter.isRunning = isRunning;\n if (source !== undefined) filter.source = source;\n if (search !== undefined) filter.search = search;\n if (startDate !== undefined) filter.startDate = startDate;\n if (endDate !== undefined) filter.endDate = endDate;\n const orderBy =\n orderByField !== undefined\n ? { field: orderByField, direction: orderByDirection ?? 'DESC' }\n : undefined;\n\n const data = await ctx.gql.workspace.request<{\n timeEntries: Record<string, unknown>;\n }>(ops.LIST_TIME_ENTRIES, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n orderBy,\n });\n return jsonResult(data.timeEntries);\n } catch (error) {\n ctx.logger.error('timecampus timeentries_list failed', { error: String(error) });\n return errorResult(\n `Failed to list time entries: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_by_date')),\n {\n title: 'Time Entries By Date',\n description: 'List all time entries logged on a specific date.',\n inputSchema: { date: z.string().describe('ISO date to fetch entries for') },\n },\n async ({ date }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeEntriesByDate: Array<Record<string, unknown>>;\n }>(ops.TIME_ENTRIES_BY_DATE, { date });\n return jsonResult(data.timeEntriesByDate);\n } catch (error) {\n ctx.logger.error('timecampus timeentries_by_date failed', { error: String(error) });\n return errorResult(\n `Failed to list time entries by date: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_count')),\n {\n title: 'Count Time Entries',\n description: 'Count time entries matching an optional filter.',\n inputSchema: {\n projectId: z.string().optional().describe('Filter by project ID'),\n taskId: z.string().optional().describe('Filter by task ID'),\n billable: z.boolean().optional().describe('Filter by billable flag'),\n startDate: z.string().optional().describe('ISO start of date range'),\n endDate: z.string().optional().describe('ISO end of date range'),\n },\n },\n async ({ projectId, taskId, billable, startDate, endDate }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (projectId !== undefined) filter.projectId = projectId;\n if (taskId !== undefined) filter.taskId = taskId;\n if (billable !== undefined) filter.billable = billable;\n if (startDate !== undefined) filter.startDate = startDate;\n if (endDate !== undefined) filter.endDate = endDate;\n const data = await ctx.gql.workspace.request<{ timeEntryCount: number }>(\n ops.TIME_ENTRY_COUNT,\n { filter: Object.keys(filter).length > 0 ? filter : undefined },\n );\n return jsonResult({ count: data.timeEntryCount });\n } catch (error) {\n ctx.logger.error('timecampus timeentries_count failed', { error: String(error) });\n return errorResult(\n `Failed to count time entries: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_stats')),\n {\n title: 'Time Entry Stats',\n description:\n 'Aggregate time-entry stats (total entries, total/billable hours, active timers) over an optional date range.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO start of date range'),\n endDate: z.string().optional().describe('ISO end of date range'),\n },\n },\n async ({ startDate, endDate }) => {\n try {\n const data = await ctx.gql.workspace.request<{ timeEntryStats: Record<string, unknown> }>(\n ops.TIME_ENTRY_STATS,\n { startDate, endDate },\n );\n return jsonResult(data.timeEntryStats);\n } catch (error) {\n ctx.logger.error('timecampus timeentries_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get time-entry stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_create')),\n {\n title: 'Create Time Entry',\n description:\n 'Create a time entry. `startTime` is required; provide `endTime` or `duration` (seconds) for a closed entry.',\n inputSchema: {\n startTime: z.string().describe('ISO start time'),\n endTime: z.string().optional().describe('ISO end time'),\n duration: z.number().int().optional().describe('Duration in seconds'),\n description: z.string().optional().describe('What was worked on'),\n notes: z.string().optional().describe('Additional notes'),\n projectId: z.string().optional().describe('Project to attribute time to'),\n taskId: z.string().optional().describe('Task to attribute time to'),\n billable: z.boolean().optional().describe('Whether the entry is billable (default false)'),\n hourlyRate: z.number().optional().describe('Override hourly rate'),\n source: z.string().optional().describe('Capture source (default \"manual\")'),\n tags: JsonObject.optional().describe('Tags JSON'),\n },\n },\n async ({\n startTime,\n endTime,\n duration,\n description,\n notes,\n projectId,\n taskId,\n billable,\n hourlyRate,\n source,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { startTime };\n if (endTime !== undefined) input.endTime = endTime;\n if (duration !== undefined) input.duration = duration;\n if (description !== undefined) input.description = description;\n if (notes !== undefined) input.notes = notes;\n if (projectId !== undefined) input.projectId = projectId;\n if (taskId !== undefined) input.taskId = taskId;\n if (billable !== undefined) input.billable = billable;\n if (hourlyRate !== undefined) input.hourlyRate = hourlyRate;\n if (source !== undefined) input.source = source;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{ createTimeEntry: Record<string, unknown> }>(\n ops.CREATE_TIME_ENTRY,\n { input },\n );\n return jsonResult(data.createTimeEntry);\n } catch (error) {\n ctx.logger.error('timecampus timeentries_create failed', { error: String(error) });\n return errorResult(\n `Failed to create time entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_update')),\n {\n title: 'Update Time Entry',\n description: 'Update a time entry. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Time entry ID'),\n startTime: z.string().optional().describe('Updated ISO start time'),\n endTime: z.string().optional().describe('Updated ISO end time'),\n duration: z.number().int().optional().describe('Updated duration in seconds'),\n description: z.string().optional().describe('Updated description'),\n notes: z.string().optional().describe('Updated notes'),\n projectId: z.string().optional().describe('Updated project ID'),\n taskId: z.string().optional().describe('Updated task ID'),\n billable: z.boolean().optional().describe('Updated billable flag'),\n hourlyRate: z.number().optional().describe('Updated hourly rate'),\n source: z.string().optional().describe('Updated capture source'),\n tags: JsonObject.optional().describe('Updated tags JSON'),\n },\n },\n async ({\n id,\n startTime,\n endTime,\n duration,\n description,\n notes,\n projectId,\n taskId,\n billable,\n hourlyRate,\n source,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (startTime !== undefined) input.startTime = startTime;\n if (endTime !== undefined) input.endTime = endTime;\n if (duration !== undefined) input.duration = duration;\n if (description !== undefined) input.description = description;\n if (notes !== undefined) input.notes = notes;\n if (projectId !== undefined) input.projectId = projectId;\n if (taskId !== undefined) input.taskId = taskId;\n if (billable !== undefined) input.billable = billable;\n if (hourlyRate !== undefined) input.hourlyRate = hourlyRate;\n if (source !== undefined) input.source = source;\n if (tags !== undefined) input.tags = tags;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{ updateTimeEntry: Record<string, unknown> }>(\n ops.UPDATE_TIME_ENTRY,\n { id, input },\n );\n return jsonResult(data.updateTimeEntry);\n } catch (error) {\n ctx.logger.error('timecampus timeentries_update failed', { error: String(error) });\n return errorResult(\n `Failed to update time entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_delete')),\n {\n title: 'Delete Time Entry',\n description: 'Delete a time entry by ID.',\n inputSchema: { id: z.string().describe('Time entry ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteTimeEntry: Record<string, unknown> }>(\n ops.DELETE_TIME_ENTRY,\n { id },\n );\n return jsonResult(data.deleteTimeEntry);\n } catch (error) {\n ctx.logger.error('timecampus timeentries_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete time entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_bulk_delete')),\n {\n title: 'Bulk Delete Time Entries',\n description:\n 'Delete multiple time entries by ID (max 100 per call). Returns the number deleted.',\n inputSchema: {\n ids: z\n .array(z.string())\n .min(1)\n .max(\n 100,\n 'Bulk delete accepts at most 100 ids per call — split larger batches across multiple calls.',\n )\n .describe('Time entry IDs to delete (max 100)'),\n },\n },\n async ({ ids }) => {\n try {\n const data = await ctx.gql.workspace.request<{ bulkDeleteTimeEntries: number }>(\n ops.BULK_DELETE_TIME_ENTRIES,\n { ids },\n );\n return jsonResult({ deleted: data.bulkDeleteTimeEntries });\n } catch (error) {\n ctx.logger.error('timecampus timeentries_bulk_delete failed', { error: String(error) });\n return errorResult(\n `Failed to bulk-delete time entries: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timeentries_duplicate')),\n {\n title: 'Duplicate Time Entry',\n description: 'Duplicate an existing time entry as a new draft.',\n inputSchema: { id: z.string().describe('Time entry ID to duplicate') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n duplicateTimeEntry: Record<string, unknown>;\n }>(ops.DUPLICATE_TIME_ENTRY, { id });\n return jsonResult(data.duplicateTimeEntry);\n } catch (error) {\n ctx.logger.error('timecampus timeentries_duplicate failed', { error: String(error) });\n return errorResult(\n `Failed to duplicate time entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timers_running')),\n {\n title: 'List Running Timers',\n description: 'List all currently-running timers with their elapsed seconds.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n runningTimers: Array<Record<string, unknown>>;\n }>(ops.RUNNING_TIMERS, {});\n return jsonResult(data.runningTimers);\n } catch (error) {\n ctx.logger.error('timecampus timers_running failed', { error: String(error) });\n return errorResult(\n `Failed to list running timers: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timers_start')),\n {\n title: 'Start Timer',\n description:\n 'Start a live timer (creates a running time entry). Provide an optional project/task/description.',\n inputSchema: {\n description: z.string().optional().describe('What you are starting work on'),\n notes: z.string().optional().describe('Additional notes'),\n projectId: z.string().optional().describe('Project to attribute time to'),\n taskId: z.string().optional().describe('Task to attribute time to'),\n billable: z.boolean().optional().describe('Whether billable (default false)'),\n hourlyRate: z.number().optional().describe('Override hourly rate'),\n source: z.string().optional().describe('Capture source (default \"timer\")'),\n tags: JsonObject.optional().describe('Tags JSON'),\n },\n },\n async ({ description, notes, projectId, taskId, billable, hourlyRate, source, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (description !== undefined) input.description = description;\n if (notes !== undefined) input.notes = notes;\n if (projectId !== undefined) input.projectId = projectId;\n if (taskId !== undefined) input.taskId = taskId;\n if (billable !== undefined) input.billable = billable;\n if (hourlyRate !== undefined) input.hourlyRate = hourlyRate;\n if (source !== undefined) input.source = source;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{ startTimer: Record<string, unknown> }>(\n ops.START_TIMER,\n { input },\n );\n return jsonResult(data.startTimer);\n } catch (error) {\n ctx.logger.error('timecampus timers_start failed', { error: String(error) });\n return errorResult(\n `Failed to start timer: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'timers_stop')),\n {\n title: 'Stop Timer',\n description: 'Stop a running timer by its time-entry ID.',\n inputSchema: { id: z.string().describe('Running time entry ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ stopTimer: Record<string, unknown> }>(\n ops.STOP_TIMER,\n { id },\n );\n return jsonResult(data.stopTimer);\n } catch (error) {\n ctx.logger.error('timecampus timers_stop failed', { error: String(error) });\n return errorResult(\n `Failed to stop timer: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus project tools.\n *\n * Surface (7): projects_{get,list,stats,create,update,archive,delete}.\n * Project `status` is a free-form String in the backend schema, so it stays a\n * plain string here. Workspace scoping comes from the gateway headers.\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 { JsonObject, OrderDirectionEnum, ProjectOrderFieldEnum } from './shared.js';\n\nexport function registerProjectTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'projects_get')),\n {\n title: 'Get Project',\n description: 'Fetch a single Timecampus project by ID, including its tasks.',\n inputSchema: { id: z.string().describe('Project ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeCampusProject: Record<string, unknown> | null;\n }>(ops.GET_PROJECT, { id });\n if (!data.timeCampusProject) return errorResult(`Project ${id} not found`);\n return jsonResult(data.timeCampusProject);\n } catch (error) {\n ctx.logger.error('timecampus projects_get failed', { error: String(error) });\n return errorResult(\n `Failed to get project: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'projects_list')),\n {\n title: 'List Projects',\n description:\n 'List projects with optional status/client/text filter, pagination and ordering. Returns { items, total, hasMore }.',\n inputSchema: {\n status: z.string().optional().describe('Filter by status (e.g. \"ACTIVE\", \"ARCHIVED\")'),\n clientId: z.string().optional().describe('Filter by client ID'),\n createdBy: z.string().optional().describe('Filter by creator'),\n search: z.string().optional().describe('Free-text search across name/description'),\n orderByField: ProjectOrderFieldEnum.optional().describe('Sort field'),\n orderByDirection: OrderDirectionEnum.optional().describe('Sort direction'),\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 ({\n status,\n clientId,\n createdBy,\n search,\n orderByField,\n orderByDirection,\n limit,\n offset,\n }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n if (clientId !== undefined) filter.clientId = clientId;\n if (createdBy !== undefined) filter.createdBy = createdBy;\n if (search !== undefined) filter.search = search;\n const orderBy =\n orderByField !== undefined\n ? { field: orderByField, direction: orderByDirection ?? 'DESC' }\n : undefined;\n\n const data = await ctx.gql.workspace.request<{\n timeCampusProjects: Record<string, unknown>;\n }>(ops.LIST_PROJECTS, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n orderBy,\n });\n return jsonResult(data.timeCampusProjects);\n } catch (error) {\n ctx.logger.error('timecampus projects_list failed', { error: String(error) });\n return errorResult(\n `Failed to list projects: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'projects_stats')),\n {\n title: 'Project Stats',\n description: 'Aggregate stats for a project (tasks, hours, budget used/remaining).',\n inputSchema: { id: z.string().describe('Project ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeCampusProjectStats: Record<string, unknown>;\n }>(ops.PROJECT_STATS, { id });\n return jsonResult(data.timeCampusProjectStats);\n } catch (error) {\n ctx.logger.error('timecampus projects_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get project stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'projects_create')),\n {\n title: 'Create Project',\n description: 'Create a new project. `name` is required.',\n inputSchema: {\n name: z.string().min(1).describe('Project name'),\n description: z.string().optional().describe('Project description'),\n status: z.string().optional().describe('Initial status (default \"ACTIVE\")'),\n color: z.string().optional().describe('Display color'),\n budget: z.number().optional().describe('Budget amount'),\n currency: z.string().optional().describe('Currency code (default \"USD\")'),\n hourlyRate: z.number().optional().describe('Default hourly rate'),\n estimatedHours: z.number().optional().describe('Estimated hours'),\n clientId: z.string().optional().describe('Associated client ID'),\n context: JsonObject.optional().describe('Operation context JSON'),\n },\n },\n async ({\n name,\n description,\n status,\n color,\n budget,\n currency,\n hourlyRate,\n estimatedHours,\n clientId,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (color !== undefined) input.color = color;\n if (budget !== undefined) input.budget = budget;\n if (currency !== undefined) input.currency = currency;\n if (hourlyRate !== undefined) input.hourlyRate = hourlyRate;\n if (estimatedHours !== undefined) input.estimatedHours = estimatedHours;\n if (clientId !== undefined) input.clientId = clientId;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n createTimeCampusProject: Record<string, unknown>;\n }>(ops.CREATE_PROJECT, { input });\n return jsonResult(data.createTimeCampusProject);\n } catch (error) {\n ctx.logger.error('timecampus projects_create failed', { error: String(error) });\n return errorResult(\n `Failed to create project: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'projects_update')),\n {\n title: 'Update Project',\n description: 'Update a project. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Project ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n status: z.string().optional().describe('Updated status'),\n color: z.string().optional().describe('Updated color'),\n budget: z.number().optional().describe('Updated budget'),\n currency: z.string().optional().describe('Updated currency'),\n hourlyRate: z.number().optional().describe('Updated hourly rate'),\n estimatedHours: z.number().optional().describe('Updated estimated hours'),\n clientId: z.string().optional().describe('Updated client ID'),\n },\n },\n async ({\n id,\n name,\n description,\n status,\n color,\n budget,\n currency,\n hourlyRate,\n estimatedHours,\n clientId,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (color !== undefined) input.color = color;\n if (budget !== undefined) input.budget = budget;\n if (currency !== undefined) input.currency = currency;\n if (hourlyRate !== undefined) input.hourlyRate = hourlyRate;\n if (estimatedHours !== undefined) input.estimatedHours = estimatedHours;\n if (clientId !== undefined) input.clientId = clientId;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateTimeCampusProject: Record<string, unknown>;\n }>(ops.UPDATE_PROJECT, { id, input });\n return jsonResult(data.updateTimeCampusProject);\n } catch (error) {\n ctx.logger.error('timecampus projects_update failed', { error: String(error) });\n return errorResult(\n `Failed to update project: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'projects_archive')),\n {\n title: 'Archive Project',\n description: 'Archive a project (soft-close without deleting).',\n inputSchema: { id: z.string().describe('Project ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n archiveTimeCampusProject: Record<string, unknown>;\n }>(ops.ARCHIVE_PROJECT, { id });\n return jsonResult(data.archiveTimeCampusProject);\n } catch (error) {\n ctx.logger.error('timecampus projects_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive project: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'projects_delete')),\n {\n title: 'Delete Project',\n description: 'Delete a project by ID.',\n inputSchema: { id: z.string().describe('Project ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteTimeCampusProject: Record<string, unknown>;\n }>(ops.DELETE_PROJECT, { id });\n return jsonResult(data.deleteTimeCampusProject);\n } catch (error) {\n ctx.logger.error('timecampus projects_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete project: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus task tools — project task board.\n *\n * Surface (7): tasks_{get,list,create,update,update_status,reorder,delete}.\n * Task `status` and `priority` are free-form Strings in the backend schema.\n * `tasks_list` requires a projectId (the backend `tasks` query is project-scoped)\n * and returns { items, total, hasMore }.\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 { JsonObject, OrderDirectionEnum, TaskOrderFieldEnum } from './shared.js';\n\nexport function registerTaskTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_get')),\n {\n title: 'Get Task',\n description: 'Fetch a single task by ID.',\n inputSchema: { id: z.string().describe('Task ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ task: Record<string, unknown> | null }>(\n ops.GET_TASK,\n { id },\n );\n if (!data.task) return errorResult(`Task ${id} not found`);\n return jsonResult(data.task);\n } catch (error) {\n ctx.logger.error('timecampus tasks_get failed', { error: String(error) });\n return errorResult(\n `Failed to get task: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_list')),\n {\n title: 'List Tasks',\n description:\n 'List the tasks of a project with optional status/priority/assignee/overdue/text filter, pagination and ordering. Returns { items, total, hasMore }.',\n inputSchema: {\n projectId: z.string().describe('Project ID (required — tasks are project-scoped)'),\n status: z.string().optional().describe('Filter by status'),\n priority: z.string().optional().describe('Filter by priority'),\n assigneeId: z.string().optional().describe('Filter by assignee'),\n overdue: z.boolean().optional().describe('Only overdue tasks'),\n hasDueDate: z.boolean().optional().describe('Only tasks with a due date'),\n search: z.string().optional().describe('Free-text search across title/description'),\n orderByField: TaskOrderFieldEnum.optional().describe('Sort field'),\n orderByDirection: OrderDirectionEnum.optional().describe('Sort direction'),\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 ({\n projectId,\n status,\n priority,\n assigneeId,\n overdue,\n hasDueDate,\n search,\n orderByField,\n orderByDirection,\n limit,\n offset,\n }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n if (priority !== undefined) filter.priority = priority;\n if (assigneeId !== undefined) filter.assigneeId = assigneeId;\n if (overdue !== undefined) filter.overdue = overdue;\n if (hasDueDate !== undefined) filter.hasDueDate = hasDueDate;\n if (search !== undefined) filter.search = search;\n const orderBy =\n orderByField !== undefined\n ? { field: orderByField, direction: orderByDirection ?? 'ASC' }\n : undefined;\n\n const data = await ctx.gql.workspace.request<{ tasks: Record<string, unknown> }>(\n ops.LIST_TASKS,\n {\n projectId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n orderBy,\n },\n );\n return jsonResult(data.tasks);\n } catch (error) {\n ctx.logger.error('timecampus tasks_list failed', { error: String(error) });\n return errorResult(\n `Failed to list tasks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_create')),\n {\n title: 'Create Task',\n description: 'Create a task within a project. `projectId` and `title` are required.',\n inputSchema: {\n projectId: z.string().describe('Project to add the task to'),\n title: z.string().min(1).describe('Task title'),\n description: z.string().optional().describe('Task description'),\n status: z.string().optional().describe('Initial status (default \"TODO\")'),\n priority: z.string().optional().describe('Priority (default \"MEDIUM\")'),\n order: z.number().int().optional().describe('Board order position'),\n assigneeId: z.string().optional().describe('Assignee user ID'),\n dueDate: z.string().optional().describe('ISO due date'),\n estimatedHours: z.number().optional().describe('Estimated hours'),\n context: JsonObject.optional().describe('Operation context JSON'),\n },\n },\n async ({\n projectId,\n title,\n description,\n status,\n priority,\n order,\n assigneeId,\n dueDate,\n estimatedHours,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { projectId, title };\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (priority !== undefined) input.priority = priority;\n if (order !== undefined) input.order = order;\n if (assigneeId !== undefined) input.assigneeId = assigneeId;\n if (dueDate !== undefined) input.dueDate = dueDate;\n if (estimatedHours !== undefined) input.estimatedHours = estimatedHours;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{ createTask: Record<string, unknown> }>(\n ops.CREATE_TASK,\n { input },\n );\n return jsonResult(data.createTask);\n } catch (error) {\n ctx.logger.error('timecampus tasks_create failed', { error: String(error) });\n return errorResult(\n `Failed to create task: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_update')),\n {\n title: 'Update Task',\n description: 'Update a task. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Task ID'),\n title: z.string().optional().describe('Updated title'),\n description: z.string().optional().describe('Updated description'),\n status: z.string().optional().describe('Updated status'),\n priority: z.string().optional().describe('Updated priority'),\n order: z.number().int().optional().describe('Updated board order'),\n assigneeId: z.string().optional().describe('Updated assignee'),\n dueDate: z.string().optional().describe('Updated ISO due date'),\n estimatedHours: z.number().optional().describe('Updated estimated hours'),\n },\n },\n async ({\n id,\n title,\n description,\n status,\n priority,\n order,\n assigneeId,\n dueDate,\n estimatedHours,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (priority !== undefined) input.priority = priority;\n if (order !== undefined) input.order = order;\n if (assigneeId !== undefined) input.assigneeId = assigneeId;\n if (dueDate !== undefined) input.dueDate = dueDate;\n if (estimatedHours !== undefined) input.estimatedHours = estimatedHours;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{ updateTask: Record<string, unknown> }>(\n ops.UPDATE_TASK,\n { id, input },\n );\n return jsonResult(data.updateTask);\n } catch (error) {\n ctx.logger.error('timecampus tasks_update failed', { error: String(error) });\n return errorResult(\n `Failed to update task: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_update_status')),\n {\n title: 'Update Task Status',\n description: 'Set just the status of a task (e.g. \"TODO\" → \"IN_PROGRESS\" → \"DONE\").',\n inputSchema: {\n id: z.string().describe('Task ID'),\n status: z.string().min(1).describe('New status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{ updateTaskStatus: Record<string, unknown> }>(\n ops.UPDATE_TASK_STATUS,\n { id, status },\n );\n return jsonResult(data.updateTaskStatus);\n } catch (error) {\n ctx.logger.error('timecampus tasks_update_status failed', { error: String(error) });\n return errorResult(\n `Failed to update task status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_reorder')),\n {\n title: 'Reorder Tasks',\n description: 'Reorder a project’s task board by providing the task IDs in the desired order.',\n inputSchema: {\n projectId: z.string().describe('Project ID'),\n taskIds: z.array(z.string()).min(1).describe('Task IDs in the new order'),\n },\n },\n async ({ projectId, taskIds }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n reorderTasks: Array<Record<string, unknown>>;\n }>(ops.REORDER_TASKS, { projectId, taskIds });\n return jsonResult(data.reorderTasks);\n } catch (error) {\n ctx.logger.error('timecampus tasks_reorder failed', { error: String(error) });\n return errorResult(\n `Failed to reorder tasks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_delete')),\n {\n title: 'Delete Task',\n description: 'Delete a task by ID.',\n inputSchema: { id: z.string().describe('Task ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteTask: Record<string, unknown> }>(\n ops.DELETE_TASK,\n { id },\n );\n return jsonResult(data.deleteTask);\n } catch (error) {\n ctx.logger.error('timecampus tasks_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete task: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus meeting tools — meetings + participants + action items.\n *\n * Surface (15): meetings_{get,list,stats,upcoming,create,update,delete,rate},\n * meetings_{add_participant,remove_participant,update_participant_status} and\n * meetings_{create_action_item,update_action_item,complete_action_item,\n * delete_action_item}.\n *\n * IMPORTANT: every meeting field takes an EXPLICIT `workspaceId: ID!` argument\n * (the create-meeting input carries it inside the input). This matches the real\n * backend schema and is wired through verbatim.\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 {\n JsonObject,\n MeetingOrderByFieldEnum,\n MeetingParticipantRoleEnum,\n MeetingParticipantStatusEnum,\n MeetingTypeEnum,\n SortDirectionEnum,\n} from './shared.js';\n\nexport function registerMeetingTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_get')),\n {\n title: 'Get Meeting',\n description:\n 'Fetch a single meeting by ID (with participants + action items). Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Meeting ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n meeting: Record<string, unknown> | null;\n }>(ops.GET_MEETING, { id, workspaceId });\n if (!data.meeting) return errorResult(`Meeting ${id} not found`);\n return jsonResult(data.meeting);\n } catch (error) {\n ctx.logger.error('timecampus meetings_get failed', { error: String(error) });\n return errorResult(\n `Failed to get meeting: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_list')),\n {\n title: 'List Meetings',\n description:\n 'List meetings in a workspace with optional type/participant/rating/date filters, pagination and ordering.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n meetingType: MeetingTypeEnum.optional().describe('Filter by meeting type'),\n participantUserId: z.string().optional().describe('Filter by participant user ID'),\n minRating: z.number().int().optional().describe('Minimum rating'),\n hasActionItems: z.boolean().optional().describe('Only meetings with action items'),\n startDateFrom: z.string().optional().describe('ISO range start'),\n startDateTo: z.string().optional().describe('ISO range end'),\n orderByField: MeetingOrderByFieldEnum.optional().describe('Sort field'),\n orderByDirection: SortDirectionEnum.optional().describe('Sort direction (asc/desc)'),\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 ({\n workspaceId,\n meetingType,\n participantUserId,\n minRating,\n hasActionItems,\n startDateFrom,\n startDateTo,\n orderByField,\n orderByDirection,\n limit,\n offset,\n }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (meetingType !== undefined) filter.meetingType = meetingType;\n if (participantUserId !== undefined) filter.participantUserId = participantUserId;\n if (minRating !== undefined) filter.minRating = minRating;\n if (hasActionItems !== undefined) filter.hasActionItems = hasActionItems;\n if (startDateFrom !== undefined) filter.startDateFrom = startDateFrom;\n if (startDateTo !== undefined) filter.startDateTo = startDateTo;\n const orderBy =\n orderByField !== undefined\n ? { field: orderByField, direction: orderByDirection ?? 'desc' }\n : undefined;\n\n const data = await ctx.gql.workspace.request<{ meetings: Array<Record<string, unknown>> }>(\n ops.LIST_MEETINGS,\n {\n workspaceId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n orderBy,\n },\n );\n return jsonResult(data.meetings);\n } catch (error) {\n ctx.logger.error('timecampus meetings_list failed', { error: String(error) });\n return errorResult(\n `Failed to list meetings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_stats')),\n {\n title: 'Meeting Stats',\n description: 'Aggregate meeting stats for a workspace over an optional date range.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n startDate: z.string().optional().describe('ISO start of date range'),\n endDate: z.string().optional().describe('ISO end of date range'),\n },\n },\n async ({ workspaceId, startDate, endDate }) => {\n try {\n const data = await ctx.gql.workspace.request<{ meetingStats: Record<string, unknown> }>(\n ops.MEETING_STATS,\n { workspaceId, startDate, endDate },\n );\n return jsonResult(data.meetingStats);\n } catch (error) {\n ctx.logger.error('timecampus meetings_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get meeting stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_upcoming')),\n {\n title: 'Upcoming Meetings',\n description: 'List upcoming meetings in a workspace.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n limit: z.number().int().optional().describe('Max results (default 10)'),\n },\n },\n async ({ workspaceId, limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n upcomingMeetings: Array<Record<string, unknown>>;\n }>(ops.UPCOMING_MEETINGS, { workspaceId, limit: limit ?? 10 });\n return jsonResult(data.upcomingMeetings);\n } catch (error) {\n ctx.logger.error('timecampus meetings_upcoming failed', { error: String(error) });\n return errorResult(\n `Failed to list upcoming meetings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_create')),\n {\n title: 'Create Meeting',\n description:\n 'Create a meeting. `workspaceId`, `title`, `meetingType` and `startTime` are required.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n title: z.string().min(1).describe('Meeting title'),\n meetingType: MeetingTypeEnum.describe('Meeting type'),\n startTime: z.string().describe('ISO start time'),\n endTime: z.string().optional().describe('ISO end time'),\n cost: z.number().optional().describe('Estimated meeting cost'),\n notes: z.string().optional().describe('Notes'),\n recordingUrl: z.string().optional().describe('Recording URL'),\n calendarEventId: z.string().optional().describe('Linked calendar event ID'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n workspaceId,\n title,\n meetingType,\n startTime,\n endTime,\n cost,\n notes,\n recordingUrl,\n calendarEventId,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { workspaceId, title, meetingType, startTime };\n if (endTime !== undefined) input.endTime = endTime;\n if (cost !== undefined) input.cost = cost;\n if (notes !== undefined) input.notes = notes;\n if (recordingUrl !== undefined) input.recordingUrl = recordingUrl;\n if (calendarEventId !== undefined) input.calendarEventId = calendarEventId;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{ createMeeting: Record<string, unknown> }>(\n ops.CREATE_MEETING,\n { input },\n );\n return jsonResult(data.createMeeting);\n } catch (error) {\n ctx.logger.error('timecampus meetings_create failed', { error: String(error) });\n return errorResult(\n `Failed to create meeting: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_update')),\n {\n title: 'Update Meeting',\n description: 'Update a meeting. Requires workspaceId and at least one mutable field.',\n inputSchema: {\n id: z.string().describe('Meeting ID'),\n workspaceId: z.string().describe('Workspace ID'),\n title: z.string().optional().describe('Updated title'),\n meetingType: MeetingTypeEnum.optional().describe('Updated meeting type'),\n startTime: z.string().optional().describe('Updated ISO start time'),\n endTime: z.string().optional().describe('Updated ISO end time'),\n cost: z.number().optional().describe('Updated cost'),\n notes: z.string().optional().describe('Updated notes'),\n recordingUrl: z.string().optional().describe('Updated recording URL'),\n calendarEventId: z.string().optional().describe('Updated calendar event ID'),\n },\n },\n async ({\n id,\n workspaceId,\n title,\n meetingType,\n startTime,\n endTime,\n cost,\n notes,\n recordingUrl,\n calendarEventId,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (meetingType !== undefined) input.meetingType = meetingType;\n if (startTime !== undefined) input.startTime = startTime;\n if (endTime !== undefined) input.endTime = endTime;\n if (cost !== undefined) input.cost = cost;\n if (notes !== undefined) input.notes = notes;\n if (recordingUrl !== undefined) input.recordingUrl = recordingUrl;\n if (calendarEventId !== undefined) input.calendarEventId = calendarEventId;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{ updateMeeting: Record<string, unknown> }>(\n ops.UPDATE_MEETING,\n { id, input, workspaceId },\n );\n return jsonResult(data.updateMeeting);\n } catch (error) {\n ctx.logger.error('timecampus meetings_update failed', { error: String(error) });\n return errorResult(\n `Failed to update meeting: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_delete')),\n {\n title: 'Delete Meeting',\n description: 'Delete a meeting by ID. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Meeting ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteMeeting: boolean }>(\n ops.DELETE_MEETING,\n {\n id,\n workspaceId,\n },\n );\n return jsonResult({ deleted: data.deleteMeeting });\n } catch (error) {\n ctx.logger.error('timecampus meetings_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete meeting: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_rate')),\n {\n title: 'Rate Meeting',\n description: 'Rate a meeting (typically 1–5). Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Meeting ID'),\n rating: z.number().int().describe('Rating value'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, rating, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ rateMeeting: Record<string, unknown> }>(\n ops.RATE_MEETING,\n { id, rating, workspaceId },\n );\n return jsonResult(data.rateMeeting);\n } catch (error) {\n ctx.logger.error('timecampus meetings_rate failed', { error: String(error) });\n return errorResult(\n `Failed to rate meeting: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_add_participant')),\n {\n title: 'Add Meeting Participant',\n description: 'Add a participant to a meeting. Requires meetingId, workspaceId and userId.',\n inputSchema: {\n meetingId: z.string().describe('Meeting ID'),\n workspaceId: z.string().describe('Workspace ID'),\n userId: z.string().describe('Participant user ID'),\n role: MeetingParticipantRoleEnum.optional().describe('Participant role'),\n status: MeetingParticipantStatusEnum.optional().describe('Initial RSVP status'),\n },\n },\n async ({ meetingId, workspaceId, userId, role, status }) => {\n try {\n const input: Record<string, unknown> = { userId };\n if (role !== undefined) input.role = role;\n if (status !== undefined) input.status = status;\n\n const data = await ctx.gql.workspace.request<{\n addMeetingParticipant: Record<string, unknown>;\n }>(ops.ADD_MEETING_PARTICIPANT, { input, meetingId, workspaceId });\n return jsonResult(data.addMeetingParticipant);\n } catch (error) {\n ctx.logger.error('timecampus meetings_add_participant failed', { error: String(error) });\n return errorResult(\n `Failed to add meeting participant: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_remove_participant')),\n {\n title: 'Remove Meeting Participant',\n description:\n 'Remove a participant from a meeting. Requires meetingId, participantId, workspaceId.',\n inputSchema: {\n meetingId: z.string().describe('Meeting ID'),\n participantId: z.string().describe('Participant ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ meetingId, participantId, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ removeMeetingParticipant: boolean }>(\n ops.REMOVE_MEETING_PARTICIPANT,\n { meetingId, participantId, workspaceId },\n );\n return jsonResult({ removed: data.removeMeetingParticipant });\n } catch (error) {\n ctx.logger.error('timecampus meetings_remove_participant failed', { error: String(error) });\n return errorResult(\n `Failed to remove meeting participant: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_update_participant_status')),\n {\n title: 'Update Participant Status',\n description:\n 'Update a participant’s RSVP status. Requires meetingId, participantId, workspaceId.',\n inputSchema: {\n meetingId: z.string().describe('Meeting ID'),\n participantId: z.string().describe('Participant ID'),\n status: MeetingParticipantStatusEnum.describe('New RSVP status'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ meetingId, participantId, status, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n updateParticipantStatus: Record<string, unknown>;\n }>(ops.UPDATE_PARTICIPANT_STATUS, { meetingId, participantId, status, workspaceId });\n return jsonResult(data.updateParticipantStatus);\n } catch (error) {\n ctx.logger.error('timecampus meetings_update_participant_status failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to update participant status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_create_action_item')),\n {\n title: 'Create Meeting Action Item',\n description:\n 'Create an action item for a meeting. Requires meetingId, workspaceId and a title.',\n inputSchema: {\n meetingId: z.string().describe('Meeting ID'),\n workspaceId: z.string().describe('Workspace ID'),\n title: z.string().min(1).describe('Action item title'),\n notes: z.string().optional().describe('Notes'),\n assigneeId: z.string().optional().describe('Assignee user ID'),\n dueDate: z.string().optional().describe('ISO due date'),\n },\n },\n async ({ meetingId, workspaceId, title, notes, assigneeId, dueDate }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (notes !== undefined) input.notes = notes;\n if (assigneeId !== undefined) input.assigneeId = assigneeId;\n if (dueDate !== undefined) input.dueDate = dueDate;\n\n const data = await ctx.gql.workspace.request<{ createActionItem: Record<string, unknown> }>(\n ops.CREATE_ACTION_ITEM,\n { input, meetingId, workspaceId },\n );\n return jsonResult(data.createActionItem);\n } catch (error) {\n ctx.logger.error('timecampus meetings_create_action_item failed', { error: String(error) });\n return errorResult(\n `Failed to create action item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_update_action_item')),\n {\n title: 'Update Meeting Action Item',\n description:\n 'Update a meeting action item. Requires workspaceId and at least one mutable field.',\n inputSchema: {\n id: z.string().describe('Action item ID'),\n workspaceId: z.string().describe('Workspace ID'),\n title: z.string().optional().describe('Updated title'),\n notes: z.string().optional().describe('Updated notes'),\n status: z\n .enum(['PENDING', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED'])\n .optional()\n .describe('Updated status'),\n assigneeId: z.string().optional().describe('Updated assignee'),\n dueDate: z.string().optional().describe('Updated ISO due date'),\n },\n },\n async ({ id, workspaceId, title, notes, status, assigneeId, dueDate }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (notes !== undefined) input.notes = notes;\n if (status !== undefined) input.status = status;\n if (assigneeId !== undefined) input.assigneeId = assigneeId;\n if (dueDate !== undefined) input.dueDate = dueDate;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{ updateActionItem: Record<string, unknown> }>(\n ops.UPDATE_ACTION_ITEM,\n { id, input, workspaceId },\n );\n return jsonResult(data.updateActionItem);\n } catch (error) {\n ctx.logger.error('timecampus meetings_update_action_item failed', { error: String(error) });\n return errorResult(\n `Failed to update action item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_complete_action_item')),\n {\n title: 'Complete Meeting Action Item',\n description: 'Mark a meeting action item as completed. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Action item ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n completeActionItem: Record<string, unknown>;\n }>(ops.COMPLETE_ACTION_ITEM, { id, workspaceId });\n return jsonResult(data.completeActionItem);\n } catch (error) {\n ctx.logger.error('timecampus meetings_complete_action_item failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to complete action item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meetings_delete_action_item')),\n {\n title: 'Delete Meeting Action Item',\n description: 'Delete a meeting action item by ID. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Action item ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteActionItem: boolean }>(\n ops.DELETE_ACTION_ITEM,\n { id, workspaceId },\n );\n return jsonResult({ deleted: data.deleteActionItem });\n } catch (error) {\n ctx.logger.error('timecampus meetings_delete_action_item failed', { error: String(error) });\n return errorResult(\n `Failed to delete action item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus pomodoro tools — focus sessions, goals and settings.\n *\n * Surface (13): pomodoro_{active_session,session,sessions,stats,goals,settings,\n * start_session,complete_session,interrupt_session,create_goal,update_goal,\n * delete_goal,update_settings}.\n *\n * Every pomodoro field takes an EXPLICIT `workspaceId: ID!` argument; the\n * start-session / create-goal / update-settings inputs carry workspaceId inside\n * the input. Matches the real backend schema.\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 {\n JsonObject,\n PomodoroGoalTypeEnum,\n PomodoroSessionOrderByFieldEnum,\n PomodoroSessionTypeEnum,\n SortDirectionEnum,\n} from './shared.js';\n\nexport function registerPomodoroTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_active_session')),\n {\n title: 'Active Pomodoro Session',\n description: 'Fetch the currently-active pomodoro session in a workspace, if any.',\n inputSchema: { workspaceId: z.string().describe('Workspace ID') },\n },\n async ({ workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n activePomodoroSession: Record<string, unknown> | null;\n }>(ops.ACTIVE_POMODORO_SESSION, { workspaceId });\n return jsonResult(data.activePomodoroSession);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_active_session failed', { error: String(error) });\n return errorResult(\n `Failed to get active pomodoro session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_session')),\n {\n title: 'Get Pomodoro Session',\n description: 'Fetch a single pomodoro session by ID. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Pomodoro session ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n pomodoroSession: Record<string, unknown> | null;\n }>(ops.GET_POMODORO_SESSION, { id, workspaceId });\n if (!data.pomodoroSession) return errorResult(`Pomodoro session ${id} not found`);\n return jsonResult(data.pomodoroSession);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_session failed', { error: String(error) });\n return errorResult(\n `Failed to get pomodoro session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_sessions')),\n {\n title: 'List Pomodoro Sessions',\n description:\n 'List pomodoro sessions in a workspace with optional filters, pagination and ordering.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n type: PomodoroSessionTypeEnum.optional().describe('Filter by session type'),\n completed: z.boolean().optional().describe('Filter by completed flag'),\n interrupted: z.boolean().optional().describe('Filter by interrupted flag'),\n projectId: z.string().optional().describe('Filter by project ID'),\n taskId: z.string().optional().describe('Filter by task ID'),\n userId: z.string().optional().describe('Filter by user ID'),\n startDateFrom: z.string().optional().describe('ISO range start'),\n startDateTo: z.string().optional().describe('ISO range end'),\n orderByField: PomodoroSessionOrderByFieldEnum.optional().describe('Sort field'),\n orderByDirection: SortDirectionEnum.optional().describe('Sort direction (asc/desc)'),\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 ({\n workspaceId,\n type,\n completed,\n interrupted,\n projectId,\n taskId,\n userId,\n startDateFrom,\n startDateTo,\n orderByField,\n orderByDirection,\n limit,\n offset,\n }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (type !== undefined) filter.type = type;\n if (completed !== undefined) filter.completed = completed;\n if (interrupted !== undefined) filter.interrupted = interrupted;\n if (projectId !== undefined) filter.projectId = projectId;\n if (taskId !== undefined) filter.taskId = taskId;\n if (userId !== undefined) filter.userId = userId;\n if (startDateFrom !== undefined) filter.startDateFrom = startDateFrom;\n if (startDateTo !== undefined) filter.startDateTo = startDateTo;\n const orderBy =\n orderByField !== undefined\n ? { field: orderByField, direction: orderByDirection ?? 'desc' }\n : undefined;\n\n const data = await ctx.gql.workspace.request<{\n pomodoroSessions: Array<Record<string, unknown>>;\n }>(ops.LIST_POMODORO_SESSIONS, {\n workspaceId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n orderBy,\n });\n return jsonResult(data.pomodoroSessions);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_sessions failed', { error: String(error) });\n return errorResult(\n `Failed to list pomodoro sessions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_stats')),\n {\n title: 'Pomodoro Stats',\n description: 'Aggregate pomodoro stats for a workspace over an optional date range.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n startDate: z.string().optional().describe('ISO start of date range'),\n endDate: z.string().optional().describe('ISO end of date range'),\n },\n },\n async ({ workspaceId, startDate, endDate }) => {\n try {\n const data = await ctx.gql.workspace.request<{ pomodoroStats: Record<string, unknown> }>(\n ops.POMODORO_STATS,\n { workspaceId, startDate, endDate },\n );\n return jsonResult(data.pomodoroStats);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get pomodoro stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_goals')),\n {\n title: 'List Pomodoro Goals',\n description: 'List pomodoro goals in a workspace.',\n inputSchema: { workspaceId: z.string().describe('Workspace ID') },\n },\n async ({ workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n pomodoroGoals: Array<Record<string, unknown>>;\n }>(ops.POMODORO_GOALS, { workspaceId });\n return jsonResult(data.pomodoroGoals);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_goals failed', { error: String(error) });\n return errorResult(\n `Failed to list pomodoro goals: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_settings')),\n {\n title: 'Get Pomodoro Settings',\n description: 'Fetch the pomodoro settings for a workspace.',\n inputSchema: { workspaceId: z.string().describe('Workspace ID') },\n },\n async ({ workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n pomodoroSettings: Record<string, unknown> | null;\n }>(ops.POMODORO_SETTINGS, { workspaceId });\n return jsonResult(data.pomodoroSettings);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_settings failed', { error: String(error) });\n return errorResult(\n `Failed to get pomodoro settings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_start_session')),\n {\n title: 'Start Pomodoro Session',\n description: 'Start a pomodoro session. `workspaceId` and `type` are required.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n type: PomodoroSessionTypeEnum.describe('Session type (FOCUS / SHORT_BREAK / LONG_BREAK)'),\n projectId: z.string().optional().describe('Project to attribute focus to'),\n taskId: z.string().optional().describe('Task to attribute focus to'),\n notes: z.string().optional().describe('Notes'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({ workspaceId, type, projectId, taskId, notes, context }) => {\n try {\n const input: Record<string, unknown> = { workspaceId, type };\n if (projectId !== undefined) input.projectId = projectId;\n if (taskId !== undefined) input.taskId = taskId;\n if (notes !== undefined) input.notes = notes;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n startPomodoroSession: Record<string, unknown>;\n }>(ops.START_POMODORO_SESSION, { input });\n return jsonResult(data.startPomodoroSession);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_start_session failed', { error: String(error) });\n return errorResult(\n `Failed to start pomodoro session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_complete_session')),\n {\n title: 'Complete Pomodoro Session',\n description: 'Mark a pomodoro session as completed. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Pomodoro session ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n completePomodoroSession: Record<string, unknown>;\n }>(ops.COMPLETE_POMODORO_SESSION, { id, workspaceId });\n return jsonResult(data.completePomodoroSession);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_complete_session failed', { error: String(error) });\n return errorResult(\n `Failed to complete pomodoro session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_interrupt_session')),\n {\n title: 'Interrupt Pomodoro Session',\n description: 'Interrupt a running pomodoro session. Requires workspaceId; reason optional.',\n inputSchema: {\n id: z.string().describe('Pomodoro session ID'),\n workspaceId: z.string().describe('Workspace ID'),\n reason: z.string().optional().describe('Interruption reason'),\n },\n },\n async ({ id, workspaceId, reason }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n interruptPomodoroSession: Record<string, unknown>;\n }>(ops.INTERRUPT_POMODORO_SESSION, { id, workspaceId, reason });\n return jsonResult(data.interruptPomodoroSession);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_interrupt_session failed', { error: String(error) });\n return errorResult(\n `Failed to interrupt pomodoro session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_create_goal')),\n {\n title: 'Create Pomodoro Goal',\n description:\n 'Create a pomodoro goal. `workspaceId`, `type`, `period`, `target`, dates required.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n type: PomodoroGoalTypeEnum.describe('Goal cadence (DAILY / WEEKLY / MONTHLY)'),\n period: z.string().describe('Period label (e.g. \"2026-W26\")'),\n target: z.number().int().describe('Target session count'),\n startDate: z.string().describe('ISO period start'),\n endDate: z.string().describe('ISO period end'),\n },\n },\n async ({ workspaceId, type, period, target, startDate, endDate }) => {\n try {\n const input: Record<string, unknown> = {\n workspaceId,\n type,\n period,\n target,\n startDate,\n endDate,\n };\n const data = await ctx.gql.workspace.request<{\n createPomodoroGoal: Record<string, unknown>;\n }>(ops.CREATE_POMODORO_GOAL, { input });\n return jsonResult(data.createPomodoroGoal);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_create_goal failed', { error: String(error) });\n return errorResult(\n `Failed to create pomodoro goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_update_goal')),\n {\n title: 'Update Pomodoro Goal',\n description: 'Update a pomodoro goal. Requires workspaceId and at least one mutable field.',\n inputSchema: {\n id: z.string().describe('Pomodoro goal ID'),\n workspaceId: z.string().describe('Workspace ID'),\n type: PomodoroGoalTypeEnum.optional().describe('Updated cadence'),\n period: z.string().optional().describe('Updated period'),\n target: z.number().int().optional().describe('Updated target'),\n startDate: z.string().optional().describe('Updated ISO start'),\n endDate: z.string().optional().describe('Updated ISO end'),\n },\n },\n async ({ id, workspaceId, type, period, target, startDate, endDate }) => {\n try {\n const input: Record<string, unknown> = {};\n if (type !== undefined) input.type = type;\n if (period !== undefined) input.period = period;\n if (target !== undefined) input.target = target;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updatePomodoroGoal: Record<string, unknown>;\n }>(ops.UPDATE_POMODORO_GOAL, { id, input, workspaceId });\n return jsonResult(data.updatePomodoroGoal);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_update_goal failed', { error: String(error) });\n return errorResult(\n `Failed to update pomodoro goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_delete_goal')),\n {\n title: 'Delete Pomodoro Goal',\n description: 'Delete a pomodoro goal by ID. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Pomodoro goal ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deletePomodoroGoal: boolean }>(\n ops.DELETE_POMODORO_GOAL,\n { id, workspaceId },\n );\n return jsonResult({ deleted: data.deletePomodoroGoal });\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_delete_goal failed', { error: String(error) });\n return errorResult(\n `Failed to delete pomodoro goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pomodoro_update_settings')),\n {\n title: 'Update Pomodoro Settings',\n description:\n 'Update pomodoro settings for a workspace. `workspaceId` is required; provide any settings to change.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n focusDuration: z.number().int().optional().describe('Focus duration (minutes)'),\n shortBreakDuration: z.number().int().optional().describe('Short break duration (minutes)'),\n longBreakDuration: z.number().int().optional().describe('Long break duration (minutes)'),\n sessionsBeforeLongBreak: z\n .number()\n .int()\n .optional()\n .describe('Sessions before a long break'),\n autoStartBreaks: z.boolean().optional().describe('Auto-start breaks'),\n autoStartFocus: z.boolean().optional().describe('Auto-start focus sessions'),\n soundEnabled: z.boolean().optional().describe('Sound enabled'),\n notificationsEnabled: z.boolean().optional().describe('Notifications enabled'),\n },\n },\n async ({\n workspaceId,\n focusDuration,\n shortBreakDuration,\n longBreakDuration,\n sessionsBeforeLongBreak,\n autoStartBreaks,\n autoStartFocus,\n soundEnabled,\n notificationsEnabled,\n }) => {\n try {\n const input: Record<string, unknown> = { workspaceId };\n if (focusDuration !== undefined) input.focusDuration = focusDuration;\n if (shortBreakDuration !== undefined) input.shortBreakDuration = shortBreakDuration;\n if (longBreakDuration !== undefined) input.longBreakDuration = longBreakDuration;\n if (sessionsBeforeLongBreak !== undefined)\n input.sessionsBeforeLongBreak = sessionsBeforeLongBreak;\n if (autoStartBreaks !== undefined) input.autoStartBreaks = autoStartBreaks;\n if (autoStartFocus !== undefined) input.autoStartFocus = autoStartFocus;\n if (soundEnabled !== undefined) input.soundEnabled = soundEnabled;\n if (notificationsEnabled !== undefined) input.notificationsEnabled = notificationsEnabled;\n\n const data = await ctx.gql.workspace.request<{\n updatePomodoroSettings: Record<string, unknown>;\n }>(ops.UPDATE_POMODORO_SETTINGS, { input });\n return jsonResult(data.updatePomodoroSettings);\n } catch (error) {\n ctx.logger.error('timecampus pomodoro_update_settings failed', { error: String(error) });\n return errorResult(\n `Failed to update pomodoro settings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus expense tools.\n *\n * Surface (10): expenses_{get,list,stats,categories,create,update,delete,\n * approve,reject,submit}.\n *\n * Every expense field takes an EXPLICIT `workspaceId: ID!` argument (the\n * create-expense input carries workspaceId inside the input). Matches the real\n * backend schema.\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 {\n ExpenseOrderByFieldEnum,\n ExpenseStatusEnum,\n JsonObject,\n SortDirectionEnum,\n} from './shared.js';\n\nexport function registerExpenseTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_get')),\n {\n title: 'Get Expense',\n description: 'Fetch a single expense entry by ID. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Expense ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n expense: Record<string, unknown> | null;\n }>(ops.GET_EXPENSE, { id, workspaceId });\n if (!data.expense) return errorResult(`Expense ${id} not found`);\n return jsonResult(data.expense);\n } catch (error) {\n ctx.logger.error('timecampus expenses_get failed', { error: String(error) });\n return errorResult(\n `Failed to get expense: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_list')),\n {\n title: 'List Expenses',\n description: 'List expenses in a workspace with optional filters, pagination and ordering.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n status: ExpenseStatusEnum.optional().describe('Filter by status'),\n category: z.string().optional().describe('Filter by category'),\n currency: z.string().optional().describe('Filter by currency'),\n projectId: z.string().optional().describe('Filter by project ID'),\n userId: z.string().optional().describe('Filter by user ID'),\n minAmount: z.number().optional().describe('Minimum amount'),\n maxAmount: z.number().optional().describe('Maximum amount'),\n dateFrom: z.string().optional().describe('ISO range start'),\n dateTo: z.string().optional().describe('ISO range end'),\n orderByField: ExpenseOrderByFieldEnum.optional().describe('Sort field'),\n orderByDirection: SortDirectionEnum.optional().describe('Sort direction (asc/desc)'),\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 ({\n workspaceId,\n status,\n category,\n currency,\n projectId,\n userId,\n minAmount,\n maxAmount,\n dateFrom,\n dateTo,\n orderByField,\n orderByDirection,\n limit,\n offset,\n }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n if (category !== undefined) filter.category = category;\n if (currency !== undefined) filter.currency = currency;\n if (projectId !== undefined) filter.projectId = projectId;\n if (userId !== undefined) filter.userId = userId;\n if (minAmount !== undefined) filter.minAmount = minAmount;\n if (maxAmount !== undefined) filter.maxAmount = maxAmount;\n if (dateFrom !== undefined) filter.dateFrom = dateFrom;\n if (dateTo !== undefined) filter.dateTo = dateTo;\n const orderBy =\n orderByField !== undefined\n ? { field: orderByField, direction: orderByDirection ?? 'desc' }\n : undefined;\n\n const data = await ctx.gql.workspace.request<{ expenses: Array<Record<string, unknown>> }>(\n ops.LIST_EXPENSES,\n {\n workspaceId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n orderBy,\n },\n );\n return jsonResult(data.expenses);\n } catch (error) {\n ctx.logger.error('timecampus expenses_list failed', { error: String(error) });\n return errorResult(\n `Failed to list expenses: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_stats')),\n {\n title: 'Expense Stats',\n description: 'Aggregate expense stats for a workspace over an optional date range.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n startDate: z.string().optional().describe('ISO start of date range'),\n endDate: z.string().optional().describe('ISO end of date range'),\n },\n },\n async ({ workspaceId, startDate, endDate }) => {\n try {\n const data = await ctx.gql.workspace.request<{ expenseStats: Record<string, unknown> }>(\n ops.EXPENSE_STATS,\n { workspaceId, startDate, endDate },\n );\n return jsonResult(data.expenseStats);\n } catch (error) {\n ctx.logger.error('timecampus expenses_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get expense stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_categories')),\n {\n title: 'Expense Categories',\n description: 'List the distinct expense categories used in a workspace.',\n inputSchema: { workspaceId: z.string().describe('Workspace ID') },\n },\n async ({ workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ expenseCategories: string[] }>(\n ops.EXPENSE_CATEGORIES,\n { workspaceId },\n );\n return jsonResult(data.expenseCategories);\n } catch (error) {\n ctx.logger.error('timecampus expenses_categories failed', { error: String(error) });\n return errorResult(\n `Failed to list expense categories: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_create')),\n {\n title: 'Create Expense',\n description:\n 'Create an expense. `workspaceId`, `amount`, `category` and `date` are required.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n amount: z.number().describe('Expense amount'),\n category: z.string().min(1).describe('Expense category'),\n date: z.string().describe('ISO expense date'),\n currency: z.string().optional().describe('Currency code'),\n description: z.string().optional().describe('Description'),\n notes: z.string().optional().describe('Notes'),\n projectId: z.string().optional().describe('Associated project ID'),\n receiptUrl: z.string().optional().describe('Receipt URL'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n workspaceId,\n amount,\n category,\n date,\n currency,\n description,\n notes,\n projectId,\n receiptUrl,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { workspaceId, amount, category, date };\n if (currency !== undefined) input.currency = currency;\n if (description !== undefined) input.description = description;\n if (notes !== undefined) input.notes = notes;\n if (projectId !== undefined) input.projectId = projectId;\n if (receiptUrl !== undefined) input.receiptUrl = receiptUrl;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{ createExpense: Record<string, unknown> }>(\n ops.CREATE_EXPENSE,\n { input },\n );\n return jsonResult(data.createExpense);\n } catch (error) {\n ctx.logger.error('timecampus expenses_create failed', { error: String(error) });\n return errorResult(\n `Failed to create expense: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_update')),\n {\n title: 'Update Expense',\n description: 'Update an expense. Requires workspaceId and at least one mutable field.',\n inputSchema: {\n id: z.string().describe('Expense ID'),\n workspaceId: z.string().describe('Workspace ID'),\n amount: z.number().optional().describe('Updated amount'),\n category: z.string().optional().describe('Updated category'),\n currency: z.string().optional().describe('Updated currency'),\n date: z.string().optional().describe('Updated ISO date'),\n description: z.string().optional().describe('Updated description'),\n notes: z.string().optional().describe('Updated notes'),\n projectId: z.string().optional().describe('Updated project ID'),\n receiptUrl: z.string().optional().describe('Updated receipt URL'),\n },\n },\n async ({\n id,\n workspaceId,\n amount,\n category,\n currency,\n date,\n description,\n notes,\n projectId,\n receiptUrl,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (amount !== undefined) input.amount = amount;\n if (category !== undefined) input.category = category;\n if (currency !== undefined) input.currency = currency;\n if (date !== undefined) input.date = date;\n if (description !== undefined) input.description = description;\n if (notes !== undefined) input.notes = notes;\n if (projectId !== undefined) input.projectId = projectId;\n if (receiptUrl !== undefined) input.receiptUrl = receiptUrl;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{ updateExpense: Record<string, unknown> }>(\n ops.UPDATE_EXPENSE,\n { id, input, workspaceId },\n );\n return jsonResult(data.updateExpense);\n } catch (error) {\n ctx.logger.error('timecampus expenses_update failed', { error: String(error) });\n return errorResult(\n `Failed to update expense: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_delete')),\n {\n title: 'Delete Expense',\n description: 'Delete an expense by ID. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Expense ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteExpense: boolean }>(\n ops.DELETE_EXPENSE,\n {\n id,\n workspaceId,\n },\n );\n return jsonResult({ deleted: data.deleteExpense });\n } catch (error) {\n ctx.logger.error('timecampus expenses_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete expense: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_submit')),\n {\n title: 'Submit Expense For Approval',\n description: 'Submit an expense for approval. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Expense ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n submitExpenseForApproval: Record<string, unknown>;\n }>(ops.SUBMIT_EXPENSE, { id, workspaceId });\n return jsonResult(data.submitExpenseForApproval);\n } catch (error) {\n ctx.logger.error('timecampus expenses_submit failed', { error: String(error) });\n return errorResult(\n `Failed to submit expense: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_approve')),\n {\n title: 'Approve Expense',\n description: 'Approve an expense. Requires workspaceId.',\n inputSchema: {\n id: z.string().describe('Expense ID'),\n workspaceId: z.string().describe('Workspace ID'),\n },\n },\n async ({ id, workspaceId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ approveExpense: Record<string, unknown> }>(\n ops.APPROVE_EXPENSE,\n { id, workspaceId },\n );\n return jsonResult(data.approveExpense);\n } catch (error) {\n ctx.logger.error('timecampus expenses_approve failed', { error: String(error) });\n return errorResult(\n `Failed to approve expense: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'expenses_reject')),\n {\n title: 'Reject Expense',\n description: 'Reject an expense. Requires workspaceId; reason optional.',\n inputSchema: {\n id: z.string().describe('Expense ID'),\n workspaceId: z.string().describe('Workspace ID'),\n reason: z.string().optional().describe('Rejection reason'),\n },\n },\n async ({ id, workspaceId, reason }) => {\n try {\n const data = await ctx.gql.workspace.request<{ rejectExpense: Record<string, unknown> }>(\n ops.REJECT_EXPENSE,\n { id, workspaceId, reason },\n );\n return jsonResult(data.rejectExpense);\n } catch (error) {\n ctx.logger.error('timecampus expenses_reject failed', { error: String(error) });\n return errorResult(\n `Failed to reject expense: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus time-approval tools (TimeApprovalRequest).\n *\n * Surface (10): approvals_{get,list,stats,mine,pending,submit,approve,reject,\n * request_revision,withdraw}. Workspace scoping comes from the gateway headers.\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 { ApprovalStatusEnum, JsonObject } from './shared.js';\n\nexport function registerApprovalTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_get')),\n {\n title: 'Get Approval Request',\n description: 'Fetch a single time-approval request by ID.',\n inputSchema: { id: z.string().describe('Approval request ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n approvalRequest: Record<string, unknown> | null;\n }>(ops.GET_APPROVAL, { id });\n if (!data.approvalRequest) return errorResult(`Approval request ${id} not found`);\n return jsonResult(data.approvalRequest);\n } catch (error) {\n ctx.logger.error('timecampus approvals_get failed', { error: String(error) });\n return errorResult(\n `Failed to get approval request: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_list')),\n {\n title: 'List Approval Requests',\n description:\n 'List time-approval requests with optional filter (status/user/approver/date range), pagination. Returns { items, total, hasMore }.',\n inputSchema: {\n status: ApprovalStatusEnum.optional().describe('Filter by status'),\n userId: z.string().optional().describe('Filter by requesting user'),\n approverId: z.string().optional().describe('Filter by approver'),\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\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 ({ status, userId, approverId, startDate, endDate, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n if (userId !== undefined) filter.userId = userId;\n if (approverId !== undefined) filter.approverId = approverId;\n if (startDate !== undefined) filter.startDate = startDate;\n if (endDate !== undefined) filter.endDate = endDate;\n\n const data = await ctx.gql.workspace.request<{ approvalRequests: Record<string, unknown> }>(\n ops.LIST_APPROVALS,\n {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n },\n );\n return jsonResult(data.approvalRequests);\n } catch (error) {\n ctx.logger.error('timecampus approvals_list failed', { error: String(error) });\n return errorResult(\n `Failed to list approval requests: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_stats')),\n {\n title: 'Approval Stats',\n description: 'Aggregate approval stats over an optional date range.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO start of date range'),\n endDate: z.string().optional().describe('ISO end of date range'),\n },\n },\n async ({ startDate, endDate }) => {\n try {\n const data = await ctx.gql.workspace.request<{ approvalStats: Record<string, unknown> }>(\n ops.APPROVAL_STATS,\n { startDate, endDate },\n );\n return jsonResult(data.approvalStats);\n } catch (error) {\n ctx.logger.error('timecampus approvals_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get approval stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_mine')),\n {\n title: 'My Approval Requests',\n description: 'List the calling user’s own approval requests, optionally filtered by status.',\n inputSchema: { status: ApprovalStatusEnum.optional().describe('Filter by status') },\n },\n async ({ status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n myApprovalRequests: Array<Record<string, unknown>>;\n }>(ops.MY_APPROVALS, { status });\n return jsonResult(data.myApprovalRequests);\n } catch (error) {\n ctx.logger.error('timecampus approvals_mine failed', { error: String(error) });\n return errorResult(\n `Failed to list my approval requests: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_pending')),\n {\n title: 'Pending Approvals',\n description: 'List approval requests pending the calling reviewer’s decision.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n pendingApprovals: Array<Record<string, unknown>>;\n }>(ops.PENDING_APPROVALS, {});\n return jsonResult(data.pendingApprovals);\n } catch (error) {\n ctx.logger.error('timecampus approvals_pending failed', { error: String(error) });\n return errorResult(\n `Failed to list pending approvals: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_submit')),\n {\n title: 'Submit Approval Request',\n description:\n 'Submit a time-approval request for a period. `period`, `startDate`, `endDate`, `totalHours` are required.',\n inputSchema: {\n period: z.string().describe('Period label (e.g. \"2026-W26\")'),\n startDate: z.string().describe('ISO period start'),\n endDate: z.string().describe('ISO period end'),\n totalHours: z.number().describe('Total hours in the period'),\n billableHours: z.number().optional().describe('Billable hours (default 0)'),\n approverId: z.string().optional().describe('Target approver user ID'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({ period, startDate, endDate, totalHours, billableHours, approverId, context }) => {\n try {\n const input: Record<string, unknown> = { period, startDate, endDate, totalHours };\n if (billableHours !== undefined) input.billableHours = billableHours;\n if (approverId !== undefined) input.approverId = approverId;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n submitApprovalRequest: Record<string, unknown>;\n }>(ops.SUBMIT_APPROVAL, { input });\n return jsonResult(data.submitApprovalRequest);\n } catch (error) {\n ctx.logger.error('timecampus approvals_submit failed', { error: String(error) });\n return errorResult(\n `Failed to submit approval request: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_approve')),\n {\n title: 'Approve Request',\n description: 'Approve a time-approval request, with optional reviewer notes.',\n inputSchema: {\n id: z.string().describe('Approval request ID'),\n notes: z.string().optional().describe('Reviewer notes'),\n },\n },\n async ({ id, notes }) => {\n try {\n const data = await ctx.gql.workspace.request<{ approveRequest: Record<string, unknown> }>(\n ops.APPROVE_REQUEST,\n { id, notes },\n );\n return jsonResult(data.approveRequest);\n } catch (error) {\n ctx.logger.error('timecampus approvals_approve failed', { error: String(error) });\n return errorResult(\n `Failed to approve request: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_reject')),\n {\n title: 'Reject Request',\n description: 'Reject a time-approval request with a required reason.',\n inputSchema: {\n id: z.string().describe('Approval request ID'),\n reason: z.string().min(1).describe('Rejection reason'),\n },\n },\n async ({ id, reason }) => {\n try {\n const data = await ctx.gql.workspace.request<{ rejectRequest: Record<string, unknown> }>(\n ops.REJECT_REQUEST,\n { id, reason },\n );\n return jsonResult(data.rejectRequest);\n } catch (error) {\n ctx.logger.error('timecampus approvals_reject failed', { error: String(error) });\n return errorResult(\n `Failed to reject request: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_request_revision')),\n {\n title: 'Request Revision',\n description: 'Send a time-approval request back for revision with required notes.',\n inputSchema: {\n id: z.string().describe('Approval request ID'),\n notes: z.string().min(1).describe('Revision notes'),\n },\n },\n async ({ id, notes }) => {\n try {\n const data = await ctx.gql.workspace.request<{ requestRevision: Record<string, unknown> }>(\n ops.REQUEST_REVISION,\n { id, notes },\n );\n return jsonResult(data.requestRevision);\n } catch (error) {\n ctx.logger.error('timecampus approvals_request_revision failed', { error: String(error) });\n return errorResult(\n `Failed to request revision: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'approvals_withdraw')),\n {\n title: 'Withdraw Request',\n description: 'Withdraw a pending time-approval request.',\n inputSchema: { id: z.string().describe('Approval request ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ withdrawRequest: Record<string, unknown> }>(\n ops.WITHDRAW_REQUEST,\n { id },\n );\n return jsonResult(data.withdrawRequest);\n } catch (error) {\n ctx.logger.error('timecampus approvals_withdraw failed', { error: String(error) });\n return errorResult(\n `Failed to withdraw request: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus resource-planning tools — resource plans + allocations.\n *\n * Surface (13): resource_plans_{get,list,create,update,delete,activate},\n * resource_allocations_{list,user,create,update,delete,bulk_create} and\n * resource_capacity_overview. Workspace scoping comes from the gateway headers.\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 { JsonObject } from './shared.js';\n\nexport function registerResourcingTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_plans_get')),\n {\n title: 'Get Resource Plan',\n description: 'Fetch a single resource plan by ID, including its allocations.',\n inputSchema: { id: z.string().describe('Resource plan ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n resourcePlan: Record<string, unknown> | null;\n }>(ops.GET_RESOURCE_PLAN, { id });\n if (!data.resourcePlan) return errorResult(`Resource plan ${id} not found`);\n return jsonResult(data.resourcePlan);\n } catch (error) {\n ctx.logger.error('timecampus resource_plans_get failed', { error: String(error) });\n return errorResult(\n `Failed to get resource plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_plans_list')),\n {\n title: 'List Resource Plans',\n description:\n 'List resource plans with optional status/date/text filter and pagination. Returns { items, total, hasMore }.',\n inputSchema: {\n status: z.string().optional().describe('Filter by status'),\n search: z.string().optional().describe('Free-text search across name/description'),\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\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 ({ status, search, startDate, endDate, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n if (search !== undefined) filter.search = search;\n if (startDate !== undefined) filter.startDate = startDate;\n if (endDate !== undefined) filter.endDate = endDate;\n\n const data = await ctx.gql.workspace.request<{ resourcePlans: Record<string, unknown> }>(\n ops.LIST_RESOURCE_PLANS,\n {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n },\n );\n return jsonResult(data.resourcePlans);\n } catch (error) {\n ctx.logger.error('timecampus resource_plans_list failed', { error: String(error) });\n return errorResult(\n `Failed to list resource plans: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_plans_create')),\n {\n title: 'Create Resource Plan',\n description: 'Create a resource plan. `name`, `startDate`, `endDate` are required.',\n inputSchema: {\n name: z.string().min(1).describe('Plan name'),\n startDate: z.string().describe('ISO plan start'),\n endDate: z.string().describe('ISO plan end'),\n description: z.string().optional().describe('Plan description'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({ name, startDate, endDate, description, context }) => {\n try {\n const input: Record<string, unknown> = { name, startDate, endDate };\n if (description !== undefined) input.description = description;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n createResourcePlan: Record<string, unknown>;\n }>(ops.CREATE_RESOURCE_PLAN, { input });\n return jsonResult(data.createResourcePlan);\n } catch (error) {\n ctx.logger.error('timecampus resource_plans_create failed', { error: String(error) });\n return errorResult(\n `Failed to create resource plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_plans_update')),\n {\n title: 'Update Resource Plan',\n description: 'Update a resource plan. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Resource plan ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n status: z.string().optional().describe('Updated status'),\n startDate: z.string().optional().describe('Updated ISO start'),\n endDate: z.string().optional().describe('Updated ISO end'),\n },\n },\n async ({ id, name, description, status, startDate, endDate }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateResourcePlan: Record<string, unknown>;\n }>(ops.UPDATE_RESOURCE_PLAN, { id, input });\n return jsonResult(data.updateResourcePlan);\n } catch (error) {\n ctx.logger.error('timecampus resource_plans_update failed', { error: String(error) });\n return errorResult(\n `Failed to update resource plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_plans_delete')),\n {\n title: 'Delete Resource Plan',\n description: 'Delete a resource plan by ID.',\n inputSchema: { id: z.string().describe('Resource plan ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteResourcePlan: Record<string, unknown>;\n }>(ops.DELETE_RESOURCE_PLAN, { id });\n return jsonResult(data.deleteResourcePlan);\n } catch (error) {\n ctx.logger.error('timecampus resource_plans_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete resource plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_plans_activate')),\n {\n title: 'Activate Resource Plan',\n description: 'Activate a resource plan by ID.',\n inputSchema: { id: z.string().describe('Resource plan ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n activateResourcePlan: Record<string, unknown>;\n }>(ops.ACTIVATE_RESOURCE_PLAN, { id });\n return jsonResult(data.activateResourcePlan);\n } catch (error) {\n ctx.logger.error('timecampus resource_plans_activate failed', { error: String(error) });\n return errorResult(\n `Failed to activate resource plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_allocations_list')),\n {\n title: 'List Resource Allocations',\n description: 'List the allocations of a resource plan.',\n inputSchema: {\n planId: z.string().describe('Resource plan 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 ({ planId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n resourceAllocations: Array<Record<string, unknown>>;\n }>(ops.LIST_RESOURCE_ALLOCATIONS, { planId, limit: limit ?? 50, offset: offset ?? 0 });\n return jsonResult(data.resourceAllocations);\n } catch (error) {\n ctx.logger.error('timecampus resource_allocations_list failed', { error: String(error) });\n return errorResult(\n `Failed to list resource allocations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_allocations_user')),\n {\n title: 'User Allocations',\n description: 'List a user’s resource allocations over an optional date range.',\n inputSchema: {\n userId: z.string().describe('User ID'),\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n },\n },\n async ({ userId, startDate, endDate }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n userAllocations: Array<Record<string, unknown>>;\n }>(ops.USER_ALLOCATIONS, { userId, startDate, endDate });\n return jsonResult(data.userAllocations);\n } catch (error) {\n ctx.logger.error('timecampus resource_allocations_user failed', { error: String(error) });\n return errorResult(\n `Failed to list user allocations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_capacity_overview')),\n {\n title: 'Capacity Overview',\n description: 'Capacity vs allocation overview across a required date range.',\n inputSchema: {\n startDate: z.string().describe('ISO range start'),\n endDate: z.string().describe('ISO range end'),\n },\n },\n async ({ startDate, endDate }) => {\n try {\n const data = await ctx.gql.workspace.request<{ capacityOverview: Record<string, unknown> }>(\n ops.CAPACITY_OVERVIEW,\n { startDate, endDate },\n );\n return jsonResult(data.capacityOverview);\n } catch (error) {\n ctx.logger.error('timecampus resource_capacity_overview failed', { error: String(error) });\n return errorResult(\n `Failed to get capacity overview: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_allocations_create')),\n {\n title: 'Create Resource Allocation',\n description:\n 'Allocate a user to a plan. `resourcePlanId`, `userId`, `allocatedHours`, dates required.',\n inputSchema: {\n resourcePlanId: z.string().describe('Resource plan ID'),\n userId: z.string().describe('User to allocate'),\n allocatedHours: z.number().describe('Hours allocated'),\n startDate: z.string().describe('ISO allocation start'),\n endDate: z.string().describe('ISO allocation end'),\n projectId: z.string().optional().describe('Project ID'),\n notes: z.string().optional().describe('Notes'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n resourcePlanId,\n userId,\n allocatedHours,\n startDate,\n endDate,\n projectId,\n notes,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = {\n resourcePlanId,\n userId,\n allocatedHours,\n startDate,\n endDate,\n };\n if (projectId !== undefined) input.projectId = projectId;\n if (notes !== undefined) input.notes = notes;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{ createAllocation: Record<string, unknown> }>(\n ops.CREATE_ALLOCATION,\n { input },\n );\n return jsonResult(data.createAllocation);\n } catch (error) {\n ctx.logger.error('timecampus resource_allocations_create failed', { error: String(error) });\n return errorResult(\n `Failed to create allocation: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_allocations_update')),\n {\n title: 'Update Resource Allocation',\n description: 'Update a resource allocation. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Allocation ID'),\n userId: z.string().optional().describe('Updated user'),\n projectId: z.string().optional().describe('Updated project'),\n allocatedHours: z.number().optional().describe('Updated allocated hours'),\n actualHours: z.number().optional().describe('Updated actual hours'),\n startDate: z.string().optional().describe('Updated ISO start'),\n endDate: z.string().optional().describe('Updated ISO end'),\n notes: z.string().optional().describe('Updated notes'),\n },\n },\n async ({ id, userId, projectId, allocatedHours, actualHours, startDate, endDate, notes }) => {\n try {\n const input: Record<string, unknown> = {};\n if (userId !== undefined) input.userId = userId;\n if (projectId !== undefined) input.projectId = projectId;\n if (allocatedHours !== undefined) input.allocatedHours = allocatedHours;\n if (actualHours !== undefined) input.actualHours = actualHours;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (notes !== undefined) input.notes = notes;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{ updateAllocation: Record<string, unknown> }>(\n ops.UPDATE_ALLOCATION,\n { id, input },\n );\n return jsonResult(data.updateAllocation);\n } catch (error) {\n ctx.logger.error('timecampus resource_allocations_update failed', { error: String(error) });\n return errorResult(\n `Failed to update allocation: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_allocations_delete')),\n {\n title: 'Delete Resource Allocation',\n description: 'Delete a resource allocation by ID.',\n inputSchema: { id: z.string().describe('Allocation ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteAllocation: Record<string, unknown> }>(\n ops.DELETE_ALLOCATION,\n { id },\n );\n return jsonResult(data.deleteAllocation);\n } catch (error) {\n ctx.logger.error('timecampus resource_allocations_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete allocation: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'resource_allocations_bulk_create')),\n {\n title: 'Bulk Create Allocations',\n description:\n 'Create multiple allocations for a plan in one call. Each allocation needs userId, allocatedHours and a date range.',\n inputSchema: {\n planId: z.string().describe('Resource plan ID'),\n allocations: z\n .array(\n z.object({\n userId: z.string().describe('User to allocate'),\n allocatedHours: z.number().describe('Hours allocated'),\n startDate: z.string().describe('ISO allocation start'),\n endDate: z.string().describe('ISO allocation end'),\n projectId: z.string().optional().describe('Project ID'),\n notes: z.string().optional().describe('Notes'),\n }),\n )\n .min(1)\n .describe('Allocations to create'),\n },\n },\n async ({ planId, allocations }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n bulkCreateAllocations: Array<Record<string, unknown>>;\n }>(ops.BULK_CREATE_ALLOCATIONS, { planId, allocations });\n return jsonResult(data.bulkCreateAllocations);\n } catch (error) {\n ctx.logger.error('timecampus resource_allocations_bulk_create failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to bulk-create allocations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus focus-score tools.\n *\n * Surface (9): focus_{get,list,summary,trend,today,calculate,record,update,\n * delete}. Workspace scoping comes from the gateway headers.\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 { JsonObject } from './shared.js';\n\nexport function registerFocusTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_get')),\n {\n title: 'Get Focus Score',\n description: 'Fetch a single focus score by ID.',\n inputSchema: { id: z.string().describe('Focus score ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n focusScore: Record<string, unknown> | null;\n }>(ops.GET_FOCUS_SCORE, { id });\n if (!data.focusScore) return errorResult(`Focus score ${id} not found`);\n return jsonResult(data.focusScore);\n } catch (error) {\n ctx.logger.error('timecampus focus_get failed', { error: String(error) });\n return errorResult(\n `Failed to get focus score: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_list')),\n {\n title: 'List Focus Scores',\n description: 'List focus scores over an optional date range / user, with pagination.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n userId: z.string().optional().describe('Filter by user 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 ({ startDate, endDate, userId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n focusScores: Array<Record<string, unknown>>;\n }>(ops.LIST_FOCUS_SCORES, {\n startDate,\n endDate,\n userId,\n limit: limit ?? 50,\n offset: offset ?? 0,\n });\n return jsonResult(data.focusScores);\n } catch (error) {\n ctx.logger.error('timecampus focus_list failed', { error: String(error) });\n return errorResult(\n `Failed to list focus scores: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_summary')),\n {\n title: 'Focus Score Summary',\n description: 'Summary of focus scores (average/high/low, trend, top factor) over a range.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n userId: z.string().optional().describe('Filter by user ID'),\n },\n },\n async ({ startDate, endDate, userId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n focusScoreSummary: Record<string, unknown>;\n }>(ops.FOCUS_SCORE_SUMMARY, { startDate, endDate, userId });\n return jsonResult(data.focusScoreSummary);\n } catch (error) {\n ctx.logger.error('timecampus focus_summary failed', { error: String(error) });\n return errorResult(\n `Failed to get focus summary: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_trend')),\n {\n title: 'Focus Score Trend',\n description: 'Daily focus-score trend over the last N days.',\n inputSchema: {\n days: z.number().int().optional().describe('Number of days (default 30)'),\n userId: z.string().optional().describe('Filter by user ID'),\n },\n },\n async ({ days, userId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n focusScoreTrend: Array<Record<string, unknown>>;\n }>(ops.FOCUS_SCORE_TREND, { days: days ?? 30, userId });\n return jsonResult(data.focusScoreTrend);\n } catch (error) {\n ctx.logger.error('timecampus focus_trend failed', { error: String(error) });\n return errorResult(\n `Failed to get focus trend: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_today')),\n {\n title: 'Today Focus Score',\n description: 'Fetch today’s focus score for the calling user, if recorded.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n todayFocusScore: Record<string, unknown> | null;\n }>(ops.TODAY_FOCUS_SCORE, {});\n return jsonResult(data.todayFocusScore);\n } catch (error) {\n ctx.logger.error('timecampus focus_today failed', { error: String(error) });\n return errorResult(\n `Failed to get today focus score: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_calculate')),\n {\n title: 'Calculate Focus Score',\n description: 'Compute (and persist) a focus score for a date / user from tracked activity.',\n inputSchema: {\n date: z.string().optional().describe('ISO date (default today)'),\n userId: z.string().optional().describe('User ID (default calling user)'),\n },\n },\n async ({ date, userId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n calculateFocusScore: Record<string, unknown>;\n }>(ops.CALCULATE_FOCUS_SCORE, { date, userId });\n return jsonResult(data.calculateFocusScore);\n } catch (error) {\n ctx.logger.error('timecampus focus_calculate failed', { error: String(error) });\n return errorResult(\n `Failed to calculate focus score: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_record')),\n {\n title: 'Record Focus Score',\n description: 'Record a focus score. `date` and `overallScore` are required.',\n inputSchema: {\n date: z.string().describe('ISO date'),\n overallScore: z.number().describe('Overall focus score'),\n deepWorkScore: z.number().optional().describe('Deep-work sub-score'),\n distractionResistanceScore: z\n .number()\n .optional()\n .describe('Distraction-resistance sub-score'),\n taskCompletionScore: z.number().optional().describe('Task-completion sub-score'),\n energyManagementScore: z.number().optional().describe('Energy-management sub-score'),\n consistencyScore: z.number().optional().describe('Consistency sub-score'),\n factors: JsonObject.optional().describe('Contributing factors JSON'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n date,\n overallScore,\n deepWorkScore,\n distractionResistanceScore,\n taskCompletionScore,\n energyManagementScore,\n consistencyScore,\n factors,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { date, overallScore };\n if (deepWorkScore !== undefined) input.deepWorkScore = deepWorkScore;\n if (distractionResistanceScore !== undefined)\n input.distractionResistanceScore = distractionResistanceScore;\n if (taskCompletionScore !== undefined) input.taskCompletionScore = taskCompletionScore;\n if (energyManagementScore !== undefined)\n input.energyManagementScore = energyManagementScore;\n if (consistencyScore !== undefined) input.consistencyScore = consistencyScore;\n if (factors !== undefined) input.factors = factors;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{ recordFocusScore: Record<string, unknown> }>(\n ops.RECORD_FOCUS_SCORE,\n { input },\n );\n return jsonResult(data.recordFocusScore);\n } catch (error) {\n ctx.logger.error('timecampus focus_record failed', { error: String(error) });\n return errorResult(\n `Failed to record focus score: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_update')),\n {\n title: 'Update Focus Score',\n description: 'Update a focus score. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Focus score ID'),\n overallScore: z.number().optional().describe('Updated overall score'),\n deepWorkScore: z.number().optional().describe('Updated deep-work sub-score'),\n distractionResistanceScore: z\n .number()\n .optional()\n .describe('Updated distraction-resistance sub-score'),\n taskCompletionScore: z.number().optional().describe('Updated task-completion sub-score'),\n energyManagementScore: z\n .number()\n .optional()\n .describe('Updated energy-management sub-score'),\n consistencyScore: z.number().optional().describe('Updated consistency sub-score'),\n factors: JsonObject.optional().describe('Updated factors JSON'),\n },\n },\n async ({\n id,\n overallScore,\n deepWorkScore,\n distractionResistanceScore,\n taskCompletionScore,\n energyManagementScore,\n consistencyScore,\n factors,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (overallScore !== undefined) input.overallScore = overallScore;\n if (deepWorkScore !== undefined) input.deepWorkScore = deepWorkScore;\n if (distractionResistanceScore !== undefined)\n input.distractionResistanceScore = distractionResistanceScore;\n if (taskCompletionScore !== undefined) input.taskCompletionScore = taskCompletionScore;\n if (energyManagementScore !== undefined)\n input.energyManagementScore = energyManagementScore;\n if (consistencyScore !== undefined) input.consistencyScore = consistencyScore;\n if (factors !== undefined) input.factors = factors;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{ updateFocusScore: Record<string, unknown> }>(\n ops.UPDATE_FOCUS_SCORE,\n { id, input },\n );\n return jsonResult(data.updateFocusScore);\n } catch (error) {\n ctx.logger.error('timecampus focus_update failed', { error: String(error) });\n return errorResult(\n `Failed to update focus score: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'focus_delete')),\n {\n title: 'Delete Focus Score',\n description: 'Delete a focus score by ID.',\n inputSchema: { id: z.string().describe('Focus score ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteFocusScore: Record<string, unknown> }>(\n ops.DELETE_FOCUS_SCORE,\n { id },\n );\n return jsonResult(data.deleteFocusScore);\n } catch (error) {\n ctx.logger.error('timecampus focus_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete focus score: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus work-pattern tools.\n *\n * Surface (7): workpatterns_{get,list,summary,today,record,update,delete}.\n * Workspace scoping comes from the gateway headers. `energyLevel`, `mood` and\n * `stressLevel` are free-form Strings in the record/update inputs.\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 { JsonObject } from './shared.js';\n\nexport function registerWorkPatternTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workpatterns_get')),\n {\n title: 'Get Work Pattern',\n description: 'Fetch a single work pattern by ID.',\n inputSchema: { id: z.string().describe('Work pattern ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n workPattern: Record<string, unknown> | null;\n }>(ops.GET_WORK_PATTERN, { id });\n if (!data.workPattern) return errorResult(`Work pattern ${id} not found`);\n return jsonResult(data.workPattern);\n } catch (error) {\n ctx.logger.error('timecampus workpatterns_get failed', { error: String(error) });\n return errorResult(\n `Failed to get work pattern: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workpatterns_list')),\n {\n title: 'List Work Patterns',\n description: 'List work patterns over an optional date range / user, with pagination.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n userId: z.string().optional().describe('Filter by user 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 ({ startDate, endDate, userId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n workPatterns: Array<Record<string, unknown>>;\n }>(ops.LIST_WORK_PATTERNS, {\n startDate,\n endDate,\n userId,\n limit: limit ?? 50,\n offset: offset ?? 0,\n });\n return jsonResult(data.workPatterns);\n } catch (error) {\n ctx.logger.error('timecampus workpatterns_list failed', { error: String(error) });\n return errorResult(\n `Failed to list work patterns: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workpatterns_summary')),\n {\n title: 'Work Pattern Summary',\n description:\n 'Summary of work patterns (avg focus/meeting hours, productivity, best/worst day, insights) over a range.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n userId: z.string().optional().describe('Filter by user ID'),\n },\n },\n async ({ startDate, endDate, userId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n workPatternSummary: Record<string, unknown>;\n }>(ops.WORK_PATTERN_SUMMARY, { startDate, endDate, userId });\n return jsonResult(data.workPatternSummary);\n } catch (error) {\n ctx.logger.error('timecampus workpatterns_summary failed', { error: String(error) });\n return errorResult(\n `Failed to get work pattern summary: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workpatterns_today')),\n {\n title: 'Today Work Pattern',\n description: 'Fetch today’s work pattern for the calling user, if recorded.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n todayWorkPattern: Record<string, unknown> | null;\n }>(ops.TODAY_WORK_PATTERN, {});\n return jsonResult(data.todayWorkPattern);\n } catch (error) {\n ctx.logger.error('timecampus workpatterns_today failed', { error: String(error) });\n return errorResult(\n `Failed to get today work pattern: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workpatterns_record')),\n {\n title: 'Record Work Pattern',\n description:\n 'Record a work pattern. `date`, `focusHours`, `meetingHours` and `breakHours` are required.',\n inputSchema: {\n date: z.string().describe('ISO date'),\n focusHours: z.number().describe('Focus hours'),\n meetingHours: z.number().describe('Meeting hours'),\n breakHours: z.number().describe('Break hours'),\n deepWorkSessions: z.number().int().optional().describe('Deep-work session count'),\n interruptions: z.number().int().optional().describe('Interruption count'),\n productivityScore: z.number().optional().describe('Productivity score'),\n energyLevel: z.string().optional().describe('Energy level (free-form)'),\n mood: z.string().optional().describe('Mood (free-form)'),\n stressLevel: z.string().optional().describe('Stress level (free-form)'),\n peakHours: JsonObject.optional().describe('Peak-hours JSON'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n date,\n focusHours,\n meetingHours,\n breakHours,\n deepWorkSessions,\n interruptions,\n productivityScore,\n energyLevel,\n mood,\n stressLevel,\n peakHours,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { date, focusHours, meetingHours, breakHours };\n if (deepWorkSessions !== undefined) input.deepWorkSessions = deepWorkSessions;\n if (interruptions !== undefined) input.interruptions = interruptions;\n if (productivityScore !== undefined) input.productivityScore = productivityScore;\n if (energyLevel !== undefined) input.energyLevel = energyLevel;\n if (mood !== undefined) input.mood = mood;\n if (stressLevel !== undefined) input.stressLevel = stressLevel;\n if (peakHours !== undefined) input.peakHours = peakHours;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n recordWorkPattern: Record<string, unknown>;\n }>(ops.RECORD_WORK_PATTERN, { input });\n return jsonResult(data.recordWorkPattern);\n } catch (error) {\n ctx.logger.error('timecampus workpatterns_record failed', { error: String(error) });\n return errorResult(\n `Failed to record work pattern: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workpatterns_update')),\n {\n title: 'Update Work Pattern',\n description: 'Update a work pattern. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Work pattern ID'),\n focusHours: z.number().optional().describe('Updated focus hours'),\n meetingHours: z.number().optional().describe('Updated meeting hours'),\n breakHours: z.number().optional().describe('Updated break hours'),\n deepWorkSessions: z.number().int().optional().describe('Updated deep-work sessions'),\n interruptions: z.number().int().optional().describe('Updated interruptions'),\n productivityScore: z.number().optional().describe('Updated productivity score'),\n energyLevel: z.string().optional().describe('Updated energy level'),\n mood: z.string().optional().describe('Updated mood'),\n stressLevel: z.string().optional().describe('Updated stress level'),\n peakHours: JsonObject.optional().describe('Updated peak-hours JSON'),\n },\n },\n async ({\n id,\n focusHours,\n meetingHours,\n breakHours,\n deepWorkSessions,\n interruptions,\n productivityScore,\n energyLevel,\n mood,\n stressLevel,\n peakHours,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (focusHours !== undefined) input.focusHours = focusHours;\n if (meetingHours !== undefined) input.meetingHours = meetingHours;\n if (breakHours !== undefined) input.breakHours = breakHours;\n if (deepWorkSessions !== undefined) input.deepWorkSessions = deepWorkSessions;\n if (interruptions !== undefined) input.interruptions = interruptions;\n if (productivityScore !== undefined) input.productivityScore = productivityScore;\n if (energyLevel !== undefined) input.energyLevel = energyLevel;\n if (mood !== undefined) input.mood = mood;\n if (stressLevel !== undefined) input.stressLevel = stressLevel;\n if (peakHours !== undefined) input.peakHours = peakHours;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateWorkPattern: Record<string, unknown>;\n }>(ops.UPDATE_WORK_PATTERN, { id, input });\n return jsonResult(data.updateWorkPattern);\n } catch (error) {\n ctx.logger.error('timecampus workpatterns_update failed', { error: String(error) });\n return errorResult(\n `Failed to update work pattern: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workpatterns_delete')),\n {\n title: 'Delete Work Pattern',\n description: 'Delete a work pattern by ID.',\n inputSchema: { id: z.string().describe('Work pattern ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteWorkPattern: Record<string, unknown>;\n }>(ops.DELETE_WORK_PATTERN, { id });\n return jsonResult(data.deleteWorkPattern);\n } catch (error) {\n ctx.logger.error('timecampus workpatterns_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete work pattern: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus application-usage tools.\n *\n * Surface (8): appusage_{get,list,summary,top,record,update,delete,categorize}.\n * Workspace scoping comes from the gateway headers. `category` is a free-form\n * String in the backend (PRODUCTIVE / NEUTRAL / DISTRACTING are the conventional\n * values surfaced by AppCategory but the input column is a String).\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 { JsonObject } from './shared.js';\n\nexport function registerAppUsageTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'appusage_get')),\n {\n title: 'Get Application Usage',\n description: 'Fetch a single application-usage record by ID.',\n inputSchema: { id: z.string().describe('Application usage ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n applicationUsage: Record<string, unknown> | null;\n }>(ops.GET_APP_USAGE, { id });\n if (!data.applicationUsage) return errorResult(`Application usage ${id} not found`);\n return jsonResult(data.applicationUsage);\n } catch (error) {\n ctx.logger.error('timecampus appusage_get failed', { error: String(error) });\n return errorResult(\n `Failed to get application usage: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'appusage_list')),\n {\n title: 'List Application Usage',\n description: 'List application-usage records with optional category/date/user filter.',\n inputSchema: {\n category: z.string().optional().describe('Filter by category'),\n date: z.string().optional().describe('Filter by ISO date'),\n userId: z.string().optional().describe('Filter by user 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 ({ category, date, userId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n applicationUsages: Array<Record<string, unknown>>;\n }>(ops.LIST_APP_USAGE, { category, date, userId, limit: limit ?? 50, offset: offset ?? 0 });\n return jsonResult(data.applicationUsages);\n } catch (error) {\n ctx.logger.error('timecampus appusage_list failed', { error: String(error) });\n return errorResult(\n `Failed to list application usage: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'appusage_summary')),\n {\n title: 'Application Usage Summary',\n description:\n 'Summary of application usage (productive/neutral/distracting time, ratio, top apps) over a range.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n userId: z.string().optional().describe('Filter by user ID'),\n },\n },\n async ({ startDate, endDate, userId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ appUsageSummary: Record<string, unknown> }>(\n ops.APP_USAGE_SUMMARY,\n { startDate, endDate, userId },\n );\n return jsonResult(data.appUsageSummary);\n } catch (error) {\n ctx.logger.error('timecampus appusage_summary failed', { error: String(error) });\n return errorResult(\n `Failed to get application usage summary: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'appusage_top')),\n {\n title: 'Top Applications',\n description: 'List the most-used applications over an optional date range.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n limit: z.number().int().optional().describe('Max results (default 10)'),\n userId: z.string().optional().describe('Filter by user ID'),\n },\n },\n async ({ startDate, endDate, limit, userId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n topApplications: Array<Record<string, unknown>>;\n }>(ops.TOP_APPLICATIONS, { startDate, endDate, limit: limit ?? 10, userId });\n return jsonResult(data.topApplications);\n } catch (error) {\n ctx.logger.error('timecampus appusage_top failed', { error: String(error) });\n return errorResult(\n `Failed to list top applications: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'appusage_record')),\n {\n title: 'Record Application Usage',\n description:\n 'Record application usage. `applicationName`, `date` and `timeSpent` (seconds) are required.',\n inputSchema: {\n applicationName: z.string().min(1).describe('Application name'),\n date: z.string().describe('ISO date'),\n timeSpent: z.number().int().describe('Time spent in seconds'),\n category: z.string().optional().describe('Category (default \"NEUTRAL\")'),\n sessions: z.number().int().optional().describe('Session count (default 0)'),\n switches: z.number().int().optional().describe('Context-switch count (default 0)'),\n firstUsed: z.string().optional().describe('ISO first-used timestamp'),\n lastUsed: z.string().optional().describe('ISO last-used timestamp'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n applicationName,\n date,\n timeSpent,\n category,\n sessions,\n switches,\n firstUsed,\n lastUsed,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { applicationName, date, timeSpent };\n if (category !== undefined) input.category = category;\n if (sessions !== undefined) input.sessions = sessions;\n if (switches !== undefined) input.switches = switches;\n if (firstUsed !== undefined) input.firstUsed = firstUsed;\n if (lastUsed !== undefined) input.lastUsed = lastUsed;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n recordApplicationUsage: Record<string, unknown>;\n }>(ops.RECORD_APP_USAGE, { input });\n return jsonResult(data.recordApplicationUsage);\n } catch (error) {\n ctx.logger.error('timecampus appusage_record failed', { error: String(error) });\n return errorResult(\n `Failed to record application usage: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'appusage_update')),\n {\n title: 'Update Application Usage',\n description:\n 'Update an application-usage record. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Application usage ID'),\n applicationName: z.string().optional().describe('Updated application name'),\n category: z.string().optional().describe('Updated category'),\n timeSpent: z.number().int().optional().describe('Updated time spent (seconds)'),\n sessions: z.number().int().optional().describe('Updated session count'),\n switches: z.number().int().optional().describe('Updated context-switch count'),\n firstUsed: z.string().optional().describe('Updated ISO first-used'),\n lastUsed: z.string().optional().describe('Updated ISO last-used'),\n },\n },\n async ({\n id,\n applicationName,\n category,\n timeSpent,\n sessions,\n switches,\n firstUsed,\n lastUsed,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (applicationName !== undefined) input.applicationName = applicationName;\n if (category !== undefined) input.category = category;\n if (timeSpent !== undefined) input.timeSpent = timeSpent;\n if (sessions !== undefined) input.sessions = sessions;\n if (switches !== undefined) input.switches = switches;\n if (firstUsed !== undefined) input.firstUsed = firstUsed;\n if (lastUsed !== undefined) input.lastUsed = lastUsed;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateApplicationUsage: Record<string, unknown>;\n }>(ops.UPDATE_APP_USAGE, { id, input });\n return jsonResult(data.updateApplicationUsage);\n } catch (error) {\n ctx.logger.error('timecampus appusage_update failed', { error: String(error) });\n return errorResult(\n `Failed to update application usage: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'appusage_delete')),\n {\n title: 'Delete Application Usage',\n description: 'Delete an application-usage record by ID.',\n inputSchema: { id: z.string().describe('Application usage ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteApplicationUsage: Record<string, unknown>;\n }>(ops.DELETE_APP_USAGE, { id });\n return jsonResult(data.deleteApplicationUsage);\n } catch (error) {\n ctx.logger.error('timecampus appusage_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete application usage: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'appusage_categorize')),\n {\n title: 'Categorize Application',\n description:\n 'Reclassify all usage records of an application into a category (e.g. PRODUCTIVE / NEUTRAL / DISTRACTING).',\n inputSchema: {\n applicationName: z.string().min(1).describe('Application name to recategorize'),\n category: z.string().min(1).describe('Target category'),\n },\n },\n async ({ applicationName, category }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n categorizeApplication: Array<Record<string, unknown>>;\n }>(ops.CATEGORIZE_APPLICATION, { applicationName, category });\n return jsonResult(data.categorizeApplication);\n } catch (error) {\n ctx.logger.error('timecampus appusage_categorize failed', { error: String(error) });\n return errorResult(\n `Failed to categorize application: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus location tools — geofences, geofence events and location entries.\n *\n * Surface (15): geofences_{get,list,create,update,delete,toggle},\n * geofence_events_{list,record} and locations_{get,active,list,stats,create,\n * update,delete}. Workspace scoping comes from the gateway headers.\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 { GeofenceEventTypeEnum, GeofenceTriggerEnum, JsonObject } from './shared.js';\n\nexport function registerLocationTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Geofences ──────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'geofences_get')),\n {\n title: 'Get Geofence',\n description: 'Fetch a single geofence by ID, including its events.',\n inputSchema: { id: z.string().describe('Geofence ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n geofence: Record<string, unknown> | null;\n }>(ops.GET_GEOFENCE, { id });\n if (!data.geofence) return errorResult(`Geofence ${id} not found`);\n return jsonResult(data.geofence);\n } catch (error) {\n ctx.logger.error('timecampus geofences_get failed', { error: String(error) });\n return errorResult(\n `Failed to get geofence: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'geofences_list')),\n {\n title: 'List Geofences',\n description:\n 'List geofences with optional active/text filter and pagination. Returns { items, total, hasMore }.',\n inputSchema: {\n isActive: z.boolean().optional().describe('Filter by active flag'),\n search: z.string().optional().describe('Free-text search across name'),\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 ({ isActive, search, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (isActive !== undefined) filter.isActive = isActive;\n if (search !== undefined) filter.search = search;\n\n const data = await ctx.gql.workspace.request<{ geofences: Record<string, unknown> }>(\n ops.LIST_GEOFENCES,\n {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n },\n );\n return jsonResult(data.geofences);\n } catch (error) {\n ctx.logger.error('timecampus geofences_list failed', { error: String(error) });\n return errorResult(\n `Failed to list geofences: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'geofences_create')),\n {\n title: 'Create Geofence',\n description:\n 'Create a geofence. `name`, `latitude`, `longitude` and `radius` (metres) are required.',\n inputSchema: {\n name: z.string().min(1).describe('Geofence name'),\n latitude: z.number().describe('Centre latitude'),\n longitude: z.number().describe('Centre longitude'),\n radius: z.number().describe('Radius in metres'),\n address: z.string().optional().describe('Human-readable address'),\n trigger: GeofenceTriggerEnum.optional().describe('Trigger mode (default BOTH)'),\n isActive: z.boolean().optional().describe('Whether active (default true)'),\n linkedProjectId: z.string().optional().describe('Project to link entries to'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n name,\n latitude,\n longitude,\n radius,\n address,\n trigger,\n isActive,\n linkedProjectId,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { name, latitude, longitude, radius };\n if (address !== undefined) input.address = address;\n if (trigger !== undefined) input.trigger = trigger;\n if (isActive !== undefined) input.isActive = isActive;\n if (linkedProjectId !== undefined) input.linkedProjectId = linkedProjectId;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{ createGeofence: Record<string, unknown> }>(\n ops.CREATE_GEOFENCE,\n { input },\n );\n return jsonResult(data.createGeofence);\n } catch (error) {\n ctx.logger.error('timecampus geofences_create failed', { error: String(error) });\n return errorResult(\n `Failed to create geofence: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'geofences_update')),\n {\n title: 'Update Geofence',\n description: 'Update a geofence. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Geofence ID'),\n name: z.string().optional().describe('Updated name'),\n latitude: z.number().optional().describe('Updated latitude'),\n longitude: z.number().optional().describe('Updated longitude'),\n radius: z.number().optional().describe('Updated radius (metres)'),\n address: z.string().optional().describe('Updated address'),\n trigger: GeofenceTriggerEnum.optional().describe('Updated trigger mode'),\n isActive: z.boolean().optional().describe('Updated active flag'),\n linkedProjectId: z.string().optional().describe('Updated linked project'),\n },\n },\n async ({\n id,\n name,\n latitude,\n longitude,\n radius,\n address,\n trigger,\n isActive,\n linkedProjectId,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (latitude !== undefined) input.latitude = latitude;\n if (longitude !== undefined) input.longitude = longitude;\n if (radius !== undefined) input.radius = radius;\n if (address !== undefined) input.address = address;\n if (trigger !== undefined) input.trigger = trigger;\n if (isActive !== undefined) input.isActive = isActive;\n if (linkedProjectId !== undefined) input.linkedProjectId = linkedProjectId;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{ updateGeofence: Record<string, unknown> }>(\n ops.UPDATE_GEOFENCE,\n { id, input },\n );\n return jsonResult(data.updateGeofence);\n } catch (error) {\n ctx.logger.error('timecampus geofences_update failed', { error: String(error) });\n return errorResult(\n `Failed to update geofence: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'geofences_delete')),\n {\n title: 'Delete Geofence',\n description: 'Delete a geofence by ID.',\n inputSchema: { id: z.string().describe('Geofence ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteGeofence: Record<string, unknown> }>(\n ops.DELETE_GEOFENCE,\n { id },\n );\n return jsonResult(data.deleteGeofence);\n } catch (error) {\n ctx.logger.error('timecampus geofences_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete geofence: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'geofences_toggle')),\n {\n title: 'Toggle Geofence',\n description: 'Activate or deactivate a geofence.',\n inputSchema: {\n id: z.string().describe('Geofence ID'),\n isActive: z.boolean().describe('New active state'),\n },\n },\n async ({ id, isActive }) => {\n try {\n const data = await ctx.gql.workspace.request<{ toggleGeofence: Record<string, unknown> }>(\n ops.TOGGLE_GEOFENCE,\n { id, isActive },\n );\n return jsonResult(data.toggleGeofence);\n } catch (error) {\n ctx.logger.error('timecampus geofences_toggle failed', { error: String(error) });\n return errorResult(\n `Failed to toggle geofence: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Geofence events ──────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'geofence_events_list')),\n {\n title: 'List Geofence Events',\n description: 'List the recorded enter/exit events for a geofence.',\n inputSchema: {\n geofenceId: z.string().describe('Geofence 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 ({ geofenceId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n geofenceEvents: Array<Record<string, unknown>>;\n }>(ops.LIST_GEOFENCE_EVENTS, { geofenceId, limit: limit ?? 50, offset: offset ?? 0 });\n return jsonResult(data.geofenceEvents);\n } catch (error) {\n ctx.logger.error('timecampus geofence_events_list failed', { error: String(error) });\n return errorResult(\n `Failed to list geofence events: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'geofence_events_record')),\n {\n title: 'Record Geofence Event',\n description:\n 'Record an enter/exit geofence event. `geofenceId`, `type`, `userId` and location are required.',\n inputSchema: {\n geofenceId: z.string().describe('Geofence ID'),\n type: GeofenceEventTypeEnum.describe('Event type (ENTER / EXIT)'),\n userId: z.string().describe('User ID'),\n locationLatitude: z.number().describe('Latitude at crossing'),\n locationLongitude: z.number().describe('Longitude at crossing'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({ geofenceId, type, userId, locationLatitude, locationLongitude, context }) => {\n try {\n const input: Record<string, unknown> = {\n geofenceId,\n type,\n userId,\n locationLatitude,\n locationLongitude,\n };\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n recordGeofenceEvent: Record<string, unknown>;\n }>(ops.RECORD_GEOFENCE_EVENT, { input });\n return jsonResult(data.recordGeofenceEvent);\n } catch (error) {\n ctx.logger.error('timecampus geofence_events_record failed', { error: String(error) });\n return errorResult(\n `Failed to record geofence event: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Location entries ─────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'locations_get')),\n {\n title: 'Get Location Entry',\n description: 'Fetch a single location entry by ID.',\n inputSchema: { id: z.string().describe('Location entry ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n locationEntry: Record<string, unknown> | null;\n }>(ops.GET_LOCATION_ENTRY, { id });\n if (!data.locationEntry) return errorResult(`Location entry ${id} not found`);\n return jsonResult(data.locationEntry);\n } catch (error) {\n ctx.logger.error('timecampus locations_get failed', { error: String(error) });\n return errorResult(\n `Failed to get location entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'locations_active')),\n {\n title: 'Active Location Entry',\n description: 'Fetch the currently-open (no end time) location entry for the calling user.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n activeLocationEntry: Record<string, unknown> | null;\n }>(ops.ACTIVE_LOCATION_ENTRY, {});\n return jsonResult(data.activeLocationEntry);\n } catch (error) {\n ctx.logger.error('timecampus locations_active failed', { error: String(error) });\n return errorResult(\n `Failed to get active location entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'locations_list')),\n {\n title: 'List Location Entries',\n description:\n 'List location entries with optional user/project/geofence/date/text filter and pagination. Returns { items, total, hasMore }.',\n inputSchema: {\n userId: z.string().optional().describe('Filter by user ID'),\n projectId: z.string().optional().describe('Filter by project ID'),\n geofenceId: z.string().optional().describe('Filter by geofence ID'),\n search: z.string().optional().describe('Free-text search across address'),\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\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 ({ userId, projectId, geofenceId, search, startDate, endDate, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (userId !== undefined) filter.userId = userId;\n if (projectId !== undefined) filter.projectId = projectId;\n if (geofenceId !== undefined) filter.geofenceId = geofenceId;\n if (search !== undefined) filter.search = search;\n if (startDate !== undefined) filter.startDate = startDate;\n if (endDate !== undefined) filter.endDate = endDate;\n\n const data = await ctx.gql.workspace.request<{ locationEntries: Record<string, unknown> }>(\n ops.LIST_LOCATION_ENTRIES,\n {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n },\n );\n return jsonResult(data.locationEntries);\n } catch (error) {\n ctx.logger.error('timecampus locations_list failed', { error: String(error) });\n return errorResult(\n `Failed to list location entries: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'locations_stats')),\n {\n title: 'Location Stats',\n description: 'Aggregate location stats over an optional date range.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n },\n },\n async ({ startDate, endDate }) => {\n try {\n const data = await ctx.gql.workspace.request<{ locationStats: Record<string, unknown> }>(\n ops.LOCATION_STATS,\n { startDate, endDate },\n );\n return jsonResult(data.locationStats);\n } catch (error) {\n ctx.logger.error('timecampus locations_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get location stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'locations_create')),\n {\n title: 'Create Location Entry',\n description:\n 'Create a location entry. `userId`, `latitude`, `longitude` and `startTime` are required.',\n inputSchema: {\n userId: z.string().describe('User ID'),\n latitude: z.number().describe('Latitude'),\n longitude: z.number().describe('Longitude'),\n startTime: z.string().describe('ISO start time'),\n endTime: z.string().optional().describe('ISO end time'),\n duration: z.number().int().optional().describe('Duration in seconds'),\n accuracy: z.number().optional().describe('GPS accuracy (metres)'),\n address: z.string().optional().describe('Human-readable address'),\n geofenceId: z.string().optional().describe('Associated geofence ID'),\n projectId: z.string().optional().describe('Associated project ID'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n userId,\n latitude,\n longitude,\n startTime,\n endTime,\n duration,\n accuracy,\n address,\n geofenceId,\n projectId,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { userId, latitude, longitude, startTime };\n if (endTime !== undefined) input.endTime = endTime;\n if (duration !== undefined) input.duration = duration;\n if (accuracy !== undefined) input.accuracy = accuracy;\n if (address !== undefined) input.address = address;\n if (geofenceId !== undefined) input.geofenceId = geofenceId;\n if (projectId !== undefined) input.projectId = projectId;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n createLocationEntry: Record<string, unknown>;\n }>(ops.CREATE_LOCATION_ENTRY, { input });\n return jsonResult(data.createLocationEntry);\n } catch (error) {\n ctx.logger.error('timecampus locations_create failed', { error: String(error) });\n return errorResult(\n `Failed to create location entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'locations_update')),\n {\n title: 'Update Location Entry',\n description: 'Update a location entry. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Location entry ID'),\n latitude: z.number().optional().describe('Updated latitude'),\n longitude: z.number().optional().describe('Updated longitude'),\n startTime: z.string().optional().describe('Updated ISO start'),\n endTime: z.string().optional().describe('Updated ISO end'),\n duration: z.number().int().optional().describe('Updated duration (seconds)'),\n accuracy: z.number().optional().describe('Updated accuracy'),\n address: z.string().optional().describe('Updated address'),\n geofenceId: z.string().optional().describe('Updated geofence ID'),\n projectId: z.string().optional().describe('Updated project ID'),\n },\n },\n async ({\n id,\n latitude,\n longitude,\n startTime,\n endTime,\n duration,\n accuracy,\n address,\n geofenceId,\n projectId,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (latitude !== undefined) input.latitude = latitude;\n if (longitude !== undefined) input.longitude = longitude;\n if (startTime !== undefined) input.startTime = startTime;\n if (endTime !== undefined) input.endTime = endTime;\n if (duration !== undefined) input.duration = duration;\n if (accuracy !== undefined) input.accuracy = accuracy;\n if (address !== undefined) input.address = address;\n if (geofenceId !== undefined) input.geofenceId = geofenceId;\n if (projectId !== undefined) input.projectId = projectId;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateLocationEntry: Record<string, unknown>;\n }>(ops.UPDATE_LOCATION_ENTRY, { id, input });\n return jsonResult(data.updateLocationEntry);\n } catch (error) {\n ctx.logger.error('timecampus locations_update failed', { error: String(error) });\n return errorResult(\n `Failed to update location entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'locations_delete')),\n {\n title: 'Delete Location Entry',\n description: 'Delete a location entry by ID.',\n inputSchema: { id: z.string().describe('Location entry ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteLocationEntry: Record<string, unknown>;\n }>(ops.DELETE_LOCATION_ENTRY, { id });\n return jsonResult(data.deleteLocationEntry);\n } catch (error) {\n ctx.logger.error('timecampus locations_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete location entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus tracking-channel tools (ChannelConfig).\n *\n * Surface (9): commchannels_{get,list,active,statuses,create,update,delete,sync,\n * toggle}. Workspace scoping comes from the gateway headers.\n *\n * Note: the MCP tool prefix is `commchannels_*` (not `channels_*`) to avoid\n * colliding with the generic `channels` module's tool names when both are\n * mounted in a shell. The GraphQL operations/types are unchanged.\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 { ChannelStatusEnum, ChannelTypeEnum, JsonObject } from './shared.js';\n\nexport function registerChannelTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_get')),\n {\n title: 'Get Channel Config',\n description: 'Fetch a single tracking-channel config by ID.',\n inputSchema: { id: z.string().describe('Channel config ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n channelConfig: Record<string, unknown> | null;\n }>(ops.GET_CHANNEL, { id });\n if (!data.channelConfig) return errorResult(`Channel config ${id} not found`);\n return jsonResult(data.channelConfig);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_get failed', { error: String(error) });\n return errorResult(\n `Failed to get channel config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_list')),\n {\n title: 'List Channel Configs',\n description: 'List tracking-channel configs with pagination.',\n inputSchema: {\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 ({ limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n channelConfigs: Array<Record<string, unknown>>;\n }>(ops.LIST_CHANNELS, { limit: limit ?? 50, offset: offset ?? 0 });\n return jsonResult(data.channelConfigs);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_list failed', { error: String(error) });\n return errorResult(\n `Failed to list channel configs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_active')),\n {\n title: 'Active Channels',\n description: 'List the currently-active tracking channels.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n activeChannels: Array<Record<string, unknown>>;\n }>(ops.ACTIVE_CHANNELS, {});\n return jsonResult(data.activeChannels);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_active failed', { error: String(error) });\n return errorResult(\n `Failed to list active channels: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_statuses')),\n {\n title: 'Channel Statuses',\n description: 'Health/status snapshot of every tracking channel.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n channelStatuses: Array<Record<string, unknown>>;\n }>(ops.CHANNEL_STATUSES, {});\n return jsonResult(data.channelStatuses);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_statuses failed', { error: String(error) });\n return errorResult(\n `Failed to get channel statuses: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_create')),\n {\n title: 'Create Channel Config',\n description: 'Create a tracking channel. `name` and `type` are required.',\n inputSchema: {\n name: z.string().min(1).describe('Channel name'),\n type: ChannelTypeEnum.describe('Channel source type'),\n status: ChannelStatusEnum.optional().describe('Initial status (default SETUP)'),\n syncInterval: z.number().int().optional().describe('Sync interval (seconds)'),\n settings: JsonObject.optional().describe('Channel settings JSON'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({ name, type, status, syncInterval, settings, context }) => {\n try {\n const input: Record<string, unknown> = { name, type };\n if (status !== undefined) input.status = status;\n if (syncInterval !== undefined) input.syncInterval = syncInterval;\n if (settings !== undefined) input.settings = settings;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n createChannelConfig: Record<string, unknown>;\n }>(ops.CREATE_CHANNEL, { input });\n return jsonResult(data.createChannelConfig);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_create failed', { error: String(error) });\n return errorResult(\n `Failed to create channel config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_update')),\n {\n title: 'Update Channel Config',\n description: 'Update a tracking channel. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Channel config ID'),\n name: z.string().optional().describe('Updated name'),\n type: ChannelTypeEnum.optional().describe('Updated type'),\n status: ChannelStatusEnum.optional().describe('Updated status'),\n syncInterval: z.number().int().optional().describe('Updated sync interval (seconds)'),\n settings: JsonObject.optional().describe('Updated settings JSON'),\n },\n },\n async ({ id, name, type, status, syncInterval, settings }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (type !== undefined) input.type = type;\n if (status !== undefined) input.status = status;\n if (syncInterval !== undefined) input.syncInterval = syncInterval;\n if (settings !== undefined) input.settings = settings;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateChannelConfig: Record<string, unknown>;\n }>(ops.UPDATE_CHANNEL, { id, input });\n return jsonResult(data.updateChannelConfig);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_update failed', { error: String(error) });\n return errorResult(\n `Failed to update channel config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_delete')),\n {\n title: 'Delete Channel Config',\n description: 'Delete a tracking channel by ID.',\n inputSchema: { id: z.string().describe('Channel config ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteChannelConfig: Record<string, unknown>;\n }>(ops.DELETE_CHANNEL, { id });\n return jsonResult(data.deleteChannelConfig);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete channel config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_sync')),\n {\n title: 'Sync Channel',\n description: 'Trigger a sync for a tracking channel.',\n inputSchema: { id: z.string().describe('Channel config ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ syncChannel: Record<string, unknown> }>(\n ops.SYNC_CHANNEL,\n { id },\n );\n return jsonResult(data.syncChannel);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_sync failed', { error: String(error) });\n return errorResult(\n `Failed to sync channel: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'commchannels_toggle')),\n {\n title: 'Toggle Channel',\n description: 'Set a tracking channel’s status (ACTIVE / INACTIVE / SETUP).',\n inputSchema: {\n id: z.string().describe('Channel config ID'),\n status: ChannelStatusEnum.describe('New status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{ toggleChannel: Record<string, unknown> }>(\n ops.TOGGLE_CHANNEL,\n { id, status },\n );\n return jsonResult(data.toggleChannel);\n } catch (error) {\n ctx.logger.error('timecampus commchannels_toggle failed', { error: String(error) });\n return errorResult(\n `Failed to toggle channel: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus client-portal tools (ClientPortalConfig).\n *\n * Surface (7): client_portals_{get,list,stats,create,update,delete,toggle}.\n * Workspace scoping comes from the gateway headers.\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 { JsonObject } from './shared.js';\n\nexport function registerClientPortalTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'client_portals_get')),\n {\n title: 'Get Client Portal',\n description: 'Fetch a single client-portal config by ID.',\n inputSchema: { id: z.string().describe('Client portal config ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n clientPortalConfig: Record<string, unknown> | null;\n }>(ops.GET_CLIENT_PORTAL, { id });\n if (!data.clientPortalConfig) return errorResult(`Client portal ${id} not found`);\n return jsonResult(data.clientPortalConfig);\n } catch (error) {\n ctx.logger.error('timecampus client_portals_get failed', { error: String(error) });\n return errorResult(\n `Failed to get client portal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'client_portals_list')),\n {\n title: 'List Client Portals',\n description: 'List client-portal configs with pagination. Returns { items, total, hasMore }.',\n inputSchema: {\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 ({ limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n clientPortalConfigs: Record<string, unknown>;\n }>(ops.LIST_CLIENT_PORTALS, { limit: limit ?? 50, offset: offset ?? 0 });\n return jsonResult(data.clientPortalConfigs);\n } catch (error) {\n ctx.logger.error('timecampus client_portals_list failed', { error: String(error) });\n return errorResult(\n `Failed to list client portals: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'client_portals_stats')),\n {\n title: 'Client Portal Stats',\n description: 'Headline client-portal stats (total/active clients, projects shared).',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n clientPortalStats: Record<string, unknown>;\n }>(ops.CLIENT_PORTAL_STATS, {});\n return jsonResult(data.clientPortalStats);\n } catch (error) {\n ctx.logger.error('timecampus client_portals_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get client portal stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'client_portals_create')),\n {\n title: 'Create Client Portal',\n description: 'Create a client-portal config. `clientName` is required.',\n inputSchema: {\n clientName: z.string().min(1).describe('Client display name'),\n description: z.string().optional().describe('Description'),\n contactEmail: z.string().optional().describe('Contact email'),\n contactPhone: z.string().optional().describe('Contact phone'),\n logoUrl: z.string().optional().describe('Logo URL'),\n isActive: z.boolean().optional().describe('Whether active (default true)'),\n permissions: JsonObject.optional().describe('Permissions JSON'),\n settings: JsonObject.optional().describe('Settings JSON'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({\n clientName,\n description,\n contactEmail,\n contactPhone,\n logoUrl,\n isActive,\n permissions,\n settings,\n context,\n }) => {\n try {\n const input: Record<string, unknown> = { clientName };\n if (description !== undefined) input.description = description;\n if (contactEmail !== undefined) input.contactEmail = contactEmail;\n if (contactPhone !== undefined) input.contactPhone = contactPhone;\n if (logoUrl !== undefined) input.logoUrl = logoUrl;\n if (isActive !== undefined) input.isActive = isActive;\n if (permissions !== undefined) input.permissions = permissions;\n if (settings !== undefined) input.settings = settings;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n createClientPortalConfig: Record<string, unknown>;\n }>(ops.CREATE_CLIENT_PORTAL, { input });\n return jsonResult(data.createClientPortalConfig);\n } catch (error) {\n ctx.logger.error('timecampus client_portals_create failed', { error: String(error) });\n return errorResult(\n `Failed to create client portal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'client_portals_update')),\n {\n title: 'Update Client Portal',\n description: 'Update a client-portal config. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Client portal config ID'),\n clientName: z.string().optional().describe('Updated client name'),\n description: z.string().optional().describe('Updated description'),\n contactEmail: z.string().optional().describe('Updated contact email'),\n contactPhone: z.string().optional().describe('Updated contact phone'),\n logoUrl: z.string().optional().describe('Updated logo URL'),\n isActive: z.boolean().optional().describe('Updated active flag'),\n permissions: JsonObject.optional().describe('Updated permissions JSON'),\n settings: JsonObject.optional().describe('Updated settings JSON'),\n },\n },\n async ({\n id,\n clientName,\n description,\n contactEmail,\n contactPhone,\n logoUrl,\n isActive,\n permissions,\n settings,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (clientName !== undefined) input.clientName = clientName;\n if (description !== undefined) input.description = description;\n if (contactEmail !== undefined) input.contactEmail = contactEmail;\n if (contactPhone !== undefined) input.contactPhone = contactPhone;\n if (logoUrl !== undefined) input.logoUrl = logoUrl;\n if (isActive !== undefined) input.isActive = isActive;\n if (permissions !== undefined) input.permissions = permissions;\n if (settings !== undefined) input.settings = settings;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateClientPortalConfig: Record<string, unknown>;\n }>(ops.UPDATE_CLIENT_PORTAL, { id, input });\n return jsonResult(data.updateClientPortalConfig);\n } catch (error) {\n ctx.logger.error('timecampus client_portals_update failed', { error: String(error) });\n return errorResult(\n `Failed to update client portal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'client_portals_delete')),\n {\n title: 'Delete Client Portal',\n description: 'Delete a client-portal config by ID.',\n inputSchema: { id: z.string().describe('Client portal config ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteClientPortalConfig: Record<string, unknown>;\n }>(ops.DELETE_CLIENT_PORTAL, { id });\n return jsonResult(data.deleteClientPortalConfig);\n } catch (error) {\n ctx.logger.error('timecampus client_portals_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete client portal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'client_portals_toggle')),\n {\n title: 'Toggle Client Portal',\n description: 'Activate or deactivate a client-portal config.',\n inputSchema: {\n id: z.string().describe('Client portal config ID'),\n isActive: z.boolean().describe('New active state'),\n },\n },\n async ({ id, isActive }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n toggleClientPortal: Record<string, unknown>;\n }>(ops.TOGGLE_CLIENT_PORTAL, { id, isActive });\n return jsonResult(data.toggleClientPortal);\n } catch (error) {\n ctx.logger.error('timecampus client_portals_toggle failed', { error: String(error) });\n return errorResult(\n `Failed to toggle client portal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus email-tracking tools (EmailTimeEntry).\n *\n * Surface (7): email_entries_{get,list,stats,create,bulk_create,update,delete}.\n * Workspace scoping comes from the gateway headers.\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 { JsonObject } from './shared.js';\n\nconst emailEntryInputShape = {\n date: z.string().describe('ISO date'),\n subject: z.string().optional().describe('Email subject'),\n sender: z.string().optional().describe('Sender'),\n recipients: z.string().optional().describe('Recipients'),\n threadId: z.string().optional().describe('Thread ID'),\n category: z.string().optional().describe('Category'),\n isImportant: z.boolean().optional().describe('Whether flagged important (default false)'),\n duration: z.number().int().optional().describe('Time spent (seconds)'),\n responseTime: z.number().int().optional().describe('Response time (seconds)'),\n context: JsonObject.optional().describe('Context JSON'),\n} as const;\n\nfunction buildEmailInput(args: {\n date: string;\n subject?: string;\n sender?: string;\n recipients?: string;\n threadId?: string;\n category?: string;\n isImportant?: boolean;\n duration?: number;\n responseTime?: number;\n context?: Record<string, unknown>;\n}): Record<string, unknown> {\n const input: Record<string, unknown> = { date: args.date };\n if (args.subject !== undefined) input.subject = args.subject;\n if (args.sender !== undefined) input.sender = args.sender;\n if (args.recipients !== undefined) input.recipients = args.recipients;\n if (args.threadId !== undefined) input.threadId = args.threadId;\n if (args.category !== undefined) input.category = args.category;\n if (args.isImportant !== undefined) input.isImportant = args.isImportant;\n if (args.duration !== undefined) input.duration = args.duration;\n if (args.responseTime !== undefined) input.responseTime = args.responseTime;\n if (args.context !== undefined) input.context = args.context;\n return input;\n}\n\nexport function registerEmailTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'email_entries_get')),\n {\n title: 'Get Email Time Entry',\n description: 'Fetch a single email-time entry by ID.',\n inputSchema: { id: z.string().describe('Email time entry ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n emailTimeEntry: Record<string, unknown> | null;\n }>(ops.GET_EMAIL_ENTRY, { id });\n if (!data.emailTimeEntry) return errorResult(`Email time entry ${id} not found`);\n return jsonResult(data.emailTimeEntry);\n } catch (error) {\n ctx.logger.error('timecampus email_entries_get failed', { error: String(error) });\n return errorResult(\n `Failed to get email entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'email_entries_list')),\n {\n title: 'List Email Time Entries',\n description:\n 'List email-time entries with optional filter (sender/thread/category/important/text), date range and user.',\n inputSchema: {\n sender: z.string().optional().describe('Filter by sender'),\n threadId: z.string().optional().describe('Filter by thread ID'),\n category: z.string().optional().describe('Filter by category'),\n isImportant: z.boolean().optional().describe('Filter by important flag'),\n search: z.string().optional().describe('Free-text search'),\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n userId: z.string().optional().describe('Filter by user 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 ({\n sender,\n threadId,\n category,\n isImportant,\n search,\n startDate,\n endDate,\n userId,\n limit,\n offset,\n }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (sender !== undefined) filter.sender = sender;\n if (threadId !== undefined) filter.threadId = threadId;\n if (category !== undefined) filter.category = category;\n if (isImportant !== undefined) filter.isImportant = isImportant;\n if (search !== undefined) filter.search = search;\n\n const data = await ctx.gql.workspace.request<{\n emailTimeEntries: Array<Record<string, unknown>>;\n }>(ops.LIST_EMAIL_ENTRIES, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n startDate,\n endDate,\n userId,\n limit: limit ?? 50,\n offset: offset ?? 0,\n });\n return jsonResult(data.emailTimeEntries);\n } catch (error) {\n ctx.logger.error('timecampus email_entries_list failed', { error: String(error) });\n return errorResult(\n `Failed to list email entries: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'email_entries_stats')),\n {\n title: 'Email Tracking Stats',\n description: 'Aggregate email-tracking stats over an optional date range / user.',\n inputSchema: {\n startDate: z.string().optional().describe('ISO range start'),\n endDate: z.string().optional().describe('ISO range end'),\n userId: z.string().optional().describe('Filter by user ID'),\n },\n },\n async ({ startDate, endDate, userId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n emailTrackingStats: Record<string, unknown>;\n }>(ops.EMAIL_TRACKING_STATS, { startDate, endDate, userId });\n return jsonResult(data.emailTrackingStats);\n } catch (error) {\n ctx.logger.error('timecampus email_entries_stats failed', { error: String(error) });\n return errorResult(\n `Failed to get email tracking stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'email_entries_create')),\n {\n title: 'Create Email Time Entry',\n description: 'Record an email-time entry. `date` is required.',\n inputSchema: emailEntryInputShape,\n },\n async (args) => {\n try {\n const data = await ctx.gql.workspace.request<{\n createEmailTimeEntry: Record<string, unknown>;\n }>(ops.CREATE_EMAIL_ENTRY, { input: buildEmailInput(args) });\n return jsonResult(data.createEmailTimeEntry);\n } catch (error) {\n ctx.logger.error('timecampus email_entries_create failed', { error: String(error) });\n return errorResult(\n `Failed to create email entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'email_entries_bulk_create')),\n {\n title: 'Bulk Create Email Time Entries',\n description: 'Record multiple email-time entries in one call. Each entry requires a `date`.',\n inputSchema: {\n inputs: z\n .array(\n z.object({\n date: z.string().describe('ISO date'),\n subject: z.string().optional(),\n sender: z.string().optional(),\n recipients: z.string().optional(),\n threadId: z.string().optional(),\n category: z.string().optional(),\n isImportant: z.boolean().optional(),\n duration: z.number().int().optional(),\n responseTime: z.number().int().optional(),\n }),\n )\n .min(1)\n .describe('Email entries to create'),\n },\n },\n async ({ inputs }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n bulkCreateEmailTimeEntries: Array<Record<string, unknown>>;\n }>(ops.BULK_CREATE_EMAIL_ENTRIES, { inputs });\n return jsonResult(data.bulkCreateEmailTimeEntries);\n } catch (error) {\n ctx.logger.error('timecampus email_entries_bulk_create failed', { error: String(error) });\n return errorResult(\n `Failed to bulk-create email entries: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'email_entries_update')),\n {\n title: 'Update Email Time Entry',\n description: 'Update an email-time entry. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Email time entry ID'),\n date: z.string().optional().describe('Updated ISO date'),\n subject: z.string().optional().describe('Updated subject'),\n sender: z.string().optional().describe('Updated sender'),\n recipients: z.string().optional().describe('Updated recipients'),\n threadId: z.string().optional().describe('Updated thread ID'),\n category: z.string().optional().describe('Updated category'),\n isImportant: z.boolean().optional().describe('Updated important flag'),\n duration: z.number().int().optional().describe('Updated duration (seconds)'),\n responseTime: z.number().int().optional().describe('Updated response time (seconds)'),\n },\n },\n async ({\n id,\n date,\n subject,\n sender,\n recipients,\n threadId,\n category,\n isImportant,\n duration,\n responseTime,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (date !== undefined) input.date = date;\n if (subject !== undefined) input.subject = subject;\n if (sender !== undefined) input.sender = sender;\n if (recipients !== undefined) input.recipients = recipients;\n if (threadId !== undefined) input.threadId = threadId;\n if (category !== undefined) input.category = category;\n if (isImportant !== undefined) input.isImportant = isImportant;\n if (duration !== undefined) input.duration = duration;\n if (responseTime !== undefined) input.responseTime = responseTime;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateEmailTimeEntry: Record<string, unknown>;\n }>(ops.UPDATE_EMAIL_ENTRY, { id, input });\n return jsonResult(data.updateEmailTimeEntry);\n } catch (error) {\n ctx.logger.error('timecampus email_entries_update failed', { error: String(error) });\n return errorResult(\n `Failed to update email entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'email_entries_delete')),\n {\n title: 'Delete Email Time Entry',\n description: 'Delete an email-time entry by ID.',\n inputSchema: { id: z.string().describe('Email time entry ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteEmailTimeEntry: Record<string, unknown>;\n }>(ops.DELETE_EMAIL_ENTRY, { id });\n return jsonResult(data.deleteEmailTimeEntry);\n } catch (error) {\n ctx.logger.error('timecampus email_entries_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete email entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Timecampus configuration + UI-session tools.\n *\n * Surface (13): config_{get,get_by_key,value,list,set,bulk_set,update,delete}\n * and ui_session_{get,by_user,save,update,clear}. Workspace scoping comes from\n * the gateway headers.\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 { ConfigScopeEnum, JsonObject } from './shared.js';\n\nexport function registerConfigTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Configuration ───────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_get')),\n {\n title: 'Get Configuration',\n description: 'Fetch a single configuration entry by ID.',\n inputSchema: { id: z.string().describe('Configuration ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeCampusConfiguration: Record<string, unknown> | null;\n }>(ops.GET_CONFIG, { id });\n if (!data.timeCampusConfiguration) return errorResult(`Configuration ${id} not found`);\n return jsonResult(data.timeCampusConfiguration);\n } catch (error) {\n ctx.logger.error('timecampus config_get failed', { error: String(error) });\n return errorResult(\n `Failed to get configuration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_get_by_key')),\n {\n title: 'Get Configuration By Key',\n description: 'Fetch a configuration entry by key (optionally scoped).',\n inputSchema: {\n key: z.string().describe('Configuration key'),\n scope: ConfigScopeEnum.optional().describe('Scope (GLOBAL/WORKSPACE/PROJECT/USER)'),\n scopeId: z.string().optional().describe('Scope ID (e.g. projectId/userId)'),\n },\n },\n async ({ key, scope, scopeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeCampusConfigurationByKey: Record<string, unknown> | null;\n }>(ops.GET_CONFIG_BY_KEY, { key, scope, scopeId });\n return jsonResult(data.timeCampusConfigurationByKey);\n } catch (error) {\n ctx.logger.error('timecampus config_get_by_key failed', { error: String(error) });\n return errorResult(\n `Failed to get configuration by key: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_value')),\n {\n title: 'Get Configuration Value',\n description: 'Fetch just the JSON value of a configuration key (optionally scoped).',\n inputSchema: {\n key: z.string().describe('Configuration key'),\n scope: ConfigScopeEnum.optional().describe('Scope'),\n scopeId: z.string().optional().describe('Scope ID'),\n },\n },\n async ({ key, scope, scopeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ timeCampusConfigurationValue: unknown }>(\n ops.CONFIG_VALUE,\n { key, scope, scopeId },\n );\n return jsonResult({ value: data.timeCampusConfigurationValue });\n } catch (error) {\n ctx.logger.error('timecampus config_value failed', { error: String(error) });\n return errorResult(\n `Failed to get configuration value: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_list')),\n {\n title: 'List Configurations',\n description: 'List configuration entries with optional scope filter and pagination.',\n inputSchema: {\n scope: ConfigScopeEnum.optional().describe('Scope filter'),\n scopeId: z.string().optional().describe('Scope ID filter'),\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 ({ scope, scopeId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeCampusConfigurations: Array<Record<string, unknown>>;\n }>(ops.LIST_CONFIGS, { scope, scopeId, limit: limit ?? 50, offset: offset ?? 0 });\n return jsonResult(data.timeCampusConfigurations);\n } catch (error) {\n ctx.logger.error('timecampus config_list failed', { error: String(error) });\n return errorResult(\n `Failed to list configurations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_set')),\n {\n title: 'Set Configuration',\n description: 'Set (upsert) a configuration key. `key` and `value` are required.',\n inputSchema: {\n key: z.string().min(1).describe('Configuration key'),\n value: JsonObject.describe('Configuration value JSON'),\n scope: ConfigScopeEnum.optional().describe('Scope (default WORKSPACE)'),\n scopeId: z.string().optional().describe('Scope ID'),\n description: z.string().optional().describe('Description'),\n isSecret: z.boolean().optional().describe('Whether the value is secret (default false)'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({ key, value, scope, scopeId, description, isSecret, context }) => {\n try {\n const input: Record<string, unknown> = { key, value };\n if (scope !== undefined) input.scope = scope;\n if (scopeId !== undefined) input.scopeId = scopeId;\n if (description !== undefined) input.description = description;\n if (isSecret !== undefined) input.isSecret = isSecret;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n setTimeCampusConfiguration: Record<string, unknown>;\n }>(ops.SET_CONFIG, { input });\n return jsonResult(data.setTimeCampusConfiguration);\n } catch (error) {\n ctx.logger.error('timecampus config_set failed', { error: String(error) });\n return errorResult(\n `Failed to set configuration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_bulk_set')),\n {\n title: 'Bulk Set Configurations',\n description: 'Set (upsert) multiple configuration keys in one call.',\n inputSchema: {\n inputs: z\n .array(\n z.object({\n key: z.string().describe('Configuration key'),\n value: JsonObject.describe('Value JSON'),\n scope: ConfigScopeEnum.optional(),\n scopeId: z.string().optional(),\n description: z.string().optional(),\n isSecret: z.boolean().optional(),\n }),\n )\n .min(1)\n .describe('Configuration entries to set'),\n },\n },\n async ({ inputs }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n bulkSetTimeCampusConfigurations: Array<Record<string, unknown>>;\n }>(ops.BULK_SET_CONFIGS, { inputs });\n return jsonResult(data.bulkSetTimeCampusConfigurations);\n } catch (error) {\n ctx.logger.error('timecampus config_bulk_set failed', { error: String(error) });\n return errorResult(\n `Failed to bulk-set configurations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_update')),\n {\n title: 'Update Configuration',\n description: 'Update a configuration entry. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Configuration ID'),\n value: JsonObject.optional().describe('Updated value JSON'),\n description: z.string().optional().describe('Updated description'),\n isSecret: z.boolean().optional().describe('Updated secret flag'),\n context: JsonObject.optional().describe('Updated context JSON'),\n },\n },\n async ({ id, value, description, isSecret, context }) => {\n try {\n const input: Record<string, unknown> = {};\n if (value !== undefined) input.value = value;\n if (description !== undefined) input.description = description;\n if (isSecret !== undefined) input.isSecret = isSecret;\n if (context !== undefined) input.context = context;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateTimeCampusConfiguration: Record<string, unknown>;\n }>(ops.UPDATE_CONFIG, { id, input });\n return jsonResult(data.updateTimeCampusConfiguration);\n } catch (error) {\n ctx.logger.error('timecampus config_update failed', { error: String(error) });\n return errorResult(\n `Failed to update configuration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_delete')),\n {\n title: 'Delete Configuration',\n description: 'Delete a configuration entry by ID.',\n inputSchema: { id: z.string().describe('Configuration ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteTimeCampusConfiguration: Record<string, unknown>;\n }>(ops.DELETE_CONFIG, { id });\n return jsonResult(data.deleteTimeCampusConfiguration);\n } catch (error) {\n ctx.logger.error('timecampus config_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete configuration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── UI session ──────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ui_session_get')),\n {\n title: 'Get UI Session',\n description: 'Fetch the calling user’s saved UI session (view, preferences, state).',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeCampusUISession: Record<string, unknown> | null;\n }>(ops.GET_UI_SESSION, {});\n return jsonResult(data.timeCampusUISession);\n } catch (error) {\n ctx.logger.error('timecampus ui_session_get failed', { error: String(error) });\n return errorResult(\n `Failed to get UI session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ui_session_by_user')),\n {\n title: 'Get UI Session By User',\n description: 'Fetch a specific user’s saved UI session.',\n inputSchema: { userId: z.string().describe('User ID') },\n },\n async ({ userId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n timeCampusUISessionByUser: Record<string, unknown> | null;\n }>(ops.UI_SESSION_BY_USER, { userId });\n return jsonResult(data.timeCampusUISessionByUser);\n } catch (error) {\n ctx.logger.error('timecampus ui_session_by_user failed', { error: String(error) });\n return errorResult(\n `Failed to get UI session by user: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ui_session_save')),\n {\n title: 'Save UI Session',\n description: 'Save (upsert) the calling user’s UI session.',\n inputSchema: {\n activeView: z.string().optional().describe('Active view'),\n preferences: JsonObject.optional().describe('Preferences JSON'),\n state: JsonObject.optional().describe('State JSON'),\n context: JsonObject.optional().describe('Context JSON'),\n },\n },\n async ({ activeView, preferences, state, context }) => {\n try {\n const input: Record<string, unknown> = {};\n if (activeView !== undefined) input.activeView = activeView;\n if (preferences !== undefined) input.preferences = preferences;\n if (state !== undefined) input.state = state;\n if (context !== undefined) input.context = context;\n\n const data = await ctx.gql.workspace.request<{\n saveTimeCampusUISession: Record<string, unknown>;\n }>(ops.SAVE_UI_SESSION, { input });\n return jsonResult(data.saveTimeCampusUISession);\n } catch (error) {\n ctx.logger.error('timecampus ui_session_save failed', { error: String(error) });\n return errorResult(\n `Failed to save UI session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ui_session_update')),\n {\n title: 'Update UI Session',\n description: 'Update a UI session by ID. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('UI session ID'),\n activeView: z.string().optional().describe('Updated active view'),\n preferences: JsonObject.optional().describe('Updated preferences JSON'),\n state: JsonObject.optional().describe('Updated state JSON'),\n },\n },\n async ({ id, activeView, preferences, state }) => {\n try {\n const input: Record<string, unknown> = {};\n if (activeView !== undefined) input.activeView = activeView;\n if (preferences !== undefined) input.preferences = preferences;\n if (state !== undefined) input.state = state;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateTimeCampusUISession: Record<string, unknown>;\n }>(ops.UPDATE_UI_SESSION, { id, input });\n return jsonResult(data.updateTimeCampusUISession);\n } catch (error) {\n ctx.logger.error('timecampus ui_session_update failed', { error: String(error) });\n return errorResult(\n `Failed to update UI session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ui_session_clear')),\n {\n title: 'Clear UI Session',\n description: 'Clear the calling user’s saved UI session.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ clearTimeCampusUISession: boolean }>(\n ops.CLEAR_UI_SESSION,\n {},\n );\n return jsonResult({ cleared: data.clearTimeCampusUISession });\n } catch (error) {\n ctx.logger.error('timecampus ui_session_clear failed', { error: String(error) });\n return errorResult(\n `Failed to clear UI session: ${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_PROJECTS, RUNNING_TIMERS, TIME_ENTRY_STATS } from './operations.js';\n\n/**\n * Read-only Timecampus 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 registerTimecampusResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const statsUri = track(mcpResourceUri(ctx.productName, 'stats'));\n const timersUri = track(mcpResourceUri(ctx.productName, 'timers'));\n const projectsUri = track(mcpResourceUri(ctx.productName, 'projects'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'timecampus-schema',\n schemaUri,\n {\n title: 'Timecampus Domain Schema',\n description:\n 'Overview of the Timecampus time-tracking & productivity 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 = `# Timecampus Domain (Overview)\n\nTime tracking, productivity analytics & resource planning for workspaces.\n\n## Entities\n- TimeEntry (+ timers / RunningTimer) — the core tracked-time record\n- TimeCampusProject + Task — project board with tasks\n- MeetingMeta (+ MeetingParticipant, MeetingActionItem) — meeting tracking\n- PomodoroSession / PomodoroGoal / PomodoroSettings — focus timers\n- ExpenseEntry — billable/reimbursable expenses\n- TimeApprovalRequest — period time-sheet approvals\n- ResourcePlan + ResourceAllocation — capacity planning\n- FocusScore / WorkPattern / ApplicationUsage — productivity analytics\n- Geofence (+ GeofenceEvent) / LocationEntry — location-based tracking\n- ChannelConfig — capture channels (CLI/IDE/Browser/Mobile/…)\n- ClientPortalConfig — external client portals\n- EmailTimeEntry — email-time tracking\n- TimeCampusConfiguration / TimeCampusUISession — config + UI state\n\n## Workspace scoping\nMost fields scope via the gateway headers (no explicit workspaceId). The\nmeeting, expense and pomodoro fields take an EXPLICIT workspaceId argument\n(create-inputs carry it inside the input) — match the tool's required args.\n\n## Pagination\n{ limit, offset }. Many list queries return a *ListResponse object\n({ items, total, hasMore }); others return a bare array.\n\n## Tool groups\ntimeentries/timers, projects, tasks, meetings, pomodoro, expenses, approvals,\nresource_plans/resource_allocations, focus, workpatterns, appusage,\ngeofences/locations, channels, client_portals, email_entries, config/ui_session.\nThe subgraph exposes no @public health field (only federation _empty), so there\nis intentionally no health tool.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://stats — headline time-entry stats\n server.registerResource(\n 'timecampus-stats',\n statsUri,\n {\n title: 'Timecampus Time Stats',\n description: 'Live headline time-entry stats (entries, total/billable hours, active timers).',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${statsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ timeEntryStats: unknown }>(\n TIME_ENTRY_STATS,\n {},\n );\n return {\n contents: [\n {\n uri: statsUri,\n text: JSON.stringify(data.timeEntryStats, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: statsUri,\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>://timers — currently-running timers\n server.registerResource(\n 'timecampus-timers',\n timersUri,\n {\n title: 'Timecampus Running Timers',\n description: 'The timers currently running in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${timersUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ runningTimers: unknown }>(\n RUNNING_TIMERS,\n {},\n );\n return {\n contents: [\n {\n uri: timersUri,\n text: JSON.stringify(data.runningTimers, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: timersUri,\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>://projects — project directory\n server.registerResource(\n 'timecampus-projects',\n projectsUri,\n {\n title: 'Timecampus Project Directory',\n description: 'The first 50 projects in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${projectsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ timeCampusProjects: unknown }>(\n LIST_PROJECTS,\n {\n limit: 50,\n offset: 0,\n },\n );\n return {\n contents: [\n {\n uri: projectsUri,\n text: JSON.stringify(data.timeCampusProjects, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: projectsUri,\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 * Timecampus MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerTimecampusPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const setupName = track(mcpPromptName(p, 'project-setup'));\n const reviewName = track(mcpPromptName(p, 'time-review'));\n\n // <product>-project-setup — stand up a project + tasks + tracking\n server.registerPrompt(\n setupName,\n {\n title: 'Project Setup',\n description:\n 'Guide for setting up a new Timecampus project end to end: create the project, seed its task board, and start tracking time against it.',\n argsSchema: {\n name: z.string().optional().describe('Project name'),\n clientId: z.string().optional().describe('Client to bill against'),\n },\n },\n ({ name, clientId }) => {\n ctx.logger.debug(`Prompt ${setupName} called`, { name, clientId });\n const nameNote = name\n ? `Use the project name \"${name}\".`\n : 'Ask the user for the project name.';\n const clientNote = clientId ? `Bill against clientId ${clientId}.` : '';\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 Timecampus project.\n\n1. **Create Project**: Use ${p}_projects_create. ${nameNote} ${clientNote} Optionally set budget, currency, hourlyRate and estimatedHours.\n2. **Seed Tasks**: Use ${p}_tasks_create for each task — set title, priority and an optional dueDate; pass the new projectId.\n3. **Order the Board**: Use ${p}_tasks_reorder to set the task order.\n4. **Start Tracking**: Use ${p}_timers_start (projectId + taskId) to begin a live timer, or ${p}_timeentries_create to log a closed entry.\n5. **Verify**: Use ${p}_tasks_list (projectId) and ${p}_projects_stats to confirm.\n\nShow results at each step and confirm before starting timers.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-time-review — periodic time / productivity review\n server.registerPrompt(\n reviewName,\n {\n title: 'Time & Productivity Review',\n description:\n 'Periodic review workflow: examine tracked time, productivity analytics, pending approvals, and submit a time sheet.',\n argsSchema: {\n workspaceId: z\n .string()\n .optional()\n .describe('Workspace ID (needed for meeting/pomodoro tools)'),\n period: z.string().optional().describe('Period label, e.g. \"2026-W26\"'),\n },\n },\n ({ workspaceId, period }) => {\n ctx.logger.debug(`Prompt ${reviewName} called`, { workspaceId, period });\n const wsNote = workspaceId\n ? `Use workspaceId \"${workspaceId}\" for meeting/pomodoro tools.`\n : `Meeting and pomodoro tools need a workspaceId — ask the user for it.`;\n const periodNote = period\n ? `Review the period \"${period}\".`\n : 'Ask for the period to review.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run a Timecampus time & productivity review. ${periodNote} ${wsNote}\n\n1. **Tracked Time**: Use ${p}_timeentries_stats and ${p}_timeentries_list (date range) to total hours and billable hours.\n2. **Productivity**: Use ${p}_focus_summary, ${p}_workpatterns_summary and ${p}_appusage_summary to inspect focus, work patterns and app usage.\n3. **Meetings**: Use ${p}_meetings_stats (workspaceId) to gauge meeting load and unfinished action items.\n4. **Expenses**: Use ${p}_expenses_stats (workspaceId) to see pending vs approved spend.\n5. **Approvals**: Use ${p}_approvals_pending to triage, then ${p}_approvals_submit to submit the period's time sheet.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Timecampus module — domain module for the future-products ecosystem program.\n *\n * Covers the full @key-entity surface of wspace-timecampus-svc grouped into\n * per-entity sub-APIs: time entries/timers, projects, tasks, meetings, pomodoro,\n * expenses, approvals, resourcing, focus scores, work patterns, application\n * usage, location (geofences/locations), channels, client portals, email\n * tracking, and configuration/UI session. Mirrors the rich kadaikodi /\n * crewfoundry modules' structure (tools/<entity>.ts + resources.ts + prompts.ts)\n * and the canonical tags module's typing discipline.\n *\n * Backend: ~/products/wspace/timecampus/wspace-timecampus-svc/ (Hive service\n * name `timecampus`). All operations run against the WORKSPACE gateway. The\n * subgraph exposes NO @public health field (only the federation `_empty` noop),\n * so there is intentionally no health tool.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerTimeEntryTools } from './tools/timeentries.js';\nimport { registerProjectTools } from './tools/projects.js';\nimport { registerTaskTools } from './tools/tasks.js';\nimport { registerMeetingTools } from './tools/meetings.js';\nimport { registerPomodoroTools } from './tools/pomodoro.js';\nimport { registerExpenseTools } from './tools/expenses.js';\nimport { registerApprovalTools } from './tools/approvals.js';\nimport { registerResourcingTools } from './tools/resourcing.js';\nimport { registerFocusTools } from './tools/focus.js';\nimport { registerWorkPatternTools } from './tools/workpatterns.js';\nimport { registerAppUsageTools } from './tools/appusage.js';\nimport { registerLocationTools } from './tools/location.js';\nimport { registerChannelTools } from './tools/channels.js';\nimport { registerClientPortalTools } from './tools/clientportal.js';\nimport { registerEmailTools } from './tools/email.js';\nimport { registerConfigTools } from './tools/config.js';\nimport { registerTimecampusResources } from './resources.js';\nimport { registerTimecampusPrompts } from './prompts.js';\n\nconst timecampusModule: McpModule = {\n id: 'timecampus',\n version: '0.0.1',\n displayName: 'Timecampus',\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 registerTimeEntryTools(server, ctx, trackTool);\n registerProjectTools(server, ctx, trackTool);\n registerTaskTools(server, ctx, trackTool);\n registerMeetingTools(server, ctx, trackTool);\n registerPomodoroTools(server, ctx, trackTool);\n registerExpenseTools(server, ctx, trackTool);\n registerApprovalTools(server, ctx, trackTool);\n registerResourcingTools(server, ctx, trackTool);\n registerFocusTools(server, ctx, trackTool);\n registerWorkPatternTools(server, ctx, trackTool);\n registerAppUsageTools(server, ctx, trackTool);\n registerLocationTools(server, ctx, trackTool);\n registerChannelTools(server, ctx, trackTool);\n registerClientPortalTools(server, ctx, trackTool);\n registerEmailTools(server, ctx, trackTool);\n registerConfigTools(server, ctx, trackTool);\n\n registerTimecampusResources(server, ctx, trackResource);\n registerTimecampusPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default timecampusModule;\n"]}