@cotestdev/ai-runner 0.0.4 → 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 (148) 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 -2
  22. package/dist/ai-runner/src/agents/logger.d.ts.map +0 -1
  23. package/dist/ai-runner/src/agents/logger.js.map +0 -1
  24. package/dist/ai-runner/src/agents/playwright-executor.d.ts.map +0 -1
  25. package/dist/ai-runner/src/agents/playwright-executor.js.map +0 -1
  26. package/dist/ai-runner/src/agents/tools/playwright-backend-adapter.d.ts.map +0 -1
  27. package/dist/ai-runner/src/agents/tools/playwright-backend-adapter.js.map +0 -1
  28. package/dist/ai-runner/src/agents/types.d.ts.map +0 -1
  29. package/dist/ai-runner/src/agents/types.js.map +0 -1
  30. package/dist/ai-runner/src/index.d.ts.map +0 -1
  31. package/dist/ai-runner/src/index.js.map +0 -1
  32. package/dist/ai-runner/src/runner.d.ts.map +0 -1
  33. package/dist/ai-runner/src/runner.js.map +0 -1
  34. package/dist/ai-runner/src/tools/index.d.ts.map +0 -1
  35. package/dist/ai-runner/src/tools/index.js.map +0 -1
  36. package/dist/ai-runner/src/tools/playwright-groups.d.ts.map +0 -1
  37. package/dist/ai-runner/src/tools/playwright-groups.js.map +0 -1
  38. package/dist/ai-runner/src/types/external.d.ts.map +0 -1
  39. package/dist/ai-runner/src/types/external.js.map +0 -1
  40. package/dist/ai-runner/src/types/index.d.ts.map +0 -1
  41. package/dist/ai-runner/src/types/index.js.map +0 -1
  42. package/dist/core-infra/src/directory-validator.d.ts +0 -29
  43. package/dist/core-infra/src/directory-validator.d.ts.map +0 -1
  44. package/dist/core-infra/src/directory-validator.js +0 -91
  45. package/dist/core-infra/src/directory-validator.js.map +0 -1
  46. package/dist/core-infra/src/index.d.ts +0 -14
  47. package/dist/core-infra/src/index.d.ts.map +0 -1
  48. package/dist/core-infra/src/index.js +0 -44
  49. package/dist/core-infra/src/index.js.map +0 -1
  50. package/dist/core-infra/src/mcp/file-mcp-manager.d.ts +0 -14
  51. package/dist/core-infra/src/mcp/file-mcp-manager.d.ts.map +0 -1
  52. package/dist/core-infra/src/mcp/file-mcp-manager.js +0 -46
  53. package/dist/core-infra/src/mcp/file-mcp-manager.js.map +0 -1
  54. package/dist/core-infra/src/mcp/index.d.ts +0 -21
  55. package/dist/core-infra/src/mcp/index.d.ts.map +0 -1
  56. package/dist/core-infra/src/mcp/index.js +0 -17
  57. package/dist/core-infra/src/mcp/index.js.map +0 -1
  58. package/dist/core-infra/src/mcp/mcp-client.d.ts +0 -128
  59. package/dist/core-infra/src/mcp/mcp-client.d.ts.map +0 -1
  60. package/dist/core-infra/src/mcp/mcp-client.js +0 -163
  61. package/dist/core-infra/src/mcp/mcp-client.js.map +0 -1
  62. package/dist/core-infra/src/mcp/mcp-manager.d.ts +0 -21
  63. package/dist/core-infra/src/mcp/mcp-manager.d.ts.map +0 -1
  64. package/dist/core-infra/src/mcp/mcp-manager.js +0 -99
  65. package/dist/core-infra/src/mcp/mcp-manager.js.map +0 -1
  66. package/dist/core-infra/src/mcp/playwright-mcp-manager.d.ts +0 -19
  67. package/dist/core-infra/src/mcp/playwright-mcp-manager.d.ts.map +0 -1
  68. package/dist/core-infra/src/mcp/playwright-mcp-manager.js +0 -121
  69. package/dist/core-infra/src/mcp/playwright-mcp-manager.js.map +0 -1
  70. package/dist/core-infra/src/model.d.ts +0 -13
  71. package/dist/core-infra/src/model.d.ts.map +0 -1
  72. package/dist/core-infra/src/model.js +0 -191
  73. package/dist/core-infra/src/model.js.map +0 -1
  74. package/dist/core-infra/src/repositories/BaseRepository.d.ts +0 -69
  75. package/dist/core-infra/src/repositories/BaseRepository.d.ts.map +0 -1
  76. package/dist/core-infra/src/repositories/BaseRepository.js +0 -213
  77. package/dist/core-infra/src/repositories/BaseRepository.js.map +0 -1
  78. package/dist/core-infra/src/repositories/DirectoryRepository.d.ts +0 -70
  79. package/dist/core-infra/src/repositories/DirectoryRepository.d.ts.map +0 -1
  80. package/dist/core-infra/src/repositories/DirectoryRepository.js +0 -336
  81. package/dist/core-infra/src/repositories/DirectoryRepository.js.map +0 -1
  82. package/dist/core-infra/src/repositories/ExplorationRepository.d.ts +0 -34
  83. package/dist/core-infra/src/repositories/ExplorationRepository.d.ts.map +0 -1
  84. package/dist/core-infra/src/repositories/ExplorationRepository.js +0 -54
  85. package/dist/core-infra/src/repositories/ExplorationRepository.js.map +0 -1
  86. package/dist/core-infra/src/repositories/FileRepository.d.ts +0 -56
  87. package/dist/core-infra/src/repositories/FileRepository.d.ts.map +0 -1
  88. package/dist/core-infra/src/repositories/FileRepository.js +0 -132
  89. package/dist/core-infra/src/repositories/FileRepository.js.map +0 -1
  90. package/dist/core-infra/src/repositories/ModelConfigRepository.d.ts +0 -38
  91. package/dist/core-infra/src/repositories/ModelConfigRepository.d.ts.map +0 -1
  92. package/dist/core-infra/src/repositories/ModelConfigRepository.js +0 -59
  93. package/dist/core-infra/src/repositories/ModelConfigRepository.js.map +0 -1
  94. package/dist/core-infra/src/repositories/ProjectRepository.d.ts +0 -32
  95. package/dist/core-infra/src/repositories/ProjectRepository.d.ts.map +0 -1
  96. package/dist/core-infra/src/repositories/ProjectRepository.js +0 -67
  97. package/dist/core-infra/src/repositories/ProjectRepository.js.map +0 -1
  98. package/dist/core-infra/src/repositories/SettingsRepository.d.ts +0 -19
  99. package/dist/core-infra/src/repositories/SettingsRepository.d.ts.map +0 -1
  100. package/dist/core-infra/src/repositories/SettingsRepository.js +0 -72
  101. package/dist/core-infra/src/repositories/SettingsRepository.js.map +0 -1
  102. package/dist/core-infra/src/repositories/TableDataRepository.d.ts +0 -22
  103. package/dist/core-infra/src/repositories/TableDataRepository.d.ts.map +0 -1
  104. package/dist/core-infra/src/repositories/TableDataRepository.js +0 -33
  105. package/dist/core-infra/src/repositories/TableDataRepository.js.map +0 -1
  106. package/dist/core-infra/src/repositories/TestCaseRepository.d.ts +0 -120
  107. package/dist/core-infra/src/repositories/TestCaseRepository.d.ts.map +0 -1
  108. package/dist/core-infra/src/repositories/TestCaseRepository.js +0 -463
  109. package/dist/core-infra/src/repositories/TestCaseRepository.js.map +0 -1
  110. package/dist/core-infra/src/repositories/TestPlanRepository.d.ts +0 -35
  111. package/dist/core-infra/src/repositories/TestPlanRepository.d.ts.map +0 -1
  112. package/dist/core-infra/src/repositories/TestPlanRepository.js +0 -80
  113. package/dist/core-infra/src/repositories/TestPlanRepository.js.map +0 -1
  114. package/dist/core-infra/src/repositories/TestResultRepository.d.ts +0 -30
  115. package/dist/core-infra/src/repositories/TestResultRepository.d.ts.map +0 -1
  116. package/dist/core-infra/src/repositories/TestResultRepository.js +0 -54
  117. package/dist/core-infra/src/repositories/TestResultRepository.js.map +0 -1
  118. package/dist/core-infra/src/repositories/index.d.ts +0 -17
  119. package/dist/core-infra/src/repositories/index.d.ts.map +0 -1
  120. package/dist/core-infra/src/repositories/index.js +0 -31
  121. package/dist/core-infra/src/repositories/index.js.map +0 -1
  122. package/dist/core-infra/src/storageService.d.ts +0 -131
  123. package/dist/core-infra/src/storageService.d.ts.map +0 -1
  124. package/dist/core-infra/src/storageService.js +0 -304
  125. package/dist/core-infra/src/storageService.js.map +0 -1
  126. package/dist/core-infra/src/types.d.ts +0 -219
  127. package/dist/core-infra/src/types.d.ts.map +0 -1
  128. package/dist/core-infra/src/types.js +0 -3
  129. /package/dist/{ai-runner/src/agents → agents}/logger.d.ts +0 -0
  130. /package/dist/{ai-runner/src/agents → agents}/logger.js +0 -0
  131. /package/dist/{ai-runner/src/agents → agents}/playwright-executor.d.ts +0 -0
  132. /package/dist/{ai-runner/src/agents → agents}/playwright-executor.js +0 -0
  133. /package/dist/{ai-runner/src/agents → agents}/tools/playwright-backend-adapter.d.ts +0 -0
  134. /package/dist/{ai-runner/src/agents → agents}/tools/playwright-backend-adapter.js +0 -0
  135. /package/dist/{ai-runner/src/agents → agents}/types.d.ts +0 -0
  136. /package/dist/{ai-runner/src/agents → agents}/types.js +0 -0
  137. /package/dist/{ai-runner/src/index.d.ts → index.d.ts} +0 -0
  138. /package/dist/{ai-runner/src/index.js → index.js} +0 -0
  139. /package/dist/{ai-runner/src/runner.d.ts → runner.d.ts} +0 -0
  140. /package/dist/{ai-runner/src/runner.js → runner.js} +0 -0
  141. /package/dist/{ai-runner/src/tools → tools}/index.d.ts +0 -0
  142. /package/dist/{ai-runner/src/tools → tools}/index.js +0 -0
  143. /package/dist/{ai-runner/src/tools → tools}/playwright-groups.d.ts +0 -0
  144. /package/dist/{ai-runner/src/tools → tools}/playwright-groups.js +0 -0
  145. /package/dist/{ai-runner/src/types → types}/external.d.ts +0 -0
  146. /package/dist/{ai-runner/src/types → types}/external.js +0 -0
  147. /package/dist/{ai-runner/src/types → types}/index.d.ts +0 -0
  148. /package/dist/{ai-runner/src/types → types}/index.js +0 -0
