@vibescope/mcp-server 0.4.4 → 0.4.5

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 (65) hide show
  1. package/dist/api-client/bodies-of-work.d.ts +125 -0
  2. package/dist/api-client/bodies-of-work.js +78 -0
  3. package/dist/api-client/chat.d.ts +26 -0
  4. package/dist/api-client/chat.js +20 -0
  5. package/dist/api-client/connectors.d.ts +104 -0
  6. package/dist/api-client/connectors.js +46 -0
  7. package/dist/api-client/deployment.d.ts +190 -0
  8. package/dist/api-client/deployment.js +113 -0
  9. package/dist/api-client/file-checkouts.d.ts +71 -0
  10. package/dist/api-client/file-checkouts.js +43 -0
  11. package/dist/api-client/git-issues.d.ts +55 -0
  12. package/dist/api-client/git-issues.js +34 -0
  13. package/dist/api-client/index.d.ts +619 -1
  14. package/dist/api-client/index.js +148 -0
  15. package/dist/api-client/organizations.d.ts +101 -0
  16. package/dist/api-client/organizations.js +86 -0
  17. package/dist/api-client/progress.d.ts +61 -0
  18. package/dist/api-client/progress.js +34 -0
  19. package/dist/api-client/requests.d.ts +28 -0
  20. package/dist/api-client/requests.js +28 -0
  21. package/dist/api-client/sprints.d.ts +153 -0
  22. package/dist/api-client/sprints.js +82 -0
  23. package/dist/api-client/subtasks.d.ts +37 -0
  24. package/dist/api-client/subtasks.js +23 -0
  25. package/dist/api-client.d.ts +22 -0
  26. package/dist/api-client.js +15 -0
  27. package/dist/handlers/blockers.js +4 -0
  28. package/dist/handlers/chat.d.ts +21 -0
  29. package/dist/handlers/chat.js +59 -0
  30. package/dist/handlers/deployment.d.ts +3 -0
  31. package/dist/handlers/deployment.js +23 -0
  32. package/dist/handlers/discovery.js +1 -0
  33. package/dist/handlers/index.d.ts +1 -0
  34. package/dist/handlers/index.js +3 -0
  35. package/dist/handlers/session.js +7 -0
  36. package/dist/handlers/tasks.js +7 -0
  37. package/dist/handlers/tool-docs.js +7 -0
  38. package/dist/tools/deployment.js +13 -0
  39. package/docs/TOOLS.md +17 -3
  40. package/package.json +1 -1
  41. package/src/api-client/bodies-of-work.ts +194 -0
  42. package/src/api-client/chat.ts +50 -0
  43. package/src/api-client/connectors.ts +152 -0
  44. package/src/api-client/deployment.ts +313 -0
  45. package/src/api-client/file-checkouts.ts +115 -0
  46. package/src/api-client/git-issues.ts +88 -0
  47. package/src/api-client/index.ts +179 -13
  48. package/src/api-client/organizations.ts +185 -0
  49. package/src/api-client/progress.ts +94 -0
  50. package/src/api-client/requests.ts +54 -0
  51. package/src/api-client/sprints.ts +227 -0
  52. package/src/api-client/subtasks.ts +57 -0
  53. package/src/api-client.test.ts +16 -19
  54. package/src/api-client.ts +34 -0
  55. package/src/handlers/__test-setup__.ts +4 -0
  56. package/src/handlers/blockers.ts +9 -0
  57. package/src/handlers/chat.test.ts +185 -0
  58. package/src/handlers/chat.ts +69 -0
  59. package/src/handlers/deployment.ts +29 -0
  60. package/src/handlers/discovery.ts +1 -0
  61. package/src/handlers/index.ts +3 -0
  62. package/src/handlers/session.ts +12 -0
  63. package/src/handlers/tasks.ts +12 -0
  64. package/src/handlers/tool-docs.ts +8 -0
  65. package/src/tools/deployment.ts +13 -0
@@ -19,6 +19,17 @@ import { createFindingsMethods } from './findings.js';
19
19
  import { createMilestonesMethods } from './milestones.js';
20
20
  import { createValidationMethods } from './validation.js';
21
21
  import { createFallbackMethods } from './fallback.js';
22
+ import { createRequestsMethods } from './requests.js';
23
+ import { createDeploymentMethods } from './deployment.js';
24
+ import { createOrganizationsMethods } from './organizations.js';
25
+ import { createBodiesOfWorkMethods } from './bodies-of-work.js';
26
+ import { createGitIssuesMethods } from './git-issues.js';
27
+ import { createFileCheckoutsMethods } from './file-checkouts.js';
28
+ import { createConnectorsMethods } from './connectors.js';
29
+ import { createSprintsMethods } from './sprints.js';
30
+ import { createSubtasksMethods } from './subtasks.js';
31
+ import { createProgressMethods } from './progress.js';
32
+ import { createChatMethods } from './chat.js';
22
33
  const DEFAULT_API_URL = 'https://vibescope.dev';
