@dobbyai/mcp-external 1.0.0

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 (58) hide show
  1. package/README.md +527 -0
  2. package/dist/connectors/claude-desktop.d.ts +26 -0
  3. package/dist/connectors/claude-desktop.d.ts.map +1 -0
  4. package/dist/connectors/claude-desktop.js +133 -0
  5. package/dist/connectors/claude-desktop.js.map +1 -0
  6. package/dist/connectors/cursor.d.ts +25 -0
  7. package/dist/connectors/cursor.d.ts.map +1 -0
  8. package/dist/connectors/cursor.js +115 -0
  9. package/dist/connectors/cursor.js.map +1 -0
  10. package/dist/connectors/index.d.ts +11 -0
  11. package/dist/connectors/index.d.ts.map +1 -0
  12. package/dist/connectors/index.js +11 -0
  13. package/dist/connectors/index.js.map +1 -0
  14. package/dist/connectors/setup.d.ts +12 -0
  15. package/dist/connectors/setup.d.ts.map +1 -0
  16. package/dist/connectors/setup.js +230 -0
  17. package/dist/connectors/setup.js.map +1 -0
  18. package/dist/connectors/vscode.d.ts +25 -0
  19. package/dist/connectors/vscode.d.ts.map +1 -0
  20. package/dist/connectors/vscode.js +63 -0
  21. package/dist/connectors/vscode.js.map +1 -0
  22. package/dist/connectors/windsurf.d.ts +25 -0
  23. package/dist/connectors/windsurf.d.ts.map +1 -0
  24. package/dist/connectors/windsurf.js +115 -0
  25. package/dist/connectors/windsurf.js.map +1 -0
  26. package/dist/index.d.ts +14 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +185 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/lib/dobby-client.d.ts +195 -0
  31. package/dist/lib/dobby-client.d.ts.map +1 -0
  32. package/dist/lib/dobby-client.js +219 -0
  33. package/dist/lib/dobby-client.js.map +1 -0
  34. package/dist/prompts/index.d.ts +25 -0
  35. package/dist/prompts/index.d.ts.map +1 -0
  36. package/dist/prompts/index.js +208 -0
  37. package/dist/prompts/index.js.map +1 -0
  38. package/dist/resources/index.d.ts +27 -0
  39. package/dist/resources/index.d.ts.map +1 -0
  40. package/dist/resources/index.js +182 -0
  41. package/dist/resources/index.js.map +1 -0
  42. package/dist/tools/approvals.d.ts +104 -0
  43. package/dist/tools/approvals.d.ts.map +1 -0
  44. package/dist/tools/approvals.js +164 -0
  45. package/dist/tools/approvals.js.map +1 -0
  46. package/dist/tools/index.d.ts +260 -0
  47. package/dist/tools/index.d.ts.map +1 -0
  48. package/dist/tools/index.js +215 -0
  49. package/dist/tools/index.js.map +1 -0
  50. package/dist/tools/messages.d.ts +68 -0
  51. package/dist/tools/messages.d.ts.map +1 -0
  52. package/dist/tools/messages.js +105 -0
  53. package/dist/tools/messages.js.map +1 -0
  54. package/dist/tools/tasks.d.ts +180 -0
  55. package/dist/tools/tasks.d.ts.map +1 -0
  56. package/dist/tools/tasks.js +344 -0
  57. package/dist/tools/tasks.js.map +1 -0
  58. package/package.json +62 -0
