@cotestdev/ai-runner 0.0.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 (214) hide show
  1. package/README.md +263 -0
  2. package/dist/agents/heal-agent.d.ts +30 -0
  3. package/dist/agents/heal-agent.d.ts.map +1 -0
  4. package/dist/agents/heal-agent.js +76 -0
  5. package/dist/agents/heal-agent.js.map +1 -0
  6. package/dist/agents/healer.d.ts +73 -0
  7. package/dist/agents/healer.d.ts.map +1 -0
  8. package/dist/agents/healer.js +538 -0
  9. package/dist/agents/healer.js.map +1 -0
  10. package/dist/agents/tools/form.d.ts +22 -0
  11. package/dist/agents/tools/form.d.ts.map +1 -0
  12. package/dist/agents/tools/form.js +134 -0
  13. package/dist/agents/tools/form.js.map +1 -0
  14. package/dist/agents/tools/index.d.ts +13 -0
  15. package/dist/agents/tools/index.d.ts.map +1 -0
  16. package/dist/agents/tools/index.js +33 -0
  17. package/dist/agents/tools/index.js.map +1 -0
  18. package/dist/agents/tools/navigate.d.ts +22 -0
  19. package/dist/agents/tools/navigate.d.ts.map +1 -0
  20. package/dist/agents/tools/navigate.js +74 -0
  21. package/dist/agents/tools/navigate.js.map +1 -0
  22. package/dist/agents/tools/snapshot.d.ts +22 -0
  23. package/dist/agents/tools/snapshot.d.ts.map +1 -0
  24. package/dist/agents/tools/snapshot.js +110 -0
  25. package/dist/agents/tools/snapshot.js.map +1 -0
  26. package/dist/agents/tools/verify.d.ts +34 -0
  27. package/dist/agents/tools/verify.d.ts.map +1 -0
  28. package/dist/agents/tools/verify.js +169 -0
  29. package/dist/agents/tools/verify.js.map +1 -0
  30. package/dist/agents/tools/wait.d.ts +22 -0
  31. package/dist/agents/tools/wait.d.ts.map +1 -0
  32. package/dist/agents/tools/wait.js +104 -0
  33. package/dist/agents/tools/wait.js.map +1 -0
  34. package/dist/agents/types.d.ts +51 -0
  35. package/dist/agents/types.d.ts.map +1 -0
  36. package/dist/agents/types.js +6 -0
  37. package/dist/agents/types.js.map +1 -0
  38. package/dist/ai-runner/src/agents/logger.d.ts +7 -0
  39. package/dist/ai-runner/src/agents/logger.d.ts.map +1 -0
  40. package/dist/ai-runner/src/agents/logger.js +22 -0
  41. package/dist/ai-runner/src/agents/logger.js.map +1 -0
  42. package/dist/ai-runner/src/agents/playwright-executor.d.ts +24 -0
  43. package/dist/ai-runner/src/agents/playwright-executor.d.ts.map +1 -0
  44. package/dist/ai-runner/src/agents/playwright-executor.js +226 -0
  45. package/dist/ai-runner/src/agents/playwright-executor.js.map +1 -0
  46. package/dist/ai-runner/src/agents/tools/playwright-backend-adapter.d.ts +33 -0
  47. package/dist/ai-runner/src/agents/tools/playwright-backend-adapter.d.ts.map +1 -0
  48. package/dist/ai-runner/src/agents/tools/playwright-backend-adapter.js +146 -0
  49. package/dist/ai-runner/src/agents/tools/playwright-backend-adapter.js.map +1 -0
  50. package/dist/ai-runner/src/agents/types.d.ts +55 -0
  51. package/dist/ai-runner/src/agents/types.d.ts.map +1 -0
  52. package/dist/ai-runner/src/agents/types.js +6 -0
  53. package/dist/ai-runner/src/agents/types.js.map +1 -0
  54. package/dist/ai-runner/src/examples/test-final.d.ts +6 -0
  55. package/dist/ai-runner/src/examples/test-final.d.ts.map +1 -0
  56. package/dist/ai-runner/src/examples/test-final.js +73 -0
  57. package/dist/ai-runner/src/examples/test-final.js.map +1 -0
  58. package/dist/ai-runner/src/examples/test-simple-tools.d.ts +6 -0
  59. package/dist/ai-runner/src/examples/test-simple-tools.d.ts.map +1 -0
  60. package/dist/ai-runner/src/examples/test-simple-tools.js +149 -0
  61. package/dist/ai-runner/src/examples/test-simple-tools.js.map +1 -0
  62. package/dist/ai-runner/src/examples/test-working.d.ts +5 -0
  63. package/dist/ai-runner/src/examples/test-working.d.ts.map +1 -0
  64. package/dist/ai-runner/src/examples/test-working.js +43 -0
  65. package/dist/ai-runner/src/examples/test-working.js.map +1 -0
  66. package/dist/ai-runner/src/examples/v-test-backend-adapter.d.ts +15 -0
  67. package/dist/ai-runner/src/examples/v-test-backend-adapter.d.ts.map +1 -0
  68. package/dist/ai-runner/src/examples/v-test-backend-adapter.js +240 -0
  69. package/dist/ai-runner/src/examples/v-test-backend-adapter.js.map +1 -0
  70. package/dist/ai-runner/src/index.d.ts +8 -0
  71. package/dist/ai-runner/src/index.d.ts.map +1 -0
  72. package/dist/ai-runner/src/index.js +11 -0
  73. package/dist/ai-runner/src/index.js.map +1 -0
  74. package/dist/ai-runner/src/runner.d.ts +28 -0
  75. package/dist/ai-runner/src/runner.d.ts.map +1 -0
  76. package/dist/ai-runner/src/runner.js +176 -0
  77. package/dist/ai-runner/src/runner.js.map +1 -0
  78. package/dist/ai-runner/src/tools/index.d.ts +16 -0
  79. package/dist/ai-runner/src/tools/index.d.ts.map +1 -0
  80. package/dist/ai-runner/src/tools/index.js +35 -0
  81. package/dist/ai-runner/src/tools/index.js.map +1 -0
  82. package/dist/ai-runner/src/tools/playwright-groups.d.ts +19 -0
  83. package/dist/ai-runner/src/tools/playwright-groups.d.ts.map +1 -0
  84. package/dist/ai-runner/src/tools/playwright-groups.js +42 -0
  85. package/dist/ai-runner/src/tools/playwright-groups.js.map +1 -0
  86. package/dist/ai-runner/src/types/external.d.ts +6 -0
  87. package/dist/ai-runner/src/types/external.d.ts.map +1 -0
  88. package/dist/ai-runner/src/types/external.js +7 -0
  89. package/dist/ai-runner/src/types/external.js.map +1 -0
  90. package/dist/ai-runner/src/types/index.d.ts +95 -0
  91. package/dist/ai-runner/src/types/index.d.ts.map +1 -0
  92. package/dist/ai-runner/src/types/index.js +7 -0
  93. package/dist/ai-runner/src/types/index.js.map +1 -0
  94. package/dist/core/runner.d.ts +194 -0
  95. package/dist/core/runner.d.ts.map +1 -0
  96. package/dist/core/runner.js +650 -0
  97. package/dist/core/runner.js.map +1 -0
  98. package/dist/core-infra/src/directory-validator.d.ts +29 -0
  99. package/dist/core-infra/src/directory-validator.d.ts.map +1 -0
  100. package/dist/core-infra/src/directory-validator.js +91 -0
  101. package/dist/core-infra/src/directory-validator.js.map +1 -0
  102. package/dist/core-infra/src/index.d.ts +14 -0
  103. package/dist/core-infra/src/index.d.ts.map +1 -0
  104. package/dist/core-infra/src/index.js +44 -0
  105. package/dist/core-infra/src/index.js.map +1 -0
  106. package/dist/core-infra/src/mcp/file-mcp-manager.d.ts +14 -0
  107. package/dist/core-infra/src/mcp/file-mcp-manager.d.ts.map +1 -0
  108. package/dist/core-infra/src/mcp/file-mcp-manager.js +46 -0
  109. package/dist/core-infra/src/mcp/file-mcp-manager.js.map +1 -0
  110. package/dist/core-infra/src/mcp/index.d.ts +21 -0
  111. package/dist/core-infra/src/mcp/index.d.ts.map +1 -0
  112. package/dist/core-infra/src/mcp/index.js +17 -0
  113. package/dist/core-infra/src/mcp/index.js.map +1 -0
  114. package/dist/core-infra/src/mcp/mcp-client.d.ts +128 -0
  115. package/dist/core-infra/src/mcp/mcp-client.d.ts.map +1 -0
  116. package/dist/core-infra/src/mcp/mcp-client.js +163 -0
  117. package/dist/core-infra/src/mcp/mcp-client.js.map +1 -0
  118. package/dist/core-infra/src/mcp/mcp-manager.d.ts +21 -0
  119. package/dist/core-infra/src/mcp/mcp-manager.d.ts.map +1 -0
  120. package/dist/core-infra/src/mcp/mcp-manager.js +99 -0
  121. package/dist/core-infra/src/mcp/mcp-manager.js.map +1 -0
  122. package/dist/core-infra/src/mcp/playwright-mcp-manager.d.ts +19 -0
  123. package/dist/core-infra/src/mcp/playwright-mcp-manager.d.ts.map +1 -0
  124. package/dist/core-infra/src/mcp/playwright-mcp-manager.js +120 -0
  125. package/dist/core-infra/src/mcp/playwright-mcp-manager.js.map +1 -0
  126. package/dist/core-infra/src/model.d.ts +11 -0
  127. package/dist/core-infra/src/model.d.ts.map +1 -0
  128. package/dist/core-infra/src/model.js +190 -0
  129. package/dist/core-infra/src/model.js.map +1 -0
  130. package/dist/core-infra/src/repositories/BaseRepository.d.ts +69 -0
  131. package/dist/core-infra/src/repositories/BaseRepository.d.ts.map +1 -0
  132. package/dist/core-infra/src/repositories/BaseRepository.js +213 -0
  133. package/dist/core-infra/src/repositories/BaseRepository.js.map +1 -0
  134. package/dist/core-infra/src/repositories/DirectoryRepository.d.ts +70 -0
  135. package/dist/core-infra/src/repositories/DirectoryRepository.d.ts.map +1 -0
  136. package/dist/core-infra/src/repositories/DirectoryRepository.js +336 -0
  137. package/dist/core-infra/src/repositories/DirectoryRepository.js.map +1 -0
  138. package/dist/core-infra/src/repositories/ExplorationRepository.d.ts +34 -0
  139. package/dist/core-infra/src/repositories/ExplorationRepository.d.ts.map +1 -0
  140. package/dist/core-infra/src/repositories/ExplorationRepository.js +54 -0
  141. package/dist/core-infra/src/repositories/ExplorationRepository.js.map +1 -0
  142. package/dist/core-infra/src/repositories/FileRepository.d.ts +56 -0
  143. package/dist/core-infra/src/repositories/FileRepository.d.ts.map +1 -0
  144. package/dist/core-infra/src/repositories/FileRepository.js +132 -0
  145. package/dist/core-infra/src/repositories/FileRepository.js.map +1 -0
  146. package/dist/core-infra/src/repositories/ModelConfigRepository.d.ts +38 -0
  147. package/dist/core-infra/src/repositories/ModelConfigRepository.d.ts.map +1 -0
  148. package/dist/core-infra/src/repositories/ModelConfigRepository.js +59 -0
  149. package/dist/core-infra/src/repositories/ModelConfigRepository.js.map +1 -0
  150. package/dist/core-infra/src/repositories/ProjectRepository.d.ts +32 -0
  151. package/dist/core-infra/src/repositories/ProjectRepository.d.ts.map +1 -0
  152. package/dist/core-infra/src/repositories/ProjectRepository.js +67 -0
  153. package/dist/core-infra/src/repositories/ProjectRepository.js.map +1 -0
  154. package/dist/core-infra/src/repositories/SettingsRepository.d.ts +19 -0
  155. package/dist/core-infra/src/repositories/SettingsRepository.d.ts.map +1 -0
  156. package/dist/core-infra/src/repositories/SettingsRepository.js +72 -0
  157. package/dist/core-infra/src/repositories/SettingsRepository.js.map +1 -0
  158. package/dist/core-infra/src/repositories/TableDataRepository.d.ts +22 -0
  159. package/dist/core-infra/src/repositories/TableDataRepository.d.ts.map +1 -0
  160. package/dist/core-infra/src/repositories/TableDataRepository.js +33 -0
  161. package/dist/core-infra/src/repositories/TableDataRepository.js.map +1 -0
  162. package/dist/core-infra/src/repositories/TestCaseRepository.d.ts +120 -0
  163. package/dist/core-infra/src/repositories/TestCaseRepository.d.ts.map +1 -0
  164. package/dist/core-infra/src/repositories/TestCaseRepository.js +463 -0
  165. package/dist/core-infra/src/repositories/TestCaseRepository.js.map +1 -0
  166. package/dist/core-infra/src/repositories/TestPlanRepository.d.ts +35 -0
  167. package/dist/core-infra/src/repositories/TestPlanRepository.d.ts.map +1 -0
  168. package/dist/core-infra/src/repositories/TestPlanRepository.js +80 -0
  169. package/dist/core-infra/src/repositories/TestPlanRepository.js.map +1 -0
  170. package/dist/core-infra/src/repositories/TestResultRepository.d.ts +30 -0
  171. package/dist/core-infra/src/repositories/TestResultRepository.d.ts.map +1 -0
  172. package/dist/core-infra/src/repositories/TestResultRepository.js +54 -0
  173. package/dist/core-infra/src/repositories/TestResultRepository.js.map +1 -0
  174. package/dist/core-infra/src/repositories/index.d.ts +17 -0
  175. package/dist/core-infra/src/repositories/index.d.ts.map +1 -0
  176. package/dist/core-infra/src/repositories/index.js +31 -0
  177. package/dist/core-infra/src/repositories/index.js.map +1 -0
  178. package/dist/core-infra/src/storageService.d.ts +131 -0
  179. package/dist/core-infra/src/storageService.d.ts.map +1 -0
  180. package/dist/core-infra/src/storageService.js +304 -0
  181. package/dist/core-infra/src/storageService.js.map +1 -0
  182. package/dist/core-infra/src/types.d.ts +218 -0
  183. package/dist/core-infra/src/types.d.ts.map +1 -0
  184. package/dist/core-infra/src/types.js +3 -0
  185. package/dist/core-infra/src/types.js.map +1 -0
  186. package/dist/index.d.ts +8 -0
  187. package/dist/index.d.ts.map +1 -0
  188. package/dist/index.js +11 -0
  189. package/dist/index.js.map +1 -0
  190. package/dist/types/external.d.ts +6 -0
  191. package/dist/types/external.d.ts.map +1 -0
  192. package/dist/types/external.js +7 -0
  193. package/dist/types/external.js.map +1 -0
  194. package/dist/types/index.d.ts +153 -0
  195. package/dist/types/index.d.ts.map +1 -0
  196. package/dist/types/index.js +26 -0
  197. package/dist/types/index.js.map +1 -0
  198. package/docs/PLAYWRIGHT_MCP_ADAPTER.md +132 -0
  199. package/docs/SCHEMA_EXTRACTION.md +224 -0
  200. package/package.json +43 -0
  201. package/playwright.config.ts +38 -0
  202. package/src/agents/logger.ts +20 -0
  203. package/src/agents/playwright-executor.ts +244 -0
  204. package/src/agents/tools/playwright-backend-adapter.ts +134 -0
  205. package/src/agents/tools/playwright-mcp-types.d.ts +71 -0
  206. package/src/agents/types.ts +80 -0
  207. package/src/index.ts +27 -0
  208. package/src/runner.ts +219 -0
  209. package/src/tools/index.ts +48 -0
  210. package/src/tools/playwright-groups.ts +54 -0
  211. package/src/types/external.ts +7 -0
  212. package/src/types/index.ts +118 -0
  213. package/tests/agent/test-heal-agent.spec.ts +69 -0
  214. package/tsconfig.json +26 -0