23
34
  // Retry configuration defaults
24
35
  const DEFAULT_RETRY_STATUS_CODES = [429, 503, 504];
@@ -60,6 +71,17 @@ export class VibescopeApiClient {
60
71
  milestonesMethods;
61
72
  validationMethods;
62
73
  fallbackMethods;
74
+ requestsMethods;
75
+ deploymentMethods;
76
+ organizationsMethods;
77
+ bodiesOfWorkMethods;
78
+ gitIssuesMethods;
79
+ fileCheckoutsMethods;
80
+ connectorsMethods;
81
+ sprintsMethods;
82
+ subtasksMethods;
83
+ progressMethods;
84
+ chatMethods;
63
85
  constructor(config) {
64
86
  this.apiKey = config.apiKey;
65
87
  this.baseUrl = config.baseUrl || process.env.VIBESCOPE_API_URL || DEFAULT_API_URL;
@@ -87,6 +109,17 @@ export class VibescopeApiClient {
87
109
  this.milestonesMethods = createMilestonesMethods(proxy);
88
110
  this.validationMethods = createValidationMethods(proxy);
89
111
  this.fallbackMethods = createFallbackMethods(proxy);
112
+ this.requestsMethods = createRequestsMethods(proxy);
113
+ this.deploymentMethods = createDeploymentMethods(proxy);
114
+ this.organizationsMethods = createOrganizationsMethods(proxy);
115
+ this.bodiesOfWorkMethods = createBodiesOfWorkMethods(proxy);
116
+ this.gitIssuesMethods = createGitIssuesMethods(proxy);
117
+ this.fileCheckoutsMethods = createFileCheckoutsMethods(proxy);
118
+ this.connectorsMethods = createConnectorsMethods(proxy);
119
+ this.sprintsMethods = createSprintsMethods(proxy);
120
+ this.subtasksMethods = createSubtasksMethods(proxy);
121
+ this.progressMethods = createProgressMethods(request, proxy);
122
+ this.chatMethods = createChatMethods(proxy);
90
123
  }
91
124
  async request(method, path, body) {
92
125
  const url = `${this.baseUrl}${path}`;
@@ -282,6 +315,121 @@ export class VibescopeApiClient {
282
315
  // ============================================================================
283
316
  startFallbackActivity = (projectId, activity, sessionId) => this.fallbackMethods.startFallbackActivity(projectId, activity, sessionId);
284
317
  stopFallbackActivity = (projectId, summary, sessionId) => this.fallbackMethods.stopFallbackActivity(projectId, summary, sessionId);
318
+ // ============================================================================
319
+ // Requests methods (delegated)
320
+ // ============================================================================
321
+ getPendingRequests = (projectId, sessionId, limit, offset) => this.requestsMethods.getPendingRequests(projectId, sessionId, limit, offset);
322
+ acknowledgeRequest = (requestId, sessionId) => this.requestsMethods.acknowledgeRequest(requestId, sessionId);
323
+ answerQuestion = (requestId, answer, sessionId) => this.requestsMethods.answerQuestion(requestId, answer, sessionId);
324
+ // ============================================================================
325
+ // Deployment methods (delegated)
326
+ // ============================================================================
327
+ requestDeployment = (projectId, params, sessionId) => this.deploymentMethods.requestDeployment(projectId, params, sessionId);
328
+ checkDeploymentStatus = (projectId) => this.deploymentMethods.checkDeploymentStatus(projectId);
329
+ claimDeploymentValidation = (projectId, sessionId) => this.deploymentMethods.claimDeploymentValidation(projectId, sessionId);
330
+ reportValidation = (projectId, params) => this.deploymentMethods.reportValidation(projectId, params);
331
+ startDeployment = (projectId, sessionId) => this.deploymentMethods.startDeployment(projectId, sessionId);
332
+ completeDeployment = (projectId, params) => this.deploymentMethods.completeDeployment(projectId, params);
333
+ cancelDeployment = (projectId, reason) => this.deploymentMethods.cancelDeployment(projectId, reason);
334
+ addDeploymentRequirement = (projectId, params) => this.deploymentMethods.addDeploymentRequirement(projectId, params);
335
+ getDeploymentRequirements = (projectId, params) => this.deploymentMethods.getDeploymentRequirements(projectId, params);
336
+ getDeploymentRequirementsStats = (projectId) => this.deploymentMethods.getDeploymentRequirementsStats(projectId);
337
+ completeDeploymentRequirement = (requirementId) => this.deploymentMethods.completeDeploymentRequirement(requirementId);
338
+ reorderDeploymentRequirements = (projectId, params) => this.deploymentMethods.reorderDeploymentRequirements(projectId, params);
339
+ scheduleDeployment = (projectId, params) => this.deploymentMethods.scheduleDeployment(projectId, params);
340
+ getScheduledDeployments = (projectId, params) => this.deploymentMethods.getScheduledDeployments(projectId, params);
341
+ updateScheduledDeployment = (scheduleId, updates) => this.deploymentMethods.updateScheduledDeployment(scheduleId, updates);
342
+ deleteScheduledDeployment = (scheduleId) => this.deploymentMethods.deleteScheduledDeployment(scheduleId);
343
+ triggerScheduledDeployment = (scheduleId, sessionId) => this.deploymentMethods.triggerScheduledDeployment(scheduleId, sessionId);
344
+ checkDueDeployments = (projectId) => this.deploymentMethods.checkDueDeployments(projectId);
345
+ // ============================================================================
346
+ // Organizations methods (delegated)
347
+ // ============================================================================
348
+ listOrganizations = () => this.organizationsMethods.listOrganizations();
349
+ createOrganization = (params) => this.organizationsMethods.createOrganization(params);
350
+ updateOrganization = (organizationId, updates) => this.organizationsMethods.updateOrganization(organizationId, updates);
351
+ deleteOrganization = (organizationId) => this.organizationsMethods.deleteOrganization(organizationId);
352
+ listOrgMembers = (organizationId) => this.organizationsMethods.listOrgMembers(organizationId);
353
+ inviteMember = (organizationId, email, role) => this.organizationsMethods.inviteMember(organizationId, email, role);
354
+ updateMemberRole = (organizationId, userId, role) => this.organizationsMethods.updateMemberRole(organizationId, userId, role);
355
+ removeMember = (organizationId, userId) => this.organizationsMethods.removeMember(organizationId, userId);
356
+ leaveOrganization = (organizationId) => this.organizationsMethods.leaveOrganization(organizationId);
357
+ shareProjectWithOrg = (projectId, organizationId, permission) => this.organizationsMethods.shareProjectWithOrg(projectId, organizationId, permission);
358
+ unshareProject = (projectId, organizationId) => this.organizationsMethods.unshareProject(projectId, organizationId);
359
+ updateProjectShare = (projectId, organizationId, permission) => this.organizationsMethods.updateProjectShare(projectId, organizationId, permission);
360
+ listProjectShares = (projectId) => this.organizationsMethods.listProjectShares(projectId);
361
+ // ============================================================================
362
+ // Bodies of work methods (delegated)
363
+ // ============================================================================
364
+ createBodyOfWork = (projectId, params) => this.bodiesOfWorkMethods.createBodyOfWork(projectId, params);
365
+ getBodyOfWork = (bodyOfWorkId) => this.bodiesOfWorkMethods.getBodyOfWork(bodyOfWorkId);
366
+ getBodiesOfWork = (projectId, params) => this.bodiesOfWorkMethods.getBodiesOfWork(projectId, params);
367
+ updateBodyOfWork = (bodyOfWorkId, updates) => this.bodiesOfWorkMethods.updateBodyOfWork(bodyOfWorkId, updates);
368
+ deleteBodyOfWork = (bodyOfWorkId) => this.bodiesOfWorkMethods.deleteBodyOfWork(bodyOfWorkId);
369
+ addTaskToBodyOfWork = (bodyOfWorkId, taskId, phase, orderIndex) => this.bodiesOfWorkMethods.addTaskToBodyOfWork(bodyOfWorkId, taskId, phase, orderIndex);
370
+ removeTaskFromBodyOfWork = (taskId) => this.bodiesOfWorkMethods.removeTaskFromBodyOfWork(taskId);
371
+ activateBodyOfWork = (bodyOfWorkId) => this.bodiesOfWorkMethods.activateBodyOfWork(bodyOfWorkId);
372
+ addTaskDependency = (bodyOfWorkId, taskId, dependsOnTaskId) => this.bodiesOfWorkMethods.addTaskDependency(bodyOfWorkId, taskId, dependsOnTaskId);
373
+ removeTaskDependency = (taskId, dependsOnTaskId) => this.bodiesOfWorkMethods.removeTaskDependency(taskId, dependsOnTaskId);
374
+ getTaskDependencies = (params) => this.bodiesOfWorkMethods.getTaskDependencies(params);
375
+ getNextBodyOfWorkTask = (bodyOfWorkId) => this.bodiesOfWorkMethods.getNextBodyOfWorkTask(bodyOfWorkId);
376
+ // ============================================================================
377
+ // Git issues methods (delegated)
378
+ // ============================================================================
379
+ addGitIssue = (projectId, params, sessionId) => this.gitIssuesMethods.addGitIssue(projectId, params, sessionId);
380
+ resolveGitIssue = (gitIssueId, params, sessionId) => this.gitIssuesMethods.resolveGitIssue(gitIssueId, params, sessionId);
381
+ getGitIssues = (projectId, params) => this.gitIssuesMethods.getGitIssues(projectId, params);
382
+ deleteGitIssue = (gitIssueId) => this.gitIssuesMethods.deleteGitIssue(gitIssueId);
383
+ // ============================================================================
384
+ // File checkouts methods (delegated)
385
+ // ============================================================================
386
+ checkoutFile = (projectId, filePath, reason, sessionId) => this.fileCheckoutsMethods.checkoutFile(projectId, filePath, reason, sessionId);
387
+ checkinFile = (params, sessionId) => this.fileCheckoutsMethods.checkinFile(params, sessionId);
388
+ getFileCheckouts = (projectId, options) => this.fileCheckoutsMethods.getFileCheckouts(projectId, options);
389
+ abandonCheckout = (params) => this.fileCheckoutsMethods.abandonCheckout(params);
390
+ getFileCheckoutsStats = (projectId) => this.fileCheckoutsMethods.getFileCheckoutsStats(projectId);
391
+ isFileAvailable = (projectId, filePath) => this.fileCheckoutsMethods.isFileAvailable(projectId, filePath);
392
+ // ============================================================================
393
+ // Connectors methods (delegated)
394
+ // ============================================================================
395
+ getConnectors = (projectId, params) => this.connectorsMethods.getConnectors(projectId, params);
396
+ getConnector = (connectorId) => this.connectorsMethods.getConnector(connectorId);
397
+ addConnector = (projectId, params) => this.connectorsMethods.addConnector(projectId, params);
398
+ updateConnector = (connectorId, updates) => this.connectorsMethods.updateConnector(connectorId, updates);
399
+ deleteConnector = (connectorId) => this.connectorsMethods.deleteConnector(connectorId);
400
+ testConnector = (connectorId) => this.connectorsMethods.testConnector(connectorId);
401
+ getConnectorEvents = (params) => this.connectorsMethods.getConnectorEvents(params);
402
+ // ============================================================================
403
+ // Sprints methods (delegated)
404
+ // ============================================================================
405
+ createSprint = (projectId, params) => this.sprintsMethods.createSprint(projectId, params);
406
+ updateSprint = (sprintId, updates) => this.sprintsMethods.updateSprint(sprintId, updates);
407
+ getSprint = (sprintId, summaryOnly) => this.sprintsMethods.getSprint(sprintId, summaryOnly);
408
+ getSprints = (projectId, params) => this.sprintsMethods.getSprints(projectId, params);
409
+ deleteSprint = (sprintId) => this.sprintsMethods.deleteSprint(sprintId);
410
+ startSprint = (sprintId) => this.sprintsMethods.startSprint(sprintId);
411
+ completeSprint = (sprintId, params) => this.sprintsMethods.completeSprint(sprintId, params);
412
+ addTaskToSprint = (sprintId, taskId, params) => this.sprintsMethods.addTaskToSprint(sprintId, taskId, params);
413
+ removeTaskFromSprint = (sprintId, taskId) => this.sprintsMethods.removeTaskFromSprint(sprintId, taskId);
414
+ getSprintBacklog = (projectId, sprintId, params) => this.sprintsMethods.getSprintBacklog(projectId, sprintId, params);
415
+ getSprintVelocity = (projectId, limit) => this.sprintsMethods.getSprintVelocity(projectId, limit);
416
+ // ============================================================================
417
+ // Subtasks methods (delegated)
418
+ // ============================================================================
419
+ addSubtask = (parentTaskId, params, sessionId) => this.subtasksMethods.addSubtask(parentTaskId, params, sessionId);
420
+ getSubtasks = (parentTaskId, status) => this.subtasksMethods.getSubtasks(parentTaskId, status);
421
+ // ============================================================================
422
+ // Progress methods (delegated)
423
+ // ============================================================================
424
+ logProgress = (projectId, params) => this.progressMethods.logProgress(projectId, params);
425
+ getActivityFeed = (projectId, params) => this.progressMethods.getActivityFeed(projectId, params);
426
+ getActivityHistory = (projectId, params) => this.progressMethods.getActivityHistory(projectId, params);
427
+ getActivitySchedules = (projectId, params) => this.progressMethods.getActivitySchedules(projectId, params);
428
+ // ============================================================================
429
+ // Chat methods (delegated)
430
+ // ============================================================================
431
+ sendProjectMessage = (projectId, message, sessionId) => this.chatMethods.sendProjectMessage(projectId, message, sessionId);
432
+ getProjectMessages = (projectId, limit) => this.chatMethods.getProjectMessages(projectId, limit);
285
433
  }
286
434
  // Singleton instance
287
435
  let apiClient = null;
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Organizations API Methods
3
+ *
4
+ * Methods for organization management:
5
+ * - listOrganizations: List user's organizations
6
+ * - createOrganization: Create a new organization
7
+ * - updateOrganization: Update organization details
8
+ * - deleteOrganization: Delete an organization
9
+ * - listOrgMembers: List organization members
10
+ * - inviteMember: Invite a user to an organization
11
+ * - updateMemberRole: Change a member's role
12
+ * - removeMember: Remove a member
13
+ * - leaveOrganization: Leave an organization
14
+ * - shareProjectWithOrg: Share a project with an organization
15
+ * - unshareProject: Remove a project share
16
+ * - updateProjectShare: Update project share permission
17
+ * - listProjectShares: List project shares
18
+ */
19
+ import type { ApiResponse, ProxyFn } from './types.js';
20
+ export interface OrganizationsMethods {
21
+ listOrganizations(): Promise<ApiResponse<{
22
+ organizations: Array<{
23
+ id: string;
24
+ name: string;
25
+ slug: string;
26
+ description?: string;
27
+ role: string;
28
+ }>;
29
+ }>>;
30
+ createOrganization(params: {
31
+ name: string;
32
+ slug?: string;
33
+ description?: string;
34
+ }): Promise<ApiResponse<{
35
+ success: boolean;
36
+ organization: {
37
+ id: string;
38
+ name: string;
39
+ slug: string;
40
+ };
41
+ }>>;
42
+ updateOrganization(organizationId: string, updates: {
43
+ name?: string;
44
+ description?: string;
45
+ logo_url?: string;
46
+ }): Promise<ApiResponse<{
47
+ success: boolean;
48
+ organization_id: string;
49
+ }>>;
50
+ deleteOrganization(organizationId: string): Promise<ApiResponse<{
51
+ success: boolean;
52
+ }>>;
53
+ listOrgMembers(organizationId: string): Promise<ApiResponse<{
54
+ members: Array<{
55
+ user_id: string;
56
+ email: string;
57
+ role: string;
58
+ joined_at: string;
59
+ }>;
60
+ }>>;
61
+ inviteMember(organizationId: string, email: string, role?: string): Promise<ApiResponse<{
62
+ success: boolean;
63
+ invite_id: string;
64
+ }>>;
65
+ updateMemberRole(organizationId: string, userId: string, role: string): Promise<ApiResponse<{
66
+ success: boolean;
67
+ }>>;
68
+ removeMember(organizationId: string, userId: string): Promise<ApiResponse<{
69
+ success: boolean;
70
+ }>>;
71
+ leaveOrganization(organizationId: string): Promise<ApiResponse<{
72
+ success: boolean;
73
+ message: string;
74
+ }>>;
75
+ shareProjectWithOrg(projectId: string, organizationId: string, permission?: string): Promise<ApiResponse<{
76
+ success: boolean;
77
+ }>>;
78
+ unshareProject(projectId: string, organizationId: string): Promise<ApiResponse<{
79
+ success: boolean;
80
+ }>>;
81
+ updateProjectShare(projectId: string, organizationId: string, permission: string): Promise<ApiResponse<{
82
+ success: boolean;
83
+ share: {
84
+ permission: string;
85
+ };
86
+ }>>;
87
+ listProjectShares(projectId: string): Promise<ApiResponse<{
88
+ shares: Array<{
89
+ id: string;
90
+ permission: string;
91
+ shared_at: string;
92
+ organization: {
93
+ id: string;
94
+ name: string;
95
+ slug: string;
96
+ };
97
+ }>;
98
+ count: number;
99
+ }>>;
100
+ }
101
+ export declare function createOrganizationsMethods(proxy: ProxyFn): OrganizationsMethods;
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Organizations API Methods
3
+ *
4
+ * Methods for organization management:
5
+ * - listOrganizations: List user's organizations
6
+ * - createOrganization: Create a new organization
7
+ * - updateOrganization: Update organization details
8
+ * - deleteOrganization: Delete an organization
9
+ * - listOrgMembers: List organization members
10
+ * - inviteMember: Invite a user to an organization
11
+ * - updateMemberRole: Change a member's role
12
+ * - removeMember: Remove a member
13
+ * - leaveOrganization: Leave an organization
14
+ * - shareProjectWithOrg: Share a project with an organization
15
+ * - unshareProject: Remove a project share
16
+ * - updateProjectShare: Update project share permission
17
+ * - listProjectShares: List project shares
18
+ */
19
+ export function createOrganizationsMethods(proxy) {
20
+ return {
21
+ async listOrganizations() {
22
+ return proxy('list_organizations', {});
23
+ },
24
+ async createOrganization(params) {
25
+ return proxy('create_organization', params);
26
+ },
27
+ async updateOrganization(organizationId, updates) {
28
+ return proxy('update_organization', {
29
+ organization_id: organizationId,
30
+ ...updates
31
+ });
32
+ },
33
+ async deleteOrganization(organizationId) {
34
+ return proxy('delete_organization', { organization_id: organizationId });
35
+ },
36
+ async listOrgMembers(organizationId) {
37
+ return proxy('list_org_members', { organization_id: organizationId });
38
+ },
39
+ async inviteMember(organizationId, email, role) {
40
+ return proxy('invite_member', {
41
+ organization_id: organizationId,
42
+ email,
43
+ role
44
+ });
45
+ },
46
+ async updateMemberRole(organizationId, userId, role) {
47
+ return proxy('update_member_role', {
48
+ organization_id: organizationId,
49
+ user_id: userId,
50
+ role
51
+ });
52
+ },
53
+ async removeMember(organizationId, userId) {
54
+ return proxy('remove_member', {
55
+ organization_id: organizationId,
56
+ user_id: userId
57
+ });
58
+ },
59
+ async leaveOrganization(organizationId) {
60
+ return proxy('leave_organization', { organization_id: organizationId });
61
+ },
62
+ async shareProjectWithOrg(projectId, organizationId, permission) {
63
+ return proxy('share_project_with_org', {
64
+ project_id: projectId,
65
+ organization_id: organizationId,
66
+ permission
67
+ });
68
+ },
69
+ async unshareProject(projectId, organizationId) {
70
+ return proxy('unshare_project', {
71
+ project_id: projectId,
72
+ organization_id: organizationId
73
+ });
74
+ },
75
+ async updateProjectShare(projectId, organizationId, permission) {
76
+ return proxy('update_project_share', {
77
+ project_id: projectId,
78
+ organization_id: organizationId,
79
+ permission
80
+ });
81
+ },
82
+ async listProjectShares(projectId) {
83
+ return proxy('list_project_shares', { project_id: projectId });
84
+ }
85
+ };
86
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Progress API Methods
3
+ *
4
+ * Methods for progress tracking and activity feeds:
5
+ * - logProgress: Log a progress update for a project
6
+ * - getActivityFeed: Get combined activity feed
7
+ * - getActivityHistory: Get background activity history
8
+ * - getActivitySchedules: Get background activity schedules
9
+ */
10
+ import type { ApiResponse, RequestFn, ProxyFn } from './types.js';
11
+ export interface ProgressMethods {
12
+ logProgress(projectId: string, params: {
13
+ summary: string;
14
+ details?: string;
15
+ task_id?: string;
16
+ session_id?: string;
17
+ }): Promise<ApiResponse<{
18
+ success: boolean;
19
+ progress_id: string;
20
+ }>>;
21
+ getActivityFeed(projectId: string, params?: {
22
+ limit?: number;
23
+ since?: string;
24
+ types?: string[];
25
+ created_by?: string;
26
+ }): Promise<ApiResponse<{
27
+ activities: Array<{
28
+ type: string;
29
+ data: unknown;
30
+ timestamp: string;
31
+ }>;
32
+ }>>;
33
+ getActivityHistory(projectId: string, params?: {
34
+ activity_type?: string;
35
+ limit?: number;
36
+ }): Promise<ApiResponse<{
37
+ history: Array<{
38
+ id: string;
39
+ activity_type: string;
40
+ completed_at: string;
41
+ summary?: string;
42
+ }>;
43
+ latest_by_type: Record<string, unknown>;
44
+ count: number;
45
+ }>>;
46
+ getActivitySchedules(projectId: string, params?: {
47
+ limit?: number;
48
+ offset?: number;
49
+ }): Promise<ApiResponse<{
50
+ schedules: Array<{
51
+ id: string;
52
+ activity_type: string;
53
+ schedule_type: string;
54
+ next_run_at?: string;
55
+ enabled: boolean;
56
+ }>;
57
+ total_count: number;
58
+ has_more: boolean;
59
+ }>>;
60
+ }
61
+ export declare function createProgressMethods(request: RequestFn, proxy: ProxyFn): ProgressMethods;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Progress API Methods
3
+ *
4
+ * Methods for progress tracking and activity feeds:
5
+ * - logProgress: Log a progress update for a project
6
+ * - getActivityFeed: Get combined activity feed
7
+ * - getActivityHistory: Get background activity history
8
+ * - getActivitySchedules: Get background activity schedules
9
+ */
10
+ export function createProgressMethods(request, proxy) {
11
+ return {
12
+ async logProgress(projectId, params) {
13
+ return request('POST', `/api/mcp/projects/${projectId}/progress`, params);
14
+ },
15
+ async getActivityFeed(projectId, params) {
16
+ return proxy('get_activity_feed', {
17
+ project_id: projectId,
18
+ ...params
19
+ });
20
+ },
21
+ async getActivityHistory(projectId, params) {
22
+ return proxy('get_activity_history', {
23
+ project_id: projectId,
24
+ ...params
25
+ });
26
+ },
27
+ async getActivitySchedules(projectId, params) {
28
+ return proxy('get_activity_schedules', {
29
+ project_id: projectId,
30
+ ...params
31
+ });
32
+ }
33
+ };
34
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Requests API Methods
3
+ *
4
+ * Methods for user request handling:
5
+ * - getPendingRequests: Get unacknowledged requests for a project
6
+ * - acknowledgeRequest: Mark a request as handled
7
+ * - answerQuestion: Answer a question from the user
8
+ */
9
+ import type { ApiResponse, ProxyFn } from './types.js';
10
+ export interface RequestsMethods {
11
+ getPendingRequests(projectId: string, sessionId?: string, limit?: number, offset?: number): Promise<ApiResponse<{
12
+ requests: Array<{
13
+ id: string;
14
+ request_type: string;
15
+ message: string;
16
+ created_at: string;
17
+ }>;
18
+ total_count: number;
19
+ has_more: boolean;
20
+ }>>;
21
+ acknowledgeRequest(requestId: string, sessionId?: string): Promise<ApiResponse<{
22
+ success: boolean;
23
+ }>>;
24
+ answerQuestion(requestId: string, answer: string, sessionId?: string): Promise<ApiResponse<{
25
+ success: boolean;
26
+ }>>;
27
+ }
28
+ export declare function createRequestsMethods(proxy: ProxyFn): RequestsMethods;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Requests API Methods
3
+ *
4
+ * Methods for user request handling:
5
+ * - getPendingRequests: Get unacknowledged requests for a project
6
+ * - acknowledgeRequest: Mark a request as handled
7
+ * - answerQuestion: Answer a question from the user
8
+ */
9
+ export function createRequestsMethods(proxy) {
10
+ return {
11
+ async getPendingRequests(projectId, sessionId, limit, offset) {
12
+ return proxy('get_pending_requests', {
13
+ project_id: projectId,
14
+ ...(limit !== undefined && { limit }),
15
+ ...(offset !== undefined && { offset }),
16
+ }, sessionId ? { session_id: sessionId } : undefined);
17
+ },
18
+ async acknowledgeRequest(requestId, sessionId) {
19
+ return proxy('acknowledge_request', { request_id: requestId }, sessionId ? { session_id: sessionId } : undefined);
20
+ },
21
+ async answerQuestion(requestId, answer, sessionId) {
22
+ return proxy('answer_question', {
23
+ request_id: requestId,
24
+ answer
25
+ }, sessionId ? { session_id: sessionId } : undefined);
26
+ }
27
+ };
28
+ }
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Sprints API Methods
3
+ *
4
+ * Methods for sprint management:
5
+ * - createSprint: Create a new sprint
6
+ * - updateSprint: Update sprint details
7
+ * - getSprint: Get a sprint with tasks
8
+ * - getSprints: List sprints for a project
9
+ * - deleteSprint: Delete a sprint
10
+ * - startSprint: Activate a sprint
11
+ * - completeSprint: Complete a sprint
12
+ * - addTaskToSprint: Add a task to a sprint
13
+ * - removeTaskFromSprint: Remove a task from a sprint
14
+ * - getSprintBacklog: Get tasks available to add to a sprint
15
+ * - getSprintVelocity: Get velocity metrics for completed sprints
16
+ */
17
+ import type { ApiResponse, ProxyFn } from './types.js';
18
+ export interface SprintsMethods {
19
+ createSprint(projectId: string, params: {
20
+ title: string;
21
+ start_date: string;
22
+ end_date: string;
23
+ goal?: string;
24
+ auto_deploy_on_completion?: boolean;
25
+ deploy_environment?: string;
26
+ deploy_version_bump?: string;
27
+ }): Promise<ApiResponse<{
28
+ success: boolean;
29
+ sprint_id: string;
30
+ sprint_number: number;
31
+ }>>;
32
+ updateSprint(sprintId: string, updates: {
33
+ title?: string;
34
+ goal?: string;
35
+ start_date?: string;
36
+ end_date?: string;
37
+ auto_deploy_on_completion?: boolean;
38
+ deploy_environment?: string;
39
+ deploy_version_bump?: string;
40
+ }): Promise<ApiResponse<{
41
+ success: boolean;
42
+ }>>;
43
+ getSprint(sprintId: string, summaryOnly?: boolean): Promise<ApiResponse<{
44
+ id: string;
45
+ title: string;
46
+ goal?: string;
47
+ sprint_number: number;
48
+ sprint_status: string;
49
+ start_date: string;
50
+ end_date: string;
51
+ progress_percentage: number;
52
+ velocity_points: number;
53
+ committed_points: number;
54
+ pre_tasks?: unknown[];
55
+ core_tasks?: unknown[];
56
+ post_tasks?: unknown[];
57
+ total_tasks?: number;
58
+ task_counts?: {
59
+ pre: {
60
+ total: number;
61
+ completed: number;
62
+ };
63
+ core: {
64
+ total: number;
65
+ completed: number;
66
+ };
67
+ post: {
68
+ total: number;
69
+ completed: number;
70
+ };
71
+ total: number;
72
+ completed: number;
73
+ in_progress: number;
74
+ };
75
+ next_task?: {
76
+ id: string;
77
+ title: string;
78
+ priority: number;
79
+ phase: string;
80
+ } | null;
81
+ }>>;
82
+ getSprints(projectId: string, params?: {
83
+ status?: string;
84
+ limit?: number;
85
+ offset?: number;
86
+ }): Promise<ApiResponse<{
87
+ sprints: Array<{
88
+ id: string;
89
+ title: string;
90
+ sprint_number: number;
91
+ sprint_status: string;
92
+ start_date: string;
93
+ end_date: string;
94
+ progress_percentage: number;
95
+ velocity_points: number;
96
+ committed_points: number;
97
+ }>;
98
+ total_count: number;
99
+ has_more: boolean;
100
+ }>>;
101
+ deleteSprint(sprintId: string): Promise<ApiResponse<{
102
+ success: boolean;
103
+ }>>;
104
+ startSprint(sprintId: string): Promise<ApiResponse<{
105
+ success: boolean;
106
+ sprint_id: string;
107
+ status: string;
108
+ }>>;
109
+ completeSprint(sprintId: string, params?: {
110
+ retrospective_notes?: string;
111
+ skip_retrospective?: boolean;
112
+ }): Promise<ApiResponse<{
113
+ success: boolean;
114
+ sprint_id: string;
115
+ status: string;
116
+ }>>;
117
+ addTaskToSprint(sprintId: string, taskId: string, params?: {
118
+ story_points?: number;
119
+ phase?: string;
120
+ }): Promise<ApiResponse<{
121
+ success: boolean;
122
+ }>>;
123
+ removeTaskFromSprint(sprintId: string, taskId: string): Promise<ApiResponse<{
124
+ success: boolean;
125
+ }>>;
126
+ getSprintBacklog(projectId: string, sprintId?: string, params?: {
127
+ limit?: number;
128
+ offset?: number;
129
+ }): Promise<ApiResponse<{
130
+ tasks: Array<{
131
+ id: string;
132
+ title: string;
133
+ priority: number;
134
+ status: string;
135
+ estimated_minutes?: number;
136
+ }>;
137
+ total_count: number;
138
+ has_more: boolean;
139
+ }>>;
140
+ getSprintVelocity(projectId: string, limit?: number): Promise<ApiResponse<{
141
+ sprints: Array<{
142
+ sprint_id: string;
143
+ sprint_number: number;
144
+ title: string;
145
+ committed_points: number;
146
+ velocity_points: number;
147
+ completion_rate: number;
148
+ }>;
149
+ average_velocity: number;
150
+ total_sprints: number;
151
+ }>>;
152
+ }
153
+ export declare function createSprintsMethods(proxy: ProxyFn): SprintsMethods;