@cotestdev/ai-runner 0.0.5 → 0.0.7

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 (164) hide show
  1. package/.github/workflows/playwright.yml +27 -0
  2. package/dist/agents/logger.d.ts.map +1 -0
  3. package/dist/agents/logger.js.map +1 -0
  4. package/dist/{ai-runner/src/agents → agents}/playwright-executor.d.ts +3 -1
  5. package/dist/agents/playwright-executor.d.ts.map +1 -0
  6. package/dist/{ai-runner/src/agents → agents}/playwright-executor.js +74 -18
  7. package/dist/agents/playwright-executor.js.map +1 -0
  8. package/dist/agents/tools/playwright-backend-adapter.d.ts.map +1 -0
  9. package/dist/{ai-runner/src/agents → agents}/tools/playwright-backend-adapter.js +2 -1
  10. package/dist/agents/tools/playwright-backend-adapter.js.map +1 -0
  11. package/dist/agents/types.d.ts.map +1 -0
  12. package/dist/{core-infra/src → agents}/types.js.map +1 -1
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/{ai-runner/src/runner.d.ts → runner.d.ts} +7 -2
  16. package/dist/runner.d.ts.map +1 -0
  17. package/dist/{ai-runner/src/runner.js → runner.js} +23 -12
  18. package/dist/runner.js.map +1 -0
  19. package/dist/tools/index.d.ts.map +1 -0
  20. package/dist/tools/index.js.map +1 -0
  21. package/dist/tools/playwright-groups.d.ts.map +1 -0
  22. package/dist/tools/playwright-groups.js.map +1 -0
  23. package/dist/types/external.d.ts.map +1 -0
  24. package/dist/types/external.js.map +1 -0
  25. package/dist/types/index.d.ts.map +1 -0
  26. package/dist/types/index.js.map +1 -0
  27. package/package.json +5 -9
  28. package/playwright.config.ts +38 -0
  29. package/src/agents/logger.ts +20 -0
  30. package/src/agents/playwright-executor.ts +284 -0
  31. package/src/agents/tools/playwright-backend-adapter.ts +135 -0
  32. package/src/agents/tools/playwright-mcp-types.d.ts +72 -0
  33. package/src/agents/types.ts +80 -0
  34. package/src/index.ts +27 -0
  35. package/src/runner.ts +237 -0
  36. package/src/tools/index.ts +48 -0
  37. package/src/tools/playwright-groups.ts +54 -0
  38. package/src/types/external.ts +7 -0
  39. package/src/types/index.ts +118 -0
  40. package/tests/agent/playwright.config.ts +32 -0
  41. package/tests/agent/test-heal-agent.spec.ts +42 -0
  42. package/tsconfig.json +26 -0
  43. package/dist/ai-runner/src/agents/logger.d.ts.map +0 -1
  44. package/dist/ai-runner/src/agents/logger.js.map +0 -1
  45. package/dist/ai-runner/src/agents/playwright-executor.d.ts.map +0 -1
  46. package/dist/ai-runner/src/agents/playwright-executor.js.map +0 -1
  47. package/dist/ai-runner/src/agents/tools/playwright-backend-adapter.d.ts.map +0 -1
  48. package/dist/ai-runner/src/agents/tools/playwright-backend-adapter.js.map +0 -1
  49. package/dist/ai-runner/src/agents/types.d.ts.map +0 -1
  50. package/dist/ai-runner/src/agents/types.js.map +0 -1
  51. package/dist/ai-runner/src/index.d.ts.map +0 -1
  52. package/dist/ai-runner/src/index.js.map +0 -1
  53. package/dist/ai-runner/src/runner.d.ts.map +0 -1
  54. package/dist/ai-runner/src/runner.js.map +0 -1
  55. package/dist/ai-runner/src/tools/index.d.ts.map +0 -1
  56. package/dist/ai-runner/src/tools/index.js.map +0 -1
  57. package/dist/ai-runner/src/tools/playwright-groups.d.ts.map +0 -1
  58. package/dist/ai-runner/src/tools/playwright-groups.js.map +0 -1
  59. package/dist/ai-runner/src/types/external.d.ts.map +0 -1
  60. package/dist/ai-runner/src/types/external.js.map +0 -1
  61. package/dist/ai-runner/src/types/index.d.ts.map +0 -1
  62. package/dist/ai-runner/src/types/index.js.map +0 -1
  63. package/dist/core-infra/src/directory-validator.d.ts +0 -29
  64. package/dist/core-infra/src/directory-validator.d.ts.map +0 -1
  65. package/dist/core-infra/src/directory-validator.js +0 -91
  66. package/dist/core-infra/src/directory-validator.js.map +0 -1
  67. package/dist/core-infra/src/index.d.ts +0 -14
  68. package/dist/core-infra/src/index.d.ts.map +0 -1
  69. package/dist/core-infra/src/index.js +0 -44
  70. package/dist/core-infra/src/index.js.map +0 -1
  71. package/dist/core-infra/src/mcp/file-mcp-manager.d.ts +0 -14
  72. package/dist/core-infra/src/mcp/file-mcp-manager.d.ts.map +0 -1
  73. package/dist/core-infra/src/mcp/file-mcp-manager.js +0 -46
  74. package/dist/core-infra/src/mcp/file-mcp-manager.js.map +0 -1
  75. package/dist/core-infra/src/mcp/index.d.ts +0 -21
  76. package/dist/core-infra/src/mcp/index.d.ts.map +0 -1
  77. package/dist/core-infra/src/mcp/index.js +0 -17
  78. package/dist/core-infra/src/mcp/index.js.map +0 -1
  79. package/dist/core-infra/src/mcp/mcp-client.d.ts +0 -128
  80. package/dist/core-infra/src/mcp/mcp-client.d.ts.map +0 -1
  81. package/dist/core-infra/src/mcp/mcp-client.js +0 -163
  82. package/dist/core-infra/src/mcp/mcp-client.js.map +0 -1
  83. package/dist/core-infra/src/mcp/mcp-manager.d.ts +0 -21
  84. package/dist/core-infra/src/mcp/mcp-manager.d.ts.map +0 -1
  85. package/dist/core-infra/src/mcp/mcp-manager.js +0 -99
  86. package/dist/core-infra/src/mcp/mcp-manager.js.map +0 -1
  87. package/dist/core-infra/src/mcp/playwright-mcp-manager.d.ts +0 -19
  88. package/dist/core-infra/src/mcp/playwright-mcp-manager.d.ts.map +0 -1
  89. package/dist/core-infra/src/mcp/playwright-mcp-manager.js +0 -121
  90. package/dist/core-infra/src/mcp/playwright-mcp-manager.js.map +0 -1
  91. package/dist/core-infra/src/model.d.ts +0 -13
  92. package/dist/core-infra/src/model.d.ts.map +0 -1
  93. package/dist/core-infra/src/model.js +0 -191
  94. package/dist/core-infra/src/model.js.map +0 -1
  95. package/dist/core-infra/src/repositories/BaseRepository.d.ts +0 -69
  96. package/dist/core-infra/src/repositories/BaseRepository.d.ts.map +0 -1
  97. package/dist/core-infra/src/repositories/BaseRepository.js +0 -213
  98. package/dist/core-infra/src/repositories/BaseRepository.js.map +0 -1
  99. package/dist/core-infra/src/repositories/DirectoryRepository.d.ts +0 -70
  100. package/dist/core-infra/src/repositories/DirectoryRepository.d.ts.map +0 -1
  101. package/dist/core-infra/src/repositories/DirectoryRepository.js +0 -336
  102. package/dist/core-infra/src/repositories/DirectoryRepository.js.map +0 -1
  103. package/dist/core-infra/src/repositories/ExplorationRepository.d.ts +0 -34
  104. package/dist/core-infra/src/repositories/ExplorationRepository.d.ts.map +0 -1
  105. package/dist/core-infra/src/repositories/ExplorationRepository.js +0 -54
  106. package/dist/core-infra/src/repositories/ExplorationRepository.js.map +0 -1
  107. package/dist/core-infra/src/repositories/FileRepository.d.ts +0 -56
  108. package/dist/core-infra/src/repositories/FileRepository.d.ts.map +0 -1
  109. package/dist/core-infra/src/repositories/FileRepository.js +0 -132
  110. package/dist/core-infra/src/repositories/FileRepository.js.map +0 -1
  111. package/dist/core-infra/src/repositories/ModelConfigRepository.d.ts +0 -38
  112. package/dist/core-infra/src/repositories/ModelConfigRepository.d.ts.map +0 -1
  113. package/dist/core-infra/src/repositories/ModelConfigRepository.js +0 -59
  114. package/dist/core-infra/src/repositories/ModelConfigRepository.js.map +0 -1
  115. package/dist/core-infra/src/repositories/ProjectRepository.d.ts +0 -32
  116. package/dist/core-infra/src/repositories/ProjectRepository.d.ts.map +0 -1
  117. package/dist/core-infra/src/repositories/ProjectRepository.js +0 -67
  118. package/dist/core-infra/src/repositories/ProjectRepository.js.map +0 -1
  119. package/dist/core-infra/src/repositories/SettingsRepository.d.ts +0 -19
  120. package/dist/core-infra/src/repositories/SettingsRepository.d.ts.map +0 -1
  121. package/dist/core-infra/src/repositories/SettingsRepository.js +0 -72
  122. package/dist/core-infra/src/repositories/SettingsRepository.js.map +0 -1
  123. package/dist/core-infra/src/repositories/TableDataRepository.d.ts +0 -22
  124. package/dist/core-infra/src/repositories/TableDataRepository.d.ts.map +0 -1
  125. package/dist/core-infra/src/repositories/TableDataRepository.js +0 -33
  126. package/dist/core-infra/src/repositories/TableDataRepository.js.map +0 -1
  127. package/dist/core-infra/src/repositories/TestCaseRepository.d.ts +0 -120
  128. package/dist/core-infra/src/repositories/TestCaseRepository.d.ts.map +0 -1
  129. package/dist/core-infra/src/repositories/TestCaseRepository.js +0 -463
  130. package/dist/core-infra/src/repositories/TestCaseRepository.js.map +0 -1
  131. package/dist/core-infra/src/repositories/TestPlanRepository.d.ts +0 -35
  132. package/dist/core-infra/src/repositories/TestPlanRepository.d.ts.map +0 -1
  133. package/dist/core-infra/src/repositories/TestPlanRepository.js +0 -80
  134. package/dist/core-infra/src/repositories/TestPlanRepository.js.map +0 -1
  135. package/dist/core-infra/src/repositories/TestResultRepository.d.ts +0 -30
  136. package/dist/core-infra/src/repositories/TestResultRepository.d.ts.map +0 -1
  137. package/dist/core-infra/src/repositories/TestResultRepository.js +0 -54
  138. package/dist/core-infra/src/repositories/TestResultRepository.js.map +0 -1
  139. package/dist/core-infra/src/repositories/index.d.ts +0 -17
  140. package/dist/core-infra/src/repositories/index.d.ts.map +0 -1
  141. package/dist/core-infra/src/repositories/index.js +0 -31
  142. package/dist/core-infra/src/repositories/index.js.map +0 -1
  143. package/dist/core-infra/src/storageService.d.ts +0 -131
  144. package/dist/core-infra/src/storageService.d.ts.map +0 -1
  145. package/dist/core-infra/src/storageService.js +0 -304
  146. package/dist/core-infra/src/storageService.js.map +0 -1
  147. package/dist/core-infra/src/types.d.ts +0 -219
  148. package/dist/core-infra/src/types.d.ts.map +0 -1
  149. package/dist/core-infra/src/types.js +0 -3
  150. /package/dist/{ai-runner/src/agents → agents}/logger.d.ts +0 -0
  151. /package/dist/{ai-runner/src/agents → agents}/logger.js +0 -0
  152. /package/dist/{ai-runner/src/agents → agents}/tools/playwright-backend-adapter.d.ts +0 -0
  153. /package/dist/{ai-runner/src/agents → agents}/types.d.ts +0 -0
  154. /package/dist/{ai-runner/src/agents → agents}/types.js +0 -0
  155. /package/dist/{ai-runner/src/index.d.ts → index.d.ts} +0 -0
  156. /package/dist/{ai-runner/src/index.js → index.js} +0 -0
  157. /package/dist/{ai-runner/src/tools → tools}/index.d.ts +0 -0
  158. /package/dist/{ai-runner/src/tools → tools}/index.js +0 -0
  159. /package/dist/{ai-runner/src/tools → tools}/playwright-groups.d.ts +0 -0
  160. /package/dist/{ai-runner/src/tools → tools}/playwright-groups.js +0 -0
  161. /package/dist/{ai-runner/src/types → types}/external.d.ts +0 -0
  162. /package/dist/{ai-runner/src/types → types}/external.js +0 -0
  163. /package/dist/{ai-runner/src/types → types}/index.d.ts +0 -0
  164. /package/dist/{ai-runner/src/types → types}/index.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../../../../src/types/external.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"external.js","sourceRoot":"","sources":["../../../../src/types/external.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB;IAChB,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,YAAY,CAAC;IAC9D,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QAEb,KAAK,EAAE,GAAG,CAAC;KACZ,CAAC;IACF,+CAA+C;IAC/C,UAAU,CAAC,EAAE;QACX,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uBAAuB;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB;IAEnB,WAAW,EAAE,GAAG,CAAC;IACjB,sBAAsB;IAEtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,oBAAoB;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAMD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,eAAe,EAAE,MAAM,CAAC;CACzB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -1,29 +0,0 @@
1
- /**
2
- * Directory name validation utility
3
- * Validates directory names against file system restrictions
4
- */
5
- /**
6
- * Validate a directory name
7
- * @param name - Directory name to validate
8
- * @returns { valid: boolean; error?: string }
9
- */
10
- export declare function validateDirectoryName(name: string): {
11
- valid: boolean;
12
- error?: string;
13
- };
14
- /**
15
- * Validate a directory path (multiple levels)
16
- * @param path - Directory path like 'folder1/folder2/folder3'
17
- * @returns { valid: boolean; error?: string }
18
- */
19
- export declare function validateDirectoryPath(path: string): {
20
- valid: boolean;
21
- error?: string;
22
- };
23
- /**
24
- * Normalize directory name (basic cleanup)
25
- * @param name - Raw directory name
26
- * @returns Normalized name
27
- */
28
- export declare function normalizeDirectoryName(name: string): string;
29
- //# sourceMappingURL=directory-validator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"directory-validator.d.ts","sourceRoot":"","sources":["../../../../core-infra/src/directory-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAoCtF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAsBtF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D"}
@@ -1,91 +0,0 @@
1
- "use strict";
2
- /**
3
- * Directory name validation utility
4
- * Validates directory names against file system restrictions
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.validateDirectoryName = validateDirectoryName;
8
- exports.validateDirectoryPath = validateDirectoryPath;
9
- exports.normalizeDirectoryName = normalizeDirectoryName;
10
- /**
11
- * Windows and Linux forbidden characters in file/directory names
12
- * Windows: < > : " | ? * and control characters
13
- * Linux: only / and null character, but we also exclude other common problematic chars
14
- * We use a stricter set to ensure cross-platform compatibility
15
- */
16
- const FORBIDDEN_CHARS = /[<>:"|?*\\\/\x00]/;
17
- const RESERVED_NAMES = [
18
- 'CON', 'PRN', 'AUX', 'NUL', // Standard Windows reserved names
19
- 'COM1', 'COM2', 'COM3', 'COM4', 'COM5', 'COM6', 'COM7', 'COM8', 'COM9',
20
- 'LPT1', 'LPT2', 'LPT3', 'LPT4', 'LPT5', 'LPT6', 'LPT7', 'LPT8', 'LPT9',
21
- ];
22
- /**
23
- * Validate a directory name
24
- * @param name - Directory name to validate
25
- * @returns { valid: boolean; error?: string }
26
- */
27
- function validateDirectoryName(name) {
28
- if (!name || name.trim().length === 0) {
29
- return { valid: false, error: 'Directory name cannot be empty' };
30
- }
31
- // Check length
32
- if (name.length > 255) {
33
- return { valid: false, error: 'Directory name cannot exceed 255 characters' };
34
- }
35
- // Check for forbidden characters
36
- if (FORBIDDEN_CHARS.test(name)) {
37
- return {
38
- valid: false,
39
- error: 'Directory name cannot contain the following characters: < > : " | ? * \\ / and control characters',
40
- };
41
- }
42
- // Check for leading/trailing spaces (problematic on Windows)
43
- if (name !== name.trim() || name.startsWith('.') || name.endsWith('.')) {
44
- return {
45
- valid: false,
46
- error: 'Directory name cannot start or end with spaces or dots',
47
- };
48
- }
49
- // Check for reserved names (Windows)
50
- const upperName = name.toUpperCase();
51
- if (RESERVED_NAMES.includes(upperName)) {
52
- return {
53
- valid: false,
54
- error: `"${name}" is a system reserved name and cannot be used as a directory name`,
55
- };
56
- }
57
- return { valid: true };
58
- }
59
- /**
60
- * Validate a directory path (multiple levels)
61
- * @param path - Directory path like 'folder1/folder2/folder3'
62
- * @returns { valid: boolean; error?: string }
63
- */
64
- function validateDirectoryPath(path) {
65
- if (!path) {
66
- // Empty path is valid (root level)
67
- return { valid: true };
68
- }
69
- const parts = path.split('/').filter(p => p.length > 0);
70
- // Check max 3 levels
71
- if (parts.length > 3) {
72
- return { valid: false, error: 'Directory depth cannot exceed 3 levels' };
73
- }
74
- // Validate each part
75
- for (const part of parts) {
76
- const validation = validateDirectoryName(part);
77
- if (!validation.valid) {
78
- return validation;
79
- }
80
- }
81
- return { valid: true };
82
- }
83
- /**
84
- * Normalize directory name (basic cleanup)
85
- * @param name - Raw directory name
86
- * @returns Normalized name
87
- */
88
- function normalizeDirectoryName(name) {
89
- return name.trim().replace(/\s+/g, ' ');
90
- }
91
- //# sourceMappingURL=directory-validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"directory-validator.js","sourceRoot":"","sources":["../../../../core-infra/src/directory-validator.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- export * from './types';
2
- export type { MCPTool, MCPConfig } from './mcp/mcp-client';
3
- export { MCPClient } from './mcp/mcp-client';
4
- export type { ToolGroup } from './mcp/index';
5
- export { AbstractGroupedMCPManager, type GroupedMCPManager } from './mcp/index';
6
- export { MCPManager } from './mcp/mcp-manager';
7
- export type { PlaywrightMCPOpts } from './mcp/playwright-mcp-manager';
8
- export { PlaywrightMCPManager } from './mcp/playwright-mcp-manager';
9
- export { FileMCPManager } from './mcp/file-mcp-manager';
10
- export * from './repositories';
11
- export { createModel, convertToZodSchema } from './model';
12
- export { StorageService } from './storageService';
13
- export { validateDirectoryName, validateDirectoryPath, normalizeDirectoryName } from './directory-validator';
14
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../core-infra/src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,44 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.normalizeDirectoryName = exports.validateDirectoryPath = exports.validateDirectoryName = exports.StorageService = exports.convertToZodSchema = exports.createModel = exports.FileMCPManager = exports.PlaywrightMCPManager = exports.MCPManager = exports.AbstractGroupedMCPManager = exports.MCPClient = void 0;
18
- // Types
19
- __exportStar(require("./types"), exports);
20
- var mcp_client_1 = require("./mcp/mcp-client");
21
- Object.defineProperty(exports, "MCPClient", { enumerable: true, get: function () { return mcp_client_1.MCPClient; } });
22
- var index_1 = require("./mcp/index");
23
- Object.defineProperty(exports, "AbstractGroupedMCPManager", { enumerable: true, get: function () { return index_1.AbstractGroupedMCPManager; } });
24
- var mcp_manager_1 = require("./mcp/mcp-manager");
25
- Object.defineProperty(exports, "MCPManager", { enumerable: true, get: function () { return mcp_manager_1.MCPManager; } });
26
- var playwright_mcp_manager_1 = require("./mcp/playwright-mcp-manager");
27
- Object.defineProperty(exports, "PlaywrightMCPManager", { enumerable: true, get: function () { return playwright_mcp_manager_1.PlaywrightMCPManager; } });
28
- var file_mcp_manager_1 = require("./mcp/file-mcp-manager");
29
- Object.defineProperty(exports, "FileMCPManager", { enumerable: true, get: function () { return file_mcp_manager_1.FileMCPManager; } });
30
- // Repositories
31
- __exportStar(require("./repositories"), exports);
32
- // Model
33
- var model_1 = require("./model");
34
- Object.defineProperty(exports, "createModel", { enumerable: true, get: function () { return model_1.createModel; } });
35
- Object.defineProperty(exports, "convertToZodSchema", { enumerable: true, get: function () { return model_1.convertToZodSchema; } });
36
- // Storage Service
37
- var storageService_1 = require("./storageService");
38
- Object.defineProperty(exports, "StorageService", { enumerable: true, get: function () { return storageService_1.StorageService; } });
39
- // Directory Validator
40
- var directory_validator_1 = require("./directory-validator");
41
- Object.defineProperty(exports, "validateDirectoryName", { enumerable: true, get: function () { return directory_validator_1.validateDirectoryName; } });
42
- Object.defineProperty(exports, "validateDirectoryPath", { enumerable: true, get: function () { return directory_validator_1.validateDirectoryPath; } });
43
- Object.defineProperty(exports, "normalizeDirectoryName", { enumerable: true, get: function () { return directory_validator_1.normalizeDirectoryName; } });
44
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../core-infra/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,QAAQ;AACR,0CAAwB;AAIxB,+CAA6C;AAApC,uGAAA,SAAS,OAAA;AAElB,qCAAgF;AAAvE,kHAAA,yBAAyB,OAAA;AAClC,iDAA+C;AAAtC,yGAAA,UAAU,OAAA;AAEnB,uEAAoE;AAA3D,8HAAA,oBAAoB,OAAA;AAC7B,2DAAwD;AAA/C,kHAAA,cAAc,OAAA;AAEvB,eAAe;AACf,iDAA+B;AAE/B,QAAQ;AACR,iCAA0D;AAAjD,oGAAA,WAAW,OAAA;AAAE,2GAAA,kBAAkB,OAAA;AAExC,kBAAkB;AAClB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AAEvB,sBAAsB;AACtB,6DAA6G;AAApG,4HAAA,qBAAqB,OAAA;AAAE,4HAAA,qBAAqB,OAAA;AAAE,6HAAA,sBAAsB,OAAA"}
@@ -1,14 +0,0 @@
1
- /**
2
- * MCP (Model Context Protocol) Client for Playwright integration
3
- * Integrates with https://github.com/microsoft/playwright-mcp
4
- */
5
- import { MCPClient } from './mcp-client';
6
- import { AbstractGroupedMCPManager } from '.';
7
- export declare class FileMCPManager extends AbstractGroupedMCPManager {
8
- private client?;
9
- constructor();
10
- start(forced?: boolean): Promise<void>;
11
- getClient(): MCPClient;
12
- private createClient;
13
- }
14
- //# sourceMappingURL=file-mcp-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-mcp-manager.d.ts","sourceRoot":"","sources":["../../../../../core-infra/src/mcp/file-mcp-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAa,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,GAAG,CAAC;AAE9C,qBAAa,cAAe,SAAQ,yBAAyB;IAC3D,OAAO,CAAC,MAAM,CAAC,CAAY;;IAarB,KAAK,CAAC,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,SAAS,IAAI,SAAS;IAOtB,OAAO,CAAC,YAAY;CAcrB"}
@@ -1,46 +0,0 @@
1
- "use strict";
2
- /**
3
- * MCP (Model Context Protocol) Client for Playwright integration
4
- * Integrates with https://github.com/microsoft/playwright-mcp
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.FileMCPManager = void 0;
8
- const mcp_client_1 = require("./mcp-client");
9
- const _1 = require(".");
10
- class FileMCPManager extends _1.AbstractGroupedMCPManager {
11
- constructor() {
12
- const groups = [
13
- {
14
- name: 'file_mcp',
15
- description: 'Read, write files on the filesystem',
16
- loadByDefault: false,
17
- }
18
- ];
19
- super(groups);
20
- }
21
- async start(forced = false) {
22
- const client = this.createClient();
23
- this.client = client;
24
- await client.connect(forced);
25
- }
26
- getClient() {
27
- if (!this.client) {
28
- throw new Error("MCP Client is not started yet");
29
- }
30
- return this.client;
31
- }
32
- createClient() {
33
- // Build args with headless mode
34
- const args = [
35
- '@cotestdev/mcp-files@latest',
36
- ];
37
- const mcpConfig = {
38
- cmd: 'npx',
39
- args: args,
40
- env: { ...process.env },
41
- };
42
- return new mcp_client_1.MCPClient(mcpConfig);
43
- }
44
- }
45
- exports.FileMCPManager = FileMCPManager;
46
- //# sourceMappingURL=file-mcp-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-mcp-manager.js","sourceRoot":"","sources":["../../../../../core-infra/src/mcp/file-mcp-manager.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6CAAoD;AACpD,wBAA8C;AAE9C,MAAa,cAAe,SAAQ,4BAAyB;IAG3D;QACE,MAAM,MAAM,GAAG;YACb;gBACE,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,qCAAqC;gBAClD,aAAa,EAAE,KAAK;aACrB;SACF,CAAC;QACF,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAkB,KAAK;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEO,YAAY;QAClB,gCAAgC;QAChC,MAAM,IAAI,GAAG;YACX,6BAA6B;SAC9B,CAAC;QAEF,MAAM,SAAS,GAAc;YAC3B,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAA4B;SAClD,CAAA;QAED,OAAO,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;CACF;AAzCD,wCAyCC"}
@@ -1,21 +0,0 @@
1
- import { MCPClient } from "./mcp-client";
2
- export interface ToolGroup {
3
- name: string;
4
- description: string;
5
- tools?: string[];
6
- loadByDefault: boolean;
7
- }
8
- export interface GroupedMCPManager {
9
- groups: ToolGroup[];
10
- start(forced?: boolean): Promise<void>;
11
- getToolGroupInfo(): Record<string, string>;
12
- getClient(): MCPClient;
13
- }
14
- export declare abstract class AbstractGroupedMCPManager implements GroupedMCPManager {
15
- groups: ToolGroup[];
16
- constructor(groups: ToolGroup[]);
17
- abstract start(forced: boolean): Promise<void>;
18
- abstract getClient(): MCPClient;
19
- getToolGroupInfo(): Record<string, string>;
20
- }
21
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core-infra/src/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,SAAS,IAAI,SAAS,CAAC;CAC1B;AAED,8BAAsB,yBAA0B,YAAW,iBAAiB;IACxE,MAAM,EAAE,SAAS,EAAE,CAAC;gBAER,MAAM,EAAE,SAAS,EAAE;IAI/B,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE9C,QAAQ,CAAC,SAAS,IAAI,SAAS;IAE/B,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAO7C"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AbstractGroupedMCPManager = void 0;
4
- class AbstractGroupedMCPManager {
5
- constructor(groups) {
6
- this.groups = groups;
7
- }
8
- getToolGroupInfo() {
9
- const result = {};
10
- for (const group of this.groups) {
11
- result[group.name] = group.description;
12
- }
13
- return result;
14
- }
15
- }
16
- exports.AbstractGroupedMCPManager = AbstractGroupedMCPManager;
17
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../core-infra/src/mcp/index.ts"],"names":[],"mappings":";;;AAgBA,MAAsB,yBAAyB;IAG3C,YAAY,MAAmB;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAMD,gBAAgB;QACZ,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;QAC3C,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAlBD,8DAkBC"}
@@ -1,128 +0,0 @@
1
- /**
2
- * MCP (Model Context Protocol) Client for Playwright integration
3
- * Integrates with https://github.com/microsoft/playwright-mcp
4
- */
5
- import { ToolCall } from '../types';
6
- export interface MCPTool {
7
- name: string;
8
- description: string;
9
- inputSchema: Record<string, unknown>;
10
- }
11
- export interface MCPConfig {
12
- cmd?: string;
13
- args: string[];
14
- url?: string;
15
- env?: Record<string, string>;
16
- }
17
- export declare class MCPClient {
18
- private client;
19
- private connected;
20
- private connecting;
21
- private transport;
22
- private availableTools;
23
- private config;
24
- constructor(config: MCPConfig);
25
- getConfig(): MCPConfig;
26
- doCallTool(name: string, args: Record<string, any>, signal: AbortSignal): Promise<{
27
- [x: string]: unknown;
28
- content: ({
29
- type: "text";
30
- text: string;
31
- annotations?: {
32
- audience?: ("user" | "assistant")[] | undefined;
33
- priority?: number | undefined;
34
- lastModified?: string | undefined;
35
- } | undefined;
36
- _meta?: Record<string, unknown> | undefined;
37
- } | {
38
- type: "image";
39
- data: string;
40
- mimeType: string;
41
- annotations?: {
42
- audience?: ("user" | "assistant")[] | undefined;
43
- priority?: number | undefined;
44
- lastModified?: string | undefined;
45
- } | undefined;
46
- _meta?: Record<string, unknown> | undefined;
47
- } | {
48
- type: "audio";
49
- data: string;
50
- mimeType: string;
51
- annotations?: {
52
- audience?: ("user" | "assistant")[] | undefined;
53
- priority?: number | undefined;
54
- lastModified?: string | undefined;
55
- } | undefined;
56
- _meta?: Record<string, unknown> | undefined;
57
- } | {
58
- type: "resource";
59
- resource: {
60
- uri: string;
61
- text: string;
62
- mimeType?: string | undefined;
63
- _meta?: Record<string, unknown> | undefined;
64
- } | {
65
- uri: string;
66
- blob: string;
67
- mimeType?: string | undefined;
68
- _meta?: Record<string, unknown> | undefined;
69
- };
70
- annotations?: {
71
- audience?: ("user" | "assistant")[] | undefined;
72
- priority?: number | undefined;
73
- lastModified?: string | undefined;
74
- } | undefined;
75
- _meta?: Record<string, unknown> | undefined;
76
- } | {
77
- uri: string;
78
- name: string;
79
- type: "resource_link";
80
- description?: string | undefined;
81
- mimeType?: string | undefined;
82
- annotations?: {
83
- audience?: ("user" | "assistant")[] | undefined;
84
- priority?: number | undefined;
85
- lastModified?: string | undefined;
86
- } | undefined;
87
- _meta?: {
88
- [x: string]: unknown;
89
- } | undefined;
90
- icons?: {
91
- src: string;
92
- mimeType?: string | undefined;
93
- sizes?: string[] | undefined;
94
- theme?: "light" | "dark" | undefined;
95
- }[] | undefined;
96
- title?: string | undefined;
97
- })[];
98
- _meta?: {
99
- [x: string]: unknown;
100
- progressToken?: string | number | undefined;
101
- "io.modelcontextprotocol/related-task"?: {
102
- taskId: string;
103
- } | undefined;
104
- } | undefined;
105
- structuredContent?: Record<string, unknown> | undefined;
106
- isError?: boolean | undefined;
107
- } | {
108
- [x: string]: unknown;
109
- toolResult: unknown;
110
- _meta?: {
111
- [x: string]: unknown;
112
- progressToken?: string | number | undefined;
113
- "io.modelcontextprotocol/related-task"?: {
114
- taskId: string;
115
- } | undefined;
116
- } | undefined;
117
- }>;
118
- callTool(toolCall: ToolCall, signal: AbortSignal): Promise<any>;
119
- connect(forced?: boolean): Promise<void>;
120
- doConnect(): Promise<void>;
121
- private loadAvailableTools;
122
- getAvailableTools(): MCPTool[];
123
- getToolByName(name: string): MCPTool | undefined;
124
- getToolsDescription(): string;
125
- disconnect(): Promise<void>;
126
- isConnected(): boolean;
127
- }
128
- //# sourceMappingURL=mcp-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../../../../../core-infra/src/mcp/mcp-client.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAKpC,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,MAAM,CAAY;gBAEd,MAAM,EAAE,SAAS;IAI7B,SAAS,IAAI,SAAS;IAIhB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW;;;;;uBAsK6pW,CAAC;wBAA4B,CAAC;wBAAgE,CAAC;4BAAkD,CAAC;;iBAAkE,CAAC;;;;;uBAA+J,CAAC;wBAA4B,CAAC;wBAAgE,CAAC;4BAAkD,CAAC;;iBAAkE,CAAC;;;;;uBAA+J,CAAC;wBAA4B,CAAC;wBAAgE,CAAC;4BAAkD,CAAC;;iBAAkE,CAAC;;;;;;wBAA8L,CAAC;qBAA2C,CAAC;;;;wBAA4I,CAAC;qBAA2C,CAAC;;uBAA6E,CAAC;wBAA4B,CAAC;wBAAgE,CAAC;4BAAkD,CAAC;;iBAAkE,CAAC;;;;;uBAAkK,CAAC;oBAA0C,CAAC;uBAA6C,CAAC;wBAA4B,CAAC;wBAAgE,CAAC;4BAAkD,CAAC;;iBAAkE,CAAC;;;iBAAsF,CAAC;;wBAAyD,CAAC;qBAA2C,CAAC;qBAA6C,CAAC;;iBAA8E,CAAC;;;;yBAAiH,CAAC;kDAAiF,CAAC;;;;;;;;;;;yBAAgV,CAAC;kDAAiF,CAAC;;;;;IA/Ixtc,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAqB/D,OAAO,CAAC,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B/C,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;YA4BlB,kBAAkB;IAWhC,iBAAiB,IAAI,OAAO,EAAE;IAI9B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIhD,mBAAmB,IAAI,MAAM;IAIvB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC,WAAW,IAAI,OAAO;CAGvB"}
@@ -1,163 +0,0 @@
1
- "use strict";
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
3
- /**
4
- * MCP (Model Context Protocol) Client for Playwright integration
5
- * Integrates with https://github.com/microsoft/playwright-mcp
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.MCPClient = void 0;
9
- const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
10
- const stdio_js_1 = require("@modelcontextprotocol/sdk/client/stdio.js");
11
- class MCPClient {
12
- constructor(config) {
13
- this.client = null;
14
- this.connected = false;
15
- this.connecting = false;
16
- this.transport = null;
17
- this.availableTools = [];
18
- this.config = config;
19
- }
20
- getConfig() {
21
- return this.config;
22
- }
23
- async doCallTool(name, args, signal) {
24
- if (!this.client || !this.connected) {
25
- throw new Error('MCP Client is not connected');
26
- }
27
- // Check if signal is aborted before calling
28
- if (signal?.aborted) {
29
- throw new Error('Operation was aborted');
30
- }
31
- // Ensure signal has throwIfAborted method for compatibility
32
- if (signal && typeof signal.throwIfAborted !== 'function') {
33
- // Polyfill for older environments
34
- signal.throwIfAborted = function () {
35
- if (this.aborted) {
36
- throw new Error('Operation was aborted');
37
- }
38
- };
39
- }
40
- return await this.client.callTool({ name, arguments: args }, undefined, { signal });
41
- }
42
- async callTool(toolCall, signal) {
43
- let toolName = toolCall.name;
44
- let args = toolCall.args;
45
- if (toolName === 'call_tool') {
46
- toolName = toolCall.args.tool_name;
47
- args = toolCall.args.args;
48
- }
49
- console.log('Executing tool:', toolName, 'with input:', args);
50
- const result = await this.doCallTool(toolName, args, signal);
51
- const isError = result.isError;
52
- if (isError) {
53
- console.warn('Tool:', toolCall.name, ' has error:', result.content);
54
- }
55
- else {
56
- console.log('Tool:', toolCall.name, ' executed');
57
- }
58
- return result;
59
- }
60
- async connect(forced = false) {
61
- const limit = 3;
62
- let attempts = 0;
63
- if (!forced && (this.connected || this.connecting)) {
64
- console.log('MCP Client is connecting or connected');
65
- return;
66
- }
67
- await this.disconnect();
68
- this.connecting = true;
69
- while (attempts < limit) {
70
- try {
71
- await this.doConnect();
72
- break;
73
- }
74
- catch (error) {
75
- attempts++;
76
- console.error(`MCP Client connection attempt ${attempts} failed:`, error);
77
- }
78
- }
79
- this.connecting = false;
80
- }
81
- async doConnect() {
82
- // Create stdio transport - it automatically spawns the playwright-mcp process
83
- this.transport = new stdio_js_1.StdioClientTransport({
84
- command: this.config.cmd || 'npx',
85
- args: this.config.args,
86
- env: {
87
- ...this.config.env,
88
- },
89
- });
90
- this.client = new index_js_1.Client({
91
- name: 'test-agent-client',
92
- version: '1.0.0',
93
- }, {
94
- capabilities: {},
95
- });
96
- await this.client.connect(this.transport, { timeout: 120000 });
97
- this.connected = true;
98
- // Load available tools
99
- await this.loadAvailableTools();
100
- console.log(`Connected to MCP server with ${this.availableTools.length} tools`);
101
- }
102
- async loadAvailableTools() {
103
- if (!this.client)
104
- return;
105
- const response = await this.client.listTools();
106
- this.availableTools = response.tools.map((tool) => ({
107
- name: tool.name,
108
- description: tool.description || '',
109
- inputSchema: normalizeInputSchema(tool.name, tool.inputSchema),
110
- }));
111
- }
112
- getAvailableTools() {
113
- return this.availableTools;
114
- }
115
- getToolByName(name) {
116
- return this.availableTools.find((t) => t.name === name);
117
- }
118
- getToolsDescription() {
119
- return this.availableTools.map((t) => `- ${t.name}: ${t.description}`).join('\n');
120
- }
121
- async disconnect() {
122
- try {
123
- if (this.client) {
124
- await this.client.close();
125
- }
126
- this.connected = false;
127
- this.availableTools = [];
128
- this.transport = null;
129
- this.client = null;
130
- console.log('Disconnected from MCP server');
131
- }
132
- catch (error) {
133
- console.error('Error disconnecting from MCP server:', error);
134
- }
135
- }
136
- isConnected() {
137
- return this.connected;
138
- }
139
- }
140
- exports.MCPClient = MCPClient;
141
- function normalizeInputSchema(name, inputSchema) {
142
- const schema = (inputSchema ?? {});
143
- // Ensure the schema is explicitly an object schema so MCP SDK validation passes
144
- const properties = schema.properties || {};
145
- const required = Array.isArray(schema.required)
146
- ? schema.required
147
- : [];
148
- if (schema.type === 'object') {
149
- return {
150
- type: 'object',
151
- properties,
152
- required,
153
- additionalProperties: schema.additionalProperties ?? false,
154
- };
155
- }
156
- return {
157
- type: 'object',
158
- properties,
159
- required,
160
- additionalProperties: false,
161
- };
162
- }
163
- //# sourceMappingURL=mcp-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../../../../core-infra/src/mcp/mcp-client.ts"],"names":[],"mappings":"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"}