@sudocode-ai/mcp 0.1.18-dev.0 → 0.1.18

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.
@@ -0,0 +1,296 @@
1
+ /**
2
+ * Sudocode API Client
3
+ *
4
+ * HTTP client for MCP server to communicate with the local sudocode server.
5
+ * Provides methods for extended tools (executions, workflows, inspection, escalation).
6
+ *
7
+ * Note: This client only implements methods for NEW tools that don't exist in the
8
+ * default scope. Issue/spec/relationship/feedback operations use the CLI wrapper.
9
+ */
10
+ import type { Execution } from "@sudocode-ai/types";
11
+ /**
12
+ * Options for creating the API client.
13
+ */
14
+ export interface SudocodeAPIClientConfig {
15
+ /** Base URL of the local server (e.g., "http://localhost:3000") */
16
+ serverUrl: string;
17
+ /** Project ID for X-Project-ID header */
18
+ projectId?: string;
19
+ /** Optional execution ID (when MCP is running inside an execution) */
20
+ executionId?: string;
21
+ /** Request timeout in milliseconds (default: 30000) */
22
+ timeout?: number;
23
+ }
24
+ /**
25
+ * Error thrown when an API call fails.
26
+ */
27
+ export declare class APIError extends Error {
28
+ statusCode: number;
29
+ response?: unknown | undefined;
30
+ constructor(message: string, statusCode: number, response?: unknown | undefined);
31
+ }
32
+ export interface ProjectStatusResult {
33
+ ready_issues: Array<{
34
+ id: string;
35
+ title: string;
36
+ priority: number;
37
+ }>;
38
+ active_executions: Array<{
39
+ id: string;
40
+ issue_id?: string;
41
+ status: string;
42
+ agent_type: string;
43
+ }>;
44
+ running_workflows: Array<{
45
+ id: string;
46
+ status: string;
47
+ title?: string;
48
+ }>;
49
+ }
50
+ export interface ListExecutionsParams {
51
+ status?: string[];
52
+ issue_id?: string;
53
+ limit?: number;
54
+ since?: string;
55
+ tags?: string[];
56
+ }
57
+ export interface ListExecutionsResult {
58
+ executions: Array<{
59
+ id: string;
60
+ issue_id?: string;
61
+ status: string;
62
+ agent_type: string;
63
+ created_at: string;
64
+ }>;
65
+ count: number;
66
+ }
67
+ export interface ShowExecutionParams {
68
+ execution_id: string;
69
+ }
70
+ export interface ShowExecutionResult {
71
+ execution: Execution;
72
+ }
73
+ export interface StartExecutionParams {
74
+ issue_id: string;
75
+ agent_type?: "claude-code" | "codex" | "copilot" | "cursor";
76
+ model?: string;
77
+ prompt?: string;
78
+ }
79
+ export interface StartExecutionResult {
80
+ execution_id: string;
81
+ status: string;
82
+ }
83
+ export interface StartAdhocExecutionParams {
84
+ prompt: string;
85
+ agent_type?: "claude-code" | "codex" | "copilot" | "cursor";
86
+ model?: string;
87
+ }
88
+ export interface CreateFollowUpParams {
89
+ execution_id: string;
90
+ feedback: string;
91
+ }
92
+ export interface CreateFollowUpResult {
93
+ execution_id: string;
94
+ parent_execution_id: string;
95
+ status: string;
96
+ }
97
+ export interface CancelExecutionParams {
98
+ execution_id: string;
99
+ reason?: string;
100
+ }
101
+ export interface CancelExecutionResult {
102
+ success: boolean;
103
+ message: string;
104
+ final_status: string;
105
+ }
106
+ export interface ExecutionTrajectoryParams {
107
+ execution_id: string;
108
+ max_entries?: number;
109
+ }
110
+ export interface ExecutionTrajectoryResult {
111
+ execution_id: string;
112
+ entries: Array<{
113
+ type: "tool_call" | "tool_result" | "message" | "error";
114
+ timestamp: string;
115
+ tool_name?: string;
116
+ tool_args?: Record<string, unknown>;
117
+ content?: string;
118
+ }>;
119
+ summary: {
120
+ total_entries: number;
121
+ tool_calls: number;
122
+ errors: number;
123
+ duration_ms?: number;
124
+ };
125
+ }
126
+ export interface ExecutionChangesParams {
127
+ execution_id: string;
128
+ include_diff?: boolean;
129
+ }
130
+ export interface ExecutionChangesResult {
131
+ execution_id: string;
132
+ files: Array<{
133
+ path: string;
134
+ status: "added" | "modified" | "deleted" | "renamed";
135
+ additions: number;
136
+ deletions: number;
137
+ diff?: string;
138
+ }>;
139
+ commits: Array<{
140
+ hash: string;
141
+ message: string;
142
+ author: string;
143
+ timestamp: string;
144
+ }>;
145
+ summary: {
146
+ files_changed: number;
147
+ total_additions: number;
148
+ total_deletions: number;
149
+ };
150
+ }
151
+ export interface ExecutionChainParams {
152
+ execution_id: string;
153
+ }
154
+ export interface ExecutionChainResult {
155
+ root_id: string;
156
+ executions: Execution[];
157
+ }
158
+ export interface ListWorkflowsParams {
159
+ status?: string[];
160
+ limit?: number;
161
+ }
162
+ export interface ShowWorkflowParams {
163
+ workflow_id: string;
164
+ }
165
+ export interface WorkflowStatusParams {
166
+ workflow_id: string;
167
+ }
168
+ export interface CreateWorkflowParams {
169
+ source: {
170
+ type: "issues";
171
+ issueIds: string[];
172
+ } | {
173
+ type: "spec";
174
+ specId: string;
175
+ } | {
176
+ type: "root_issue";
177
+ issueId: string;
178
+ } | {
179
+ type: "goal";
180
+ goal: string;
181
+ };
182
+ config?: Record<string, unknown>;
183
+ }
184
+ export interface StartWorkflowParams {
185
+ workflow_id: string;
186
+ }
187
+ export interface PauseWorkflowParams {
188
+ workflow_id: string;
189
+ }
190
+ export interface CancelWorkflowParams {
191
+ workflow_id: string;
192
+ }
193
+ export interface ResumeWorkflowParams {
194
+ workflow_id: string;
195
+ }
196
+ /**
197
+ * HTTP client for sudocode MCP server to communicate with local server.
198
+ *
199
+ * All methods throw APIError on failure.
200
+ */
201
+ export declare class SudocodeAPIClient {
202
+ private serverUrl;
203
+ private projectId?;
204
+ private executionId?;
205
+ private timeout;
206
+ constructor(config: SudocodeAPIClientConfig);
207
+ /**
208
+ * Make an HTTP request to the API.
209
+ */
210
+ private request;
211
+ /**
212
+ * Build query string from params object.
213
+ */
214
+ private buildQuery;
215
+ /**
216
+ * Open a project by path.
217
+ * This must be called before other API methods if the project isn't already open.
218
+ */
219
+ openProject(projectPath: string): Promise<{
220
+ id: string;
221
+ path: string;
222
+ }>;
223
+ /**
224
+ * Get current project status including ready issues, active executions, running workflows.
225
+ */
226
+ getProjectStatus(): Promise<ProjectStatusResult>;
227
+ /**
228
+ * List executions with optional filters.
229
+ */
230
+ listExecutions(params?: ListExecutionsParams): Promise<ListExecutionsResult>;
231
+ /**
232
+ * Get execution details.
233
+ */
234
+ showExecution(params: ShowExecutionParams): Promise<ShowExecutionResult>;
235
+ /**
236
+ * Start execution for an issue.
237
+ */
238
+ startExecution(params: StartExecutionParams): Promise<StartExecutionResult>;
239
+ /**
240
+ * Start adhoc execution without an issue.
241
+ */
242
+ startAdhocExecution(params: StartAdhocExecutionParams): Promise<StartExecutionResult>;
243
+ /**
244
+ * Create follow-up execution.
245
+ */
246
+ createFollowUp(params: CreateFollowUpParams): Promise<CreateFollowUpResult>;
247
+ /**
248
+ * Cancel a running execution.
249
+ */
250
+ cancelExecution(params: CancelExecutionParams): Promise<CancelExecutionResult>;
251
+ /**
252
+ * Get execution trajectory (tool calls, actions).
253
+ */
254
+ getExecutionTrajectory(params: ExecutionTrajectoryParams): Promise<ExecutionTrajectoryResult>;
255
+ /**
256
+ * Get execution code changes.
257
+ */
258
+ getExecutionChanges(params: ExecutionChangesParams): Promise<ExecutionChangesResult>;
259
+ /**
260
+ * Get execution chain (root + follow-ups).
261
+ */
262
+ getExecutionChain(params: ExecutionChainParams): Promise<ExecutionChainResult>;
263
+ /**
264
+ * List workflows.
265
+ */
266
+ listWorkflows(params?: ListWorkflowsParams): Promise<unknown>;
267
+ /**
268
+ * Get workflow details.
269
+ */
270
+ showWorkflow(params: ShowWorkflowParams): Promise<unknown>;
271
+ /**
272
+ * Get workflow extended status with steps.
273
+ */
274
+ getWorkflowStatus(params: WorkflowStatusParams): Promise<unknown>;
275
+ /**
276
+ * Create a new workflow.
277
+ */
278
+ createWorkflow(params: CreateWorkflowParams): Promise<unknown>;
279
+ /**
280
+ * Start a pending workflow.
281
+ */
282
+ startWorkflow(params: StartWorkflowParams): Promise<unknown>;
283
+ /**
284
+ * Pause a running workflow.
285
+ */
286
+ pauseWorkflow(params: PauseWorkflowParams): Promise<unknown>;
287
+ /**
288
+ * Cancel a workflow.
289
+ */
290
+ cancelWorkflow(params: CancelWorkflowParams): Promise<unknown>;
291
+ /**
292
+ * Resume a paused workflow.
293
+ */
294
+ resumeWorkflow(params: ResumeWorkflowParams): Promise<unknown>;
295
+ }
296
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,304 @@
1
+ /**
2
+ * Sudocode API Client
3
+ *
4
+ * HTTP client for MCP server to communicate with the local sudocode server.
5
+ * Provides methods for extended tools (executions, workflows, inspection, escalation).
6
+ *
7
+ * Note: This client only implements methods for NEW tools that don't exist in the
8
+ * default scope. Issue/spec/relationship/feedback operations use the CLI wrapper.
9
+ */
10
+ /**
11
+ * Error thrown when an API call fails.
12
+ */
13
+ export class APIError extends Error {
14
+ statusCode;
15
+ response;
16
+ constructor(message, statusCode, response) {
17
+ super(message);
18
+ this.statusCode = statusCode;
19
+ this.response = response;
20
+ this.name = "APIError";
21
+ }
22
+ }
23
+ // =============================================================================
24
+ // API Client
25
+ // =============================================================================
26
+ /**
27
+ * HTTP client for sudocode MCP server to communicate with local server.
28
+ *
29
+ * All methods throw APIError on failure.
30
+ */
31
+ export class SudocodeAPIClient {
32
+ serverUrl;
33
+ projectId;
34
+ executionId;
35
+ timeout;
36
+ constructor(config) {
37
+ this.serverUrl = config.serverUrl.replace(/\/$/, ""); // Remove trailing slash
38
+ this.projectId = config.projectId;
39
+ this.executionId = config.executionId;
40
+ this.timeout = config.timeout ?? 30000;
41
+ // Debug: Log configuration
42
+ if (process.env.DEBUG_MCP) {
43
+ console.error(`[SudocodeAPIClient] serverUrl=${this.serverUrl}, projectId=${this.projectId}`);
44
+ }
45
+ }
46
+ // ===========================================================================
47
+ // HTTP Helpers
48
+ // ===========================================================================
49
+ /**
50
+ * Make an HTTP request to the API.
51
+ */
52
+ async request(method, path, body) {
53
+ const url = `${this.serverUrl}${path}`;
54
+ const controller = new AbortController();
55
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
56
+ try {
57
+ const headers = {
58
+ "Content-Type": "application/json",
59
+ };
60
+ if (this.projectId) {
61
+ headers["X-Project-ID"] = this.projectId;
62
+ }
63
+ else {
64
+ // Warn if projectId is missing - API will likely reject the request
65
+ console.error(`[SudocodeAPIClient] WARNING: No projectId set, X-Project-ID header will not be sent`);
66
+ }
67
+ // Debug: Log request details
68
+ if (process.env.DEBUG_MCP) {
69
+ console.error(`[SudocodeAPIClient] ${method} ${url}`);
70
+ console.error(`[SudocodeAPIClient] Headers: ${JSON.stringify(headers)}`);
71
+ }
72
+ const response = await fetch(url, {
73
+ method,
74
+ headers,
75
+ body: body ? JSON.stringify(body) : undefined,
76
+ signal: controller.signal,
77
+ });
78
+ clearTimeout(timeoutId);
79
+ // Check if response is HTML (error page) before trying to parse as JSON
80
+ const contentType = response.headers.get("content-type") || "";
81
+ if (!contentType.includes("application/json")) {
82
+ const text = await response.text();
83
+ throw new APIError(`Server returned non-JSON response: ${text.substring(0, 100)}`, response.status);
84
+ }
85
+ const data = (await response.json());
86
+ if (!response.ok || !data.success) {
87
+ throw new APIError(data.message || data.error || `HTTP ${response.status}`, response.status, data);
88
+ }
89
+ return data.data;
90
+ }
91
+ catch (error) {
92
+ clearTimeout(timeoutId);
93
+ if (error instanceof APIError) {
94
+ throw error;
95
+ }
96
+ if (error instanceof Error) {
97
+ if (error.name === "AbortError") {
98
+ throw new APIError(`Request timeout after ${this.timeout}ms`, 408);
99
+ }
100
+ // Connection refused, network error, etc.
101
+ if (error.message.includes("ECONNREFUSED") ||
102
+ error.message.includes("fetch failed")) {
103
+ throw new APIError(`Cannot connect to server at ${this.serverUrl}. Is the server running?`, 0);
104
+ }
105
+ throw new APIError(error.message, 0);
106
+ }
107
+ throw new APIError(String(error), 0);
108
+ }
109
+ }
110
+ /**
111
+ * Build query string from params object.
112
+ */
113
+ buildQuery(params) {
114
+ const parts = [];
115
+ for (const [key, value] of Object.entries(params)) {
116
+ if (value === undefined || value === null)
117
+ continue;
118
+ if (Array.isArray(value)) {
119
+ for (const v of value) {
120
+ parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(v))}`);
121
+ }
122
+ }
123
+ else {
124
+ parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
125
+ }
126
+ }
127
+ return parts.length > 0 ? `?${parts.join("&")}` : "";
128
+ }
129
+ // ===========================================================================
130
+ // Project Methods
131
+ // ===========================================================================
132
+ /**
133
+ * Open a project by path.
134
+ * This must be called before other API methods if the project isn't already open.
135
+ */
136
+ async openProject(projectPath) {
137
+ return this.request("POST", "/api/projects/open", {
138
+ path: projectPath,
139
+ });
140
+ }
141
+ // ===========================================================================
142
+ // Overview Methods
143
+ // ===========================================================================
144
+ /**
145
+ * Get current project status including ready issues, active executions, running workflows.
146
+ */
147
+ async getProjectStatus() {
148
+ return this.request("GET", "/api/project/status");
149
+ }
150
+ // ===========================================================================
151
+ // Execution Methods
152
+ // ===========================================================================
153
+ /**
154
+ * List executions with optional filters.
155
+ */
156
+ async listExecutions(params = {}) {
157
+ const query = this.buildQuery({
158
+ status: params.status,
159
+ issue_id: params.issue_id,
160
+ limit: params.limit,
161
+ since: params.since,
162
+ tags: params.tags,
163
+ });
164
+ return this.request("GET", `/api/executions${query}`);
165
+ }
166
+ /**
167
+ * Get execution details.
168
+ */
169
+ async showExecution(params) {
170
+ const execution = await this.request("GET", `/api/executions/${params.execution_id}`);
171
+ return { execution };
172
+ }
173
+ /**
174
+ * Start execution for an issue.
175
+ */
176
+ async startExecution(params) {
177
+ const execution = await this.request("POST", `/api/issues/${params.issue_id}/executions`, {
178
+ agent_type: params.agent_type,
179
+ model: params.model,
180
+ prompt: params.prompt,
181
+ });
182
+ return {
183
+ execution_id: execution.id,
184
+ status: execution.status,
185
+ };
186
+ }
187
+ /**
188
+ * Start adhoc execution without an issue.
189
+ */
190
+ async startAdhocExecution(params) {
191
+ const execution = await this.request("POST", "/api/executions", {
192
+ prompt: params.prompt,
193
+ agent_type: params.agent_type,
194
+ model: params.model,
195
+ });
196
+ return {
197
+ execution_id: execution.id,
198
+ status: execution.status,
199
+ };
200
+ }
201
+ /**
202
+ * Create follow-up execution.
203
+ */
204
+ async createFollowUp(params) {
205
+ const execution = await this.request("POST", `/api/executions/${params.execution_id}/follow-up`, { feedback: params.feedback });
206
+ return {
207
+ execution_id: execution.id,
208
+ parent_execution_id: execution.parent_execution_id,
209
+ status: execution.status,
210
+ };
211
+ }
212
+ /**
213
+ * Cancel a running execution.
214
+ */
215
+ async cancelExecution(params) {
216
+ return this.request("POST", `/api/executions/${params.execution_id}/cancel`, { reason: params.reason });
217
+ }
218
+ // ===========================================================================
219
+ // Inspection Methods
220
+ // ===========================================================================
221
+ /**
222
+ * Get execution trajectory (tool calls, actions).
223
+ */
224
+ async getExecutionTrajectory(params) {
225
+ const query = this.buildQuery({ max_entries: params.max_entries });
226
+ return this.request("GET", `/api/executions/${params.execution_id}/trajectory${query}`);
227
+ }
228
+ /**
229
+ * Get execution code changes.
230
+ */
231
+ async getExecutionChanges(params) {
232
+ const query = this.buildQuery({ include_diff: params.include_diff });
233
+ return this.request("GET", `/api/executions/${params.execution_id}/changes${query}`);
234
+ }
235
+ /**
236
+ * Get execution chain (root + follow-ups).
237
+ */
238
+ async getExecutionChain(params) {
239
+ const result = await this.request("GET", `/api/executions/${params.execution_id}/chain`);
240
+ return {
241
+ root_id: result.rootId,
242
+ executions: result.executions,
243
+ };
244
+ }
245
+ // ===========================================================================
246
+ // Workflow Methods
247
+ // ===========================================================================
248
+ /**
249
+ * List workflows.
250
+ */
251
+ async listWorkflows(params = {}) {
252
+ const query = this.buildQuery({
253
+ status: params.status,
254
+ limit: params.limit,
255
+ });
256
+ return this.request("GET", `/api/workflows${query}`);
257
+ }
258
+ /**
259
+ * Get workflow details.
260
+ */
261
+ async showWorkflow(params) {
262
+ return this.request("GET", `/api/workflows/${params.workflow_id}`);
263
+ }
264
+ /**
265
+ * Get workflow extended status with steps.
266
+ */
267
+ async getWorkflowStatus(params) {
268
+ return this.request("GET", `/api/workflows/${params.workflow_id}/status`);
269
+ }
270
+ /**
271
+ * Create a new workflow.
272
+ */
273
+ async createWorkflow(params) {
274
+ return this.request("POST", "/api/workflows", {
275
+ source: params.source,
276
+ config: params.config,
277
+ });
278
+ }
279
+ /**
280
+ * Start a pending workflow.
281
+ */
282
+ async startWorkflow(params) {
283
+ return this.request("POST", `/api/workflows/${params.workflow_id}/start`);
284
+ }
285
+ /**
286
+ * Pause a running workflow.
287
+ */
288
+ async pauseWorkflow(params) {
289
+ return this.request("POST", `/api/workflows/${params.workflow_id}/pause`);
290
+ }
291
+ /**
292
+ * Cancel a workflow.
293
+ */
294
+ async cancelWorkflow(params) {
295
+ return this.request("POST", `/api/workflows/${params.workflow_id}/cancel`);
296
+ }
297
+ /**
298
+ * Resume a paused workflow.
299
+ */
300
+ async resumeWorkflow(params) {
301
+ return this.request("POST", `/api/workflows/${params.workflow_id}/resume`);
302
+ }
303
+ }
304
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}