@vibescope/mcp-server 0.3.0 → 0.3.3

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 (154) hide show
  1. package/dist/api-client/blockers.d.ts +46 -0
  2. package/dist/api-client/blockers.js +43 -0
  3. package/dist/api-client/cost.d.ts +112 -0
  4. package/dist/api-client/cost.js +76 -0
  5. package/dist/api-client/decisions.d.ts +55 -0
  6. package/dist/api-client/decisions.js +32 -0
  7. package/dist/api-client/discovery.d.ts +62 -0
  8. package/dist/api-client/discovery.js +21 -0
  9. package/dist/api-client/ideas.d.ts +75 -0
  10. package/dist/api-client/ideas.js +36 -0
  11. package/dist/api-client/index.d.ts +749 -0
  12. package/dist/api-client/index.js +291 -0
  13. package/dist/api-client/project.d.ts +132 -0
  14. package/dist/api-client/project.js +45 -0
  15. package/dist/api-client/session.d.ts +163 -0
  16. package/dist/api-client/session.js +52 -0
  17. package/dist/api-client/tasks.d.ts +328 -0
  18. package/dist/api-client/tasks.js +132 -0
  19. package/dist/api-client/types.d.ts +25 -0
  20. package/dist/api-client/types.js +4 -0
  21. package/dist/api-client/worktrees.d.ts +33 -0
  22. package/dist/api-client/worktrees.js +26 -0
  23. package/dist/api-client.d.ts +9 -0
  24. package/dist/api-client.js +104 -25
  25. package/dist/cli-init.d.ts +17 -0
  26. package/dist/cli-init.js +445 -0
  27. package/dist/cli.js +0 -0
  28. package/dist/handlers/cloud-agents.d.ts +21 -0
  29. package/dist/handlers/cloud-agents.js +91 -0
  30. package/dist/handlers/discovery.js +7 -0
  31. package/dist/handlers/index.d.ts +1 -0
  32. package/dist/handlers/index.js +3 -0
  33. package/dist/handlers/session.js +3 -1
  34. package/dist/handlers/tasks.js +10 -12
  35. package/dist/handlers/types.d.ts +2 -1
  36. package/dist/handlers/validation.js +5 -1
  37. package/dist/index.js +8 -3
  38. package/dist/token-tracking.js +2 -2
  39. package/dist/tools/blockers.d.ts +13 -0
  40. package/dist/tools/blockers.js +119 -0
  41. package/dist/tools/bodies-of-work.d.ts +19 -0
  42. package/dist/tools/bodies-of-work.js +280 -0
  43. package/dist/tools/cloud-agents.d.ts +9 -0
  44. package/dist/tools/cloud-agents.js +67 -0
  45. package/dist/tools/connectors.d.ts +14 -0
  46. package/dist/tools/connectors.js +188 -0
  47. package/dist/tools/cost.d.ts +11 -0
  48. package/dist/tools/cost.js +108 -0
  49. package/dist/tools/decisions.d.ts +12 -0
  50. package/dist/tools/decisions.js +108 -0
  51. package/dist/tools/deployment.d.ts +24 -0
  52. package/dist/tools/deployment.js +439 -0
  53. package/dist/tools/discovery.d.ts +10 -0
  54. package/dist/tools/discovery.js +73 -0
  55. package/dist/tools/fallback.d.ts +11 -0
  56. package/dist/tools/fallback.js +108 -0
  57. package/dist/tools/file-checkouts.d.ts +13 -0
  58. package/dist/tools/file-checkouts.js +141 -0
  59. package/dist/tools/findings.d.ts +13 -0
  60. package/dist/tools/findings.js +98 -0
  61. package/dist/tools/git-issues.d.ts +11 -0
  62. package/dist/tools/git-issues.js +127 -0
  63. package/dist/tools/ideas.d.ts +13 -0
  64. package/dist/tools/ideas.js +159 -0
  65. package/dist/tools/index.d.ts +71 -0
  66. package/dist/tools/index.js +98 -0
  67. package/dist/tools/milestones.d.ts +12 -0
  68. package/dist/tools/milestones.js +115 -0
  69. package/dist/tools/organizations.d.ts +17 -0
  70. package/dist/tools/organizations.js +221 -0
  71. package/dist/tools/progress.d.ts +9 -0
  72. package/dist/tools/progress.js +70 -0
  73. package/dist/tools/project.d.ts +13 -0
  74. package/dist/tools/project.js +199 -0
  75. package/dist/tools/requests.d.ts +10 -0
  76. package/dist/tools/requests.js +65 -0
  77. package/dist/tools/roles.d.ts +11 -0
  78. package/dist/tools/roles.js +109 -0
  79. package/dist/tools/session.d.ts +15 -0
  80. package/dist/tools/session.js +178 -0
  81. package/dist/tools/sprints.d.ts +18 -0
  82. package/dist/tools/sprints.js +295 -0
  83. package/dist/tools/tasks.d.ts +27 -0
  84. package/dist/tools/tasks.js +539 -0
  85. package/dist/tools/types.d.ts +7 -0
  86. package/dist/tools/types.js +6 -0
  87. package/dist/tools/validation.d.ts +10 -0
  88. package/dist/tools/validation.js +72 -0
  89. package/dist/tools/worktrees.d.ts +9 -0
  90. package/dist/tools/worktrees.js +63 -0
  91. package/dist/utils.d.ts +66 -0
  92. package/dist/utils.js +102 -0
  93. package/docs/TOOLS.md +55 -2
  94. package/package.json +5 -3
  95. package/scripts/generate-docs.ts +1 -1
  96. package/src/api-client/blockers.ts +86 -0
  97. package/src/api-client/cost.ts +185 -0
  98. package/src/api-client/decisions.ts +87 -0
  99. package/src/api-client/discovery.ts +81 -0
  100. package/src/api-client/ideas.ts +112 -0
  101. package/src/api-client/index.ts +378 -0
  102. package/src/api-client/project.ts +179 -0
  103. package/src/api-client/session.ts +220 -0
  104. package/src/api-client/tasks.ts +450 -0
  105. package/src/api-client/types.ts +32 -0
  106. package/src/api-client/worktrees.ts +53 -0
  107. package/src/api-client.test.ts +136 -9
  108. package/src/api-client.ts +125 -27
  109. package/src/cli-init.ts +504 -0
  110. package/src/handlers/__test-utils__.ts +2 -0
  111. package/src/handlers/cloud-agents.ts +138 -0
  112. package/src/handlers/discovery.ts +7 -0
  113. package/src/handlers/index.ts +3 -0
  114. package/src/handlers/session.ts +3 -1
  115. package/src/handlers/tasks.ts +10 -12
  116. package/src/handlers/tool-categories.test.ts +1 -1
  117. package/src/handlers/types.ts +2 -1
  118. package/src/handlers/validation.ts +6 -1
  119. package/src/index.test.ts +2 -2
  120. package/src/index.ts +8 -2
  121. package/src/token-tracking.ts +3 -2
  122. package/src/tools/blockers.ts +122 -0
  123. package/src/tools/bodies-of-work.ts +283 -0
  124. package/src/tools/cloud-agents.ts +70 -0
  125. package/src/tools/connectors.ts +191 -0
  126. package/src/tools/cost.ts +111 -0
  127. package/src/tools/decisions.ts +111 -0
  128. package/src/tools/deployment.ts +442 -0
  129. package/src/tools/discovery.ts +76 -0
  130. package/src/tools/fallback.ts +111 -0
  131. package/src/tools/file-checkouts.ts +145 -0
  132. package/src/tools/findings.ts +101 -0
  133. package/src/tools/git-issues.ts +130 -0
  134. package/src/tools/ideas.ts +162 -0
  135. package/src/tools/index.ts +131 -0
  136. package/src/tools/milestones.ts +118 -0
  137. package/src/tools/organizations.ts +224 -0
  138. package/src/tools/progress.ts +73 -0
  139. package/src/tools/project.ts +202 -0
  140. package/src/tools/requests.ts +68 -0
  141. package/src/tools/roles.ts +112 -0
  142. package/src/tools/session.ts +181 -0
  143. package/src/tools/sprints.ts +298 -0
  144. package/src/tools/tasks.ts +542 -0
  145. package/src/tools/tools.test.ts +222 -0
  146. package/src/tools/types.ts +9 -0
  147. package/src/tools/validation.ts +75 -0
  148. package/src/tools/worktrees.ts +66 -0
  149. package/src/tools.test.ts +1 -1
  150. package/src/utils.test.ts +229 -0
  151. package/src/utils.ts +117 -0
  152. package/dist/tools.d.ts +0 -2
  153. package/dist/tools.js +0 -3602
  154. package/src/tools.ts +0 -3607
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Project API Methods
3
+ *
4
+ * Methods for project management:
5
+ * - listProjects: List all projects
6
+ * - createProject: Create a new project
7
+ * - getProject: Get project details
8
+ * - updateProject: Update project settings
9
+ * - getGitWorkflow: Get git workflow configuration
10
+ * - updateProjectReadme: Update project README
11
+ * - getProjectSummary: Get project summary
12
+ */
13
+
14
+ import type { ApiResponse, RequestFn } from './types.js';
15
+
16
+ export interface ProjectMethods {
17
+ listProjects(): Promise<ApiResponse<{
18
+ projects: Array<{
19
+ id: string;
20
+ name: string;
21
+ description?: string;
22
+ status: string;
23
+ git_url?: string;
24
+ goal?: string;
25
+ tech_stack?: string[];
26
+ }>;
27
+ }>>;
28
+
29
+ createProject(params: {
30
+ name: string;
31
+ description?: string;
32
+ goal?: string;
33
+ git_url?: string;
34
+ tech_stack?: string[];
35
+ }): Promise<ApiResponse<{
36
+ success: boolean;
37
+ project: {
38
+ id: string;
39
+ name: string;
40
+ };
41
+ }>>;
42
+
43
+ getProject(projectId: string, gitUrl?: string): Promise<ApiResponse<{
44
+ found: boolean;
45
+ project?: {
46
+ id: string;
47
+ name: string;
48
+ description?: string;
49
+ goal?: string;
50
+ status: string;
51
+ git_url?: string;
52
+ agent_instructions?: string;
53
+ tech_stack?: string[];
54
+ git_workflow?: string;
55
+ git_main_branch?: string;
56
+ git_develop_branch?: string;
57
+ git_auto_branch?: boolean;
58
+ git_auto_tag?: boolean;
59
+ deployment_instructions?: string;
60
+ };
61
+ active_tasks?: Array<{
62
+ id: string;
63
+ title: string;
64
+ description?: string;
65
+ priority: number;
66
+ status: string;
67
+ progress_percentage?: number;
68
+ estimated_minutes?: number;
69
+ }>;
70
+ open_blockers?: Array<{
71
+ id: string;
72
+ description: string;
73
+ }>;
74
+ recent_decisions?: Array<{
75
+ id: string;
76
+ title: string;
77
+ description?: string;
78
+ }>;
79
+ message?: string;
80
+ }>>;
81
+
82
+ updateProject(projectId: string, updates: {
83
+ name?: string;
84
+ description?: string;
85
+ goal?: string;
86
+ git_url?: string;
87
+ tech_stack?: string[];
88
+ status?: string;
89
+ git_workflow?: string;
90
+ git_main_branch?: string;
91
+ git_develop_branch?: string;
92
+ git_auto_branch?: boolean;
93
+ git_auto_tag?: boolean;
94
+ deployment_instructions?: string;
95
+ agent_instructions?: string;
96
+ git_delete_branch_on_merge?: boolean;
97
+ require_pr_for_validation?: boolean;
98
+ auto_merge_on_approval?: boolean;
99
+ validation_required?: boolean;
100
+ default_task_priority?: number;
101
+ require_time_estimates?: boolean;
102
+ fallback_activities_enabled?: boolean;
103
+ preferred_fallback_activities?: string[];
104
+ }): Promise<ApiResponse<{
105
+ success: boolean;
106
+ project_id: string;
107
+ }>>;
108
+
109
+ getGitWorkflow(projectId: string, taskId?: string): Promise<ApiResponse<{
110
+ workflow: string;
111
+ main_branch: string;
112
+ develop_branch?: string;
113
+ suggested_branch?: string;
114
+ base_branch?: string;
115
+ }>>;
116
+
117
+ updateProjectReadme(projectId: string, readmeContent: string): Promise<ApiResponse<{
118
+ success: boolean;
119
+ project_id: string;
120
+ }>>;
121
+
122
+ getProjectSummary(projectId: string): Promise<ApiResponse<{
123
+ project: {
124
+ id: string;
125
+ name: string;
126
+ description?: string;
127
+ goal?: string;
128
+ status: string;
129
+ };
130
+ stats: {
131
+ total_tasks: number;
132
+ completed_tasks: number;
133
+ in_progress_tasks: number;
134
+ pending_tasks: number;
135
+ open_blockers: number;
136
+ total_decisions: number;
137
+ };
138
+ }>>;
139
+ }
140
+
141
+ export function createProjectMethods(request: RequestFn): ProjectMethods {
142
+ return {
143
+ async listProjects() {
144
+ return request('GET', '/api/mcp/projects');
145
+ },
146
+
147
+ async createProject(params) {
148
+ return request('POST', '/api/mcp/projects', params);
149
+ },
150
+
151
+ async getProject(projectId, gitUrl) {
152
+ const url = gitUrl
153
+ ? `/api/mcp/projects/${projectId}?git_url=${encodeURIComponent(gitUrl)}`
154
+ : `/api/mcp/projects/${projectId}`;
155
+ return request('GET', url);
156
+ },
157
+
158
+ async updateProject(projectId, updates) {
159
+ return request('PATCH', `/api/mcp/projects/${projectId}`, updates);
160
+ },
161
+
162
+ async getGitWorkflow(projectId, taskId) {
163
+ const url = taskId
164
+ ? `/api/mcp/projects/${projectId}/git-workflow?task_id=${taskId}`
165
+ : `/api/mcp/projects/${projectId}/git-workflow`;
166
+ return request('GET', url);
167
+ },
168
+
169
+ async updateProjectReadme(projectId, readmeContent) {
170
+ return request('PATCH', `/api/mcp/projects/${projectId}/readme`, {
171
+ readme_content: readmeContent
172
+ });
173
+ },
174
+
175
+ async getProjectSummary(projectId) {
176
+ return request('GET', `/api/mcp/projects/${projectId}/summary`);
177
+ }
178
+ };
179
+ }
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Session API Methods
3
+ *
4
+ * Methods for session lifecycle management:
5
+ * - validateAuth: Validate API key
6
+ * - startSession: Start a new work session
7
+ * - heartbeat: Maintain active status
8
+ * - endSession: End session and release tasks
9
+ * - signalIdle: Signal agent is idle
10
+ * - syncSession: Sync session state
11
+ * - confirmAgentSetup: Confirm agent setup completion
12
+ */
13
+
14
+ import type { ApiResponse, RequestFn } from './types.js';
15
+
16
+ export interface SessionMethods {
17
+ validateAuth(): Promise<ApiResponse<{
18
+ valid: boolean;
19
+ user_id: string;
20
+ api_key_id: string;
21
+ key_name: string;
22
+ }>>;
23
+
24
+ startSession(params: {
25
+ project_id?: string;
26
+ git_url?: string;
27
+ mode?: 'lite' | 'full';
28
+ model?: string;
29
+ role?: string;
30
+ hostname?: string;
31
+ agent_type?: string;
32
+ agent_name?: string; // Explicit name for cloud/remote agents (skips persona pool)
33
+ }): Promise<ApiResponse<{
34
+ session_started: boolean;
35
+ session_id?: string;
36
+ persona?: string;
37
+ role?: string;
38
+ project?: {
39
+ id: string;
40
+ name: string;
41
+ description?: string;
42
+ goal?: string;
43
+ status?: string;
44
+ git_url?: string;
45
+ agent_instructions?: string;
46
+ tech_stack?: string[];
47
+ git_workflow?: string;
48
+ git_main_branch?: string;
49
+ git_develop_branch?: string;
50
+ git_auto_branch?: boolean;
51
+ };
52
+ active_tasks?: Array<{
53
+ id: string;
54
+ title: string;
55
+ status: string;
56
+ priority: number;
57
+ progress_percentage?: number;
58
+ estimated_minutes?: number;
59
+ }>;
60
+ blockers?: Array<{
61
+ id: string;
62
+ description: string;
63
+ status: string;
64
+ }>;
65
+ next_task?: {
66
+ id: string;
67
+ title: string;
68
+ priority: number;
69
+ estimated_minutes?: number;
70
+ } | null;
71
+ pending_requests?: Array<{
72
+ id: string;
73
+ request_type: string;
74
+ message: string;
75
+ created_at: string;
76
+ }>;
77
+ pending_requests_count?: number;
78
+ URGENT_QUESTIONS?: {
79
+ count: number;
80
+ oldest_waiting_minutes: number;
81
+ action_required: string;
82
+ requests: Array<{
83
+ id: string;
84
+ message: string;
85
+ waiting_minutes: number;
86
+ }>;
87
+ };
88
+ directive?: string;
89
+ blockers_count?: number;
90
+ validation_count?: number;
91
+ project_not_found?: boolean;
92
+ message?: string;
93
+ suggestion?: {
94
+ action: string;
95
+ example: string;
96
+ note: string;
97
+ };
98
+ agent_setup?: {
99
+ agent_type: string;
100
+ is_new_agent_type: boolean;
101
+ setup_required: boolean;
102
+ instructions: string;
103
+ config_file: string;
104
+ template_url?: string;
105
+ steps: string[];
106
+ };
107
+ stale_worktrees?: Array<{
108
+ task_id: string;
109
+ task_title: string;
110
+ worktree_path: string;
111
+ worktree_hostname?: string | null;
112
+ }>;
113
+ stale_worktrees_count?: number;
114
+ cleanup_action?: string;
115
+ awaiting_validation?: Array<{
116
+ id: string;
117
+ title?: string;
118
+ }>;
119
+ validation_priority?: boolean;
120
+ next_action?: string;
121
+ error?: string;
122
+ }>>;
123
+
124
+ heartbeat(sessionId: string, options?: {
125
+ current_worktree_path?: string | null;
126
+ hostname?: string;
127
+ }): Promise<ApiResponse<{
128
+ success: boolean;
129
+ session_id: string;
130
+ timestamp: string;
131
+ }>>;
132
+
133
+ endSession(sessionId: string): Promise<ApiResponse<{
134
+ success: boolean;
135
+ ended_session_id?: string;
136
+ session_summary?: {
137
+ agent_name: string;
138
+ tasks_completed_this_session: number;
139
+ tasks_awaiting_validation: number;
140
+ tasks_released: number;
141
+ };
142
+ reminders?: string[];
143
+ }>>;
144
+
145
+ signalIdle(sessionId: string): Promise<ApiResponse<{
146
+ success: boolean;
147
+ session_id: string;
148
+ status: string;
149
+ message: string;
150
+ }>>;
151
+
152
+ syncSession(sessionId: string, params?: {
153
+ include_project?: boolean;
154
+ include_tasks?: boolean;
155
+ }): Promise<ApiResponse<{
156
+ session: {
157
+ id: string;
158
+ status: string;
159
+ agent_name: string;
160
+ };
161
+ project?: unknown;
162
+ tasks?: unknown[];
163
+ }>>;
164
+
165
+ confirmAgentSetup(projectId: string, agentType: string): Promise<ApiResponse<{
166
+ success: boolean;
167
+ project_id: string;
168
+ agent_type: string;
169
+ }>>;
170
+ }
171
+
172
+ export function createSessionMethods(
173
+ request: RequestFn,
174
+ getApiKey: () => string
175
+ ): SessionMethods {
176
+ return {
177
+ async validateAuth() {
178
+ return request('POST', '/api/mcp/auth/validate', {
179
+ api_key: getApiKey()
180
+ });
181
+ },
182
+
183
+ async startSession(params) {
184
+ return request('POST', '/api/mcp/sessions/start', params);
185
+ },
186
+
187
+ async heartbeat(sessionId, options) {
188
+ return request('POST', '/api/mcp/sessions/heartbeat', {
189
+ session_id: sessionId,
190
+ ...options
191
+ });
192
+ },
193
+
194
+ async endSession(sessionId) {
195
+ return request('POST', '/api/mcp/sessions/end', {
196
+ session_id: sessionId
197
+ });
198
+ },
199
+
200
+ async signalIdle(sessionId) {
201
+ return request('POST', '/api/mcp/sessions/idle', {
202
+ session_id: sessionId
203
+ });
204
+ },
205
+
206
+ async syncSession(sessionId, params) {
207
+ return request('POST', '/api/mcp/sessions/sync', {
208
+ session_id: sessionId,
209
+ ...params
210
+ });
211
+ },
212
+
213
+ async confirmAgentSetup(projectId, agentType) {
214
+ return request('POST', '/api/mcp/agent-setup/confirm', {
215
+ project_id: projectId,
216
+ agent_type: agentType
217
+ });
218
+ }
219
+ };
220
+ }