@vibescope/mcp-server 0.4.9 → 0.5.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.
- package/CHANGELOG.md +84 -84
- package/README.md +194 -194
- package/dist/api-client/tasks.d.ts +1 -0
- package/dist/cli-init.js +21 -21
- package/dist/cli.js +26 -26
- package/dist/handlers/tasks.js +7 -1
- package/dist/handlers/tool-docs.js +1216 -1216
- package/dist/index.js +73 -73
- package/dist/templates/agent-guidelines.d.ts +1 -1
- package/dist/templates/agent-guidelines.js +205 -205
- package/dist/templates/help-content.js +1621 -1621
- package/dist/tools/bodies-of-work.js +6 -6
- package/dist/tools/cloud-agents.js +22 -22
- package/dist/tools/milestones.js +2 -2
- package/dist/tools/requests.js +1 -1
- package/dist/tools/session.js +11 -11
- package/dist/tools/sprints.js +9 -9
- package/dist/tools/tasks.js +43 -35
- package/dist/tools/worktrees.js +14 -14
- package/dist/utils.js +11 -11
- package/docs/TOOLS.md +2687 -2685
- package/package.json +53 -53
- package/scripts/generate-docs.ts +212 -212
- package/scripts/version-bump.ts +203 -203
- package/src/api-client/blockers.ts +86 -86
- package/src/api-client/bodies-of-work.ts +194 -194
- package/src/api-client/chat.ts +50 -50
- package/src/api-client/connectors.ts +152 -152
- package/src/api-client/cost.ts +185 -185
- package/src/api-client/decisions.ts +87 -87
- package/src/api-client/deployment.ts +313 -313
- package/src/api-client/discovery.ts +81 -81
- package/src/api-client/fallback.ts +52 -52
- package/src/api-client/file-checkouts.ts +115 -115
- package/src/api-client/findings.ts +100 -100
- package/src/api-client/git-issues.ts +88 -88
- package/src/api-client/ideas.ts +112 -112
- package/src/api-client/index.ts +592 -592
- package/src/api-client/milestones.ts +83 -83
- package/src/api-client/organizations.ts +185 -185
- package/src/api-client/progress.ts +94 -94
- package/src/api-client/project.ts +181 -181
- package/src/api-client/requests.ts +54 -54
- package/src/api-client/session.ts +220 -220
- package/src/api-client/sprints.ts +227 -227
- package/src/api-client/subtasks.ts +57 -57
- package/src/api-client/tasks.ts +451 -450
- package/src/api-client/types.ts +32 -32
- package/src/api-client/validation.ts +60 -60
- package/src/api-client/worktrees.ts +53 -53
- package/src/api-client.test.ts +847 -847
- package/src/api-client.ts +2728 -2728
- package/src/cli-init.ts +558 -558
- package/src/cli.test.ts +284 -284
- package/src/cli.ts +204 -204
- package/src/handlers/__test-setup__.ts +240 -240
- package/src/handlers/__test-utils__.ts +89 -89
- package/src/handlers/blockers.test.ts +468 -468
- package/src/handlers/blockers.ts +172 -172
- package/src/handlers/bodies-of-work.test.ts +704 -704
- package/src/handlers/bodies-of-work.ts +526 -526
- package/src/handlers/chat.test.ts +185 -185
- package/src/handlers/chat.ts +101 -101
- package/src/handlers/cloud-agents.test.ts +438 -438
- package/src/handlers/cloud-agents.ts +156 -156
- package/src/handlers/connectors.test.ts +834 -834
- package/src/handlers/connectors.ts +229 -229
- package/src/handlers/cost.test.ts +462 -462
- package/src/handlers/cost.ts +285 -285
- package/src/handlers/decisions.test.ts +382 -382
- package/src/handlers/decisions.ts +153 -153
- package/src/handlers/deployment.test.ts +551 -551
- package/src/handlers/deployment.ts +570 -570
- package/src/handlers/discovery.test.ts +206 -206
- package/src/handlers/discovery.ts +433 -433
- package/src/handlers/fallback.test.ts +537 -537
- package/src/handlers/fallback.ts +194 -194
- package/src/handlers/file-checkouts.test.ts +750 -750
- package/src/handlers/file-checkouts.ts +185 -185
- package/src/handlers/findings.test.ts +633 -633
- package/src/handlers/findings.ts +239 -239
- package/src/handlers/git-issues.test.ts +631 -631
- package/src/handlers/git-issues.ts +136 -136
- package/src/handlers/ideas.test.ts +644 -644
- package/src/handlers/ideas.ts +207 -207
- package/src/handlers/index.ts +93 -93
- package/src/handlers/milestones.test.ts +475 -475
- package/src/handlers/milestones.ts +180 -180
- package/src/handlers/organizations.test.ts +826 -826
- package/src/handlers/organizations.ts +315 -315
- package/src/handlers/progress.test.ts +269 -269
- package/src/handlers/progress.ts +77 -77
- package/src/handlers/project.test.ts +546 -546
- package/src/handlers/project.ts +245 -245
- package/src/handlers/requests.test.ts +303 -303
- package/src/handlers/requests.ts +99 -99
- package/src/handlers/roles.test.ts +305 -305
- package/src/handlers/roles.ts +219 -219
- package/src/handlers/session.test.ts +998 -998
- package/src/handlers/session.ts +1105 -1105
- package/src/handlers/sprints.test.ts +732 -732
- package/src/handlers/sprints.ts +537 -537
- package/src/handlers/tasks.test.ts +931 -931
- package/src/handlers/tasks.ts +1144 -1137
- package/src/handlers/tool-categories.test.ts +66 -66
- package/src/handlers/tool-docs.test.ts +511 -511
- package/src/handlers/tool-docs.ts +1595 -1595
- package/src/handlers/types.test.ts +259 -259
- package/src/handlers/types.ts +176 -176
- package/src/handlers/validation.test.ts +582 -582
- package/src/handlers/validation.ts +164 -164
- package/src/handlers/version.ts +63 -63
- package/src/index.test.ts +674 -674
- package/src/index.ts +884 -884
- package/src/setup.test.ts +243 -243
- package/src/setup.ts +410 -410
- package/src/templates/agent-guidelines.ts +233 -233
- package/src/templates/help-content.ts +1751 -1751
- package/src/token-tracking.test.ts +463 -463
- package/src/token-tracking.ts +167 -167
- package/src/tools/blockers.ts +122 -122
- package/src/tools/bodies-of-work.ts +283 -283
- package/src/tools/chat.ts +72 -72
- package/src/tools/cloud-agents.ts +101 -101
- package/src/tools/connectors.ts +191 -191
- package/src/tools/cost.ts +111 -111
- package/src/tools/decisions.ts +111 -111
- package/src/tools/deployment.ts +455 -455
- package/src/tools/discovery.ts +76 -76
- package/src/tools/fallback.ts +111 -111
- package/src/tools/features.ts +154 -154
- package/src/tools/file-checkouts.ts +145 -145
- package/src/tools/findings.ts +101 -101
- package/src/tools/git-issues.ts +130 -130
- package/src/tools/ideas.ts +162 -162
- package/src/tools/index.ts +145 -145
- package/src/tools/milestones.ts +118 -118
- package/src/tools/organizations.ts +224 -224
- package/src/tools/persona-templates.ts +25 -25
- package/src/tools/progress.ts +73 -73
- package/src/tools/project.ts +210 -210
- package/src/tools/requests.ts +68 -68
- package/src/tools/roles.ts +112 -112
- package/src/tools/session.ts +181 -181
- package/src/tools/sprints.ts +298 -298
- package/src/tools/tasks.ts +583 -575
- package/src/tools/tools.test.ts +222 -222
- package/src/tools/types.ts +9 -9
- package/src/tools/validation.ts +75 -75
- package/src/tools/version.ts +34 -34
- package/src/tools/worktrees.ts +66 -66
- package/src/tools.test.ts +416 -416
- package/src/utils.test.ts +1014 -1014
- package/src/utils.ts +586 -586
- package/src/validators.test.ts +223 -223
- package/src/validators.ts +249 -249
- package/src/version.ts +162 -162
- package/tsconfig.json +16 -16
- package/vitest.config.ts +14 -14
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Milestones API Methods
|
|
3
|
-
*
|
|
4
|
-
* Handles task milestones for tracking granular progress within tasks.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import type { ApiResponse, ProxyFn } from './types.js';
|
|
8
|
-
|
|
9
|
-
export interface Milestone {
|
|
10
|
-
id: string;
|
|
11
|
-
title: string;
|
|
12
|
-
description?: string;
|
|
13
|
-
status: string;
|
|
14
|
-
order_index: number;
|
|
15
|
-
created_at: string;
|
|
16
|
-
completed_at?: string;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface MilestoneStats {
|
|
20
|
-
total: number;
|
|
21
|
-
completed: number;
|
|
22
|
-
progress_percentage: number;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export interface MilestonesMethods {
|
|
26
|
-
getMilestones(taskId: string): Promise<ApiResponse<{
|
|
27
|
-
milestones: Milestone[];
|
|
28
|
-
stats: MilestoneStats;
|
|
29
|
-
}>>;
|
|
30
|
-
|
|
31
|
-
addMilestone(taskId: string, params: {
|
|
32
|
-
title: string;
|
|
33
|
-
description?: string;
|
|
34
|
-
order_index?: number;
|
|
35
|
-
}, sessionId?: string): Promise<ApiResponse<{ success: boolean; milestone_id: string }>>;
|
|
36
|
-
|
|
37
|
-
updateMilestone(milestoneId: string, updates: {
|
|
38
|
-
title?: string;
|
|
39
|
-
description?: string;
|
|
40
|
-
status?: string;
|
|
41
|
-
order_index?: number;
|
|
42
|
-
}): Promise<ApiResponse<{
|
|
43
|
-
success: boolean;
|
|
44
|
-
milestone: { id: string; title: string; status: string };
|
|
45
|
-
}>>;
|
|
46
|
-
|
|
47
|
-
completeMilestone(milestoneId: string): Promise<ApiResponse<{
|
|
48
|
-
success: boolean;
|
|
49
|
-
milestone: { id: string; title: string; status: string };
|
|
50
|
-
}>>;
|
|
51
|
-
|
|
52
|
-
deleteMilestone(milestoneId: string): Promise<ApiResponse<{ success: boolean }>>;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export function createMilestonesMethods(proxy: ProxyFn): MilestonesMethods {
|
|
56
|
-
return {
|
|
57
|
-
async getMilestones(taskId) {
|
|
58
|
-
return proxy('get_milestones', { task_id: taskId });
|
|
59
|
-
},
|
|
60
|
-
|
|
61
|
-
async addMilestone(taskId, params, sessionId) {
|
|
62
|
-
return proxy('add_milestone', {
|
|
63
|
-
task_id: taskId,
|
|
64
|
-
...params
|
|
65
|
-
}, sessionId ? { session_id: sessionId } : undefined);
|
|
66
|
-
},
|
|
67
|
-
|
|
68
|
-
async updateMilestone(milestoneId, updates) {
|
|
69
|
-
return proxy('update_milestone', {
|
|
70
|
-
milestone_id: milestoneId,
|
|
71
|
-
...updates
|
|
72
|
-
});
|
|
73
|
-
},
|
|
74
|
-
|
|
75
|
-
async completeMilestone(milestoneId) {
|
|
76
|
-
return proxy('complete_milestone', { milestone_id: milestoneId });
|
|
77
|
-
},
|
|
78
|
-
|
|
79
|
-
async deleteMilestone(milestoneId) {
|
|
80
|
-
return proxy('delete_milestone', { milestone_id: milestoneId });
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Milestones API Methods
|
|
3
|
+
*
|
|
4
|
+
* Handles task milestones for tracking granular progress within tasks.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { ApiResponse, ProxyFn } from './types.js';
|
|
8
|
+
|
|
9
|
+
export interface Milestone {
|
|
10
|
+
id: string;
|
|
11
|
+
title: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
status: string;
|
|
14
|
+
order_index: number;
|
|
15
|
+
created_at: string;
|
|
16
|
+
completed_at?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface MilestoneStats {
|
|
20
|
+
total: number;
|
|
21
|
+
completed: number;
|
|
22
|
+
progress_percentage: number;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface MilestonesMethods {
|
|
26
|
+
getMilestones(taskId: string): Promise<ApiResponse<{
|
|
27
|
+
milestones: Milestone[];
|
|
28
|
+
stats: MilestoneStats;
|
|
29
|
+
}>>;
|
|
30
|
+
|
|
31
|
+
addMilestone(taskId: string, params: {
|
|
32
|
+
title: string;
|
|
33
|
+
description?: string;
|
|
34
|
+
order_index?: number;
|
|
35
|
+
}, sessionId?: string): Promise<ApiResponse<{ success: boolean; milestone_id: string }>>;
|
|
36
|
+
|
|
37
|
+
updateMilestone(milestoneId: string, updates: {
|
|
38
|
+
title?: string;
|
|
39
|
+
description?: string;
|
|
40
|
+
status?: string;
|
|
41
|
+
order_index?: number;
|
|
42
|
+
}): Promise<ApiResponse<{
|
|
43
|
+
success: boolean;
|
|
44
|
+
milestone: { id: string; title: string; status: string };
|
|
45
|
+
}>>;
|
|
46
|
+
|
|
47
|
+
completeMilestone(milestoneId: string): Promise<ApiResponse<{
|
|
48
|
+
success: boolean;
|
|
49
|
+
milestone: { id: string; title: string; status: string };
|
|
50
|
+
}>>;
|
|
51
|
+
|
|
52
|
+
deleteMilestone(milestoneId: string): Promise<ApiResponse<{ success: boolean }>>;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function createMilestonesMethods(proxy: ProxyFn): MilestonesMethods {
|
|
56
|
+
return {
|
|
57
|
+
async getMilestones(taskId) {
|
|
58
|
+
return proxy('get_milestones', { task_id: taskId });
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
async addMilestone(taskId, params, sessionId) {
|
|
62
|
+
return proxy('add_milestone', {
|
|
63
|
+
task_id: taskId,
|
|
64
|
+
...params
|
|
65
|
+
}, sessionId ? { session_id: sessionId } : undefined);
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
async updateMilestone(milestoneId, updates) {
|
|
69
|
+
return proxy('update_milestone', {
|
|
70
|
+
milestone_id: milestoneId,
|
|
71
|
+
...updates
|
|
72
|
+
});
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
async completeMilestone(milestoneId) {
|
|
76
|
+
return proxy('complete_milestone', { milestone_id: milestoneId });
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
async deleteMilestone(milestoneId) {
|
|
80
|
+
return proxy('delete_milestone', { milestone_id: milestoneId });
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
}
|
|
@@ -1,185 +1,185 @@
|
|
|
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
|
-
|
|
20
|
-
import type { ApiResponse, ProxyFn } from './types.js';
|
|
21
|
-
|
|
22
|
-
export interface OrganizationsMethods {
|
|
23
|
-
listOrganizations(): Promise<ApiResponse<{
|
|
24
|
-
organizations: Array<{
|
|
25
|
-
id: string;
|
|
26
|
-
name: string;
|
|
27
|
-
slug: string;
|
|
28
|
-
description?: string;
|
|
29
|
-
role: string;
|
|
30
|
-
}>;
|
|
31
|
-
}>>;
|
|
32
|
-
|
|
33
|
-
createOrganization(params: {
|
|
34
|
-
name: string;
|
|
35
|
-
slug?: string;
|
|
36
|
-
description?: string;
|
|
37
|
-
}): Promise<ApiResponse<{
|
|
38
|
-
success: boolean;
|
|
39
|
-
organization: { id: string; name: string; 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
|
-
|
|
51
|
-
deleteOrganization(organizationId: string): Promise<ApiResponse<{
|
|
52
|
-
success: boolean;
|
|
53
|
-
}>>;
|
|
54
|
-
|
|
55
|
-
listOrgMembers(organizationId: string): Promise<ApiResponse<{
|
|
56
|
-
members: Array<{
|
|
57
|
-
user_id: string;
|
|
58
|
-
email: string;
|
|
59
|
-
role: string;
|
|
60
|
-
joined_at: string;
|
|
61
|
-
}>;
|
|
62
|
-
}>>;
|
|
63
|
-
|
|
64
|
-
inviteMember(organizationId: string, email: string, role?: string): Promise<ApiResponse<{
|
|
65
|
-
success: boolean;
|
|
66
|
-
invite_id: string;
|
|
67
|
-
}>>;
|
|
68
|
-
|
|
69
|
-
updateMemberRole(organizationId: string, userId: string, role: string): Promise<ApiResponse<{
|
|
70
|
-
success: boolean;
|
|
71
|
-
}>>;
|
|
72
|
-
|
|
73
|
-
removeMember(organizationId: string, userId: string): Promise<ApiResponse<{
|
|
74
|
-
success: boolean;
|
|
75
|
-
}>>;
|
|
76
|
-
|
|
77
|
-
leaveOrganization(organizationId: string): Promise<ApiResponse<{
|
|
78
|
-
success: boolean;
|
|
79
|
-
message: string;
|
|
80
|
-
}>>;
|
|
81
|
-
|
|
82
|
-
shareProjectWithOrg(projectId: string, organizationId: string, permission?: string): Promise<ApiResponse<{
|
|
83
|
-
success: boolean;
|
|
84
|
-
}>>;
|
|
85
|
-
|
|
86
|
-
unshareProject(projectId: string, organizationId: string): Promise<ApiResponse<{
|
|
87
|
-
success: boolean;
|
|
88
|
-
}>>;
|
|
89
|
-
|
|
90
|
-
updateProjectShare(projectId: string, organizationId: string, permission: string): Promise<ApiResponse<{
|
|
91
|
-
success: boolean;
|
|
92
|
-
share: { permission: string };
|
|
93
|
-
}>>;
|
|
94
|
-
|
|
95
|
-
listProjectShares(projectId: string): Promise<ApiResponse<{
|
|
96
|
-
shares: Array<{
|
|
97
|
-
id: string;
|
|
98
|
-
permission: string;
|
|
99
|
-
shared_at: string;
|
|
100
|
-
organization: { id: string; name: string; slug: string };
|
|
101
|
-
}>;
|
|
102
|
-
count: number;
|
|
103
|
-
}>>;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export function createOrganizationsMethods(proxy: ProxyFn): OrganizationsMethods {
|
|
107
|
-
return {
|
|
108
|
-
async listOrganizations() {
|
|
109
|
-
return proxy('list_organizations', {});
|
|
110
|
-
},
|
|
111
|
-
|
|
112
|
-
async createOrganization(params) {
|
|
113
|
-
return proxy('create_organization', params);
|
|
114
|
-
},
|
|
115
|
-
|
|
116
|
-
async updateOrganization(organizationId, updates) {
|
|
117
|
-
return proxy('update_organization', {
|
|
118
|
-
organization_id: organizationId,
|
|
119
|
-
...updates
|
|
120
|
-
});
|
|
121
|
-
},
|
|
122
|
-
|
|
123
|
-
async deleteOrganization(organizationId) {
|
|
124
|
-
return proxy('delete_organization', { organization_id: organizationId });
|
|
125
|
-
},
|
|
126
|
-
|
|
127
|
-
async listOrgMembers(organizationId) {
|
|
128
|
-
return proxy('list_org_members', { organization_id: organizationId });
|
|
129
|
-
},
|
|
130
|
-
|
|
131
|
-
async inviteMember(organizationId, email, role) {
|
|
132
|
-
return proxy('invite_member', {
|
|
133
|
-
organization_id: organizationId,
|
|
134
|
-
email,
|
|
135
|
-
role
|
|
136
|
-
});
|
|
137
|
-
},
|
|
138
|
-
|
|
139
|
-
async updateMemberRole(organizationId, userId, role) {
|
|
140
|
-
return proxy('update_member_role', {
|
|
141
|
-
organization_id: organizationId,
|
|
142
|
-
user_id: userId,
|
|
143
|
-
role
|
|
144
|
-
});
|
|
145
|
-
},
|
|
146
|
-
|
|
147
|
-
async removeMember(organizationId, userId) {
|
|
148
|
-
return proxy('remove_member', {
|
|
149
|
-
organization_id: organizationId,
|
|
150
|
-
user_id: userId
|
|
151
|
-
});
|
|
152
|
-
},
|
|
153
|
-
|
|
154
|
-
async leaveOrganization(organizationId) {
|
|
155
|
-
return proxy('leave_organization', { organization_id: organizationId });
|
|
156
|
-
},
|
|
157
|
-
|
|
158
|
-
async shareProjectWithOrg(projectId, organizationId, permission) {
|
|
159
|
-
return proxy('share_project_with_org', {
|
|
160
|
-
project_id: projectId,
|
|
161
|
-
organization_id: organizationId,
|
|
162
|
-
permission
|
|
163
|
-
});
|
|
164
|
-
},
|
|
165
|
-
|
|
166
|
-
async unshareProject(projectId, organizationId) {
|
|
167
|
-
return proxy('unshare_project', {
|
|
168
|
-
project_id: projectId,
|
|
169
|
-
organization_id: organizationId
|
|
170
|
-
});
|
|
171
|
-
},
|
|
172
|
-
|
|
173
|
-
async updateProjectShare(projectId, organizationId, permission) {
|
|
174
|
-
return proxy('update_project_share', {
|
|
175
|
-
project_id: projectId,
|
|
176
|
-
organization_id: organizationId,
|
|
177
|
-
permission
|
|
178
|
-
});
|
|
179
|
-
},
|
|
180
|
-
|
|
181
|
-
async listProjectShares(projectId) {
|
|
182
|
-
return proxy('list_project_shares', { project_id: projectId });
|
|
183
|
-
}
|
|
184
|
-
};
|
|
185
|
-
}
|
|
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
|
+
|
|
20
|
+
import type { ApiResponse, ProxyFn } from './types.js';
|
|
21
|
+
|
|
22
|
+
export interface OrganizationsMethods {
|
|
23
|
+
listOrganizations(): Promise<ApiResponse<{
|
|
24
|
+
organizations: Array<{
|
|
25
|
+
id: string;
|
|
26
|
+
name: string;
|
|
27
|
+
slug: string;
|
|
28
|
+
description?: string;
|
|
29
|
+
role: string;
|
|
30
|
+
}>;
|
|
31
|
+
}>>;
|
|
32
|
+
|
|
33
|
+
createOrganization(params: {
|
|
34
|
+
name: string;
|
|
35
|
+
slug?: string;
|
|
36
|
+
description?: string;
|
|
37
|
+
}): Promise<ApiResponse<{
|
|
38
|
+
success: boolean;
|
|
39
|
+
organization: { id: string; name: string; 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
|
+
|
|
51
|
+
deleteOrganization(organizationId: string): Promise<ApiResponse<{
|
|
52
|
+
success: boolean;
|
|
53
|
+
}>>;
|
|
54
|
+
|
|
55
|
+
listOrgMembers(organizationId: string): Promise<ApiResponse<{
|
|
56
|
+
members: Array<{
|
|
57
|
+
user_id: string;
|
|
58
|
+
email: string;
|
|
59
|
+
role: string;
|
|
60
|
+
joined_at: string;
|
|
61
|
+
}>;
|
|
62
|
+
}>>;
|
|
63
|
+
|
|
64
|
+
inviteMember(organizationId: string, email: string, role?: string): Promise<ApiResponse<{
|
|
65
|
+
success: boolean;
|
|
66
|
+
invite_id: string;
|
|
67
|
+
}>>;
|
|
68
|
+
|
|
69
|
+
updateMemberRole(organizationId: string, userId: string, role: string): Promise<ApiResponse<{
|
|
70
|
+
success: boolean;
|
|
71
|
+
}>>;
|
|
72
|
+
|
|
73
|
+
removeMember(organizationId: string, userId: string): Promise<ApiResponse<{
|
|
74
|
+
success: boolean;
|
|
75
|
+
}>>;
|
|
76
|
+
|
|
77
|
+
leaveOrganization(organizationId: string): Promise<ApiResponse<{
|
|
78
|
+
success: boolean;
|
|
79
|
+
message: string;
|
|
80
|
+
}>>;
|
|
81
|
+
|
|
82
|
+
shareProjectWithOrg(projectId: string, organizationId: string, permission?: string): Promise<ApiResponse<{
|
|
83
|
+
success: boolean;
|
|
84
|
+
}>>;
|
|
85
|
+
|
|
86
|
+
unshareProject(projectId: string, organizationId: string): Promise<ApiResponse<{
|
|
87
|
+
success: boolean;
|
|
88
|
+
}>>;
|
|
89
|
+
|
|
90
|
+
updateProjectShare(projectId: string, organizationId: string, permission: string): Promise<ApiResponse<{
|
|
91
|
+
success: boolean;
|
|
92
|
+
share: { permission: string };
|
|
93
|
+
}>>;
|
|
94
|
+
|
|
95
|
+
listProjectShares(projectId: string): Promise<ApiResponse<{
|
|
96
|
+
shares: Array<{
|
|
97
|
+
id: string;
|
|
98
|
+
permission: string;
|
|
99
|
+
shared_at: string;
|
|
100
|
+
organization: { id: string; name: string; slug: string };
|
|
101
|
+
}>;
|
|
102
|
+
count: number;
|
|
103
|
+
}>>;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export function createOrganizationsMethods(proxy: ProxyFn): OrganizationsMethods {
|
|
107
|
+
return {
|
|
108
|
+
async listOrganizations() {
|
|
109
|
+
return proxy('list_organizations', {});
|
|
110
|
+
},
|
|
111
|
+
|
|
112
|
+
async createOrganization(params) {
|
|
113
|
+
return proxy('create_organization', params);
|
|
114
|
+
},
|
|
115
|
+
|
|
116
|
+
async updateOrganization(organizationId, updates) {
|
|
117
|
+
return proxy('update_organization', {
|
|
118
|
+
organization_id: organizationId,
|
|
119
|
+
...updates
|
|
120
|
+
});
|
|
121
|
+
},
|
|
122
|
+
|
|
123
|
+
async deleteOrganization(organizationId) {
|
|
124
|
+
return proxy('delete_organization', { organization_id: organizationId });
|
|
125
|
+
},
|
|
126
|
+
|
|
127
|
+
async listOrgMembers(organizationId) {
|
|
128
|
+
return proxy('list_org_members', { organization_id: organizationId });
|
|
129
|
+
},
|
|
130
|
+
|
|
131
|
+
async inviteMember(organizationId, email, role) {
|
|
132
|
+
return proxy('invite_member', {
|
|
133
|
+
organization_id: organizationId,
|
|
134
|
+
email,
|
|
135
|
+
role
|
|
136
|
+
});
|
|
137
|
+
},
|
|
138
|
+
|
|
139
|
+
async updateMemberRole(organizationId, userId, role) {
|
|
140
|
+
return proxy('update_member_role', {
|
|
141
|
+
organization_id: organizationId,
|
|
142
|
+
user_id: userId,
|
|
143
|
+
role
|
|
144
|
+
});
|
|
145
|
+
},
|
|
146
|
+
|
|
147
|
+
async removeMember(organizationId, userId) {
|
|
148
|
+
return proxy('remove_member', {
|
|
149
|
+
organization_id: organizationId,
|
|
150
|
+
user_id: userId
|
|
151
|
+
});
|
|
152
|
+
},
|
|
153
|
+
|
|
154
|
+
async leaveOrganization(organizationId) {
|
|
155
|
+
return proxy('leave_organization', { organization_id: organizationId });
|
|
156
|
+
},
|
|
157
|
+
|
|
158
|
+
async shareProjectWithOrg(projectId, organizationId, permission) {
|
|
159
|
+
return proxy('share_project_with_org', {
|
|
160
|
+
project_id: projectId,
|
|
161
|
+
organization_id: organizationId,
|
|
162
|
+
permission
|
|
163
|
+
});
|
|
164
|
+
},
|
|
165
|
+
|
|
166
|
+
async unshareProject(projectId, organizationId) {
|
|
167
|
+
return proxy('unshare_project', {
|
|
168
|
+
project_id: projectId,
|
|
169
|
+
organization_id: organizationId
|
|
170
|
+
});
|
|
171
|
+
},
|
|
172
|
+
|
|
173
|
+
async updateProjectShare(projectId, organizationId, permission) {
|
|
174
|
+
return proxy('update_project_share', {
|
|
175
|
+
project_id: projectId,
|
|
176
|
+
organization_id: organizationId,
|
|
177
|
+
permission
|
|
178
|
+
});
|
|
179
|
+
},
|
|
180
|
+
|
|
181
|
+
async listProjectShares(projectId) {
|
|
182
|
+
return proxy('list_project_shares', { project_id: projectId });
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
}
|