@@ -0,0 +1,219 @@
1
+ /**
2
+ * Dobby API Client
3
+ *
4
+ * Client for communicating with the Dobby API from the MCP server.
5
+ */
6
+ import { z } from 'zod';
7
+ // ============================================
8
+ // Types
9
+ // ============================================
10
+ export const TaskSchema = z.object({
11
+ task_id: z.string(),
12
+ tenant_id: z.string(),
13
+ title: z.string(),
14
+ description: z.string().nullable(),
15
+ status: z.enum(['pending', 'in_progress', 'completed', 'failed', 'cancelled']),
16
+ priority: z.enum(['high', 'medium', 'low']).nullable(),
17
+ created_at: z.string(),
18
+ updated_at: z.string(),
19
+ pr_url: z.string().nullable().optional(),
20
+ branch_name: z.string().nullable().optional(),
21
+ result_summary: z.string().nullable().optional(),
22
+ });
23
+ export const MessageSchema = z.object({
24
+ id: z.string(),
25
+ task_id: z.string(),
26
+ sender: z.object({
27
+ type: z.enum(['user', 'agent', 'system']),
28
+ id: z.string(),
29
+ name: z.string(),
30
+ }),
31
+ message: z.object({
32
+ type: z.string(),
33
+ content: z.string(),
34
+ metadata: z.record(z.any()).optional(),
35
+ }),
36
+ created_at: z.string(),
37
+ });
38
+ export const ApprovalSchema = z.object({
39
+ id: z.string(),
40
+ task_id: z.string(),
41
+ approval_type: z.string(),
42
+ description: z.string(),
43
+ status: z.enum(['pending', 'approved', 'rejected']),
44
+ requested_by: z.string(),
45
+ created_at: z.string(),
46
+ metadata: z.record(z.any()).optional(),
47
+ });
48
+ // ============================================
49
+ // Client Class
50
+ // ============================================
51
+ export class DobbyClient {
52
+ config;
53
+ constructor(config) {
54
+ this.config = config;
55
+ }
56
+ async fetch(endpoint, options = {}) {
57
+ const url = `${this.config.apiUrl}${endpoint}`;
58
+ const response = await fetch(url, {
59
+ ...options,
60
+ headers: {
61
+ 'Content-Type': 'application/json',
62
+ 'X-API-Key': this.config.apiKey,
63
+ ...options.headers,
64
+ },
65
+ });
66
+ if (!response.ok) {
67
+ const error = await response.text();
68
+ throw new Error(`Dobby API error (${response.status}): ${error}`);
69
+ }
70
+ return response.json();
71
+ }
72
+ // ============================================
73
+ // Tasks
74
+ // ============================================
75
+ async listTasks(options = {}) {
76
+ const params = new URLSearchParams({
77
+ tenant_id: this.config.tenantId,
78
+ });
79
+ if (options.status)
80
+ params.set('status', options.status);
81
+ if (options.priority)
82
+ params.set('priority', options.priority);
83
+ if (options.limit)
84
+ params.set('limit', options.limit.toString());
85
+ const response = await this.fetch(`/api/dobby/tasks?${params}`);
86
+ return response.tasks;
87
+ }
88
+ async getTask(taskId) {
89
+ try {
90
+ const response = await this.fetch(`/api/dobby/tasks/${taskId}?tenant_id=${this.config.tenantId}`);
91
+ return response.task;
92
+ }
93
+ catch (error) {
94
+ return null;
95
+ }
96
+ }
97
+ async createTask(data) {
98
+ const response = await this.fetch('/api/dobby/tasks', {
99
+ method: 'POST',
100
+ body: JSON.stringify({
101
+ tenant_id: this.config.tenantId,
102
+ ...data,
103
+ }),
104
+ });
105
+ return { task_id: response.task_id };
106
+ }
107
+ async updateTask(taskId, updates) {
108
+ await this.fetch('/api/dobby/tasks', {
109
+ method: 'PATCH',
110
+ body: JSON.stringify({
111
+ task_id: taskId,
112
+ tenant_id: this.config.tenantId,
113
+ ...updates,
114
+ }),
115
+ });
116
+ }
117
+ // ============================================
118
+ // Conversation
119
+ // ============================================
120
+ async getMessages(taskId, options = {}) {
121
+ const params = new URLSearchParams({
122
+ tenant_id: this.config.tenantId,
123
+ });
124
+ if (options.limit)
125
+ params.set('limit', options.limit.toString());
126
+ if (options.after)
127
+ params.set('after', options.after);
128
+ const response = await this.fetch(`/api/dobby/tasks/${taskId}/conversation?${params}`);
129
+ return response.messages;
130
+ }
131
+ async sendMessage(taskId, data) {
132
+ const response = await this.fetch(`/api/dobby/tasks/${taskId}/conversation`, {
133
+ method: 'POST',
134
+ body: JSON.stringify({
135
+ tenant_id: this.config.tenantId,
136
+ sender_type: 'user',
137
+ ...data,
138
+ }),
139
+ });
140
+ return response.message;
141
+ }
142
+ // ============================================
143
+ // Approvals
144
+ // ============================================
145
+ async getPendingApprovals() {
146
+ const response = await this.fetch(`/api/dobby/approvals?tenant_id=${this.config.tenantId}&status=pending`);
147
+ return response.approvals || [];
148
+ }
149
+ async approveTask(approvalId, note) {
150
+ // Use the unified approvals endpoint that triggers agent continuation
151
+ const response = await this.fetch(`/api/dobby/approvals`, {
152
+ method: 'POST',
153
+ body: JSON.stringify({
154
+ approval_id: approvalId,
155
+ tenant_id: this.config.tenantId,
156
+ action: 'approve',
157
+ feedback: note,
158
+ }),
159
+ });
160
+ return response;
161
+ }
162
+ async rejectTask(approvalId, reason) {
163
+ // Use the unified approvals endpoint that triggers agent retry with feedback
164
+ const response = await this.fetch(`/api/dobby/approvals`, {
165
+ method: 'POST',
166
+ body: JSON.stringify({
167
+ approval_id: approvalId,
168
+ tenant_id: this.config.tenantId,
169
+ action: 'reject',
170
+ feedback: reason || 'Rejected by user',
171
+ }),
172
+ });
173
+ return response;
174
+ }
175
+ // ============================================
176
+ // Timeline
177
+ // ============================================
178
+ async getTaskTimeline(taskId) {
179
+ const response = await this.fetch(`/api/dobby/tasks/${taskId}?tenant_id=${this.config.tenantId}`);
180
+ return response.task?.timeline || [];
181
+ }
182
+ // ============================================
183
+ // Task Execution Control
184
+ // ============================================
185
+ async cancelTaskExecution(taskId) {
186
+ const response = await this.fetch(`/api/dobby/tasks/${taskId}/execute?tenant_id=${this.config.tenantId}`, { method: 'DELETE' });
187
+ return { success: response.status === 'cancelled', message: response.message };
188
+ }
189
+ // ============================================
190
+ // Health Check
191
+ // ============================================
192
+ async checkHealth() {
193
+ try {
194
+ await this.fetch('/api/health');
195
+ return true;
196
+ }
197
+ catch {
198
+ return false;
199
+ }
200
+ }
201
+ }
202
+ // ============================================
203
+ // Factory
204
+ // ============================================
205
+ export function createDobbyClient(config) {
206
+ const finalConfig = {
207
+ apiUrl: config?.apiUrl || process.env.DOBBY_API_URL || 'http://localhost:3000',
208
+ apiKey: config?.apiKey || process.env.DOBBY_API_KEY || '',
209
+ tenantId: config?.tenantId || process.env.DOBBY_TENANT_ID || '',
210
+ };
211
+ if (!finalConfig.apiKey) {
212
+ throw new Error('DOBBY_API_KEY is required');
213
+ }
214
+ if (!finalConfig.tenantId) {
215
+ throw new Error('DOBBY_TENANT_ID is required');
216
+ }
217
+ return new DobbyClient(finalConfig);
218
+ }
219
+ //# sourceMappingURL=dobby-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dobby-client.js","sourceRoot":"","sources":["../../src/lib/dobby-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * MCP Prompts
3
+ *
4
+ * User-controlled prompt templates that appear as slash commands.
5
+ * These guide users through common workflows.
6
+ */
7
+ export declare const promptDefinitions: {
8
+ name: string;
9
+ description: string;
10
+ arguments: {
11
+ name: string;
12
+ description: string;
13
+ required: boolean;
14
+ }[];
15
+ }[];
16
+ export declare function handlePromptGet(promptName: string, args: Record<string, string>): {
17
+ messages: Array<{
18
+ role: 'user' | 'assistant';
19
+ content: {
20
+ type: 'text';
21
+ text: string;
22
+ };
23
+ }>;
24
+ };
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,eAAO,MAAM,iBAAiB;;;;;;;;GAsD7B,CAAC;AAMF,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B;IAAE,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAAC,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAA;CAAE,CAe9F"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * MCP Prompts
3
+ *
4
+ * User-controlled prompt templates that appear as slash commands.
5
+ * These guide users through common workflows.
6
+ */
7
+ // ============================================
8
+ // Prompt Definitions
9
+ // ============================================
10
+ export const promptDefinitions = [
11
+ {
12
+ name: 'create-feature',
13
+ description: 'Create a new feature task with guided prompts',
14
+ arguments: [
15
+ {
16
+ name: 'feature_name',
17
+ description: 'Brief name for the feature',
18
+ required: true,
19
+ },
20
+ {
21
+ name: 'description',
22
+ description: 'Detailed description of what the feature should do',
23
+ required: false,
24
+ },
25
+ ],
26
+ },
27
+ {
28
+ name: 'fix-bug',
29
+ description: 'Create a bug fix task',
30
+ arguments: [
31
+ {
32
+ name: 'bug_description',
33
+ description: 'Description of the bug to fix',
34
+ required: true,
35
+ },
36
+ {
37
+ name: 'steps_to_reproduce',
38
+ description: 'Steps to reproduce the bug',
39
+ required: false,
40
+ },
41
+ ],
42
+ },
43
+ {
44
+ name: 'check-approvals',
45
+ description: 'Check and review pending approval requests',
46
+ arguments: [],
47
+ },
48
+ {
49
+ name: 'task-status',
50
+ description: 'Get a summary of current task statuses',
51
+ arguments: [],
52
+ },
53
+ {
54
+ name: 'review-pr',
55
+ description: 'Review a pull request from a completed task',
56
+ arguments: [
57
+ {
58
+ name: 'task_id',
59
+ description: 'The task ID with the PR to review',
60
+ required: true,
61
+ },
62
+ ],
63
+ },
64
+ ];
65
+ // ============================================
66
+ // Prompt Handler
67
+ // ============================================
68
+ export function handlePromptGet(promptName, args) {
69
+ switch (promptName) {
70
+ case 'create-feature':
71
+ return handleCreateFeaturePrompt(args);
72
+ case 'fix-bug':
73
+ return handleFixBugPrompt(args);
74
+ case 'check-approvals':
75
+ return handleCheckApprovalsPrompt();
76
+ case 'task-status':
77
+ return handleTaskStatusPrompt();
78
+ case 'review-pr':
79
+ return handleReviewPRPrompt(args);
80
+ default:
81
+ throw new Error(`Unknown prompt: ${promptName}`);
82
+ }
83
+ }
84
+ // ============================================
85
+ // Individual Prompt Handlers
86
+ // ============================================
87
+ function handleCreateFeaturePrompt(args) {
88
+ const featureName = args.feature_name || 'New Feature';
89
+ const description = args.description || '';
90
+ return {
91
+ messages: [
92
+ {
93
+ role: 'user',
94
+ content: {
95
+ type: 'text',
96
+ text: `I want to create a new feature: "${featureName}"
97
+
98
+ ${description ? `Description: ${description}\n\n` : ''}Please help me:
99
+ 1. Create a task for this feature using the create_task tool
100
+ 2. Set appropriate priority based on the complexity
101
+ 3. Confirm the task was created successfully
102
+
103
+ After creating the task, let me know the task ID so I can track its progress.`,
104
+ },
105
+ },
106
+ ],
107
+ };
108
+ }
109
+ function handleFixBugPrompt(args) {
110
+ const bugDescription = args.bug_description || 'Bug to fix';
111
+ const stepsToReproduce = args.steps_to_reproduce || '';
112
+ return {
113
+ messages: [
114
+ {
115
+ role: 'user',
116
+ content: {
117
+ type: 'text',
118
+ text: `I need to fix a bug: "${bugDescription}"
119
+
120
+ ${stepsToReproduce ? `Steps to reproduce:\n${stepsToReproduce}\n\n` : ''}Please:
121
+ 1. Create a high-priority bug fix task using create_task
122
+ 2. Include the reproduction steps in the description
123
+ 3. Confirm the task was created
124
+
125
+ This should be marked as high priority since it's a bug fix.`,
126
+ },
127
+ },
128
+ ],
129
+ };
130
+ }
131
+ function handleCheckApprovalsPrompt() {
132
+ return {
133
+ messages: [
134
+ {
135
+ role: 'user',
136
+ content: {
137
+ type: 'text',
138
+ text: `Please check for any pending approvals using the get_pending_approvals tool.
139
+
140
+ For each pending approval:
141
+ 1. Show me what's being requested
142
+ 2. Summarize the changes or action
143
+ 3. Ask if I want to approve, reject, or request changes
144
+
145
+ Let's go through them one by one.`,
146
+ },
147
+ },
148
+ ],
149
+ };
150
+ }
151
+ function handleTaskStatusPrompt() {
152
+ return {
153
+ messages: [
154
+ {
155
+ role: 'user',
156
+ content: {
157
+ type: 'text',
158
+ text: `Please give me a status summary of all tasks:
159
+
160
+ 1. First, check for any pending approvals that need attention
161
+ 2. List tasks that are currently in progress
162
+ 3. Show any recently completed tasks
163
+ 4. List pending tasks waiting to be picked up
164
+
165
+ Use the list_tasks tool with different status filters to gather this information.`,
166
+ },
167
+ },
168
+ ],
169
+ };
170
+ }
171
+ function handleReviewPRPrompt(args) {
172
+ const taskId = args.task_id;
173
+ if (!taskId) {
174
+ return {
175
+ messages: [
176
+ {
177
+ role: 'user',
178
+ content: {
179
+ type: 'text',
180
+ text: `Please list completed tasks that have PRs using list_tasks with status=completed.
181
+
182
+ For each task with a PR URL, show me the task details so I can choose which PR to review.`,
183
+ },
184
+ },
185
+ ],
186
+ };
187
+ }
188
+ return {
189
+ messages: [
190
+ {
191
+ role: 'user',
192
+ content: {
193
+ type: 'text',
194
+ text: `Please get the details for task ${taskId} using the get_task tool.
195
+
196
+ Show me:
197
+ 1. The task description and what was requested
198
+ 2. The PR URL if available
199
+ 3. The result summary
200
+ 4. The conversation history using get_messages
201
+
202
+ Based on this, help me understand what was implemented.`,
203
+ },
204
+ },
205
+ ],
206
+ };
207
+ }
208
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * MCP Resources
3
+ *
4
+ * Read-only data sources that can be accessed by clients.
5
+ * Resources use URI schemes like tasks://list, approvals://pending
6
+ */
7
+ import { DobbyClient } from '../lib/dobby-client.js';
8
+ export declare const resourceDefinitions: {
9
+ uri: string;
10
+ name: string;
11
+ description: string;
12
+ mimeType: string;
13
+ }[];
14
+ export declare const resourceTemplates: {
15
+ uriTemplate: string;
16
+ name: string;
17
+ description: string;
18
+ mimeType: string;
19
+ }[];
20
+ export declare function handleResourceRead(uri: string, client: DobbyClient): Promise<{
21
+ contents: Array<{
22
+ uri: string;
23
+ mimeType: string;
24
+ text: string;
25
+ }>;
26
+ }>;
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAMrD,eAAO,MAAM,mBAAmB;;;;;GA+B/B,CAAC;AAMF,eAAO,MAAM,iBAAiB;;;;;GAa7B,CAAC;AAMF,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAe/E"}