@@ -0,0 +1,304 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storageService.js","sourceRoot":"","sources":["../../../../core-infra/src/storageService.ts"],"names":[],"mappings":";;;AAAA,2BAA2C;AAC3C,2BAA6B;AAC7B,+BAA4B;AAC5B,iDAWwB;AAIxB,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,aAAa,CAAC,CAAC;AAEnD,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB;;;;;;;;;;GAUG;AACH,MAAa,cAAc;IAazB,YAAoB,SAAiB;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,iCAAkB,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,cAAc,GAAG,IAAI,mCAAoB,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,CAAC,eAAe,GAAG,IAAI,oCAAqB,EAAE,CAAC;QACnD,IAAI,CAAC,eAAe,GAAG,IAAI,oCAAqB,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,iCAAkB,EAAE,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,gCAAiB,EAAE,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,IAAI,kCAAmB,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,YAAY,GAAG,IAAI,iCAAkB,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,aAAa,GAAG,IAAI,kCAAmB,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,GAAG,IAAI,6BAAc,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAID;;KAEC;IACD,MAAM,CAAC,WAAW,CAAC,SAAiB;QAClC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,MAAM,GAAG,IAAI,CAAC;YACd,cAAc,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;YACzC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa;QAClB,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACjC,MAAM,GAAG,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,UAAU,CAAC,IAAc;QACtC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC,EAAE,CAAC;gBACzB,IAAA,cAAS,EAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,gEAAgE;IAEhE,YAAY,CAAC,QAAkB;QAC7B,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC;IAED,qBAAqB,CAAC,SAAiB;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IACpG,CAAC;IAED,cAAc,CAAC,MAAc;QAC3B,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,6CAA6C,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,wCAAwC,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,wBAAwB,CAAC,OAAe;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,MAAc;QAC3C,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,aAAa,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,cAAc,CAAC,MAAc;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,aAAa,CAAC,MAAc,EAAE,KAAiB;QAC7C,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,aAAa,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,YAAY,CACV,MAAc,EACd,IAA6F,EAC7F,WAAoB;QAEpB,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IACnE,CAAC;IAED,kBAAkB,CAChB,MAAc,EACd,EAAU,EACV,YAAsB;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;IAC1E,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,WAAsC,EAAE,OAAiB;QAClF,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,MAAc;QACvC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,sBAAsB;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;IAChD,CAAC;IAED,iEAAiE;IAEjE,eAAe,CAAC,IAAY,EAAE,IAAwC;QACpE,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,gBAAgB,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,mBAAmB,CAAC,IAAY,EAAE,OAAoD;QACpF,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,eAAe,CAAC,IAAY;QAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,eAAe,CAAC,OAAe,EAAE,OAAe;QAC9C,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,oBAAoB,CAAC,IAAa;QAChC,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,gBAAgB,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,aAAa,CAAC,UAAkB,EAAE,gBAAwB;QACxD,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IACxE,CAAC;IAED,YAAY,CAAC,MAAc,EAAE,SAAiB,EAAE,SAAiB;QAC/D,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACvE,CAAC;IAED,kEAAkE;IAElE,KAAK,CAAC,cAAc,CAAC,MAAkB;QACrC,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAc;QACpC,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,mEAAmE;IAEnE,KAAK,CAAC,eAAe,CAAC,MAAmB;QACvC,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB;QACpC,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;IACjD,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAmB;QACzC,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,QAAgB;QACtC,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,QAAgB;QACtC,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,yEAAyE;IAEzE,KAAK,CAAC,qBAAqB,CAAC,MAAyB;QACnD,MAAM,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,QAAgB;QAC1C,OAAO,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,OAAO,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,MAAyB;QACrD,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,QAAgB;QAC5C,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,GAAW;QAC1C,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,gEAAgE;IAEhE,KAAK,CAAC,YAAY,CAAC,QAAqB;QACtC,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;IAC1C,CAAC;IAED,+DAA+D;IAE/D,WAAW,CAAC,OAAgB;QAC1B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,WAAW,CAAC,SAAiB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,aAAa,CAAC,SAAiB;QAC7B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,gEAAgE;IAEhE,YAAY,CAAC,QAAkB;QAC7B,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,YAAY,CAAC,UAAkB;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC;IAED,cAAc,CAAC,QAAkB;QAC/B,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,cAAc,CAAC,UAAkB;QAC/B,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,cAAc,CAAC,UAAkB;QAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,iEAAiE;IAEjE,KAAK,CAAC,aAAa,CAAC,SAAoB;QACtC,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,4DAA4D;IAE5D,UAAU,CAAC,MAAc;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,QAAQ,CAAC,MAAc,EAAE,QAAgB,EAAE,OAAe;QACxD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,QAAQ,CAAC,MAAc,EAAE,QAAgB;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,QAAgB;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,cAAc,CAAC,MAAc;QAC3B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,QAAgB;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,WAAW,CAAC,MAAc,EAAE,QAAgB;QAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;;AA5XH,wCA6XC;AAnWgB,wBAAS,GAAgC,IAAI,GAAG,EAAE,CAAC"}
@@ -0,0 +1,218 @@
1
+ export interface TestStep {
2
+ id: string;
3
+ description: string;
4
+ status?: "running" | "success" | "error";
5
+ error?: string;
6
+ isBreakpoint?: boolean;
7
+ }
8
+ export interface TableData {
9
+ testId: string;
10
+ columns: string[];
11
+ rows: Record<string, string>[];
12
+ createdAt: number;
13
+ updatedAt: number;
14
+ }
15
+ export type TestCaseType = 'functional' | 'ui' | 'edge';
16
+ export type TestCasePriority = 'high' | 'medium' | 'low';
17
+ export interface TestParameter {
18
+ key: string;
19
+ value?: string;
20
+ description: string;
21
+ }
22
+ export interface TestCase {
23
+ id: string;
24
+ name: string;
25
+ description: string;
26
+ url: string;
27
+ steps: TestStep[];
28
+ playwrightScript?: string;
29
+ createdAt: number;
30
+ updatedAt: number;
31
+ status: 'draft' | 'ready' | 'completed';
32
+ path: string;
33
+ creator?: 'user' | 'ai';
34
+ table?: TableData;
35
+ type?: TestCaseType;
36
+ reusable?: boolean;
37
+ dependencies?: string[];
38
+ priority?: TestCasePriority;
39
+ parameters?: TestParameter[];
40
+ outParameters?: TestParameter[];
41
+ reusedTestIds?: string[];
42
+ }
43
+ export type LanguageCode = 'en-US' | 'zh-CN';
44
+ export interface DirectoryInfo {
45
+ id: string;
46
+ name: string;
47
+ description?: string;
48
+ createdAt: number;
49
+ updatedAt: number;
50
+ }
51
+ export interface TestDirectory {
52
+ path: string;
53
+ name: string;
54
+ info?: DirectoryInfo;
55
+ children: TestDirectory[];
56
+ tests: TestCase[];
57
+ }
58
+ export type ModelProvider = 'openai' | 'anthropic' | 'mistral' | 'deekseek' | 'qwen';
59
+ export interface ModelConfig {
60
+ id: string;
61
+ name: string;
62
+ provider: ModelProvider;
63
+ modelName: string;
64
+ apiKey?: string;
65
+ baseURL?: string;
66
+ temperature?: number;
67
+ maxTokens?: number;
68
+ timeout?: number;
69
+ isDefault?: boolean;
70
+ createdAt: number;
71
+ updatedAt: number;
72
+ }
73
+ export interface AutomationJob {
74
+ id: string;
75
+ name: string;
76
+ url: string;
77
+ status: 'idle' | 'exploring' | 'generating' | 'completed' | 'error';
78
+ progress: number;
79
+ generatedTests: TestCase[];
80
+ insights: string[];
81
+ startedAt?: number;
82
+ completedAt?: number;
83
+ error?: string;
84
+ depth?: number;
85
+ maxTests?: number;
86
+ }
87
+ export interface ExplorationRecord {
88
+ id: string;
89
+ url: string;
90
+ status: 'pending' | 'running' | 'completed' | 'error';
91
+ progress: number;
92
+ currentPhase: string;
93
+ generatedTests: number;
94
+ testIds: string[];
95
+ config: {
96
+ modelConfigId: string;
97
+ modelName: string;
98
+ maxSteps: number;
99
+ maxTests: number;
100
+ exploreDepth: number;
101
+ explorationScope?: string;
102
+ customData?: Array<{
103
+ key: string;
104
+ value: string;
105
+ }>;
106
+ language?: LanguageCode;
107
+ };
108
+ interactions: Array<{
109
+ round: number;
110
+ type: 'exploration' | 'analysis' | 'generation';
111
+ phase: string;
112
+ message: string;
113
+ timestamp: number;
114
+ }>;
115
+ artifacts?: any;
116
+ startedAt: number;
117
+ completedAt?: number;
118
+ error?: string;
119
+ }
120
+ export interface MCPServer {
121
+ name: string;
122
+ endpoint: string;
123
+ capabilities: string[];
124
+ connected: boolean;
125
+ tools?: string[];
126
+ }
127
+ export interface BrowserCapabilities {
128
+ browsers: ('chromium' | 'firefox' | 'webkit')[];
129
+ headless: boolean;
130
+ viewport?: {
131
+ width: number;
132
+ height: number;
133
+ };
134
+ deviceScaleFactor?: number;
135
+ locale?: string;
136
+ timezone?: string;
137
+ }
138
+ export interface AppSettings {
139
+ theme: 'light' | 'dark';
140
+ aiModel: ModelConfig;
141
+ defaultBrowser: 'chromium' | 'firefox' | 'webkit';
142
+ headlessMode: boolean;
143
+ autoSave: boolean;
144
+ maxParallelTests: number;
145
+ screenshots: {
146
+ enabled: boolean;
147
+ captureOnError: boolean;
148
+ captureOnStep: boolean;
149
+ };
150
+ timeouts: {
151
+ navigation: number;
152
+ action: number;
153
+ assertion: number;
154
+ };
155
+ mcpSettings?: {
156
+ endpoint: string;
157
+ useStdio: boolean;
158
+ };
159
+ }
160
+ export interface TestResult {
161
+ id: string;
162
+ testId: string;
163
+ status: 'passed' | 'failed' | 'skipped';
164
+ duration: number;
165
+ executedAt: number;
166
+ error?: string;
167
+ summary: {
168
+ total: number;
169
+ passed: number;
170
+ failed: number;
171
+ skipped: number;
172
+ };
173
+ }
174
+ export interface ToolCallInfo {
175
+ toolCall?: ToolCall;
176
+ content: string;
177
+ status?: 'success' | 'error';
178
+ stepId?: string;
179
+ }
180
+ export type ToolCall = {
181
+ name: string;
182
+ args: Record<string, any>;
183
+ id?: string;
184
+ content?: string;
185
+ };
186
+ export interface Project {
187
+ id: string;
188
+ name: string;
189
+ description: string;
190
+ createdAt: number;
191
+ updatedAt?: number;
192
+ isActive: boolean;
193
+ }
194
+ export interface TestPlanItem {
195
+ type: 'test' | 'directory';
196
+ id: string;
197
+ name: string;
198
+ path?: string;
199
+ directoryPath?: string;
200
+ }
201
+ export interface TestPlan {
202
+ id: string;
203
+ name: string;
204
+ description: string;
205
+ projectId: string;
206
+ testIds: string[];
207
+ createdAt: number;
208
+ updatedAt: number;
209
+ status: 'ready' | 'running' | 'completed' | 'failed' | 'partial' | 'stopped';
210
+ lastExecutedAt?: number;
211
+ maxConcurrency?: number;
212
+ browsers?: Array<'chromium' | 'firefox' | 'webkit'>;
213
+ scheduledAt?: number;
214
+ passedIds?: string[];
215
+ failedIds?: string[];
216
+ skippedIds?: string[];
217
+ }
218
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../core-infra/src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../core-infra/src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ai-runner SDK 主入口
3
+ * 提供 AI 驱动的测试运行能力
4
+ */
5
+ export type { AIHealConfig, ExecutionContext, ExecutionResult, HealContext, HealSummary, HealingDetail, RunStepOptions, VariableBindings } from './types';
6
+ export { Runner } from './core/runner';
7
+ export type { HealAgentState, HealAgentResult, HealAgentConfig } from './agents/types';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,EACd,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAIjB,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAIvC,YAAY,EACV,cAAc,EACd,eAAe,EACf,eAAe,EAChB,MAAM,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * ai-runner SDK 主入口
4
+ * 提供 AI 驱动的测试运行能力
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.Runner = void 0;
8
+ // 核心类
9
+ var runner_1 = require("./core/runner");
10
+ Object.defineProperty(exports, "Runner", { enumerable: true, get: function () { return runner_1.Runner; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAeH,MAAM;AACN,wCAAuC;AAA9B,gGAAA,MAAM,OAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 外部类型定义
3
+ * 直接从 core-infra 导入
4
+ */
5
+ export type { ModelConfig, ModelProvider } from '@chen-rmag/core-infra';
6
+ //# sourceMappingURL=external.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * 外部类型定义
4
+ * 直接从 core-infra 导入
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=external.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external.js","sourceRoot":"","sources":["../../src/types/external.ts"],"names":[],"mappings":";AAAA;;;GAGG"}