@fractary/core-mcp 0.1.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.
Files changed (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +272 -0
  3. package/dist/config.d.ts +40 -0
  4. package/dist/config.d.ts.map +1 -0
  5. package/dist/config.js +112 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/handlers/docs.d.ts +58 -0
  8. package/dist/handlers/docs.d.ts.map +1 -0
  9. package/dist/handlers/docs.js +144 -0
  10. package/dist/handlers/docs.js.map +1 -0
  11. package/dist/handlers/file.d.ts +55 -0
  12. package/dist/handlers/file.d.ts.map +1 -0
  13. package/dist/handlers/file.js +153 -0
  14. package/dist/handlers/file.js.map +1 -0
  15. package/dist/handlers/helpers.d.ts +62 -0
  16. package/dist/handlers/helpers.d.ts.map +1 -0
  17. package/dist/handlers/helpers.js +100 -0
  18. package/dist/handlers/helpers.js.map +1 -0
  19. package/dist/handlers/index.d.ts +10 -0
  20. package/dist/handlers/index.d.ts.map +1 -0
  21. package/dist/handlers/index.js +184 -0
  22. package/dist/handlers/index.js.map +1 -0
  23. package/dist/handlers/logs.d.ts +48 -0
  24. package/dist/handlers/logs.d.ts.map +1 -0
  25. package/dist/handlers/logs.js +99 -0
  26. package/dist/handlers/logs.js.map +1 -0
  27. package/dist/handlers/repo.d.ts +158 -0
  28. package/dist/handlers/repo.d.ts.map +1 -0
  29. package/dist/handlers/repo.js +651 -0
  30. package/dist/handlers/repo.js.map +1 -0
  31. package/dist/handlers/security.d.ts +38 -0
  32. package/dist/handlers/security.d.ts.map +1 -0
  33. package/dist/handlers/security.js +79 -0
  34. package/dist/handlers/security.js.map +1 -0
  35. package/dist/handlers/spec.d.ts +39 -0
  36. package/dist/handlers/spec.d.ts.map +1 -0
  37. package/dist/handlers/spec.js +99 -0
  38. package/dist/handlers/spec.js.map +1 -0
  39. package/dist/handlers/work.d.ts +147 -0
  40. package/dist/handlers/work.d.ts.map +1 -0
  41. package/dist/handlers/work.js +373 -0
  42. package/dist/handlers/work.js.map +1 -0
  43. package/dist/index.d.ts +13 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +16 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/server.d.ts +3 -0
  48. package/dist/server.d.ts.map +1 -0
  49. package/dist/server.js +42 -0
  50. package/dist/server.js.map +1 -0
  51. package/dist/tools/docs.d.ts +7 -0
  52. package/dist/tools/docs.d.ts.map +1 -0
  53. package/dist/tools/docs.js +160 -0
  54. package/dist/tools/docs.js.map +1 -0
  55. package/dist/tools/file.d.ts +7 -0
  56. package/dist/tools/file.d.ts.map +1 -0
  57. package/dist/tools/file.js +144 -0
  58. package/dist/tools/file.js.map +1 -0
  59. package/dist/tools/index.d.ts +9 -0
  60. package/dist/tools/index.d.ts.map +1 -0
  61. package/dist/tools/index.js +18 -0
  62. package/dist/tools/index.js.map +1 -0
  63. package/dist/tools/logs.d.ts +7 -0
  64. package/dist/tools/logs.d.ts.map +1 -0
  65. package/dist/tools/logs.js +139 -0
  66. package/dist/tools/logs.js.map +1 -0
  67. package/dist/tools/repo.d.ts +7 -0
  68. package/dist/tools/repo.d.ts.map +1 -0
  69. package/dist/tools/repo.js +694 -0
  70. package/dist/tools/repo.js.map +1 -0
  71. package/dist/tools/spec.d.ts +7 -0
  72. package/dist/tools/spec.d.ts.map +1 -0
  73. package/dist/tools/spec.js +102 -0
  74. package/dist/tools/spec.js.map +1 -0
  75. package/dist/tools/work.d.ts +7 -0
  76. package/dist/tools/work.d.ts.map +1 -0
  77. package/dist/tools/work.js +384 -0
  78. package/dist/tools/work.js.map +1 -0
  79. package/dist/types.d.ts +28 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +6 -0
  82. package/dist/types.js.map +1 -0
  83. package/package.json +75 -0
@@ -0,0 +1,55 @@
1
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
+ import { Config } from '../config.js';
3
+ /**
4
+ * Handler for fractary_file_read
5
+ */
6
+ export declare function handleFileRead(params: {
7
+ path: string;
8
+ encoding?: string;
9
+ }, config: Config): Promise<CallToolResult>;
10
+ /**
11
+ * Handler for fractary_file_write
12
+ */
13
+ export declare function handleFileWrite(params: {
14
+ path: string;
15
+ content: string;
16
+ encoding?: string;
17
+ overwrite?: boolean;
18
+ }, config: Config): Promise<CallToolResult>;
19
+ /**
20
+ * Handler for fractary_file_list
21
+ */
22
+ export declare function handleFileList(params: {
23
+ path?: string;
24
+ pattern?: string;
25
+ recursive?: boolean;
26
+ }, config: Config): Promise<CallToolResult>;
27
+ /**
28
+ * Handler for fractary_file_delete
29
+ */
30
+ export declare function handleFileDelete(params: {
31
+ path: string;
32
+ }, config: Config): Promise<CallToolResult>;
33
+ /**
34
+ * Handler for fractary_file_exists
35
+ */
36
+ export declare function handleFileExists(params: {
37
+ path: string;
38
+ }, config: Config): Promise<CallToolResult>;
39
+ /**
40
+ * Handler for fractary_file_copy
41
+ */
42
+ export declare function handleFileCopy(params: {
43
+ source: string;
44
+ destination: string;
45
+ overwrite?: boolean;
46
+ }, config: Config): Promise<CallToolResult>;
47
+ /**
48
+ * Handler for fractary_file_move
49
+ */
50
+ export declare function handleFileMove(params: {
51
+ source: string;
52
+ destination: string;
53
+ overwrite?: boolean;
54
+ }, config: Config): Promise<CallToolResult>;
55
+ //# sourceMappingURL=file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/handlers/file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAItC;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE;IACN,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,EACD,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAczB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE;IACN,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,EACD,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAuBzB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE;IACN,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,EACD,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAsBzB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAczB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAczB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE;IACN,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,EACD,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAwBzB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE;IACN,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,EACD,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAwBzB"}
@@ -0,0 +1,153 @@
1
+ import { FileManager } from '@fractary/core/file';
2
+ import { minimatch } from 'minimatch';
3
+ import { successResult, errorResult } from './helpers.js';
4
+ import { validatePath } from './security.js';
5
+ /**
6
+ * Handler for fractary_file_read
7
+ */
8
+ export async function handleFileRead(params, config) {
9
+ try {
10
+ const basePath = config.file?.basePath || '.fractary/files';
11
+ // Validate path to prevent directory traversal
12
+ const safePath = validatePath(params.path, basePath);
13
+ const manager = new FileManager({ basePath });
14
+ const content = await manager.read(safePath);
15
+ return successResult({ path: safePath, content });
16
+ }
17
+ catch (error) {
18
+ const message = error instanceof Error ? error.message : 'Unknown error';
19
+ return errorResult(`Error reading file: ${message}`);
20
+ }
21
+ }
22
+ /**
23
+ * Handler for fractary_file_write
24
+ */
25
+ export async function handleFileWrite(params, config) {
26
+ try {
27
+ const basePath = config.file?.basePath || '.fractary/files';
28
+ // Validate path to prevent directory traversal
29
+ const safePath = validatePath(params.path, basePath);
30
+ const manager = new FileManager({ basePath });
31
+ // Check if file exists and overwrite is false
32
+ if (params.overwrite === false) {
33
+ const exists = await manager.exists(safePath);
34
+ if (exists) {
35
+ return errorResult(`File already exists and overwrite is false: ${safePath}`);
36
+ }
37
+ }
38
+ const path = await manager.write(safePath, params.content);
39
+ return successResult({ path, written: true });
40
+ }
41
+ catch (error) {
42
+ const message = error instanceof Error ? error.message : 'Unknown error';
43
+ return errorResult(`Error writing file: ${message}`);
44
+ }
45
+ }
46
+ /**
47
+ * Handler for fractary_file_list
48
+ */
49
+ export async function handleFileList(params, config) {
50
+ try {
51
+ const basePath = config.file?.basePath || '.fractary/files';
52
+ // Validate path to prevent directory traversal (if provided)
53
+ const safePath = params.path ? validatePath(params.path, basePath) : undefined;
54
+ const manager = new FileManager({ basePath });
55
+ const files = await manager.list(safePath);
56
+ // Apply pattern filtering if provided using safe minimatch library
57
+ let filteredFiles = files;
58
+ if (params.pattern) {
59
+ // Use minimatch for safe glob pattern matching (prevents ReDoS attacks)
60
+ filteredFiles = files.filter((file) => minimatch(file, params.pattern));
61
+ }
62
+ return successResult({ files: filteredFiles, count: filteredFiles.length });
63
+ }
64
+ catch (error) {
65
+ const message = error instanceof Error ? error.message : 'Unknown error';
66
+ return errorResult(`Error listing files: ${message}`);
67
+ }
68
+ }
69
+ /**
70
+ * Handler for fractary_file_delete
71
+ */
72
+ export async function handleFileDelete(params, config) {
73
+ try {
74
+ const basePath = config.file?.basePath || '.fractary/files';
75
+ // Validate path to prevent directory traversal
76
+ const safePath = validatePath(params.path, basePath);
77
+ const manager = new FileManager({ basePath });
78
+ await manager.delete(safePath);
79
+ return successResult({ path: safePath, deleted: true });
80
+ }
81
+ catch (error) {
82
+ const message = error instanceof Error ? error.message : 'Unknown error';
83
+ return errorResult(`Error deleting file: ${message}`);
84
+ }
85
+ }
86
+ /**
87
+ * Handler for fractary_file_exists
88
+ */
89
+ export async function handleFileExists(params, config) {
90
+ try {
91
+ const basePath = config.file?.basePath || '.fractary/files';
92
+ // Validate path to prevent directory traversal
93
+ const safePath = validatePath(params.path, basePath);
94
+ const manager = new FileManager({ basePath });
95
+ const exists = await manager.exists(safePath);
96
+ return successResult({ path: safePath, exists });
97
+ }
98
+ catch (error) {
99
+ const message = error instanceof Error ? error.message : 'Unknown error';
100
+ return errorResult(`Error checking file existence: ${message}`);
101
+ }
102
+ }
103
+ /**
104
+ * Handler for fractary_file_copy
105
+ */
106
+ export async function handleFileCopy(params, config) {
107
+ try {
108
+ const basePath = config.file?.basePath || '.fractary/files';
109
+ // Validate both source and destination paths to prevent directory traversal
110
+ const safeSource = validatePath(params.source, basePath);
111
+ const safeDestination = validatePath(params.destination, basePath);
112
+ const manager = new FileManager({ basePath });
113
+ // Check if destination exists and overwrite is false
114
+ if (params.overwrite === false) {
115
+ const exists = await manager.exists(safeDestination);
116
+ if (exists) {
117
+ return errorResult(`Destination already exists and overwrite is false: ${safeDestination}`);
118
+ }
119
+ }
120
+ const path = await manager.copy(safeSource, safeDestination);
121
+ return successResult({ source: safeSource, destination: path, copied: true });
122
+ }
123
+ catch (error) {
124
+ const message = error instanceof Error ? error.message : 'Unknown error';
125
+ return errorResult(`Error copying file: ${message}`);
126
+ }
127
+ }
128
+ /**
129
+ * Handler for fractary_file_move
130
+ */
131
+ export async function handleFileMove(params, config) {
132
+ try {
133
+ const basePath = config.file?.basePath || '.fractary/files';
134
+ // Validate both source and destination paths to prevent directory traversal
135
+ const safeSource = validatePath(params.source, basePath);
136
+ const safeDestination = validatePath(params.destination, basePath);
137
+ const manager = new FileManager({ basePath });
138
+ // Check if destination exists and overwrite is false
139
+ if (params.overwrite === false) {
140
+ const exists = await manager.exists(safeDestination);
141
+ if (exists) {
142
+ return errorResult(`Destination already exists and overwrite is false: ${safeDestination}`);
143
+ }
144
+ }
145
+ const path = await manager.move(safeSource, safeDestination);
146
+ return successResult({ source: safeSource, destination: path, moved: true });
147
+ }
148
+ catch (error) {
149
+ const message = error instanceof Error ? error.message : 'Unknown error';
150
+ return errorResult(`Error moving file: ${message}`);
151
+ }
152
+ }
153
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/handlers/file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
+ /**
3
+ * Helper function to create a successful tool result
4
+ * @param data - The data to return
5
+ * @returns CallToolResult with success data
6
+ */
7
+ export declare function successResult(data: unknown): CallToolResult;
8
+ /**
9
+ * Helper function to create an error tool result
10
+ * @param message - The error message
11
+ * @returns CallToolResult with error
12
+ */
13
+ export declare function errorResult(message: string): CallToolResult;
14
+ /**
15
+ * Type guard for issue state
16
+ */
17
+ export declare function isValidIssueState(value: string | undefined): value is 'open' | 'closed' | 'all' | undefined;
18
+ /**
19
+ * Type guard for PR state
20
+ */
21
+ export declare function isValidPrState(value: string | undefined): value is 'open' | 'closed' | undefined;
22
+ /**
23
+ * Type guard for FABER context
24
+ */
25
+ export declare function isValidFaberContext(value: string | undefined): value is 'frame' | 'architect' | 'build' | 'evaluate' | 'release' | undefined;
26
+ /**
27
+ * Type guard for branch location
28
+ */
29
+ export declare function isValidBranchLocation(value: string | undefined): value is 'local' | 'remote' | 'both' | undefined;
30
+ /**
31
+ * Type guard for branch type
32
+ */
33
+ export declare function isValidBranchType(value: string): value is 'feature' | 'fix' | 'chore' | 'docs';
34
+ /**
35
+ * Type guard for commit type
36
+ */
37
+ export declare function isValidCommitType(value: string | undefined): value is 'feat' | 'fix' | 'docs' | 'style' | 'refactor' | 'test' | 'chore' | undefined;
38
+ /**
39
+ * Type guard for PR review action
40
+ */
41
+ export declare function isValidReviewAction(value: string): value is 'approve' | 'request_changes' | 'comment';
42
+ /**
43
+ * Type guard for PR merge strategy
44
+ */
45
+ export declare function isValidMergeStrategy(value: string | undefined): value is 'merge' | 'squash' | 'rebase' | undefined;
46
+ /**
47
+ * Validate that work config exists and has required fields
48
+ */
49
+ export declare function validateWorkConfig(config: {
50
+ work?: unknown;
51
+ }): config is {
52
+ work: Record<string, unknown>;
53
+ };
54
+ /**
55
+ * Validate that repo config exists and has required fields
56
+ */
57
+ export declare function validateRepoConfig(config: {
58
+ repo?: unknown;
59
+ }): config is {
60
+ repo: Record<string, unknown>;
61
+ };
62
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/handlers/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAS3D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAU3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAE3G;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEhG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAE5I;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAEjH;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAE9F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAEnJ;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,SAAS,GAAG,iBAAiB,GAAG,SAAS,CAErG;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAElH;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAM1G;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAM1G"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Helper function to create a successful tool result
3
+ * @param data - The data to return
4
+ * @returns CallToolResult with success data
5
+ */
6
+ export function successResult(data) {
7
+ return {
8
+ content: [
9
+ {
10
+ type: 'text',
11
+ text: JSON.stringify(data, null, 2),
12
+ },
13
+ ],
14
+ };
15
+ }
16
+ /**
17
+ * Helper function to create an error tool result
18
+ * @param message - The error message
19
+ * @returns CallToolResult with error
20
+ */
21
+ export function errorResult(message) {
22
+ return {
23
+ content: [
24
+ {
25
+ type: 'text',
26
+ text: JSON.stringify({ error: message }, null, 2),
27
+ },
28
+ ],
29
+ isError: true,
30
+ };
31
+ }
32
+ /**
33
+ * Type guard for issue state
34
+ */
35
+ export function isValidIssueState(value) {
36
+ return value === undefined || ['open', 'closed', 'all'].includes(value);
37
+ }
38
+ /**
39
+ * Type guard for PR state
40
+ */
41
+ export function isValidPrState(value) {
42
+ return value === undefined || ['open', 'closed'].includes(value);
43
+ }
44
+ /**
45
+ * Type guard for FABER context
46
+ */
47
+ export function isValidFaberContext(value) {
48
+ return value === undefined || ['frame', 'architect', 'build', 'evaluate', 'release'].includes(value);
49
+ }
50
+ /**
51
+ * Type guard for branch location
52
+ */
53
+ export function isValidBranchLocation(value) {
54
+ return value === undefined || ['local', 'remote', 'both'].includes(value);
55
+ }
56
+ /**
57
+ * Type guard for branch type
58
+ */
59
+ export function isValidBranchType(value) {
60
+ return ['feature', 'fix', 'chore', 'docs'].includes(value);
61
+ }
62
+ /**
63
+ * Type guard for commit type
64
+ */
65
+ export function isValidCommitType(value) {
66
+ return value === undefined || ['feat', 'fix', 'docs', 'style', 'refactor', 'test', 'chore'].includes(value);
67
+ }
68
+ /**
69
+ * Type guard for PR review action
70
+ */
71
+ export function isValidReviewAction(value) {
72
+ return ['approve', 'request_changes', 'comment'].includes(value);
73
+ }
74
+ /**
75
+ * Type guard for PR merge strategy
76
+ */
77
+ export function isValidMergeStrategy(value) {
78
+ return value === undefined || ['merge', 'squash', 'rebase'].includes(value);
79
+ }
80
+ /**
81
+ * Validate that work config exists and has required fields
82
+ */
83
+ export function validateWorkConfig(config) {
84
+ if (!config.work) {
85
+ return false;
86
+ }
87
+ const workConfig = config.work;
88
+ return !!(workConfig.platform && workConfig.token);
89
+ }
90
+ /**
91
+ * Validate that repo config exists and has required fields
92
+ */
93
+ export function validateRepoConfig(config) {
94
+ if (!config.repo) {
95
+ return false;
96
+ }
97
+ const repoConfig = config.repo;
98
+ return !!(repoConfig.platform && repoConfig.token);
99
+ }
100
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/handlers/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Handler registration system - routes tool calls to appropriate handlers
3
+ */
4
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
5
+ import { Config } from '../config.js';
6
+ /**
7
+ * Route tool calls to appropriate handlers
8
+ */
9
+ export declare function handleToolCall(name: string, args: Record<string, unknown>, config: Config): Promise<CallToolResult>;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAWtC;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAiLzB"}
@@ -0,0 +1,184 @@
1
+ import { errorResult } from './helpers.js';
2
+ // Import all handler modules
3
+ import * as specHandlers from './spec.js';
4
+ import * as logsHandlers from './logs.js';
5
+ import * as fileHandlers from './file.js';
6
+ import * as docsHandlers from './docs.js';
7
+ import * as workHandlers from './work.js';
8
+ import * as repoHandlers from './repo.js';
9
+ /**
10
+ * Route tool calls to appropriate handlers
11
+ */
12
+ export async function handleToolCall(name, args, config) {
13
+ switch (name) {
14
+ // Spec module (5 tools)
15
+ case 'fractary_spec_create':
16
+ return specHandlers.handleSpecCreate(args, config);
17
+ case 'fractary_spec_validate':
18
+ return specHandlers.handleSpecValidate(args, config);
19
+ case 'fractary_spec_refine':
20
+ return specHandlers.handleSpecRefine(args, config);
21
+ case 'fractary_spec_list':
22
+ return specHandlers.handleSpecList(args, config);
23
+ case 'fractary_spec_read':
24
+ return specHandlers.handleSpecRead(args, config);
25
+ // Logs module (5 tools)
26
+ case 'fractary_logs_capture':
27
+ return logsHandlers.handleLogsCapture(args, config);
28
+ case 'fractary_logs_search':
29
+ return logsHandlers.handleLogsSearch(args, config);
30
+ case 'fractary_logs_archive':
31
+ return logsHandlers.handleLogsArchive(args, config);
32
+ case 'fractary_logs_list':
33
+ return logsHandlers.handleLogsList(args, config);
34
+ case 'fractary_logs_read':
35
+ return logsHandlers.handleLogsRead(args, config);
36
+ // File module (7 tools)
37
+ case 'fractary_file_read':
38
+ return fileHandlers.handleFileRead(args, config);
39
+ case 'fractary_file_write':
40
+ return fileHandlers.handleFileWrite(args, config);
41
+ case 'fractary_file_list':
42
+ return fileHandlers.handleFileList(args, config);
43
+ case 'fractary_file_delete':
44
+ return fileHandlers.handleFileDelete(args, config);
45
+ case 'fractary_file_exists':
46
+ return fileHandlers.handleFileExists(args, config);
47
+ case 'fractary_file_copy':
48
+ return fileHandlers.handleFileCopy(args, config);
49
+ case 'fractary_file_move':
50
+ return fileHandlers.handleFileMove(args, config);
51
+ // Docs module (7 tools)
52
+ case 'fractary_docs_create':
53
+ return docsHandlers.handleDocsCreate(args, config);
54
+ case 'fractary_docs_update':
55
+ return docsHandlers.handleDocsUpdate(args, config);
56
+ case 'fractary_docs_search':
57
+ return docsHandlers.handleDocsSearch(args, config);
58
+ case 'fractary_docs_export':
59
+ return docsHandlers.handleDocsExport(args, config);
60
+ case 'fractary_docs_list':
61
+ return docsHandlers.handleDocsList(args, config);
62
+ case 'fractary_docs_read':
63
+ return docsHandlers.handleDocsRead(args, config);
64
+ case 'fractary_docs_delete':
65
+ return docsHandlers.handleDocsDelete(args, config);
66
+ // Work module (19 tools)
67
+ case 'fractary_work_issue_fetch':
68
+ return workHandlers.handleWorkIssueFetch(args, config);
69
+ case 'fractary_work_issue_create':
70
+ return workHandlers.handleWorkIssueCreate(args, config);
71
+ case 'fractary_work_issue_update':
72
+ return workHandlers.handleWorkIssueUpdate(args, config);
73
+ case 'fractary_work_issue_assign':
74
+ return workHandlers.handleWorkIssueAssign(args, config);
75
+ case 'fractary_work_issue_unassign':
76
+ return workHandlers.handleWorkIssueUnassign(args, config);
77
+ case 'fractary_work_issue_close':
78
+ return workHandlers.handleWorkIssueClose(args, config);
79
+ case 'fractary_work_issue_reopen':
80
+ return workHandlers.handleWorkIssueReopen(args, config);
81
+ case 'fractary_work_issue_search':
82
+ return workHandlers.handleWorkIssueSearch(args, config);
83
+ case 'fractary_work_issue_classify':
84
+ return workHandlers.handleWorkIssueClassify(args, config);
85
+ case 'fractary_work_comment_create':
86
+ return workHandlers.handleWorkCommentCreate(args, config);
87
+ case 'fractary_work_comment_list':
88
+ return workHandlers.handleWorkCommentList(args, config);
89
+ case 'fractary_work_label_add':
90
+ return workHandlers.handleWorkLabelAdd(args, config);
91
+ case 'fractary_work_label_remove':
92
+ return workHandlers.handleWorkLabelRemove(args, config);
93
+ case 'fractary_work_label_set':
94
+ return workHandlers.handleWorkLabelSet(args, config);
95
+ case 'fractary_work_label_list':
96
+ return workHandlers.handleWorkLabelList(args, config);
97
+ case 'fractary_work_milestone_create':
98
+ return workHandlers.handleWorkMilestoneCreate(args, config);
99
+ case 'fractary_work_milestone_list':
100
+ return workHandlers.handleWorkMilestoneList(args, config);
101
+ case 'fractary_work_milestone_set':
102
+ return workHandlers.handleWorkMilestoneSet(args, config);
103
+ case 'fractary_work_milestone_remove':
104
+ return workHandlers.handleWorkMilestoneRemove(args, config);
105
+ // Repo module (38 tools)
106
+ case 'fractary_repo_status':
107
+ return repoHandlers.handleRepoStatus(args, config);
108
+ case 'fractary_repo_branch_current':
109
+ return repoHandlers.handleRepoBranchCurrent(args, config);
110
+ case 'fractary_repo_is_dirty':
111
+ return repoHandlers.handleRepoIsDirty(args, config);
112
+ case 'fractary_repo_diff':
113
+ return repoHandlers.handleRepoDiff(args, config);
114
+ case 'fractary_repo_branch_create':
115
+ return repoHandlers.handleRepoBranchCreate(args, config);
116
+ case 'fractary_repo_branch_delete':
117
+ return repoHandlers.handleRepoBranchDelete(args, config);
118
+ case 'fractary_repo_branch_list':
119
+ return repoHandlers.handleRepoBranchList(args, config);
120
+ case 'fractary_repo_branch_get':
121
+ return repoHandlers.handleRepoBranchGet(args, config);
122
+ case 'fractary_repo_checkout':
123
+ return repoHandlers.handleRepoCheckout(args, config);
124
+ case 'fractary_repo_branch_name_generate':
125
+ return repoHandlers.handleRepoBranchNameGenerate(args, config);
126
+ case 'fractary_repo_stage':
127
+ return repoHandlers.handleRepoStage(args, config);
128
+ case 'fractary_repo_stage_all':
129
+ return repoHandlers.handleRepoStageAll(args, config);
130
+ case 'fractary_repo_unstage':
131
+ return repoHandlers.handleRepoUnstage(args, config);
132
+ case 'fractary_repo_commit':
133
+ return repoHandlers.handleRepoCommit(args, config);
134
+ case 'fractary_repo_commit_get':
135
+ return repoHandlers.handleRepoCommitGet(args, config);
136
+ case 'fractary_repo_commit_list':
137
+ return repoHandlers.handleRepoCommitList(args, config);
138
+ case 'fractary_repo_push':
139
+ return repoHandlers.handleRepoPush(args, config);
140
+ case 'fractary_repo_pull':
141
+ return repoHandlers.handleRepoPull(args, config);
142
+ case 'fractary_repo_fetch':
143
+ return repoHandlers.handleRepoFetch(args, config);
144
+ case 'fractary_repo_pr_create':
145
+ return repoHandlers.handleRepoPrCreate(args, config);
146
+ case 'fractary_repo_pr_get':
147
+ return repoHandlers.handleRepoPrGet(args, config);
148
+ case 'fractary_repo_pr_update':
149
+ return repoHandlers.handleRepoPrUpdate(args, config);
150
+ case 'fractary_repo_pr_comment':
151
+ return repoHandlers.handleRepoPrComment(args, config);
152
+ case 'fractary_repo_pr_review':
153
+ return repoHandlers.handleRepoPrReview(args, config);
154
+ case 'fractary_repo_pr_request_review':
155
+ return repoHandlers.handleRepoPrRequestReview(args, config);
156
+ case 'fractary_repo_pr_approve':
157
+ return repoHandlers.handleRepoPrApprove(args, config);
158
+ case 'fractary_repo_pr_merge':
159
+ return repoHandlers.handleRepoPrMerge(args, config);
160
+ case 'fractary_repo_pr_list':
161
+ return repoHandlers.handleRepoPrList(args, config);
162
+ case 'fractary_repo_tag_create':
163
+ return repoHandlers.handleRepoTagCreate(args, config);
164
+ case 'fractary_repo_tag_delete':
165
+ return repoHandlers.handleRepoTagDelete(args, config);
166
+ case 'fractary_repo_tag_push':
167
+ return repoHandlers.handleRepoTagPush(args, config);
168
+ case 'fractary_repo_tag_list':
169
+ return repoHandlers.handleRepoTagList(args, config);
170
+ case 'fractary_repo_worktree_create':
171
+ return repoHandlers.handleRepoWorktreeCreate(args, config);
172
+ case 'fractary_repo_worktree_list':
173
+ return repoHandlers.handleRepoWorktreeList(args, config);
174
+ case 'fractary_repo_worktree_remove':
175
+ return repoHandlers.handleRepoWorktreeRemove(args, config);
176
+ case 'fractary_repo_worktree_prune':
177
+ return repoHandlers.handleRepoWorktreePrune(args, config);
178
+ case 'fractary_repo_worktree_cleanup':
179
+ return repoHandlers.handleRepoWorktreeCleanup(args, config);
180
+ default:
181
+ return errorResult(`Unknown tool: ${name}`);
182
+ }
183
+ }
184
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
+ import { Config } from '../config.js';
3
+ /**
4
+ * Handler for fractary_logs_capture
5
+ */
6
+ export declare function handleLogsCapture(params: {
7
+ type: string;
8
+ title: string;
9
+ content: string;
10
+ issue_number?: number;
11
+ metadata?: Record<string, unknown>;
12
+ }, config: Config): Promise<CallToolResult>;
13
+ /**
14
+ * Handler for fractary_logs_search
15
+ */
16
+ export declare function handleLogsSearch(params: {
17
+ query: string;
18
+ type?: string;
19
+ issue_number?: number;
20
+ since?: string;
21
+ until?: string;
22
+ regex?: boolean;
23
+ }, config: Config): Promise<CallToolResult>;
24
+ /**
25
+ * Handler for fractary_logs_archive
26
+ */
27
+ export declare function handleLogsArchive(params: {
28
+ max_age_days?: number;
29
+ compress?: boolean;
30
+ }, config: Config): Promise<CallToolResult>;
31
+ /**
32
+ * Handler for fractary_logs_list
33
+ */
34
+ export declare function handleLogsList(params: {
35
+ type?: string;
36
+ status?: string;
37
+ issue_number?: number;
38
+ since?: string;
39
+ until?: string;
40
+ limit?: number;
41
+ }, config: Config): Promise<CallToolResult>;
42
+ /**
43
+ * Handler for fractary_logs_read
44
+ */
45
+ export declare function handleLogsRead(params: {
46
+ log_id: string;
47
+ }, config: Config): Promise<CallToolResult>;
48
+ //# sourceMappingURL=logs.d.ts.map