@@ -1,191 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createModel = createModel;
7
- exports.bindTools = bindTools;
8
- exports.convertToZodSchema = convertToZodSchema;
9
- const openai_1 = require("@langchain/openai");
10
- const anthropic_1 = require("@langchain/anthropic");
11
- const mistralai_1 = require("@langchain/mistralai");
12
- const tools_1 = require("@langchain/core/tools");
13
- const zod_1 = __importDefault(require("zod"));
14
- function createModel(config, bindTools = false, mcpManager, useDefaultFuncs = false) {
15
- let model;
16
- if (config.provider === 'openai' || config.provider === 'qwen' || config.provider === 'deepseek') {
17
- const openaiConfig = {
18
- apiKey: config.apiKey,
19
- model: config.modelName || 'gpt-4-turbo',
20
- ...config,
21
- };
22
- if (config.baseURL) {
23
- openaiConfig.configuration = {
24
- baseURL: config.baseURL,
25
- };
26
- }
27
- model = new openai_1.ChatOpenAI(openaiConfig);
28
- }
29
- else if (config.provider === 'anthropic') {
30
- const anthropicConfig = {
31
- apiKey: config.apiKey,
32
- model: config.modelName || 'claude-3-sonnet-20240229',
33
- anthropicApiUrl: config.baseURL,
34
- clientOptions: {
35
- baseURL: config.baseURL,
36
- apiKey: config.apiKey,
37
- },
38
- ...config,
39
- };
40
- model = new anthropic_1.ChatAnthropic(anthropicConfig);
41
- }
42
- else if (config.provider === 'mistral') {
43
- // Mistral uses ChatMistralAI package
44
- const mistralConfig = {
45
- apiKey: config.apiKey,
46
- model: config.modelName || 'mistral-large-latest',
47
- ...config,
48
- };
49
- model = new mistralai_1.ChatMistralAI(mistralConfig);
50
- }
51
- else {
52
- throw new Error(`Unknown model provider: ${config.provider}`);
53
- }
54
- if (bindTools && mcpManager) {
55
- model = bindPlaywrightTools(model, mcpManager, useDefaultFuncs);
56
- }
57
- return model;
58
- }
59
- /**
60
- * Bind Playwright MCP tools to the model
61
- * Creates LangChain tools from MCP tool definitions
62
- */
63
- function bindPlaywrightTools(model, mcpManager, useDefaultFuncs) {
64
- const defaultTools = mcpManager.getDefaultTools();
65
- // Convert MCP tools to LangChain tools (ensure each tool has its own JSON-schema-as-Zod schema)
66
- const langchainTools = defaultTools.map(mcpTool => {
67
- const schema = convertToZodSchema(mcpTool.inputSchema || {});
68
- return new tools_1.DynamicStructuredTool({
69
- name: mcpTool.name,
70
- description: mcpTool.description,
71
- schema,
72
- func: async (input, runner, config) => {
73
- const abortSignal = config?.signal ?? new AbortController().signal;
74
- for (const manager of mcpManager.getManagers()) {
75
- const tool = manager.getClient().getToolByName(mcpTool.name);
76
- if (tool) {
77
- return manager.getClient().doCallTool(mcpTool.name, input, abortSignal);
78
- }
79
- }
80
- },
81
- });
82
- });
83
- if (useDefaultFuncs) {
84
- const finishTool = {
85
- name: "finish_test",
86
- description: "Call this tool ONLY when the test goal has been fully achieved or failed to achieve. After calling this, no more tools should be called.",
87
- schema: zod_1.default.object({
88
- final_summary: zod_1.default.optional(zod_1.default.string()).describe("A brief summary confirming the test goal was achieved."),
89
- isSuccess: zod_1.default.boolean().describe("Whether the test goal was successfully achieved."),
90
- }),
91
- func: async () => { },
92
- };
93
- const getToolGroupsTool = {
94
- name: "get_tools",
95
- description: "Get available tools in a group.",
96
- schema: zod_1.default.object({
97
- group_name: zod_1.default.string().describe("The name of the tool group."),
98
- }),
99
- func: async () => {
100
- },
101
- };
102
- const callToolTool = {
103
- name: "call_tool",
104
- description: "Call a tool in a group by name.",
105
- schema: zod_1.default.object({
106
- group_name: zod_1.default.string().describe("Tool group name."),
107
- tool_name: zod_1.default.string().describe("Tool name."),
108
- args: zod_1.default.object().describe("Tool parameters."),
109
- }),
110
- func: async () => {
111
- },
112
- };
113
- const reuseTestTool = {
114
- name: "reuse_test",
115
- description: "Reuse a test from the provided reusable tests.",
116
- schema: zod_1.default.object({
117
- id: zod_1.default.string().describe("ID of the reusable test."),
118
- toolText: zod_1.default.string().describe("Short and human readable description of the action."),
119
- inParams: zod_1.default.record(zod_1.default.string(), zod_1.default.any()).describe("Test Parameters for the reusable test"),
120
- outParams: zod_1.default.record(zod_1.default.string(), zod_1.default.any()).describe("Out Parameters for the reusable test"),
121
- }),
122
- func: async () => {
123
- },
124
- };
125
- langchainTools.push(new tools_1.DynamicStructuredTool(finishTool), new tools_1.DynamicStructuredTool(callToolTool), new tools_1.DynamicStructuredTool(getToolGroupsTool), new tools_1.DynamicStructuredTool(reuseTestTool));
126
- }
127
- return bindTools(model, langchainTools) || model;
128
- }
129
- function bindTools(model, tools, tooChoice) {
130
- const modelAny = model;
131
- if (modelAny && typeof modelAny.bindTools === 'function') {
132
- return modelAny.bindTools(tools, {
133
- tool_choice: tooChoice || 'required',
134
- });
135
- }
136
- console.error("Model does not support tool binding");
137
- return undefined;
138
- }
139
- /**
140
- * Convert a plain object schema to a Zod schema
141
- * Handles conversion of MCP tool input schemas to LangChain-compatible Zod types
142
- */
143
- function convertToZodSchema(schema) {
144
- // If schema is already a Zod type, return it
145
- if (schema instanceof zod_1.default.ZodType) {
146
- return schema;
147
- }
148
- // Handle JSON Schema format (common from MCP tools)
149
- if (schema.type === 'object' && schema.properties) {
150
- const properties = {};
151
- const props = schema.properties;
152
- const required = schema.required || [];
153
- for (const [key, value] of Object.entries(props)) {
154
- const propSchema = value;
155
- const zodType = convertPropertyToZod(propSchema);
156
- if (required.includes(key)) {
157
- properties[key] = zodType;
158
- }
159
- else {
160
- properties[key] = zodType.optional();
161
- }
162
- }
163
- return zod_1.default.object(properties);
164
- }
165
- /**
166
- * Convert a single property schema to Zod type
167
- */
168
- function convertPropertyToZod(schema) {
169
- const type = schema.type;
170
- switch (type) {
171
- case 'string':
172
- return zod_1.default.string().describe(schema.description || '');
173
- case 'number':
174
- case 'integer':
175
- return zod_1.default.number().describe(schema.description || '');
176
- case 'boolean':
177
- return zod_1.default.boolean().describe(schema.description || '');
178
- case 'array':
179
- const items = schema.items;
180
- const itemType = items ? convertPropertyToZod(items) : zod_1.default.any();
181
- return zod_1.default.array(itemType).describe(schema.description || '');
182
- case 'object':
183
- return zod_1.default.object({}).catchall(zod_1.default.any()).describe(schema.description || '');
184
- default:
185
- return zod_1.default.any();
186
- }
187
- }
188
- // Fallback: accept any object with catchall
189
- return zod_1.default.object({}).catchall(zod_1.default.any());
190
- }
191
- //# sourceMappingURL=model.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../core-infra/src/model.ts"],"names":[],"mappings":"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"}
@@ -1,69 +0,0 @@
1
- /**
2
- * Base repository class providing common file I/O operations
3
- * Implements the base functionality for all data repositories
4
- *
5
- * Supports project-isolated data storage:
6
- * - When projectId is active: ~/.test_agent/projects/{projectId}/{subDir}/
7
- * - When no project: ~/.test_agent/{subDir}/
8
- */
9
- export declare abstract class BaseRepository {
10
- protected storageDir: string;
11
- protected subDir: string;
12
- protected explicitProjectId?: string;
13
- constructor(subDir: string);
14
- /**
15
- * Ensure the subdirectory exists
16
- */
17
- protected ensureDir(): void;
18
- /**
19
- * Get the base directory for this repository
20
- * When a project is active:
21
- * - For 'projects': returns ~/.test_agent/projects (projects.json location)
22
- * - For other repos: returns ~/.test_agent/projects/{projectId}/{subDir}
23
- * When no project:
24
- * - returns ~/.test_agent/{subDir}
25
- */
26
- protected getBaseDir(): string;
27
- /**
28
- * Get full file path for a specific ID
29
- */
30
- protected getFilePath(id: string, extension?: string): string;
31
- /**
32
- * Save data to file (synchronous)
33
- */
34
- protected saveSync(id: string, data: unknown, extension?: string): void;
35
- private createDirectoriesRecursively;
36
- /**
37
- * Save data to file (asynchronous)
38
- */
39
- protected save(id: string, data: unknown, extension?: string): Promise<void>;
40
- /**
41
- * Load data from file (synchronous)
42
- */
43
- protected loadSync<T>(id: string, extension?: string): T | null;
44
- /**
45
- * Load data from file (asynchronous)
46
- */
47
- protected load<T>(id: string, extension?: string): Promise<T | null>;
48
- /**
49
- * List all files in the directory
50
- */
51
- protected listAll<T>(filter?: (filename: string) => boolean): Promise<T[]>;
52
- /**
53
- * List all files synchronously
54
- */
55
- protected listAllSync<T>(filter?: (filename: string) => boolean): T[];
56
- /**
57
- * Delete a file (synchronous)
58
- */
59
- protected deleteSync(id: string, extension?: string): void;
60
- /**
61
- * Delete a file (asynchronous)
62
- */
63
- protected delete(id: string, extension?: string): Promise<void>;
64
- /**
65
- * Check if file exists
66
- */
67
- protected existsSync(id: string, extension?: string): boolean;
68
- }
69
- //# sourceMappingURL=BaseRepository.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseRepository.d.ts","sourceRoot":"","sources":["../../../../../core-infra/src/repositories/BaseRepository.ts"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,8BAAsB,cAAc;IAClC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAEzB,MAAM,EAAE,MAAM;IAM1B;;OAEG;IACH,SAAS,CAAC,SAAS,IAAI,IAAI;IAO3B;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,IAAI,MAAM;IAK9B;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,MAAM;IAIrE;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,GAAE,MAAe,GAAG,IAAI;IAS/E,OAAO,CAAC,4BAA4B;IASpC;;OAEG;cACa,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,GAAE,MAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1F;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,CAAC,GAAG,IAAI;IASvE;;OAEG;cACa,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAUlF;;OAEG;cACa,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAwBhF;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,CAAC,EAAE;IAwBrE;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,IAAI;IAOlE;;OAEG;cACa,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7E;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,OAAO;CAItE"}
@@ -1,213 +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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.BaseRepository = void 0;
37
- /* eslint-disable @typescript-eslint/no-unused-vars */
38
- const os_1 = require("os");
39
- const promises_1 = require("fs/promises");
40
- const path_1 = __importStar(require("path"));
41
- const fs_1 = require("fs");
42
- /**
43
- * Base repository class providing common file I/O operations
44
- * Implements the base functionality for all data repositories
45
- *
46
- * Supports project-isolated data storage:
47
- * - When projectId is active: ~/.test_agent/projects/{projectId}/{subDir}/
48
- * - When no project: ~/.test_agent/{subDir}/
49
- */
50
- class BaseRepository {
51
- constructor(subDir) {
52
- this.storageDir = (0, path_1.join)((0, os_1.homedir)(), '.test_agent');
53
- this.subDir = subDir;
54
- this.ensureDir();
55
- }
56
- /**
57
- * Ensure the subdirectory exists
58
- */
59
- ensureDir() {
60
- const dirPath = this.getBaseDir();
61
- if (!(0, fs_1.existsSync)(dirPath)) {
62
- (0, fs_1.mkdirSync)(dirPath, { recursive: true });
63
- }
64
- }
65
- /**
66
- * Get the base directory for this repository
67
- * When a project is active:
68
- * - For 'projects': returns ~/.test_agent/projects (projects.json location)
69
- * - For other repos: returns ~/.test_agent/projects/{projectId}/{subDir}
70
- * When no project:
71
- * - returns ~/.test_agent/{subDir}
72
- */
73
- getBaseDir() {
74
- // Global directory: ~/.test_agent/{subDir}
75
- return (0, path_1.join)(this.storageDir, this.subDir);
76
- }
77
- /**
78
- * Get full file path for a specific ID
79
- */
80
- getFilePath(id, extension = 'json') {
81
- return (0, path_1.join)(this.getBaseDir(), `${id}.${extension}`);
82
- }
83
- /**
84
- * Save data to file (synchronous)
85
- */
86
- saveSync(id, data, extension = 'json') {
87
- const filePath = this.getFilePath(id, extension);
88
- try {
89
- this.createDirectoriesRecursively(filePath);
90
- }
91
- catch (error) {
92
- }
93
- (0, fs_1.writeFileSync)(filePath, JSON.stringify(data, null, 2), 'utf-8');
94
- }
95
- createDirectoriesRecursively(targetPath) {
96
- // If target path is a file path, get its parent directory; otherwise, use target path as directory
97
- const dir = path_1.default.extname(targetPath) ? path_1.default.dirname(targetPath) : targetPath;
98
- if (!(0, fs_1.existsSync)(dir)) {
99
- (0, fs_1.mkdirSync)(dir, { recursive: true });
100
- }
101
- }
102
- /**
103
- * Save data to file (asynchronous)
104
- */
105
- async save(id, data, extension = 'json') {
106
- const filePath = this.getFilePath(id, extension);
107
- await (0, promises_1.writeFile)(filePath, JSON.stringify(data, null, 2), 'utf-8');
108
- }
109
- /**
110
- * Load data from file (synchronous)
111
- */
112
- loadSync(id, extension = 'json') {
113
- const filePath = this.getFilePath(id, extension);
114
- if (!(0, fs_1.existsSync)(filePath)) {
115
- return null;
116
- }
117
- const content = (0, fs_1.readFileSync)(filePath, 'utf-8');
118
- return JSON.parse(content);
119
- }
120
- /**
121
- * Load data from file (asynchronous)
122
- */
123
- async load(id, extension = 'json') {
124
- const filePath = this.getFilePath(id, extension);
125
- try {
126
- const content = await (0, promises_1.readFile)(filePath, 'utf-8');
127
- return JSON.parse(content);
128
- }
129
- catch {
130
- return null;
131
- }
132
- }
133
- /**
134
- * List all files in the directory
135
- */
136
- async listAll(filter) {
137
- const dirPath = this.getBaseDir();
138
- try {
139
- const files = await (0, promises_1.readdir)(dirPath);
140
- const results = [];
141
- for (const file of files) {
142
- if (filter && !filter(file)) {
143
- continue;
144
- }
145
- if (!file.endsWith('.json')) {
146
- continue;
147
- }
148
- const filePath = (0, path_1.join)(dirPath, file);
149
- const content = await (0, promises_1.readFile)(filePath, 'utf-8');
150
- results.push(JSON.parse(content));
151
- }
152
- return results;
153
- }
154
- catch {
155
- return [];
156
- }
157
- }
158
- /**
159
- * List all files synchronously
160
- */
161
- listAllSync(filter) {
162
- const dirPath = this.getBaseDir();
163
- try {
164
- const files = (0, fs_1.readdirSync)(dirPath);
165
- const results = [];
166
- for (const file of files) {
167
- if (filter && !filter(file)) {
168
- continue;
169
- }
170
- if (!file.endsWith('.json')) {
171
- continue;
172
- }
173
- const filePath = (0, path_1.join)(dirPath, file);
174
- const content = (0, fs_1.readFileSync)(filePath, 'utf-8');
175
- results.push(JSON.parse(content));
176
- }
177
- return results;
178
- }
179
- catch {
180
- return [];
181
- }
182
- }
183
- /**
184
- * Delete a file (synchronous)
185
- */
186
- deleteSync(id, extension = 'json') {
187
- const filePath = this.getFilePath(id, extension);
188
- if ((0, fs_1.existsSync)(filePath)) {
189
- (0, fs_1.rmSync)(filePath);
190
- }
191
- }
192
- /**
193
- * Delete a file (asynchronous)
194
- */
195
- async delete(id, extension = 'json') {
196
- const filePath = this.getFilePath(id, extension);
197
- try {
198
- await (0, promises_1.rm)(filePath);
199
- }
200
- catch {
201
- // File doesn't exist, ignore error
202
- }
203
- }
204
- /**
205
- * Check if file exists
206
- */
207
- existsSync(id, extension = 'json') {
208
- const filePath = this.getFilePath(id, extension);
209
- return (0, fs_1.existsSync)(filePath);
210
- }
211
- }
212
- exports.BaseRepository = BaseRepository;
213
- //# sourceMappingURL=BaseRepository.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseRepository.js","sourceRoot":"","sources":["../../../../../core-infra/src/repositories/BaseRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAsD;AACtD,2BAA6B;AAC7B,0CAA+D;AAC/D,6CAAkC;AAClC,2BAA6F;AAE7F;;;;;;;GAOG;AACH,MAAsB,cAAc;IAKlC,YAAY,MAAc;QACxB,IAAI,CAAC,UAAU,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACO,SAAS;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YACzB,IAAA,cAAS,EAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACO,UAAU;QAClB,2CAA2C;QAC3C,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,EAAU,EAAE,YAAoB,MAAM;QAC1D,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,SAAS,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACO,QAAQ,CAAC,EAAU,EAAE,IAAa,EAAE,YAAoB,MAAM;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC;YACH,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;QACjB,CAAC;QACD,IAAA,kBAAa,EAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAEO,4BAA4B,CAAC,UAAkB;QACrD,mGAAmG;QACnG,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAE7E,IAAI,CAAC,IAAA,eAAU,EAAC,GAAG,CAAC,EAAE,CAAC;YACrB,IAAA,cAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,IAAI,CAAC,EAAU,EAAE,IAAa,EAAE,YAAoB,MAAM;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACjD,MAAM,IAAA,oBAAS,EAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACO,QAAQ,CAAI,EAAU,EAAE,YAAoB,MAAM;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;IAClC,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,IAAI,CAAI,EAAU,EAAE,YAAoB,MAAM;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,OAAO,CAAI,MAAsC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAA,kBAAO,EAAC,OAAO,CAAC,CAAC;YACrC,MAAM,OAAO,GAAQ,EAAE,CAAC;YAExB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5B,SAAS;gBACX,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACrC,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC,CAAC;YACzC,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACO,WAAW,CAAI,MAAsC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAA,gBAAW,EAAC,OAAO,CAAC,CAAC;YACnC,MAAM,OAAO,GAAQ,EAAE,CAAC;YAExB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5B,SAAS;gBACX,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACrC,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC,CAAC;YACzC,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACO,UAAU,CAAC,EAAU,EAAE,YAAoB,MAAM;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,IAAA,WAAM,EAAC,QAAQ,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,YAAoB,MAAM;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,IAAA,aAAE,EAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;QACrC,CAAC;IACH,CAAC;IAED;;OAEG;IACO,UAAU,CAAC,EAAU,EAAE,YAAoB,MAAM;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACjD,OAAO,IAAA,eAAU,EAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;CACF;AAlLD,wCAkLC"}
@@ -1,70 +0,0 @@
1
- import { BaseRepository } from './BaseRepository';
2
- import { DirectoryInfo, TestDirectory } from '../types';
3
- /**
4
- * DirectoryRepository handles all storage operations for test case directories
5
- * Manages the hierarchical organization of test cases (up to 3 levels)
6
- * Each directory can have an info.json file with metadata (description, createdAt, etc.)
7
- */
8
- export declare class DirectoryRepository extends BaseRepository {
9
- constructor(projectId: string);
10
- /**
11
- * Create a new directory at the specified path
12
- * @param path - Directory path like 'folder1' or 'folder1/subfolder' (max 3 levels)
13
- * @param info - Directory metadata
14
- */
15
- createDirectory(path: string, info: Omit<DirectoryInfo, 'id' | 'path'>): DirectoryInfo;
16
- /**
17
- * Get directory info from info.json
18
- */
19
- getDirectoryInfo(path: string): DirectoryInfo | null;
20
- /**
21
- * Update directory metadata
22
- */
23
- updateDirectoryInfo(path: string, updates: Partial<Omit<DirectoryInfo, 'id' | 'path'>>): DirectoryInfo;
24
- /**
25
- * Delete a directory (must be empty)
26
- */
27
- deleteDirectory(path: string): void;
28
- /**
29
- * Rename a directory
30
- */
31
- renameDirectory(oldPath: string, newName: string): DirectoryInfo;
32
- /**
33
- * Build the complete directory tree with tests
34
- * This is the main method to get the hierarchical structure
35
- */
36
- buildDirectoryTree(basePath?: string): TestDirectory;
37
- /**
38
- * Get all directories at a specific level (flat list)
39
- */
40
- getDirectoriesAtPath(path?: string): DirectoryInfo[];
41
- /**
42
- * Check if a path is valid (exists and is a directory)
43
- */
44
- isValidDirectory(path: string): boolean;
45
- /**
46
- * Move a directory to a new parent directory
47
- * @param sourcePath - The current directory path
48
- * @param targetParentPath - The target parent directory path (or empty string for root)
49
- */
50
- moveDirectory(sourcePath: string, targetParentPath: string): DirectoryInfo;
51
- /**
52
- * Recursively update the path field in all test case JSON files
53
- * @param dirFullPath - Full filesystem path to the directory
54
- * @param oldBasePath - Old logical path (e.g., 'folder1/subfolder')
55
- * @param newBasePath - New logical path (e.g., 'folder2/subfolder')
56
- */
57
- private updateTestPathsRecursively;
58
- /**
59
- * Move a test case to a different directory
60
- * @param testId - The test case ID
61
- * @param sourceDir - The current directory path
62
- * @param targetDir - The target directory path
63
- */
64
- moveTestCase(testId: string, sourceDir: string, targetDir: string): boolean;
65
- /**
66
- * Save directory info to info.json
67
- */
68
- private saveDirectoryInfo;
69
- }
70
- //# sourceMappingURL=DirectoryRepository.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DirectoryRepository.d.ts","sourceRoot":"","sources":["../../../../../core-infra/src/repositories/DirectoryRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AAKlE;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,cAAc;gBACzC,SAAS,EAAE,MAAM;IAI7B;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,aAAa;IAgCtF;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAcpD;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,aAAa;IAgBtG;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWnC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa;IAqChE;;;OAGG;IACH,kBAAkB,CAAC,QAAQ,GAAE,MAAW,GAAG,aAAa;IAmExD;;OAEG;IACH,oBAAoB,CAAC,IAAI,GAAE,MAAW,GAAG,aAAa,EAAE;IAgCxD;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKvC;;;;OAIG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,aAAa;IAwC1E;;;;;OAKG;IACH,OAAO,CAAC,0BAA0B;IAuClC;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAyB3E;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAW1B"}