@vibescope/mcp-server 0.5.0 → 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
- package/dist/tools.d.ts +0 -2
- package/dist/tools.js +0 -3602
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Discovery API Methods
|
|
3
|
-
*
|
|
4
|
-
* Methods for knowledge and help discovery:
|
|
5
|
-
* - queryKnowledgeBase: Query aggregated project knowledge
|
|
6
|
-
* - getHelpTopic: Get help for a specific topic
|
|
7
|
-
* - getHelpTopics: List all help topics
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import type { ApiResponse, RequestFn } from './types.js';
|
|
11
|
-
|
|
12
|
-
export interface DiscoveryMethods {
|
|
13
|
-
queryKnowledgeBase(projectId: string, params?: {
|
|
14
|
-
scope?: 'summary' | 'detailed';
|
|
15
|
-
categories?: Array<'findings' | 'qa' | 'decisions' | 'completed_tasks' | 'blockers' | 'progress'>;
|
|
16
|
-
limit?: number;
|
|
17
|
-
search_query?: string;
|
|
18
|
-
}): Promise<ApiResponse<{
|
|
19
|
-
findings?: Array<{
|
|
20
|
-
id: string;
|
|
21
|
-
title: string;
|
|
22
|
-
category: string;
|
|
23
|
-
severity: string;
|
|
24
|
-
}>;
|
|
25
|
-
qa?: Array<{
|
|
26
|
-
id: string;
|
|
27
|
-
question: string;
|
|
28
|
-
answer?: string;
|
|
29
|
-
}>;
|
|
30
|
-
decisions?: Array<{
|
|
31
|
-
id: string;
|
|
32
|
-
title: string;
|
|
33
|
-
description?: string;
|
|
34
|
-
}>;
|
|
35
|
-
completed_tasks?: Array<{
|
|
36
|
-
id: string;
|
|
37
|
-
title: string;
|
|
38
|
-
completed_at: string;
|
|
39
|
-
}>;
|
|
40
|
-
blockers?: Array<{
|
|
41
|
-
id: string;
|
|
42
|
-
description: string;
|
|
43
|
-
status: string;
|
|
44
|
-
}>;
|
|
45
|
-
progress?: Array<{
|
|
46
|
-
id: string;
|
|
47
|
-
note: string;
|
|
48
|
-
created_at: string;
|
|
49
|
-
}>;
|
|
50
|
-
}>>;
|
|
51
|
-
|
|
52
|
-
getHelpTopic(slug: string): Promise<ApiResponse<{
|
|
53
|
-
topic: {
|
|
54
|
-
slug: string;
|
|
55
|
-
title: string;
|
|
56
|
-
content: string;
|
|
57
|
-
};
|
|
58
|
-
}>>;
|
|
59
|
-
|
|
60
|
-
getHelpTopics(): Promise<ApiResponse<Array<{
|
|
61
|
-
slug: string;
|
|
62
|
-
title: string;
|
|
63
|
-
description?: string;
|
|
64
|
-
}>>>;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export function createDiscoveryMethods(request: RequestFn): DiscoveryMethods {
|
|
68
|
-
return {
|
|
69
|
-
async queryKnowledgeBase(projectId, params) {
|
|
70
|
-
return request('POST', `/api/mcp/projects/${projectId}/knowledge`, params || {});
|
|
71
|
-
},
|
|
72
|
-
|
|
73
|
-
async getHelpTopic(slug) {
|
|
74
|
-
return request('GET', `/api/mcp/help/${slug}`);
|
|
75
|
-
},
|
|
76
|
-
|
|
77
|
-
async getHelpTopics() {
|
|
78
|
-
return request('GET', '/api/mcp/help');
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Discovery API Methods
|
|
3
|
+
*
|
|
4
|
+
* Methods for knowledge and help discovery:
|
|
5
|
+
* - queryKnowledgeBase: Query aggregated project knowledge
|
|
6
|
+
* - getHelpTopic: Get help for a specific topic
|
|
7
|
+
* - getHelpTopics: List all help topics
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { ApiResponse, RequestFn } from './types.js';
|
|
11
|
+
|
|
12
|
+
export interface DiscoveryMethods {
|
|
13
|
+
queryKnowledgeBase(projectId: string, params?: {
|
|
14
|
+
scope?: 'summary' | 'detailed';
|
|
15
|
+
categories?: Array<'findings' | 'qa' | 'decisions' | 'completed_tasks' | 'blockers' | 'progress'>;
|
|
16
|
+
limit?: number;
|
|
17
|
+
search_query?: string;
|
|
18
|
+
}): Promise<ApiResponse<{
|
|
19
|
+
findings?: Array<{
|
|
20
|
+
id: string;
|
|
21
|
+
title: string;
|
|
22
|
+
category: string;
|
|
23
|
+
severity: string;
|
|
24
|
+
}>;
|
|
25
|
+
qa?: Array<{
|
|
26
|
+
id: string;
|
|
27
|
+
question: string;
|
|
28
|
+
answer?: string;
|
|
29
|
+
}>;
|
|
30
|
+
decisions?: Array<{
|
|
31
|
+
id: string;
|
|
32
|
+
title: string;
|
|
33
|
+
description?: string;
|
|
34
|
+
}>;
|
|
35
|
+
completed_tasks?: Array<{
|
|
36
|
+
id: string;
|
|
37
|
+
title: string;
|
|
38
|
+
completed_at: string;
|
|
39
|
+
}>;
|
|
40
|
+
blockers?: Array<{
|
|
41
|
+
id: string;
|
|
42
|
+
description: string;
|
|
43
|
+
status: string;
|
|
44
|
+
}>;
|
|
45
|
+
progress?: Array<{
|
|
46
|
+
id: string;
|
|
47
|
+
note: string;
|
|
48
|
+
created_at: string;
|
|
49
|
+
}>;
|
|
50
|
+
}>>;
|
|
51
|
+
|
|
52
|
+
getHelpTopic(slug: string): Promise<ApiResponse<{
|
|
53
|
+
topic: {
|
|
54
|
+
slug: string;
|
|
55
|
+
title: string;
|
|
56
|
+
content: string;
|
|
57
|
+
};
|
|
58
|
+
}>>;
|
|
59
|
+
|
|
60
|
+
getHelpTopics(): Promise<ApiResponse<Array<{
|
|
61
|
+
slug: string;
|
|
62
|
+
title: string;
|
|
63
|
+
description?: string;
|
|
64
|
+
}>>>;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function createDiscoveryMethods(request: RequestFn): DiscoveryMethods {
|
|
68
|
+
return {
|
|
69
|
+
async queryKnowledgeBase(projectId, params) {
|
|
70
|
+
return request('POST', `/api/mcp/projects/${projectId}/knowledge`, params || {});
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
async getHelpTopic(slug) {
|
|
74
|
+
return request('GET', `/api/mcp/help/${slug}`);
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
async getHelpTopics() {
|
|
78
|
+
return request('GET', '/api/mcp/help');
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
}
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fallback Activity API Methods
|
|
3
|
-
*
|
|
4
|
-
* Handles background activities when agents are idle with no pending tasks.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import type { ApiResponse, ProxyFn } from './types.js';
|
|
8
|
-
|
|
9
|
-
export interface FallbackActivityResult {
|
|
10
|
-
success: boolean;
|
|
11
|
-
activity: string;
|
|
12
|
-
message: string;
|
|
13
|
-
git_workflow?: {
|
|
14
|
-
workflow: string;
|
|
15
|
-
base_branch: string;
|
|
16
|
-
worktree_recommended: boolean;
|
|
17
|
-
note: string;
|
|
18
|
-
};
|
|
19
|
-
worktree_setup?: {
|
|
20
|
-
message: string;
|
|
21
|
-
commands: string[];
|
|
22
|
-
worktree_path: string;
|
|
23
|
-
branch_name: string;
|
|
24
|
-
cleanup_command: string;
|
|
25
|
-
report_worktree: string;
|
|
26
|
-
};
|
|
27
|
-
next_step?: string;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export interface FallbackMethods {
|
|
31
|
-
startFallbackActivity(projectId: string, activity: string, sessionId?: string): Promise<ApiResponse<FallbackActivityResult>>;
|
|
32
|
-
|
|
33
|
-
stopFallbackActivity(projectId: string, summary?: string, sessionId?: string): Promise<ApiResponse<{ success: boolean }>>;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export function createFallbackMethods(proxy: ProxyFn): FallbackMethods {
|
|
37
|
-
return {
|
|
38
|
-
async startFallbackActivity(projectId, activity, sessionId) {
|
|
39
|
-
return proxy('start_fallback_activity', {
|
|
40
|
-
project_id: projectId,
|
|
41
|
-
activity
|
|
42
|
-
}, sessionId ? { session_id: sessionId } : undefined);
|
|
43
|
-
},
|
|
44
|
-
|
|
45
|
-
async stopFallbackActivity(projectId, summary, sessionId) {
|
|
46
|
-
return proxy('stop_fallback_activity', {
|
|
47
|
-
project_id: projectId,
|
|
48
|
-
summary
|
|
49
|
-
}, sessionId ? { session_id: sessionId } : undefined);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Fallback Activity API Methods
|
|
3
|
+
*
|
|
4
|
+
* Handles background activities when agents are idle with no pending tasks.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { ApiResponse, ProxyFn } from './types.js';
|
|
8
|
+
|
|
9
|
+
export interface FallbackActivityResult {
|
|
10
|
+
success: boolean;
|
|
11
|
+
activity: string;
|
|
12
|
+
message: string;
|
|
13
|
+
git_workflow?: {
|
|
14
|
+
workflow: string;
|
|
15
|
+
base_branch: string;
|
|
16
|
+
worktree_recommended: boolean;
|
|
17
|
+
note: string;
|
|
18
|
+
};
|
|
19
|
+
worktree_setup?: {
|
|
20
|
+
message: string;
|
|
21
|
+
commands: string[];
|
|
22
|
+
worktree_path: string;
|
|
23
|
+
branch_name: string;
|
|
24
|
+
cleanup_command: string;
|
|
25
|
+
report_worktree: string;
|
|
26
|
+
};
|
|
27
|
+
next_step?: string;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface FallbackMethods {
|
|
31
|
+
startFallbackActivity(projectId: string, activity: string, sessionId?: string): Promise<ApiResponse<FallbackActivityResult>>;
|
|
32
|
+
|
|
33
|
+
stopFallbackActivity(projectId: string, summary?: string, sessionId?: string): Promise<ApiResponse<{ success: boolean }>>;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function createFallbackMethods(proxy: ProxyFn): FallbackMethods {
|
|
37
|
+
return {
|
|
38
|
+
async startFallbackActivity(projectId, activity, sessionId) {
|
|
39
|
+
return proxy('start_fallback_activity', {
|
|
40
|
+
project_id: projectId,
|
|
41
|
+
activity
|
|
42
|
+
}, sessionId ? { session_id: sessionId } : undefined);
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
async stopFallbackActivity(projectId, summary, sessionId) {
|
|
46
|
+
return proxy('stop_fallback_activity', {
|
|
47
|
+
project_id: projectId,
|
|
48
|
+
summary
|
|
49
|
+
}, sessionId ? { session_id: sessionId } : undefined);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
@@ -1,115 +1,115 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* File Checkouts API Methods
|
|
3
|
-
*
|
|
4
|
-
* Methods for multi-agent file coordination:
|
|
5
|
-
* - checkoutFile: Check out a file for editing
|
|
6
|
-
* - checkinFile: Check in a file after editing
|
|
7
|
-
* - getFileCheckouts: Get file checkouts for a project
|
|
8
|
-
* - abandonCheckout: Force-release a checkout
|
|
9
|
-
* - getFileCheckoutsStats: Get aggregate checkout statistics
|
|
10
|
-
* - isFileAvailable: Check if a file is available for checkout
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import type { ApiResponse, ProxyFn } from './types.js';
|
|
14
|
-
|
|
15
|
-
export interface FileCheckoutsMethods {
|
|
16
|
-
checkoutFile(projectId: string, filePath: string, reason?: string, sessionId?: string): Promise<ApiResponse<{
|
|
17
|
-
success: boolean;
|
|
18
|
-
checkout_id: string;
|
|
19
|
-
file_path: string;
|
|
20
|
-
already_checked_out?: boolean;
|
|
21
|
-
message: string;
|
|
22
|
-
}>>;
|
|
23
|
-
|
|
24
|
-
checkinFile(params: {
|
|
25
|
-
checkout_id?: string;
|
|
26
|
-
project_id?: string;
|
|
27
|
-
file_path?: string;
|
|
28
|
-
summary?: string;
|
|
29
|
-
}, sessionId?: string): Promise<ApiResponse<{
|
|
30
|
-
success: boolean;
|
|
31
|
-
checkout_id: string;
|
|
32
|
-
message: string;
|
|
33
|
-
}>>;
|
|
34
|
-
|
|
35
|
-
getFileCheckouts(projectId: string, options?: {
|
|
36
|
-
status?: string;
|
|
37
|
-
file_path?: string;
|
|
38
|
-
limit?: number;
|
|
39
|
-
offset?: number;
|
|
40
|
-
}): Promise<ApiResponse<{
|
|
41
|
-
checkouts: Array<{
|
|
42
|
-
id: string;
|
|
43
|
-
file_path: string;
|
|
44
|
-
status: string;
|
|
45
|
-
checked_out_at: string;
|
|
46
|
-
checkout_reason?: string;
|
|
47
|
-
checked_in_at?: string;
|
|
48
|
-
checkin_summary?: string;
|
|
49
|
-
checked_out_by?: string;
|
|
50
|
-
}>;
|
|
51
|
-
}>>;
|
|
52
|
-
|
|
53
|
-
abandonCheckout(params: {
|
|
54
|
-
checkout_id?: string;
|
|
55
|
-
project_id?: string;
|
|
56
|
-
file_path?: string;
|
|
57
|
-
}): Promise<ApiResponse<{
|
|
58
|
-
success: boolean;
|
|
59
|
-
checkout_id: string;
|
|
60
|
-
message: string;
|
|
61
|
-
}>>;
|
|
62
|
-
|
|
63
|
-
getFileCheckoutsStats(projectId: string): Promise<ApiResponse<{
|
|
64
|
-
total: number;
|
|
65
|
-
by_status: Record<string, number>;
|
|
66
|
-
}>>;
|
|
67
|
-
|
|
68
|
-
isFileAvailable(projectId: string, filePath: string): Promise<ApiResponse<{
|
|
69
|
-
available: boolean;
|
|
70
|
-
checkout?: {
|
|
71
|
-
id: string;
|
|
72
|
-
checked_out_by?: string;
|
|
73
|
-
checked_out_at: string;
|
|
74
|
-
checkout_reason?: string;
|
|
75
|
-
};
|
|
76
|
-
}>>;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export function createFileCheckoutsMethods(proxy: ProxyFn): FileCheckoutsMethods {
|
|
80
|
-
return {
|
|
81
|
-
async checkoutFile(projectId, filePath, reason, sessionId) {
|
|
82
|
-
return proxy('checkout_file', {
|
|
83
|
-
project_id: projectId,
|
|
84
|
-
file_path: filePath,
|
|
85
|
-
reason
|
|
86
|
-
}, sessionId ? { session_id: sessionId } : undefined);
|
|
87
|
-
},
|
|
88
|
-
|
|
89
|
-
async checkinFile(params, sessionId) {
|
|
90
|
-
return proxy('checkin_file', params as Record<string, unknown>, sessionId ? { session_id: sessionId } : undefined);
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
async getFileCheckouts(projectId, options) {
|
|
94
|
-
return proxy('get_file_checkouts', {
|
|
95
|
-
project_id: projectId,
|
|
96
|
-
...options
|
|
97
|
-
});
|
|
98
|
-
},
|
|
99
|
-
|
|
100
|
-
async abandonCheckout(params) {
|
|
101
|
-
return proxy('abandon_checkout', params as Record<string, unknown>);
|
|
102
|
-
},
|
|
103
|
-
|
|
104
|
-
async getFileCheckoutsStats(projectId) {
|
|
105
|
-
return proxy('get_file_checkouts_stats', { project_id: projectId });
|
|
106
|
-
},
|
|
107
|
-
|
|
108
|
-
async isFileAvailable(projectId, filePath) {
|
|
109
|
-
return proxy('is_file_available', {
|
|
110
|
-
project_id: projectId,
|
|
111
|
-
file_path: filePath
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
};
|
|
115
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* File Checkouts API Methods
|
|
3
|
+
*
|
|
4
|
+
* Methods for multi-agent file coordination:
|
|
5
|
+
* - checkoutFile: Check out a file for editing
|
|
6
|
+
* - checkinFile: Check in a file after editing
|
|
7
|
+
* - getFileCheckouts: Get file checkouts for a project
|
|
8
|
+
* - abandonCheckout: Force-release a checkout
|
|
9
|
+
* - getFileCheckoutsStats: Get aggregate checkout statistics
|
|
10
|
+
* - isFileAvailable: Check if a file is available for checkout
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type { ApiResponse, ProxyFn } from './types.js';
|
|
14
|
+
|
|
15
|
+
export interface FileCheckoutsMethods {
|
|
16
|
+
checkoutFile(projectId: string, filePath: string, reason?: string, sessionId?: string): Promise<ApiResponse<{
|
|
17
|
+
success: boolean;
|
|
18
|
+
checkout_id: string;
|
|
19
|
+
file_path: string;
|
|
20
|
+
already_checked_out?: boolean;
|
|
21
|
+
message: string;
|
|
22
|
+
}>>;
|
|
23
|
+
|
|
24
|
+
checkinFile(params: {
|
|
25
|
+
checkout_id?: string;
|
|
26
|
+
project_id?: string;
|
|
27
|
+
file_path?: string;
|
|
28
|
+
summary?: string;
|
|
29
|
+
}, sessionId?: string): Promise<ApiResponse<{
|
|
30
|
+
success: boolean;
|
|
31
|
+
checkout_id: string;
|
|
32
|
+
message: string;
|
|
33
|
+
}>>;
|
|
34
|
+
|
|
35
|
+
getFileCheckouts(projectId: string, options?: {
|
|
36
|
+
status?: string;
|
|
37
|
+
file_path?: string;
|
|
38
|
+
limit?: number;
|
|
39
|
+
offset?: number;
|
|
40
|
+
}): Promise<ApiResponse<{
|
|
41
|
+
checkouts: Array<{
|
|
42
|
+
id: string;
|
|
43
|
+
file_path: string;
|
|
44
|
+
status: string;
|
|
45
|
+
checked_out_at: string;
|
|
46
|
+
checkout_reason?: string;
|
|
47
|
+
checked_in_at?: string;
|
|
48
|
+
checkin_summary?: string;
|
|
49
|
+
checked_out_by?: string;
|
|
50
|
+
}>;
|
|
51
|
+
}>>;
|
|
52
|
+
|
|
53
|
+
abandonCheckout(params: {
|
|
54
|
+
checkout_id?: string;
|
|
55
|
+
project_id?: string;
|
|
56
|
+
file_path?: string;
|
|
57
|
+
}): Promise<ApiResponse<{
|
|
58
|
+
success: boolean;
|
|
59
|
+
checkout_id: string;
|
|
60
|
+
message: string;
|
|
61
|
+
}>>;
|
|
62
|
+
|
|
63
|
+
getFileCheckoutsStats(projectId: string): Promise<ApiResponse<{
|
|
64
|
+
total: number;
|
|
65
|
+
by_status: Record<string, number>;
|
|
66
|
+
}>>;
|
|
67
|
+
|
|
68
|
+
isFileAvailable(projectId: string, filePath: string): Promise<ApiResponse<{
|
|
69
|
+
available: boolean;
|
|
70
|
+
checkout?: {
|
|
71
|
+
id: string;
|
|
72
|
+
checked_out_by?: string;
|
|
73
|
+
checked_out_at: string;
|
|
74
|
+
checkout_reason?: string;
|
|
75
|
+
};
|
|
76
|
+
}>>;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export function createFileCheckoutsMethods(proxy: ProxyFn): FileCheckoutsMethods {
|
|
80
|
+
return {
|
|
81
|
+
async checkoutFile(projectId, filePath, reason, sessionId) {
|
|
82
|
+
return proxy('checkout_file', {
|
|
83
|
+
project_id: projectId,
|
|
84
|
+
file_path: filePath,
|
|
85
|
+
reason
|
|
86
|
+
}, sessionId ? { session_id: sessionId } : undefined);
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
async checkinFile(params, sessionId) {
|
|
90
|
+
return proxy('checkin_file', params as Record<string, unknown>, sessionId ? { session_id: sessionId } : undefined);
|
|
91
|
+
},
|
|
92
|
+
|
|
93
|
+
async getFileCheckouts(projectId, options) {
|
|
94
|
+
return proxy('get_file_checkouts', {
|
|
95
|
+
project_id: projectId,
|
|
96
|
+
...options
|
|
97
|
+
});
|
|
98
|
+
},
|
|
99
|
+
|
|
100
|
+
async abandonCheckout(params) {
|
|
101
|
+
return proxy('abandon_checkout', params as Record<string, unknown>);
|
|
102
|
+
},
|
|
103
|
+
|
|
104
|
+
async getFileCheckoutsStats(projectId) {
|
|
105
|
+
return proxy('get_file_checkouts_stats', { project_id: projectId });
|
|
106
|
+
},
|
|
107
|
+
|
|
108
|
+
async isFileAvailable(projectId, filePath) {
|
|
109
|
+
return proxy('is_file_available', {
|
|
110
|
+
project_id: projectId,
|
|
111
|
+
file_path: filePath
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
}
|