@execufunction/mcp-server 0.2.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.
@@ -0,0 +1,565 @@
1
+ /**
2
+ * ExecuFunction API Client
3
+ *
4
+ * HTTP client for communicating with the ExecuFunction API.
5
+ * Uses PAT (Personal Access Token) for authentication.
6
+ */
7
+ export interface ExfClientConfig {
8
+ apiUrl: string;
9
+ pat: string;
10
+ }
11
+ /**
12
+ * Generate a unique idempotency key for task mutations.
13
+ * Format: {prefix}-{timestamp}-{uuid} for traceability.
14
+ */
15
+ export declare function generateIdempotencyKey(prefix?: string): string;
16
+ export interface ApiResponse<T> {
17
+ data?: T;
18
+ error?: string;
19
+ statusCode: number;
20
+ }
21
+ export declare class ExfClient {
22
+ private apiUrl;
23
+ private pat;
24
+ constructor(config: ExfClientConfig);
25
+ private request;
26
+ listProjects(options?: {
27
+ status?: string;
28
+ includeArchived?: boolean;
29
+ }): Promise<ApiResponse<{
30
+ projects: any[];
31
+ }>>;
32
+ getProject(projectId: string): Promise<ApiResponse<{
33
+ project: any;
34
+ }>>;
35
+ getProjectContext(projectId: string): Promise<ApiResponse<any>>;
36
+ listTasks(options?: {
37
+ projectId?: string;
38
+ status?: string;
39
+ limit?: number;
40
+ }): Promise<ApiResponse<{
41
+ tasks: any[];
42
+ }>>;
43
+ createTask(task: {
44
+ title: string;
45
+ description?: string;
46
+ priority?: string;
47
+ dueAt?: string;
48
+ projectId?: string;
49
+ }, idempotencyKey?: string): Promise<ApiResponse<{
50
+ task: any;
51
+ }>>;
52
+ updateTask(taskId: string, updates: {
53
+ title?: string;
54
+ description?: string;
55
+ status?: string;
56
+ priority?: string;
57
+ dueAt?: string;
58
+ projectId?: string;
59
+ }, idempotencyKey?: string): Promise<ApiResponse<{
60
+ task: any;
61
+ }>>;
62
+ /**
63
+ * Mark a task as completed.
64
+ * Uses PATCH with status: 'completed' (backend has no dedicated /complete endpoint).
65
+ */
66
+ completeTask(taskId: string, idempotencyKey?: string): Promise<ApiResponse<{
67
+ task: any;
68
+ }>>;
69
+ getTask(taskId: string): Promise<ApiResponse<{
70
+ task: any;
71
+ }>>;
72
+ deleteTask(taskId: string): Promise<ApiResponse<{
73
+ deleted: boolean;
74
+ }>>;
75
+ createProject(project: {
76
+ name: string;
77
+ summary?: string;
78
+ status?: string;
79
+ emoji?: string;
80
+ }): Promise<ApiResponse<{
81
+ project: any;
82
+ }>>;
83
+ updateProject(projectId: string, updates: {
84
+ name?: string;
85
+ summary?: string;
86
+ status?: string;
87
+ emoji?: string;
88
+ }): Promise<ApiResponse<{
89
+ project: any;
90
+ }>>;
91
+ archiveProject(projectId: string): Promise<ApiResponse<{
92
+ project: any;
93
+ }>>;
94
+ searchNotes(query: string, options?: {
95
+ projectId?: string;
96
+ limit?: number;
97
+ }): Promise<ApiResponse<{
98
+ results: any[];
99
+ }>>;
100
+ createNote(note: {
101
+ title: string;
102
+ content?: string;
103
+ projectId?: string;
104
+ noteType?: string;
105
+ }, idempotencyKey?: string): Promise<ApiResponse<{
106
+ note: any;
107
+ }>>;
108
+ getNote(noteId: string): Promise<ApiResponse<{
109
+ note: any;
110
+ }>>;
111
+ updateNote(noteId: string, updates: {
112
+ title?: string;
113
+ content?: string;
114
+ noteType?: string;
115
+ }, idempotencyKey?: string): Promise<ApiResponse<{
116
+ note: any;
117
+ }>>;
118
+ deleteNote(noteId: string): Promise<ApiResponse<{
119
+ deleted: boolean;
120
+ }>>;
121
+ listNotes(options?: {
122
+ projectId?: string;
123
+ noteType?: string;
124
+ limit?: number;
125
+ }): Promise<ApiResponse<{
126
+ notes: any[];
127
+ }>>;
128
+ listDatasets(limit?: number): Promise<ApiResponse<{
129
+ datasets: any[];
130
+ }>>;
131
+ createDataset(input: {
132
+ title: string;
133
+ description?: string;
134
+ fields?: Array<Record<string, unknown>>;
135
+ metadata?: Record<string, unknown>;
136
+ noteId?: string;
137
+ }): Promise<ApiResponse<any>>;
138
+ queryDataset(datasetId: string, input?: {
139
+ filters?: Array<Record<string, unknown>>;
140
+ sorts?: Array<Record<string, unknown>>;
141
+ limit?: number;
142
+ cursor?: string;
143
+ includeDeleted?: boolean;
144
+ }): Promise<ApiResponse<any>>;
145
+ mutateDataset(datasetId: string, input: {
146
+ operation: 'create' | 'update' | 'delete';
147
+ records?: Array<{
148
+ fields: Record<string, unknown>;
149
+ rowOrder?: string;
150
+ }>;
151
+ recordId?: string;
152
+ fields?: Record<string, unknown>;
153
+ }): Promise<ApiResponse<any>>;
154
+ modifyDatasetSchema(datasetId: string, input: {
155
+ operation: 'add_field' | 'update_field' | 'delete_field';
156
+ fieldId?: string;
157
+ field?: Record<string, unknown>;
158
+ }): Promise<ApiResponse<any>>;
159
+ summarizeDataset(datasetId: string): Promise<ApiResponse<any>>;
160
+ findObjects(input: {
161
+ objectType: string;
162
+ where?: Array<Record<string, unknown>>;
163
+ limit?: number;
164
+ }): Promise<ApiResponse<any>>;
165
+ getObjectLinks(objectRecordId: string, options?: {
166
+ depth?: number;
167
+ limit?: number;
168
+ }): Promise<ApiResponse<any>>;
169
+ runObjectAction(input: {
170
+ objectTypeKey: string;
171
+ actionKey: string;
172
+ objectRecordId: string;
173
+ idempotencyKey?: string;
174
+ parameters?: Record<string, unknown>;
175
+ }): Promise<ApiResponse<any>>;
176
+ searchPeople(query: string, limit?: number): Promise<ApiResponse<{
177
+ people: any[];
178
+ }>>;
179
+ listPeople(limit?: number): Promise<ApiResponse<{
180
+ people: any[];
181
+ }>>;
182
+ listCalendarEvents(options?: {
183
+ startDate?: string;
184
+ endDate?: string;
185
+ limit?: number;
186
+ }): Promise<ApiResponse<{
187
+ events: any[];
188
+ }>>;
189
+ findFreeSlots(_options: {
190
+ startDate: string;
191
+ endDate: string;
192
+ durationMinutes?: number;
193
+ }): Promise<{
194
+ error: string;
195
+ statusCode: number;
196
+ }>;
197
+ createCalendarEvent(event: {
198
+ title: string;
199
+ startTime: string;
200
+ endTime: string;
201
+ description?: string;
202
+ location?: string;
203
+ projectId?: string;
204
+ }): Promise<ApiResponse<{
205
+ event: {
206
+ id: string;
207
+ title: string;
208
+ startTime: string;
209
+ endTime: string;
210
+ description?: string;
211
+ location?: string;
212
+ };
213
+ }>>;
214
+ updateCalendarEvent(eventId: string, updates: {
215
+ title?: string;
216
+ startTime?: string;
217
+ endTime?: string;
218
+ description?: string;
219
+ location?: string;
220
+ }): Promise<ApiResponse<{
221
+ event: any;
222
+ }>>;
223
+ deleteCalendarEvent(eventId: string): Promise<ApiResponse<{
224
+ deleted: boolean;
225
+ }>>;
226
+ listCodeRepositories(): Promise<ApiResponse<{
227
+ repositories: any[];
228
+ }>>;
229
+ getCodeRepository(repositoryId: string): Promise<ApiResponse<{
230
+ repository: any;
231
+ }>>;
232
+ createCodeRepository(repo: {
233
+ name: string;
234
+ rootPath: string;
235
+ projectId?: string;
236
+ includePatterns?: string[];
237
+ excludePatterns?: string[];
238
+ }): Promise<ApiResponse<{
239
+ repository: any;
240
+ }>>;
241
+ deleteCodeRepository(repositoryId: string): Promise<ApiResponse<void>>;
242
+ triggerCodeIndexing(repositoryId: string): Promise<ApiResponse<{
243
+ message: string;
244
+ repositoryId: string;
245
+ }>>;
246
+ updateIndexingProgress(repositoryId: string, progress: {
247
+ totalFiles: number;
248
+ uploadedFiles: number;
249
+ phase: 'scanning' | 'uploading' | 'finalizing';
250
+ }): Promise<ApiResponse<{
251
+ message: string;
252
+ progress: typeof progress;
253
+ }>>;
254
+ uploadFileContent(repositoryId: string, file: {
255
+ path: string;
256
+ content: string;
257
+ }): Promise<ApiResponse<{
258
+ fileId: string;
259
+ chunksCreated: number;
260
+ language: string;
261
+ }>>;
262
+ /**
263
+ * Upload multiple files in a single request (much faster)
264
+ * Max 100 files per batch
265
+ */
266
+ uploadFilesBatch(repositoryId: string, files: Array<{
267
+ path: string;
268
+ content: string;
269
+ }>): Promise<ApiResponse<{
270
+ processed: number;
271
+ successful: number;
272
+ failed: number;
273
+ totalChunks: number;
274
+ errors?: Array<{
275
+ path: string;
276
+ error: string;
277
+ }>;
278
+ }>>;
279
+ finalizeCodeIndexing(repositoryId: string, options?: {
280
+ mode?: 'full' | 'incremental_committed' | 'incremental_overlay';
281
+ markRawBlobCoverageComplete?: boolean;
282
+ metadata?: Record<string, unknown>;
283
+ purgeStaleFiles?: boolean;
284
+ indexingStartedAt?: string;
285
+ }): Promise<ApiResponse<{
286
+ message: string;
287
+ repositoryId: string;
288
+ }>>;
289
+ /**
290
+ * Update repository commit SHA after indexing (Decision 5: MVP single branch)
291
+ */
292
+ updateRepositoryCommit(repositoryId: string, commit: {
293
+ sha: string;
294
+ branch?: string;
295
+ indexFallbackReason?: string;
296
+ }): Promise<ApiResponse<{
297
+ repository: any;
298
+ }>>;
299
+ getLatestCodeSnapshot(repositoryId: string, options?: {
300
+ branch?: string;
301
+ committedOnly?: boolean;
302
+ }): Promise<ApiResponse<{
303
+ snapshot: any;
304
+ }>>;
305
+ getCodeSnapshot(snapshotId: string): Promise<ApiResponse<{
306
+ snapshot: any;
307
+ }>>;
308
+ createSnapshotArchiveUrl(snapshotId: string, options?: {
309
+ expiresMinutes?: number;
310
+ }): Promise<ApiResponse<{
311
+ snapshot: any;
312
+ archiveUrl: string;
313
+ archiveUri: string;
314
+ expiresAt: string;
315
+ }>>;
316
+ /**
317
+ * Upload files with commit metadata (Decision 1: extended batch endpoint)
318
+ * Supports incremental indexing with commit context for task linking
319
+ */
320
+ uploadFilesWithCommit(repositoryId: string, data: {
321
+ files: Array<{
322
+ path: string;
323
+ content: string;
324
+ changeType?: 'A' | 'M' | 'R';
325
+ oldPath?: string;
326
+ linesAdded?: number;
327
+ linesDeleted?: number;
328
+ }>;
329
+ commit?: {
330
+ sha: string;
331
+ parentShas?: string[];
332
+ authorName: string;
333
+ authorEmail: string;
334
+ authorDate: string;
335
+ message: string;
336
+ };
337
+ deletedPaths?: string[];
338
+ deletedStats?: Array<{
339
+ path: string;
340
+ linesDeleted: number;
341
+ }>;
342
+ }): Promise<ApiResponse<{
343
+ processed: number;
344
+ successful: number;
345
+ failed: number;
346
+ totalChunks: number;
347
+ commitId?: string;
348
+ chunksReused?: number;
349
+ errors?: Array<{
350
+ path: string;
351
+ error: string;
352
+ }>;
353
+ }>>;
354
+ /**
355
+ * Rename a file (Decision 4: keep file_id stable)
356
+ */
357
+ renameFile(repositoryId: string, oldPath: string, newPath: string): Promise<ApiResponse<{
358
+ fileId: string;
359
+ }>>;
360
+ /**
361
+ * Record a commit with file changes (Phase 3 Hardening: multi-commit support)
362
+ * Records commit metadata without uploading file content
363
+ */
364
+ recordCommit(repositoryId: string, commit: {
365
+ sha: string;
366
+ parentShas?: string[];
367
+ authorName: string;
368
+ authorEmail: string;
369
+ authorDate: string;
370
+ committerName?: string;
371
+ committerEmail?: string;
372
+ committerDate?: string;
373
+ message: string;
374
+ fileChanges: Array<{
375
+ path: string;
376
+ changeType: 'A' | 'M' | 'D' | 'R';
377
+ oldPath?: string;
378
+ linesAdded?: number;
379
+ linesDeleted?: number;
380
+ }>;
381
+ }): Promise<ApiResponse<{
382
+ commitId: string;
383
+ isNew: boolean;
384
+ linkedTasks: string[];
385
+ }>>;
386
+ searchCode(options: {
387
+ query: string;
388
+ repositoryId?: string;
389
+ language?: string;
390
+ symbolType?: string;
391
+ limit?: number;
392
+ }): Promise<ApiResponse<{
393
+ query: string;
394
+ results: Array<{
395
+ chunkId: string;
396
+ fileId: string;
397
+ filePath: string;
398
+ repositoryName: string;
399
+ body: string;
400
+ startLine: number;
401
+ endLine: number;
402
+ symbolName?: string;
403
+ symbolType?: string;
404
+ similarity: number;
405
+ }>;
406
+ count: number;
407
+ }>>;
408
+ /**
409
+ * Compute developer expertise for a repository
410
+ */
411
+ computeExpertise(repositoryId: string): Promise<ApiResponse<{
412
+ message: string;
413
+ computed: number;
414
+ updated: number;
415
+ }>>;
416
+ /**
417
+ * Query "who knows" about a code area
418
+ */
419
+ whoKnows(repositoryId: string, codeArea: string, limit?: number): Promise<ApiResponse<{
420
+ experts: Array<{
421
+ authorEmail: string;
422
+ authorName: string;
423
+ totalScore: number;
424
+ commitCount: number;
425
+ linesChanged: number;
426
+ lastActive: string | null;
427
+ areas: string[];
428
+ }>;
429
+ count: number;
430
+ codeArea: string;
431
+ }>>;
432
+ /**
433
+ * Link a task to code manually
434
+ */
435
+ linkTaskToCode(taskId: string, data: {
436
+ repositoryId: string;
437
+ filePath?: string;
438
+ commitSha?: string;
439
+ notes?: string;
440
+ }): Promise<ApiResponse<{
441
+ id: string;
442
+ linkSource: string;
443
+ }>>;
444
+ /**
445
+ * Get commit history for a repository
446
+ */
447
+ getCommits(repositoryId: string, options?: {
448
+ path?: string;
449
+ limit?: number;
450
+ }): Promise<ApiResponse<{
451
+ commits: Array<{
452
+ id: string;
453
+ sha: string;
454
+ message: string;
455
+ authorName: string;
456
+ authorEmail: string;
457
+ authorDate: string;
458
+ filesAdded: number;
459
+ filesModified: number;
460
+ filesDeleted: number;
461
+ linesAdded: number;
462
+ linesDeleted: number;
463
+ taskReferences: string[];
464
+ }>;
465
+ count: number;
466
+ path?: string;
467
+ }>>;
468
+ storeCodeMemory(memory: {
469
+ fact: string;
470
+ category: string;
471
+ filePath?: string;
472
+ repositoryId?: string;
473
+ }): Promise<ApiResponse<{
474
+ id: string;
475
+ factType: string;
476
+ content: string;
477
+ confidence: number;
478
+ createdAt: string;
479
+ updatedAt: string;
480
+ }>>;
481
+ searchCodeMemories(options: {
482
+ query: string;
483
+ category?: string;
484
+ repositoryId?: string;
485
+ limit?: number;
486
+ }): Promise<ApiResponse<{
487
+ memories: Array<{
488
+ id: string;
489
+ factType: string;
490
+ content: string;
491
+ filePath?: string;
492
+ confidence: number;
493
+ }>;
494
+ query: string;
495
+ }>>;
496
+ listCodeMemories(options?: {
497
+ repositoryId?: string;
498
+ limit?: number;
499
+ }): Promise<ApiResponse<{
500
+ memories: Array<{
501
+ id: string;
502
+ factType: string;
503
+ content: string;
504
+ filePath?: string;
505
+ updatedAt: string;
506
+ }>;
507
+ total: number;
508
+ }>>;
509
+ deleteCodeMemory(memoryId: string): Promise<ApiResponse<{
510
+ deleted: boolean;
511
+ }>>;
512
+ private requestMultipart;
513
+ /**
514
+ * Upload a document (PDF, Markdown, or text) into Knowledge as a note.
515
+ * PDFs are first converted to markdown via the backend import endpoint.
516
+ */
517
+ uploadDocument(options: {
518
+ filePath?: string;
519
+ content?: string;
520
+ filename?: string;
521
+ contentType?: string;
522
+ title?: string;
523
+ noteType?: string;
524
+ projectId?: string;
525
+ }): Promise<ApiResponse<{
526
+ note: any;
527
+ }>>;
528
+ listVaultEntries(options?: {
529
+ entryType?: string;
530
+ category?: string;
531
+ search?: string;
532
+ limit?: number;
533
+ }): Promise<ApiResponse<{
534
+ entries: any[];
535
+ }>>;
536
+ createVaultEntry(entry: {
537
+ name: string;
538
+ slug?: string;
539
+ entryType?: string;
540
+ payload: Record<string, string>;
541
+ description?: string;
542
+ tags?: string[];
543
+ category?: string;
544
+ url?: string;
545
+ }): Promise<ApiResponse<{
546
+ entry: any;
547
+ }>>;
548
+ readVaultSecret(entryId: string): Promise<ApiResponse<{
549
+ payload: Record<string, string>;
550
+ }>>;
551
+ updateVaultEntry(entryId: string, updates: {
552
+ name?: string;
553
+ description?: string;
554
+ tags?: string[];
555
+ category?: string;
556
+ url?: string;
557
+ }): Promise<ApiResponse<{
558
+ entry: any;
559
+ }>>;
560
+ searchVaultEntries(query: string, limit?: number): Promise<ApiResponse<{
561
+ entries: any[];
562
+ }>>;
563
+ }
564
+ export declare function createClientFromEnv(): ExfClient;
565
+ //# sourceMappingURL=exfClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exfClient.d.ts","sourceRoot":"","sources":["../src/exfClient.ts"],"names":[],"mappings":"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"}