@cotestdev/ai-runner 0.0.5 → 0.0.6

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 (162) hide show
  1. package/dist/agents/logger.d.ts.map +1 -0
  2. package/dist/agents/logger.js.map +1 -0
  3. package/dist/agents/playwright-executor.d.ts.map +1 -0
  4. package/dist/agents/playwright-executor.js.map +1 -0
  5. package/dist/agents/tools/playwright-backend-adapter.d.ts.map +1 -0
  6. package/dist/agents/tools/playwright-backend-adapter.js.map +1 -0
  7. package/dist/agents/types.d.ts.map +1 -0
  8. package/dist/{core-infra/src → agents}/types.js.map +1 -1
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/runner.d.ts.map +1 -0
  12. package/dist/runner.js.map +1 -0
  13. package/dist/tools/index.d.ts.map +1 -0
  14. package/dist/tools/index.js.map +1 -0
  15. package/dist/tools/playwright-groups.d.ts.map +1 -0
  16. package/dist/tools/playwright-groups.js.map +1 -0
  17. package/dist/types/external.d.ts.map +1 -0
  18. package/dist/types/external.js.map +1 -0
  19. package/dist/types/index.d.ts.map +1 -0
  20. package/dist/types/index.js.map +1 -0
  21. package/package.json +2 -7
  22. package/playwright.config.ts +38 -0
  23. package/src/agents/logger.ts +20 -0
  24. package/src/agents/playwright-executor.ts +252 -0
  25. package/src/agents/tools/playwright-backend-adapter.ts +134 -0
  26. package/src/agents/tools/playwright-mcp-types.d.ts +71 -0
  27. package/src/agents/types.ts +80 -0
  28. package/src/index.ts +27 -0
  29. package/src/runner.ts +224 -0
  30. package/src/tools/index.ts +48 -0
  31. package/src/tools/playwright-groups.ts +54 -0
  32. package/src/types/external.ts +7 -0
  33. package/src/types/index.ts +118 -0
  34. package/tests/agent/test-heal-agent.spec.ts +54 -0
  35. package/tsconfig.json +26 -0
  36. package/dist/ai-runner/src/agents/logger.d.ts.map +0 -1
  37. package/dist/ai-runner/src/agents/logger.js.map +0 -1
  38. package/dist/ai-runner/src/agents/playwright-executor.d.ts.map +0 -1
  39. package/dist/ai-runner/src/agents/playwright-executor.js.map +0 -1
  40. package/dist/ai-runner/src/agents/tools/playwright-backend-adapter.d.ts.map +0 -1
  41. package/dist/ai-runner/src/agents/tools/playwright-backend-adapter.js.map +0 -1
  42. package/dist/ai-runner/src/agents/types.d.ts.map +0 -1
  43. package/dist/ai-runner/src/agents/types.js.map +0 -1
  44. package/dist/ai-runner/src/index.d.ts.map +0 -1
  45. package/dist/ai-runner/src/index.js.map +0 -1
  46. package/dist/ai-runner/src/runner.d.ts.map +0 -1
  47. package/dist/ai-runner/src/runner.js.map +0 -1
  48. package/dist/ai-runner/src/tools/index.d.ts.map +0 -1
  49. package/dist/ai-runner/src/tools/index.js.map +0 -1
  50. package/dist/ai-runner/src/tools/playwright-groups.d.ts.map +0 -1
  51. package/dist/ai-runner/src/tools/playwright-groups.js.map +0 -1
  52. package/dist/ai-runner/src/types/external.d.ts.map +0 -1
  53. package/dist/ai-runner/src/types/external.js.map +0 -1
  54. package/dist/ai-runner/src/types/index.d.ts.map +0 -1
  55. package/dist/ai-runner/src/types/index.js.map +0 -1
  56. package/dist/core-infra/src/directory-validator.d.ts +0 -29
  57. package/dist/core-infra/src/directory-validator.d.ts.map +0 -1
  58. package/dist/core-infra/src/directory-validator.js +0 -91
  59. package/dist/core-infra/src/directory-validator.js.map +0 -1
  60. package/dist/core-infra/src/index.d.ts +0 -14
  61. package/dist/core-infra/src/index.d.ts.map +0 -1
  62. package/dist/core-infra/src/index.js +0 -44
  63. package/dist/core-infra/src/index.js.map +0 -1
  64. package/dist/core-infra/src/mcp/file-mcp-manager.d.ts +0 -14
  65. package/dist/core-infra/src/mcp/file-mcp-manager.d.ts.map +0 -1
  66. package/dist/core-infra/src/mcp/file-mcp-manager.js +0 -46
  67. package/dist/core-infra/src/mcp/file-mcp-manager.js.map +0 -1
  68. package/dist/core-infra/src/mcp/index.d.ts +0 -21
  69. package/dist/core-infra/src/mcp/index.d.ts.map +0 -1
  70. package/dist/core-infra/src/mcp/index.js +0 -17
  71. package/dist/core-infra/src/mcp/index.js.map +0 -1
  72. package/dist/core-infra/src/mcp/mcp-client.d.ts +0 -128
  73. package/dist/core-infra/src/mcp/mcp-client.d.ts.map +0 -1
  74. package/dist/core-infra/src/mcp/mcp-client.js +0 -163
  75. package/dist/core-infra/src/mcp/mcp-client.js.map +0 -1
  76. package/dist/core-infra/src/mcp/mcp-manager.d.ts +0 -21
  77. package/dist/core-infra/src/mcp/mcp-manager.d.ts.map +0 -1
  78. package/dist/core-infra/src/mcp/mcp-manager.js +0 -99
  79. package/dist/core-infra/src/mcp/mcp-manager.js.map +0 -1
  80. package/dist/core-infra/src/mcp/playwright-mcp-manager.d.ts +0 -19
  81. package/dist/core-infra/src/mcp/playwright-mcp-manager.d.ts.map +0 -1
  82. package/dist/core-infra/src/mcp/playwright-mcp-manager.js +0 -121
  83. package/dist/core-infra/src/mcp/playwright-mcp-manager.js.map +0 -1
  84. package/dist/core-infra/src/model.d.ts +0 -13
  85. package/dist/core-infra/src/model.d.ts.map +0 -1
  86. package/dist/core-infra/src/model.js +0 -191
  87. package/dist/core-infra/src/model.js.map +0 -1
  88. package/dist/core-infra/src/repositories/BaseRepository.d.ts +0 -69
  89. package/dist/core-infra/src/repositories/BaseRepository.d.ts.map +0 -1
  90. package/dist/core-infra/src/repositories/BaseRepository.js +0 -213
  91. package/dist/core-infra/src/repositories/BaseRepository.js.map +0 -1
  92. package/dist/core-infra/src/repositories/DirectoryRepository.d.ts +0 -70
  93. package/dist/core-infra/src/repositories/DirectoryRepository.d.ts.map +0 -1
  94. package/dist/core-infra/src/repositories/DirectoryRepository.js +0 -336
  95. package/dist/core-infra/src/repositories/DirectoryRepository.js.map +0 -1
  96. package/dist/core-infra/src/repositories/ExplorationRepository.d.ts +0 -34
  97. package/dist/core-infra/src/repositories/ExplorationRepository.d.ts.map +0 -1
  98. package/dist/core-infra/src/repositories/ExplorationRepository.js +0 -54
  99. package/dist/core-infra/src/repositories/ExplorationRepository.js.map +0 -1
  100. package/dist/core-infra/src/repositories/FileRepository.d.ts +0 -56
  101. package/dist/core-infra/src/repositories/FileRepository.d.ts.map +0 -1
  102. package/dist/core-infra/src/repositories/FileRepository.js +0 -132
  103. package/dist/core-infra/src/repositories/FileRepository.js.map +0 -1
  104. package/dist/core-infra/src/repositories/ModelConfigRepository.d.ts +0 -38
  105. package/dist/core-infra/src/repositories/ModelConfigRepository.d.ts.map +0 -1
  106. package/dist/core-infra/src/repositories/ModelConfigRepository.js +0 -59
  107. package/dist/core-infra/src/repositories/ModelConfigRepository.js.map +0 -1
  108. package/dist/core-infra/src/repositories/ProjectRepository.d.ts +0 -32
  109. package/dist/core-infra/src/repositories/ProjectRepository.d.ts.map +0 -1
  110. package/dist/core-infra/src/repositories/ProjectRepository.js +0 -67
  111. package/dist/core-infra/src/repositories/ProjectRepository.js.map +0 -1
  112. package/dist/core-infra/src/repositories/SettingsRepository.d.ts +0 -19
  113. package/dist/core-infra/src/repositories/SettingsRepository.d.ts.map +0 -1
  114. package/dist/core-infra/src/repositories/SettingsRepository.js +0 -72
  115. package/dist/core-infra/src/repositories/SettingsRepository.js.map +0 -1
  116. package/dist/core-infra/src/repositories/TableDataRepository.d.ts +0 -22
  117. package/dist/core-infra/src/repositories/TableDataRepository.d.ts.map +0 -1
  118. package/dist/core-infra/src/repositories/TableDataRepository.js +0 -33
  119. package/dist/core-infra/src/repositories/TableDataRepository.js.map +0 -1
  120. package/dist/core-infra/src/repositories/TestCaseRepository.d.ts +0 -120
  121. package/dist/core-infra/src/repositories/TestCaseRepository.d.ts.map +0 -1
  122. package/dist/core-infra/src/repositories/TestCaseRepository.js +0 -463
  123. package/dist/core-infra/src/repositories/TestCaseRepository.js.map +0 -1
  124. package/dist/core-infra/src/repositories/TestPlanRepository.d.ts +0 -35
  125. package/dist/core-infra/src/repositories/TestPlanRepository.d.ts.map +0 -1
  126. package/dist/core-infra/src/repositories/TestPlanRepository.js +0 -80
  127. package/dist/core-infra/src/repositories/TestPlanRepository.js.map +0 -1
  128. package/dist/core-infra/src/repositories/TestResultRepository.d.ts +0 -30
  129. package/dist/core-infra/src/repositories/TestResultRepository.d.ts.map +0 -1
  130. package/dist/core-infra/src/repositories/TestResultRepository.js +0 -54
  131. package/dist/core-infra/src/repositories/TestResultRepository.js.map +0 -1
  132. package/dist/core-infra/src/repositories/index.d.ts +0 -17
  133. package/dist/core-infra/src/repositories/index.d.ts.map +0 -1
  134. package/dist/core-infra/src/repositories/index.js +0 -31
  135. package/dist/core-infra/src/repositories/index.js.map +0 -1
  136. package/dist/core-infra/src/storageService.d.ts +0 -131
  137. package/dist/core-infra/src/storageService.d.ts.map +0 -1
  138. package/dist/core-infra/src/storageService.js +0 -304
  139. package/dist/core-infra/src/storageService.js.map +0 -1
  140. package/dist/core-infra/src/types.d.ts +0 -219
  141. package/dist/core-infra/src/types.d.ts.map +0 -1
  142. package/dist/core-infra/src/types.js +0 -3
  143. /package/dist/{ai-runner/src/agents → agents}/logger.d.ts +0 -0
  144. /package/dist/{ai-runner/src/agents → agents}/logger.js +0 -0
  145. /package/dist/{ai-runner/src/agents → agents}/playwright-executor.d.ts +0 -0
  146. /package/dist/{ai-runner/src/agents → agents}/playwright-executor.js +0 -0
  147. /package/dist/{ai-runner/src/agents → agents}/tools/playwright-backend-adapter.d.ts +0 -0
  148. /package/dist/{ai-runner/src/agents → agents}/tools/playwright-backend-adapter.js +0 -0
  149. /package/dist/{ai-runner/src/agents → agents}/types.d.ts +0 -0
  150. /package/dist/{ai-runner/src/agents → agents}/types.js +0 -0
  151. /package/dist/{ai-runner/src/index.d.ts → index.d.ts} +0 -0
  152. /package/dist/{ai-runner/src/index.js → index.js} +0 -0
  153. /package/dist/{ai-runner/src/runner.d.ts → runner.d.ts} +0 -0
  154. /package/dist/{ai-runner/src/runner.js → runner.js} +0 -0
  155. /package/dist/{ai-runner/src/tools → tools}/index.d.ts +0 -0
  156. /package/dist/{ai-runner/src/tools → tools}/index.js +0 -0
  157. /package/dist/{ai-runner/src/tools → tools}/playwright-groups.d.ts +0 -0
  158. /package/dist/{ai-runner/src/tools → tools}/playwright-groups.js +0 -0
  159. /package/dist/{ai-runner/src/types → types}/external.d.ts +0 -0
  160. /package/dist/{ai-runner/src/types → types}/external.js +0 -0
  161. /package/dist/{ai-runner/src/types → types}/index.d.ts +0 -0
  162. /package/dist/{ai-runner/src/types → types}/index.js +0 -0
@@ -1,54 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TestResultRepository = void 0;
4
- const path_1 = require("path");
5
- const BaseRepository_1 = require("./BaseRepository");
6
- /**
7
- * TestResultRepository handles all storage operations for test results
8
- * Responsible for managing test execution results and history
9
- */
10
- class TestResultRepository extends BaseRepository_1.BaseRepository {
11
- constructor(projectId) {
12
- super((0, path_1.join)("projects", projectId, 'results'));
13
- }
14
- /**
15
- * Save a test result
16
- */
17
- async saveTestResult(result) {
18
- await this.save(result.id, result, 'json');
19
- }
20
- /**
21
- * Load a test result by ID
22
- */
23
- async loadTestResult(resultId) {
24
- return this.load(resultId, 'json');
25
- }
26
- /**
27
- * Load all results for a specific test case
28
- */
29
- async loadTestResults(testId) {
30
- const results = await this.listAll();
31
- return results
32
- .filter(r => r.testId === testId)
33
- .sort((a, b) => b.executedAt - a.executedAt);
34
- }
35
- /**
36
- * Delete a test result
37
- */
38
- async deleteTestResult(resultId) {
39
- await this.delete(resultId, 'json');
40
- }
41
- /**
42
- * Delete all results for a specific test case
43
- */
44
- async deleteTestResults(testId) {
45
- const results = await this.listAll();
46
- for (const result of results) {
47
- if (result.testId === testId) {
48
- await this.delete(result.id, 'json');
49
- }
50
- }
51
- }
52
- }
53
- exports.TestResultRepository = TestResultRepository;
54
- //# sourceMappingURL=TestResultRepository.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TestResultRepository.js","sourceRoot":"","sources":["../../../../../core-infra/src/repositories/TestResultRepository.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAC5B,qDAAkD;AAGlD;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,+BAAc;IACpD,YAAY,SAAiB;QAC7B,KAAK,CAAC,IAAA,WAAI,EAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,MAAkB;QACrC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,OAAO,IAAI,CAAC,IAAI,CAAa,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAc,CAAC;QACjD,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;aAChC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAAc;QACpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAc,CAAC;QACjD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;CACF;AA/CD,oDA+CC"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Repository layer
3
- * Provides separated data access concerns for different business entities
4
- * Following Repository Pattern to decouple business logic from data access
5
- */
6
- export { BaseRepository } from './BaseRepository';
7
- export { TestCaseRepository } from './TestCaseRepository';
8
- export { TestResultRepository } from './TestResultRepository';
9
- export { ModelConfigRepository } from './ModelConfigRepository';
10
- export { ExplorationRepository } from './ExplorationRepository';
11
- export { SettingsRepository } from './SettingsRepository';
12
- export { ProjectRepository } from './ProjectRepository';
13
- export { DirectoryRepository } from './DirectoryRepository';
14
- export { TestPlanRepository } from './TestPlanRepository';
15
- export { TableDataRepository } from './TableDataRepository';
16
- export { FileRepository } from './FileRepository';
17
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core-infra/src/repositories/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,31 +0,0 @@
1
- "use strict";
2
- /**
3
- * Repository layer
4
- * Provides separated data access concerns for different business entities
5
- * Following Repository Pattern to decouple business logic from data access
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.FileRepository = exports.TableDataRepository = exports.TestPlanRepository = exports.DirectoryRepository = exports.ProjectRepository = exports.SettingsRepository = exports.ExplorationRepository = exports.ModelConfigRepository = exports.TestResultRepository = exports.TestCaseRepository = exports.BaseRepository = void 0;
9
- var BaseRepository_1 = require("./BaseRepository");
10
- Object.defineProperty(exports, "BaseRepository", { enumerable: true, get: function () { return BaseRepository_1.BaseRepository; } });
11
- var TestCaseRepository_1 = require("./TestCaseRepository");
12
- Object.defineProperty(exports, "TestCaseRepository", { enumerable: true, get: function () { return TestCaseRepository_1.TestCaseRepository; } });
13
- var TestResultRepository_1 = require("./TestResultRepository");
14
- Object.defineProperty(exports, "TestResultRepository", { enumerable: true, get: function () { return TestResultRepository_1.TestResultRepository; } });
15
- var ModelConfigRepository_1 = require("./ModelConfigRepository");
16
- Object.defineProperty(exports, "ModelConfigRepository", { enumerable: true, get: function () { return ModelConfigRepository_1.ModelConfigRepository; } });
17
- var ExplorationRepository_1 = require("./ExplorationRepository");
18
- Object.defineProperty(exports, "ExplorationRepository", { enumerable: true, get: function () { return ExplorationRepository_1.ExplorationRepository; } });
19
- var SettingsRepository_1 = require("./SettingsRepository");
20
- Object.defineProperty(exports, "SettingsRepository", { enumerable: true, get: function () { return SettingsRepository_1.SettingsRepository; } });
21
- var ProjectRepository_1 = require("./ProjectRepository");
22
- Object.defineProperty(exports, "ProjectRepository", { enumerable: true, get: function () { return ProjectRepository_1.ProjectRepository; } });
23
- var DirectoryRepository_1 = require("./DirectoryRepository");
24
- Object.defineProperty(exports, "DirectoryRepository", { enumerable: true, get: function () { return DirectoryRepository_1.DirectoryRepository; } });
25
- var TestPlanRepository_1 = require("./TestPlanRepository");
26
- Object.defineProperty(exports, "TestPlanRepository", { enumerable: true, get: function () { return TestPlanRepository_1.TestPlanRepository; } });
27
- var TableDataRepository_1 = require("./TableDataRepository");
28
- Object.defineProperty(exports, "TableDataRepository", { enumerable: true, get: function () { return TableDataRepository_1.TableDataRepository; } });
29
- var FileRepository_1 = require("./FileRepository");
30
- Object.defineProperty(exports, "FileRepository", { enumerable: true, get: function () { return FileRepository_1.FileRepository; } });
31
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../core-infra/src/repositories/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,mDAAkD;AAAzC,gHAAA,cAAc,OAAA"}
@@ -1,131 +0,0 @@
1
- import type { TestCase, TestResult, AppSettings, ModelConfig, TestStep, ExplorationRecord, Project, DirectoryInfo, TestDirectory, TestPlan, TableData } from './types';
2
- /**
3
- * StorageService acts as a facade for all data storage operations
4
- * Coordinates between different repositories and provides a unified interface
5
- * This decouples business logic from repository implementation details
6
- *
7
- * Benefits:
8
- * - Single point of entry for all storage operations
9
- * - Encapsulates repository instantiation
10
- * - Easy to add cross-cutting concerns (logging, caching, etc.)
11
- * - Simplifies unit testing by allowing mock repositories
12
- */
13
- export declare class StorageService {
14
- private static instance;
15
- private testCaseRepo;
16
- private testResultRepo;
17
- private modelConfigRepo;
18
- private explorationRepo;
19
- private settingsRepo;
20
- private projectRepo;
21
- private directoryRepo;
22
- private testPlanRepo;
23
- private tableDataRepo;
24
- private fileRepo;
25
- private constructor();
26
- private static instances;
27
- /**
28
- * Get singleton instance of StorageService
29
- */
30
- static getInstance(projectId: string): StorageService;
31
- /**
32
- * Reset instance (useful for testing)
33
- */
34
- static resetInstance(): void;
35
- /**
36
- * Initialize storage directories
37
- */
38
- private static createDirs;
39
- /**
40
- * Get storage root directory
41
- */
42
- getStorageDir(): string;
43
- saveTestCase(testCase: TestCase): void;
44
- loadTestCase(testId: string): TestCase | null;
45
- listTestCases(): TestCase[];
46
- listResuableTestCases(currentId: string): TestCase[];
47
- deleteTestCase(testId: string): void;
48
- listTestCasesRecursively(dirPath: string): TestCase[];
49
- saveTestScript(testId: string, script: string): void;
50
- hasTestScript(testId: string): boolean;
51
- loadTestScript(testId: string): string | undefined;
52
- saveTestSteps(testId: string, steps: TestStep[]): void;
53
- loadTestSteps(testId: string): TestStep[];
54
- saveTestStep(testId: string, step: {
55
- id: string;
56
- description?: string;
57
- isBreakpoint?: boolean;
58
- reusedFromTestId?: string;
59
- }, afterStepId?: string): boolean;
60
- saveStepBreakPoint(testId: string, id: string, isBreakpoint?: boolean): void;
61
- insertStep(testId: string, afterStepId: string | null | undefined, newStep: TestStep): void;
62
- deleteStep(testId: string, stepId: string): boolean;
63
- buildTestDirectoryTree(): TestDirectory;
64
- createDirectory(path: string, info: Omit<DirectoryInfo, 'id' | 'path'>): DirectoryInfo;
65
- getDirectoryInfo(path: string): DirectoryInfo | null;
66
- updateDirectoryInfo(path: string, updates: Partial<Omit<DirectoryInfo, 'id' | 'path'>>): DirectoryInfo;
67
- deleteDirectory(path: string): void;
68
- renameDirectory(oldPath: string, newName: string): DirectoryInfo;
69
- getDirectoriesAtPath(path?: string): DirectoryInfo[];
70
- isValidDirectory(path: string): boolean;
71
- moveDirectory(sourcePath: string, targetParentPath: string): DirectoryInfo;
72
- moveTestCase(testId: string, sourceDir: string, targetDir: string): boolean;
73
- saveTestResult(result: TestResult): Promise<void>;
74
- loadTestResult(resultId: string): Promise<TestResult | null>;
75
- loadTestResults(testId: string): Promise<TestResult[]>;
76
- deleteTestResult(resultId: string): Promise<void>;
77
- deleteTestResults(testId: string): Promise<void>;
78
- saveModelConfig(config: ModelConfig): Promise<void>;
79
- loadModelConfig(configId: string): Promise<ModelConfig | null>;
80
- listModelConfigs(): Promise<ModelConfig[]>;
81
- listModelConfigsSync(): ModelConfig[];
82
- updateModelConfig(config: ModelConfig): Promise<void>;
83
- deleteModelConfig(configId: string): Promise<void>;
84
- modelConfigExists(configId: string): Promise<boolean>;
85
- saveExplorationRecord(record: ExplorationRecord): Promise<void>;
86
- loadExplorationRecord(recordId: string): Promise<ExplorationRecord | null>;
87
- listExplorationRecords(): Promise<ExplorationRecord[]>;
88
- updateExplorationRecord(record: ExplorationRecord): Promise<void>;
89
- deleteExplorationRecord(recordId: string): Promise<void>;
90
- getExplorationRecordsByUrl(url: string): Promise<ExplorationRecord[]>;
91
- saveSettings(settings: AppSettings): Promise<void>;
92
- loadSettings(): Promise<AppSettings | null>;
93
- saveProject(project: Project): void;
94
- loadProject(projectId: string): Project | null;
95
- listProjects(): Project[];
96
- deleteProject(projectId: string): void;
97
- projectExists(projectId: string): Promise<boolean>;
98
- saveTestPlan(testPlan: TestPlan): void;
99
- loadTestPlan(testPlanId: string): TestPlan | null;
100
- listTestPlans(): TestPlan[];
101
- updateTestPlan(testPlan: TestPlan): void;
102
- deleteTestPlan(testPlanId: string): void;
103
- testPlanExists(testPlanId: string): boolean;
104
- saveTableData(tableData: TableData): Promise<void>;
105
- loadTableData(testId: string): Promise<TableData | null>;
106
- deleteTableData(testId: string): Promise<void>;
107
- getFileDir(testId: string): string;
108
- saveFile(testId: string, fileName: string, content: Buffer): {
109
- name: string;
110
- size: number;
111
- uploadedAt: string;
112
- path: string;
113
- };
114
- loadFile(testId: string, fileName: string): Buffer | null;
115
- listFiles(testId: string): {
116
- name: string;
117
- size: number;
118
- uploadedAt: string;
119
- path: string;
120
- }[];
121
- deleteFile(testId: string, fileName: string): boolean;
122
- deleteAllFiles(testId: string): void;
123
- fileExists(testId: string, fileName: string): boolean;
124
- getFileInfo(testId: string, fileName: string): {
125
- name: string;
126
- size: number;
127
- uploadedAt: string;
128
- path: string;
129
- } | null;
130
- }
131
- //# sourceMappingURL=storageService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storageService.d.ts","sourceRoot":"","sources":["../../../../core-infra/src/storageService.ts"],"names":[],"mappings":"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"}
@@ -1,304 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StorageService = void 0;
4
- const fs_1 = require("fs");
5
- const os_1 = require("os");
6
- const path_1 = require("path");
7
- const repositories_1 = require("./repositories");
8
- const STORAGE_DIR = (0, path_1.join)((0, os_1.homedir)(), '.test_agent');
9
- let isInit = false;
10
- /**
11
- * StorageService acts as a facade for all data storage operations
12
- * Coordinates between different repositories and provides a unified interface
13
- * This decouples business logic from repository implementation details
14
- *
15
- * Benefits:
16
- * - Single point of entry for all storage operations
17
- * - Encapsulates repository instantiation
18
- * - Easy to add cross-cutting concerns (logging, caching, etc.)
19
- * - Simplifies unit testing by allowing mock repositories
20
- */
21
- class StorageService {
22
- constructor(projectId) {
23
- this.testCaseRepo = new repositories_1.TestCaseRepository(projectId);
24
- this.testResultRepo = new repositories_1.TestResultRepository(projectId);
25
- this.modelConfigRepo = new repositories_1.ModelConfigRepository();
26
- this.explorationRepo = new repositories_1.ExplorationRepository(projectId);
27
- this.settingsRepo = new repositories_1.SettingsRepository();
28
- this.projectRepo = new repositories_1.ProjectRepository();
29
- this.directoryRepo = new repositories_1.DirectoryRepository(projectId);
30
- this.testPlanRepo = new repositories_1.TestPlanRepository(projectId);
31
- this.tableDataRepo = new repositories_1.TableDataRepository(projectId);
32
- this.fileRepo = new repositories_1.FileRepository(projectId);
33
- }
34
- /**
35
- * Get singleton instance of StorageService
36
- */
37
- static getInstance(projectId) {
38
- if (isInit === false) {
39
- isInit = true;
40
- StorageService.createDirs(["models", "settings"]);
41
- }
42
- let instance = StorageService.instances.get(projectId);
43
- if (!instance) {
44
- instance = new StorageService(projectId);
45
- StorageService.instances.set(projectId, instance);
46
- }
47
- return instance;
48
- }
49
- /**
50
- * Reset instance (useful for testing)
51
- */
52
- static resetInstance() {
53
- StorageService.instances.clear();
54
- isInit = false;
55
- }
56
- /**
57
- * Initialize storage directories
58
- */
59
- static createDirs(dirs) {
60
- for (const dir of dirs) {
61
- const dirPath = (0, path_1.join)(STORAGE_DIR, dir);
62
- if (!(0, fs_1.existsSync)(dirPath)) {
63
- (0, fs_1.mkdirSync)(dirPath, { recursive: true });
64
- }
65
- }
66
- }
67
- /**
68
- * Get storage root directory
69
- */
70
- getStorageDir() {
71
- return STORAGE_DIR;
72
- }
73
- // ==================== TestCase Operations ====================
74
- saveTestCase(testCase) {
75
- this.testCaseRepo.saveTestCase(testCase);
76
- }
77
- loadTestCase(testId) {
78
- return this.testCaseRepo.loadTestCase(testId);
79
- }
80
- listTestCases() {
81
- return this.testCaseRepo.listTestCases();
82
- }
83
- listResuableTestCases(currentId) {
84
- const list = this.testCaseRepo.listTestCases();
85
- return list.filter(test => test.reusable && test.id !== currentId && test.status === 'completed');
86
- }
87
- deleteTestCase(testId) {
88
- this.testCaseRepo.deleteTestCase(testId);
89
- try {
90
- this.tableDataRepo.deleteTableData(testId);
91
- }
92
- catch (err) {
93
- console.error(`Failed to delete table data for test case ${testId}:`, err);
94
- }
95
- try {
96
- this.fileRepo.deleteAllFiles(testId);
97
- }
98
- catch (err) {
99
- console.error(`Failed to delete files for test case ${testId}:`, err);
100
- }
101
- }
102
- listTestCasesRecursively(dirPath) {
103
- return this.testCaseRepo.listTestCasesRecursively(dirPath);
104
- }
105
- saveTestScript(testId, script) {
106
- this.testCaseRepo.saveTestScript(testId, script);
107
- }
108
- hasTestScript(testId) {
109
- return this.testCaseRepo.hasTestScript(testId);
110
- }
111
- loadTestScript(testId) {
112
- return this.testCaseRepo.loadTestScript(testId);
113
- }
114
- saveTestSteps(testId, steps) {
115
- this.testCaseRepo.saveTestSteps(testId, steps);
116
- }
117
- loadTestSteps(testId) {
118
- return this.testCaseRepo.loadTestSteps(testId);
119
- }
120
- saveTestStep(testId, step, afterStepId) {
121
- return this.testCaseRepo.saveTestStep(testId, step, afterStepId);
122
- }
123
- saveStepBreakPoint(testId, id, isBreakpoint) {
124
- return this.testCaseRepo.updateStepBreakPoint(testId, id, isBreakpoint);
125
- }
126
- insertStep(testId, afterStepId, newStep) {
127
- this.testCaseRepo.insertStep(testId, afterStepId, newStep);
128
- }
129
- deleteStep(testId, stepId) {
130
- return this.testCaseRepo.deleteStep(testId, stepId);
131
- }
132
- buildTestDirectoryTree() {
133
- return this.testCaseRepo.buildDirectoryTree();
134
- }
135
- // ==================== Directory Operations ====================
136
- createDirectory(path, info) {
137
- return this.directoryRepo.createDirectory(path, info);
138
- }
139
- getDirectoryInfo(path) {
140
- return this.directoryRepo.getDirectoryInfo(path);
141
- }
142
- updateDirectoryInfo(path, updates) {
143
- return this.directoryRepo.updateDirectoryInfo(path, updates);
144
- }
145
- deleteDirectory(path) {
146
- return this.directoryRepo.deleteDirectory(path);
147
- }
148
- renameDirectory(oldPath, newName) {
149
- return this.directoryRepo.renameDirectory(oldPath, newName);
150
- }
151
- getDirectoriesAtPath(path) {
152
- return this.directoryRepo.getDirectoriesAtPath(path);
153
- }
154
- isValidDirectory(path) {
155
- return this.directoryRepo.isValidDirectory(path);
156
- }
157
- moveDirectory(sourcePath, targetParentPath) {
158
- return this.directoryRepo.moveDirectory(sourcePath, targetParentPath);
159
- }
160
- moveTestCase(testId, sourceDir, targetDir) {
161
- return this.directoryRepo.moveTestCase(testId, sourceDir, targetDir);
162
- }
163
- // ==================== TestResult Operations ====================
164
- async saveTestResult(result) {
165
- await this.testResultRepo.saveTestResult(result);
166
- }
167
- async loadTestResult(resultId) {
168
- return this.testResultRepo.loadTestResult(resultId);
169
- }
170
- async loadTestResults(testId) {
171
- return this.testResultRepo.loadTestResults(testId);
172
- }
173
- async deleteTestResult(resultId) {
174
- await this.testResultRepo.deleteTestResult(resultId);
175
- }
176
- async deleteTestResults(testId) {
177
- await this.testResultRepo.deleteTestResults(testId);
178
- }
179
- // ==================== ModelConfig Operations ====================
180
- async saveModelConfig(config) {
181
- await this.modelConfigRepo.saveModelConfig(config);
182
- }
183
- async loadModelConfig(configId) {
184
- return this.modelConfigRepo.loadModelConfig(configId);
185
- }
186
- async listModelConfigs() {
187
- return this.modelConfigRepo.listModelConfigs();
188
- }
189
- listModelConfigsSync() {
190
- return this.modelConfigRepo.listModelConfigsSync();
191
- }
192
- async updateModelConfig(config) {
193
- await this.modelConfigRepo.updateModelConfig(config);
194
- }
195
- async deleteModelConfig(configId) {
196
- await this.modelConfigRepo.deleteModelConfig(configId);
197
- }
198
- async modelConfigExists(configId) {
199
- return this.modelConfigRepo.exists(configId);
200
- }
201
- // ==================== ExplorationRecord Operations ====================
202
- async saveExplorationRecord(record) {
203
- await this.explorationRepo.saveExplorationRecord(record);
204
- }
205
- async loadExplorationRecord(recordId) {
206
- return this.explorationRepo.loadExplorationRecord(recordId);
207
- }
208
- async listExplorationRecords() {
209
- return this.explorationRepo.listExplorationRecords();
210
- }
211
- async updateExplorationRecord(record) {
212
- await this.explorationRepo.updateExplorationRecord(record);
213
- }
214
- async deleteExplorationRecord(recordId) {
215
- await this.explorationRepo.deleteExplorationRecord(recordId);
216
- }
217
- async getExplorationRecordsByUrl(url) {
218
- return this.explorationRepo.getRecordsByUrl(url);
219
- }
220
- // ==================== Settings Operations ====================
221
- async saveSettings(settings) {
222
- await this.settingsRepo.saveSettings(settings);
223
- }
224
- async loadSettings() {
225
- return this.settingsRepo.loadSettings();
226
- }
227
- // ==================== Project Operations ====================
228
- saveProject(project) {
229
- this.projectRepo.saveProject(project);
230
- }
231
- loadProject(projectId) {
232
- return this.projectRepo.loadProject(projectId);
233
- }
234
- listProjects() {
235
- return this.projectRepo.listProjects();
236
- }
237
- deleteProject(projectId) {
238
- this.projectRepo.deleteProject(projectId);
239
- }
240
- async projectExists(projectId) {
241
- return this.projectRepo.exists(projectId);
242
- }
243
- // ==================== TestPlan Operations ====================
244
- saveTestPlan(testPlan) {
245
- this.testPlanRepo.saveTestPlan(testPlan);
246
- }
247
- loadTestPlan(testPlanId) {
248
- return this.testPlanRepo.loadTestPlan(testPlanId);
249
- }
250
- listTestPlans() {
251
- return this.testPlanRepo.listTestPlans();
252
- }
253
- updateTestPlan(testPlan) {
254
- this.testPlanRepo.updateTestPlan(testPlan);
255
- }
256
- deleteTestPlan(testPlanId) {
257
- this.testPlanRepo.deleteTestPlan(testPlanId);
258
- }
259
- testPlanExists(testPlanId) {
260
- return this.testPlanRepo.exists(testPlanId);
261
- }
262
- // ==================== TableData Operations ====================
263
- async saveTableData(tableData) {
264
- await this.tableDataRepo.saveTableData(tableData);
265
- }
266
- async loadTableData(testId) {
267
- const data = await this.tableDataRepo.loadTableData(testId);
268
- if (data && data.rows.length > 0) {
269
- return data;
270
- }
271
- return null;
272
- }
273
- async deleteTableData(testId) {
274
- await this.tableDataRepo.deleteTableData(testId);
275
- }
276
- // ==================== File Operations ====================
277
- getFileDir(testId) {
278
- return this.fileRepo.getTestFilesDir(testId);
279
- }
280
- saveFile(testId, fileName, content) {
281
- return this.fileRepo.saveFile(testId, fileName, content);
282
- }
283
- loadFile(testId, fileName) {
284
- return this.fileRepo.loadFile(testId, fileName);
285
- }
286
- listFiles(testId) {
287
- return this.fileRepo.listFiles(testId);
288
- }
289
- deleteFile(testId, fileName) {
290
- return this.fileRepo.deleteFile(testId, fileName);
291
- }
292
- deleteAllFiles(testId) {
293
- this.fileRepo.deleteAllFiles(testId);
294
- }
295
- fileExists(testId, fileName) {
296
- return this.fileRepo.fileExists(testId, fileName);
297
- }
298
- getFileInfo(testId, fileName) {
299
- return this.fileRepo.getFileInfo(testId, fileName);
300
- }
301
- }
302
- exports.StorageService = StorageService;
303
- StorageService.instances = new Map();
304
- //# sourceMappingURL=storageService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storageService.js","sourceRoot":"","sources":["../../../../core-infra/src/storageService.ts"],"names":[],"mappings":"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"}