zone-ai-agent 0.4.0

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 (301) hide show
  1. package/.gittignore +4 -0
  2. package/README.md +36 -0
  3. package/dist/api/server.js +136 -0
  4. package/dist/api/server.js.map +1 -0
  5. package/dist/apply/applyPatchPlan.js +17 -0
  6. package/dist/apply/applyPatchPlan.js.map +1 -0
  7. package/dist/apply/canApplyDecision.js +26 -0
  8. package/dist/apply/canApplyDecision.js.map +1 -0
  9. package/dist/apply/patchPlan.js +3 -0
  10. package/dist/apply/patchPlan.js.map +1 -0
  11. package/dist/apply/renderApplyResult.js +18 -0
  12. package/dist/apply/renderApplyResult.js.map +1 -0
  13. package/dist/apply/runApplyFlow.js +40 -0
  14. package/dist/apply/runApplyFlow.js.map +1 -0
  15. package/dist/apply/types.js +3 -0
  16. package/dist/apply/types.js.map +1 -0
  17. package/dist/audit/auditDiffIntelligence.js +3 -0
  18. package/dist/audit/auditDiffIntelligence.js.map +1 -0
  19. package/dist/audit/auditSnapshot.js +87 -0
  20. package/dist/audit/auditSnapshot.js.map +1 -0
  21. package/dist/audit/renderAuditDiff.js +64 -0
  22. package/dist/audit/renderAuditDiff.js.map +1 -0
  23. package/dist/audit/snapshotDiff.js +53 -0
  24. package/dist/audit/snapshotDiff.js.map +1 -0
  25. package/dist/audit/snapshotReader.js +31 -0
  26. package/dist/audit/snapshotReader.js.map +1 -0
  27. package/dist/audit/snapshotWriter.js +59 -0
  28. package/dist/audit/snapshotWriter.js.map +1 -0
  29. package/dist/ci/evaluateCiResult.js +142 -0
  30. package/dist/ci/evaluateCiResult.js.map +1 -0
  31. package/dist/cli/buildGeneratedPatchPlanPreview.js +65 -0
  32. package/dist/cli/buildGeneratedPatchPlanPreview.js.map +1 -0
  33. package/dist/cli/colors.js +28 -0
  34. package/dist/cli/colors.js.map +1 -0
  35. package/dist/cli/diffOutput.js +37 -0
  36. package/dist/cli/diffOutput.js.map +1 -0
  37. package/dist/cli/index.js +850 -0
  38. package/dist/cli/index.js.map +1 -0
  39. package/dist/cli/loadPatchPlan.js +52 -0
  40. package/dist/cli/loadPatchPlan.js.map +1 -0
  41. package/dist/cli/output.js +34 -0
  42. package/dist/cli/output.js.map +1 -0
  43. package/dist/cli/parseCliArgs.js +3 -0
  44. package/dist/cli/parseCliArgs.js.map +1 -0
  45. package/dist/cli/runGeneratedPatchPlanFlow.js +23 -0
  46. package/dist/cli/runGeneratedPatchPlanFlow.js.map +1 -0
  47. package/dist/components/LoginForm.js +64 -0
  48. package/dist/components/LoginForm.js.map +1 -0
  49. package/dist/core/analyzeCodePatterns.js +3 -0
  50. package/dist/core/analyzeCodePatterns.js.map +1 -0
  51. package/dist/core/applyLlmPatches.js +43 -0
  52. package/dist/core/applyLlmPatches.js.map +1 -0
  53. package/dist/core/buildConfidenceBreakdownFromSignals.js +33 -0
  54. package/dist/core/buildConfidenceBreakdownFromSignals.js.map +1 -0
  55. package/dist/core/buildDecisionAuditSnapshot.js +18 -0
  56. package/dist/core/buildDecisionAuditSnapshot.js.map +1 -0
  57. package/dist/core/buildDecisionTrace.js +113 -0
  58. package/dist/core/buildDecisionTrace.js.map +1 -0
  59. package/dist/core/buildFallbackPatchPlan.js +23 -0
  60. package/dist/core/buildFallbackPatchPlan.js.map +1 -0
  61. package/dist/core/buildFallbackPlan.js +25 -0
  62. package/dist/core/buildFallbackPlan.js.map +1 -0
  63. package/dist/core/buildSchemaAwareContext.js +49 -0
  64. package/dist/core/buildSchemaAwareContext.js.map +1 -0
  65. package/dist/core/buildTaskExecutionContext.js +70 -0
  66. package/dist/core/buildTaskExecutionContext.js.map +1 -0
  67. package/dist/core/ciEvaluator.js +83 -0
  68. package/dist/core/ciEvaluator.js.map +1 -0
  69. package/dist/core/computeRiskScore.js +43 -0
  70. package/dist/core/computeRiskScore.js.map +1 -0
  71. package/dist/core/computeRiskScoreDetails.js +106 -0
  72. package/dist/core/computeRiskScoreDetails.js.map +1 -0
  73. package/dist/core/confidenceGate.js +83 -0
  74. package/dist/core/confidenceGate.js.map +1 -0
  75. package/dist/core/decision/buildDecisionExplanation.js +91 -0
  76. package/dist/core/decision/buildDecisionExplanation.js.map +1 -0
  77. package/dist/core/decision/buildDecisionReasonCodes.js +65 -0
  78. package/dist/core/decision/buildDecisionReasonCodes.js.map +1 -0
  79. package/dist/core/decision/buildReasonSummaryLine.js +24 -0
  80. package/dist/core/decision/buildReasonSummaryLine.js.map +1 -0
  81. package/dist/core/decision/buildRecommendation.js +43 -0
  82. package/dist/core/decision/buildRecommendation.js.map +1 -0
  83. package/dist/core/decision/decideExecutionMode.js +125 -0
  84. package/dist/core/decision/decideExecutionMode.js.map +1 -0
  85. package/dist/core/decision/decisionReasonCodeMeta.js +91 -0
  86. package/dist/core/decision/decisionReasonCodeMeta.js.map +1 -0
  87. package/dist/core/decision/renderDecisionSummary.js +115 -0
  88. package/dist/core/decision/renderDecisionSummary.js.map +1 -0
  89. package/dist/core/detectResourceStorage.js +78 -0
  90. package/dist/core/detectResourceStorage.js.map +1 -0
  91. package/dist/core/formatOutput.js +53 -0
  92. package/dist/core/formatOutput.js.map +1 -0
  93. package/dist/core/intentAwareScore.js +35 -0
  94. package/dist/core/intentAwareScore.js.map +1 -0
  95. package/dist/core/loadSavedAgentResult.js +18 -0
  96. package/dist/core/loadSavedAgentResult.js.map +1 -0
  97. package/dist/core/normalizeIssues.js +50 -0
  98. package/dist/core/normalizeIssues.js.map +1 -0
  99. package/dist/core/normalizeSignals.js +40 -0
  100. package/dist/core/normalizeSignals.js.map +1 -0
  101. package/dist/core/output/zoneStageTypes.js +3 -0
  102. package/dist/core/output/zoneStageTypes.js.map +1 -0
  103. package/dist/core/patchRiskAnalyzer.js +50 -0
  104. package/dist/core/patchRiskAnalyzer.js.map +1 -0
  105. package/dist/core/renderRunAgentResult.js +77 -0
  106. package/dist/core/renderRunAgentResult.js.map +1 -0
  107. package/dist/core/result/buildApplyStageResult.js +61 -0
  108. package/dist/core/result/buildApplyStageResult.js.map +1 -0
  109. package/dist/core/result/buildCliViewModel.js +79 -0
  110. package/dist/core/result/buildCliViewModel.js.map +1 -0
  111. package/dist/core/result/buildConversionStageResult.js +62 -0
  112. package/dist/core/result/buildConversionStageResult.js.map +1 -0
  113. package/dist/core/result/buildDecisionStageResult.js +61 -0
  114. package/dist/core/result/buildDecisionStageResult.js.map +1 -0
  115. package/dist/core/result/buildExecutionResult.js +148 -0
  116. package/dist/core/result/buildExecutionResult.js.map +1 -0
  117. package/dist/core/result/buildPreviewStageResult.js +47 -0
  118. package/dist/core/result/buildPreviewStageResult.js.map +1 -0
  119. package/dist/core/result/buildSavedDecisionExplanation.js +52 -0
  120. package/dist/core/result/buildSavedDecisionExplanation.js.map +1 -0
  121. package/dist/core/result/buildSavedRecommendation.js +39 -0
  122. package/dist/core/result/buildSavedRecommendation.js.map +1 -0
  123. package/dist/core/result/buildStageResultV2.js +52 -0
  124. package/dist/core/result/buildStageResultV2.js.map +1 -0
  125. package/dist/core/result/renderBundledResult.js +47 -0
  126. package/dist/core/result/renderBundledResult.js.map +1 -0
  127. package/dist/core/result/renderCliResult.js +93 -0
  128. package/dist/core/result/renderCliResult.js.map +1 -0
  129. package/dist/core/result/scoreTopRisks.js +205 -0
  130. package/dist/core/result/scoreTopRisks.js.map +1 -0
  131. package/dist/core/runAgent.js +210 -0
  132. package/dist/core/runAgent.js.map +1 -0
  133. package/dist/core/runFeatureAgent.js +684 -0
  134. package/dist/core/runFeatureAgent.js.map +1 -0
  135. package/dist/core/runLlmPatchFlow.js +522 -0
  136. package/dist/core/runLlmPatchFlow.js.map +1 -0
  137. package/dist/core/saveAgentResult.js +234 -0
  138. package/dist/core/saveAgentResult.js.map +1 -0
  139. package/dist/core/scoring/computeConfidenceBreakdown.js +130 -0
  140. package/dist/core/scoring/computeConfidenceBreakdown.js.map +1 -0
  141. package/dist/core/scoring/computeConfidenceScore.js +37 -0
  142. package/dist/core/scoring/computeConfidenceScore.js.map +1 -0
  143. package/dist/core/scoring/confidenceRules.js +58 -0
  144. package/dist/core/scoring/confidenceRules.js.map +1 -0
  145. package/dist/core/scoring/confidenceScore.js +8 -0
  146. package/dist/core/scoring/confidenceScore.js.map +1 -0
  147. package/dist/core/selectRelevantBlocks.js +58 -0
  148. package/dist/core/selectRelevantBlocks.js.map +1 -0
  149. package/dist/core/selfHealingLoop.js +209 -0
  150. package/dist/core/selfHealingLoop.js.map +1 -0
  151. package/dist/core/taskIntentParser.js +165 -0
  152. package/dist/core/taskIntentParser.js.map +1 -0
  153. package/dist/core/types/agentResult.js +3 -0
  154. package/dist/core/types/agentResult.js.map +1 -0
  155. package/dist/core/types/risk.js +3 -0
  156. package/dist/core/types/risk.js.map +1 -0
  157. package/dist/core/validatePatchAgainstSchema.js +100 -0
  158. package/dist/core/validatePatchAgainstSchema.js.map +1 -0
  159. package/dist/core/validateSuggestedArchitecture.js +24 -0
  160. package/dist/core/validateSuggestedArchitecture.js.map +1 -0
  161. package/dist/engine/buildDecisionExplanation.js +114 -0
  162. package/dist/engine/buildDecisionExplanation.js.map +1 -0
  163. package/dist/engine/contradictionDetector.js +40 -0
  164. package/dist/engine/contradictionDetector.js.map +1 -0
  165. package/dist/engine/decisionEngine.js +19 -0
  166. package/dist/engine/decisionEngine.js.map +1 -0
  167. package/dist/llm/openaiClient.js +19 -0
  168. package/dist/llm/openaiClient.js.map +1 -0
  169. package/dist/llm/planFeature.js +57 -0
  170. package/dist/llm/planFeature.js.map +1 -0
  171. package/dist/llm/planFix.js +3 -0
  172. package/dist/llm/planFix.js.map +1 -0
  173. package/dist/llm/planFullPatch.js +62 -0
  174. package/dist/llm/planFullPatch.js.map +1 -0
  175. package/dist/llm/planPatchPreview.js +60 -0
  176. package/dist/llm/planPatchPreview.js.map +1 -0
  177. package/dist/llm/prompts.js +131 -0
  178. package/dist/llm/prompts.js.map +1 -0
  179. package/dist/llm/schemas.js +28 -0
  180. package/dist/llm/schemas.js.map +1 -0
  181. package/dist/patch/apply/formatApplyFlowResult.js +23 -0
  182. package/dist/patch/apply/formatApplyFlowResult.js.map +1 -0
  183. package/dist/patch/apply/renderApplyFlowResult.js +15 -0
  184. package/dist/patch/apply/renderApplyFlowResult.js.map +1 -0
  185. package/dist/patch/apply/runApplyFlow.js +88 -0
  186. package/dist/patch/apply/runApplyFlow.js.map +1 -0
  187. package/dist/patch/applyFlowTypes.js +3 -0
  188. package/dist/patch/applyFlowTypes.js.map +1 -0
  189. package/dist/patch/applyPatchPlan.js +117 -0
  190. package/dist/patch/applyPatchPlan.js.map +1 -0
  191. package/dist/patch/backupFile.js +23 -0
  192. package/dist/patch/backupFile.js.map +1 -0
  193. package/dist/patch/conversion/canConvertGeneratedPlanToPatchPlan.js +57 -0
  194. package/dist/patch/conversion/canConvertGeneratedPlanToPatchPlan.js.map +1 -0
  195. package/dist/patch/conversion/convertGeneratedPlanToPatchPlan.js +38 -0
  196. package/dist/patch/conversion/convertGeneratedPlanToPatchPlan.js.map +1 -0
  197. package/dist/patch/conversion/formatGeneratedPlanConversionFailure.js +17 -0
  198. package/dist/patch/conversion/formatGeneratedPlanConversionFailure.js.map +1 -0
  199. package/dist/patch/conversion/generatedPlanConversionFailureMeta.js +40 -0
  200. package/dist/patch/conversion/generatedPlanConversionFailureMeta.js.map +1 -0
  201. package/dist/patch/conversion/generatedPlanConversionTypes.js +3 -0
  202. package/dist/patch/conversion/generatedPlanConversionTypes.js.map +1 -0
  203. package/dist/patch/conversion/renderGeneratedPlanConversionFailure.js +16 -0
  204. package/dist/patch/conversion/renderGeneratedPlanConversionFailure.js.map +1 -0
  205. package/dist/patch/generatedPlanConversion.js +96 -0
  206. package/dist/patch/generatedPlanConversion.js.map +1 -0
  207. package/dist/patch/patchAnchors.js +3 -0
  208. package/dist/patch/patchAnchors.js.map +1 -0
  209. package/dist/patch/patchValidationRules.js +116 -0
  210. package/dist/patch/patchValidationRules.js.map +1 -0
  211. package/dist/patch/patchValidationTypes.js +3 -0
  212. package/dist/patch/patchValidationTypes.js.map +1 -0
  213. package/dist/patch/renderApplyFlowResult.js +26 -0
  214. package/dist/patch/renderApplyFlowResult.js.map +1 -0
  215. package/dist/patch/validatePatchPlan.js +148 -0
  216. package/dist/patch/validatePatchPlan.js.map +1 -0
  217. package/dist/patch-generation/buildGeneratedPatchPlan.js +94 -0
  218. package/dist/patch-generation/buildGeneratedPatchPlan.js.map +1 -0
  219. package/dist/patch-generation/buildPatchOperations.js +41 -0
  220. package/dist/patch-generation/buildPatchOperations.js.map +1 -0
  221. package/dist/patch-generation/classifyPatchIntent.js +62 -0
  222. package/dist/patch-generation/classifyPatchIntent.js.map +1 -0
  223. package/dist/patch-generation/formatGeneratedPatchPlanPreview.js +25 -0
  224. package/dist/patch-generation/formatGeneratedPatchPlanPreview.js.map +1 -0
  225. package/dist/patch-generation/generatePatchPlan.js +74 -0
  226. package/dist/patch-generation/generatePatchPlan.js.map +1 -0
  227. package/dist/patch-generation/generatedPatchPlanTypes.js +3 -0
  228. package/dist/patch-generation/generatedPatchPlanTypes.js.map +1 -0
  229. package/dist/patch-generation/isIntentAllowed.js +15 -0
  230. package/dist/patch-generation/isIntentAllowed.js.map +1 -0
  231. package/dist/patch-generation/renderGeneratedPatchPlan.js +62 -0
  232. package/dist/patch-generation/renderGeneratedPatchPlan.js.map +1 -0
  233. package/dist/prompts/developerPrompt.js +213 -0
  234. package/dist/prompts/developerPrompt.js.map +1 -0
  235. package/dist/prompts/fullPatchPrompt.js +82 -0
  236. package/dist/prompts/fullPatchPrompt.js.map +1 -0
  237. package/dist/prompts/patchPreviewPrompt.js +83 -0
  238. package/dist/prompts/patchPreviewPrompt.js.map +1 -0
  239. package/dist/prompts/planFeaturePrompt.js +73 -0
  240. package/dist/prompts/planFeaturePrompt.js.map +1 -0
  241. package/dist/prompts/testEngineerContext.js +184 -0
  242. package/dist/prompts/testEngineerContext.js.map +1 -0
  243. package/dist/prompts/testEngineerPrompt.js +135 -0
  244. package/dist/prompts/testEngineerPrompt.js.map +1 -0
  245. package/dist/repo/analyzeProjectPatterns.js +46 -0
  246. package/dist/repo/analyzeProjectPatterns.js.map +1 -0
  247. package/dist/repo/detectProjectStructure.js +45 -0
  248. package/dist/repo/detectProjectStructure.js.map +1 -0
  249. package/dist/repo/getGitChangedFiles.js +96 -0
  250. package/dist/repo/getGitChangedFiles.js.map +1 -0
  251. package/dist/repo/loadSchemaSnapshot.js +29 -0
  252. package/dist/repo/loadSchemaSnapshot.js.map +1 -0
  253. package/dist/repo/rankRelevantFiles.js +306 -0
  254. package/dist/repo/rankRelevantFiles.js.map +1 -0
  255. package/dist/repo/readProjectFiles.js +27 -0
  256. package/dist/repo/readProjectFiles.js.map +1 -0
  257. package/dist/repo/scanRepo.js +93 -0
  258. package/dist/repo/scanRepo.js.map +1 -0
  259. package/dist/repo/validateSuggestedFiles.js +66 -0
  260. package/dist/repo/validateSuggestedFiles.js.map +1 -0
  261. package/dist/roles/dataAnalystContext.js +155 -0
  262. package/dist/roles/dataAnalystContext.js.map +1 -0
  263. package/dist/roles/detectDataSchema.js +152 -0
  264. package/dist/roles/detectDataSchema.js.map +1 -0
  265. package/dist/roles/detectTestComplexity.js +74 -0
  266. package/dist/roles/detectTestComplexity.js.map +1 -0
  267. package/dist/roles/detectTestFramework.js +166 -0
  268. package/dist/roles/detectTestFramework.js.map +1 -0
  269. package/dist/roles/runDataAnalystFlow.js +221 -0
  270. package/dist/roles/runDataAnalystFlow.js.map +1 -0
  271. package/dist/roles/runTestEngineerFlow.js +266 -0
  272. package/dist/roles/runTestEngineerFlow.js.map +1 -0
  273. package/dist/roles/testEngineerContext.js +282 -0
  274. package/dist/roles/testEngineerContext.js.map +1 -0
  275. package/dist/roles/testOutputValidator.js +474 -0
  276. package/dist/roles/testOutputValidator.js.map +1 -0
  277. package/dist/types/agent.js +3 -0
  278. package/dist/types/agent.js.map +1 -0
  279. package/dist/types/analysis.js +3 -0
  280. package/dist/types/analysis.js.map +1 -0
  281. package/dist/types/patch.js +3 -0
  282. package/dist/types/patch.js.map +1 -0
  283. package/dist/types/project.js +3 -0
  284. package/dist/types/project.js.map +1 -0
  285. package/dist/types/schema.js +3 -0
  286. package/dist/types/schema.js.map +1 -0
  287. package/dist/utils/executionTracker.js +33 -0
  288. package/dist/utils/executionTracker.js.map +1 -0
  289. package/dist/utils/files.js +35 -0
  290. package/dist/utils/files.js.map +1 -0
  291. package/dist/utils/logger.js +179 -0
  292. package/dist/utils/logger.js.map +1 -0
  293. package/dist/utils/paths.js +14 -0
  294. package/dist/utils/paths.js.map +1 -0
  295. package/dist/utils/trace.js +10 -0
  296. package/dist/utils/trace.js.map +1 -0
  297. package/dist/utils/validation.js +24 -0
  298. package/dist/utils/validation.js.map +1 -0
  299. package/package.json +53 -0
  300. package/tsconfig.json +17 -0
  301. package/vitest.config.ts +21 -0
@@ -0,0 +1,282 @@
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.buildTestEngineerContext = buildTestEngineerContext;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ function detectPageObjects(files, language) {
9
+ if (!Array.isArray(files))
10
+ return [];
11
+ if (language === "java") {
12
+ return files.filter((f) => f.path.includes("pages/") ||
13
+ f.path.includes("page/") ||
14
+ f.path.endsWith("Page.java") ||
15
+ f.path.endsWith("PageObject.java"));
16
+ }
17
+ if (language === "typescript" || language === "javascript") {
18
+ return files.filter((f) => f.path.includes("pages/") ||
19
+ f.path.includes("page-objects/") ||
20
+ f.path.endsWith(".page.ts") ||
21
+ f.path.endsWith(".page.js"));
22
+ }
23
+ if (language === "python") {
24
+ return files.filter((f) => f.path.includes("pages/") ||
25
+ f.path.endsWith("_page.py") ||
26
+ f.path.includes("page_objects/"));
27
+ }
28
+ return [];
29
+ }
30
+ function detectStepDefinitions(files) {
31
+ if (!Array.isArray(files))
32
+ return [];
33
+ return files.filter((f) => f.path.includes("steps/") ||
34
+ f.path.includes("stepdefinitions/") ||
35
+ f.path.includes("step_definitions/") ||
36
+ f.path.endsWith("Steps.java") ||
37
+ f.path.endsWith("_steps.py"));
38
+ }
39
+ function detectFeatureFiles(files) {
40
+ if (!Array.isArray(files))
41
+ return [];
42
+ return files
43
+ .filter((f) => f.path.endsWith(".feature"))
44
+ .sort((a, b) => {
45
+ const aIsPreferred = a.path.startsWith("src/test/resources/features/");
46
+ const bIsPreferred = b.path.startsWith("src/test/resources/features/");
47
+ if (aIsPreferred === bIsPreferred)
48
+ return a.path.localeCompare(b.path);
49
+ return aIsPreferred ? -1 : 1;
50
+ });
51
+ }
52
+ function detectTestFiles(files, framework) {
53
+ if (!Array.isArray(files))
54
+ return [];
55
+ switch (framework.framework) {
56
+ case "playwright_ts":
57
+ return files.filter((f) => f.path.endsWith(".spec.ts") || f.path.endsWith(".test.ts"));
58
+ case "playwright_js":
59
+ return files.filter((f) => f.path.endsWith(".spec.js") || f.path.endsWith(".test.js"));
60
+ case "cypress":
61
+ return files.filter((f) => f.path.endsWith(".cy.ts") || f.path.endsWith(".cy.js"));
62
+ case "cucumber_java":
63
+ return files.filter((f) => f.path.endsWith(".feature") || f.path.endsWith("Steps.java"));
64
+ case "selenium_java":
65
+ case "junit":
66
+ case "testng":
67
+ return files.filter((f) => f.path.endsWith("Test.java"));
68
+ case "pytest":
69
+ case "selenium_python":
70
+ return files.filter((f) => f.path.startsWith("test_") || f.path.includes("/test_"));
71
+ default:
72
+ return [];
73
+ }
74
+ }
75
+ function detectConfigFiles(files, framework) {
76
+ if (!Array.isArray(files))
77
+ return [];
78
+ return files.filter((f) => f.path.includes("playwright.config") ||
79
+ f.path.includes("cypress.config") ||
80
+ f.path.includes("pytest.ini") ||
81
+ f.path.includes("testng.xml") ||
82
+ f.path.includes("pom.xml") ||
83
+ f.path.includes("conftest.py") ||
84
+ f.path.includes("build.gradle"));
85
+ }
86
+ function buildFrameworkSummary(fw) {
87
+ const lines = [
88
+ `Test framework: ${fw.framework}`,
89
+ `Language: ${fw.language}`,
90
+ `Confidence: ${fw.confidence}`,
91
+ `Evidence: ${fw.evidence.join(", ")}`,
92
+ ];
93
+ if (fw.testDir)
94
+ lines.push(`Test directory: ${fw.testDir}`);
95
+ lines.push(`Test file pattern: ${fw.testFilePattern}`);
96
+ return lines.join("\n");
97
+ }
98
+ function buildPromptRole(fw) {
99
+ switch (fw.framework) {
100
+ case "playwright_ts":
101
+ return "You are a senior test automation engineer specializing in Playwright with TypeScript.";
102
+ case "playwright_js":
103
+ return "You are a senior test automation engineer specializing in Playwright with JavaScript.";
104
+ case "cypress":
105
+ return "You are a senior test automation engineer specializing in Cypress.";
106
+ case "cucumber_java":
107
+ return "You are a senior test automation engineer specializing in Cucumber BDD with Java and Selenium WebDriver. You write Gherkin scenarios and Java step definitions using Page Object Model.";
108
+ case "selenium_java":
109
+ return "You are a senior test automation engineer specializing in Selenium WebDriver with Java.";
110
+ case "testng":
111
+ return "You are a senior test automation engineer specializing in TestNG with Java and Selenium WebDriver.";
112
+ case "pytest":
113
+ return "You are a senior test automation engineer specializing in pytest with Python.";
114
+ case "selenium_python":
115
+ return "You are a senior test automation engineer specializing in Selenium WebDriver with Python.";
116
+ default:
117
+ return "You are a senior test automation engineer.";
118
+ }
119
+ }
120
+ function buildOutputRules(fw) {
121
+ const common = [
122
+ "Use ONLY methods that exist in the provided page object files",
123
+ "Do NOT invent new methods — if a method does not exist, mention it as a risk",
124
+ "Follow the exact naming conventions used in existing test files",
125
+ "Keep tests focused and minimal",
126
+ ];
127
+ switch (fw.framework) {
128
+ case "playwright_ts":
129
+ case "playwright_js":
130
+ return [...common, "Use async/await pattern", "Use expect() from @playwright/test"];
131
+ case "cypress":
132
+ return [...common, "Use cy.get() with data-testid selectors", "Use cy.visit() for navigation"];
133
+ case "cucumber_java":
134
+ return [
135
+ ...common,
136
+ "Write Gherkin in Given/When/Then format",
137
+ "Use @Given @When @Then annotations",
138
+ "Inject Page Objects via constructor — NEVER instantiate WebDriver directly",
139
+ "Place feature files in src/test/resources/features/",
140
+ "Place step definitions in src/test/java/ with correct package",
141
+ "ALWAYS use export default ClassName not export default new ClassName()",
142
+ ];
143
+ case "selenium_java":
144
+ case "testng":
145
+ return [...common, "Use @Test annotation", "Use explicit waits — never Thread.sleep()"];
146
+ case "pytest":
147
+ case "selenium_python":
148
+ return [...common, "Use pytest fixtures", "Use assert statements"];
149
+ default:
150
+ return common;
151
+ }
152
+ }
153
+ function buildFileLocationRules(fw) {
154
+ switch (fw.framework) {
155
+ case "playwright_ts":
156
+ return ["Test files: tests/ or e2e/", "Extension: .spec.ts"];
157
+ case "playwright_js":
158
+ return ["Test files: tests/ or e2e/", "Extension: .spec.js"];
159
+ case "cypress":
160
+ return ["Test files: cypress/e2e/", "Extension: .cy.ts or .cy.js"];
161
+ case "cucumber_java":
162
+ return [
163
+ "Feature files: src/test/resources/features/",
164
+ "Step definitions: src/test/java/<package>/stepdefinitions/",
165
+ "Page objects: src/main/java/<package>/pages/",
166
+ ];
167
+ case "selenium_java":
168
+ case "testng":
169
+ return ["Test classes: src/test/java/<package>/", "Naming: <Name>Test.java"];
170
+ case "pytest":
171
+ case "selenium_python":
172
+ return ["Test files: tests/", "Naming: test_<name>.py"];
173
+ default:
174
+ return ["Follow existing project structure"];
175
+ }
176
+ }
177
+ const TASK_FILLER_WORDS = new Set([
178
+ "a", "an", "the", "please", "write", "new", "cucumber",
179
+ "scenario", "for", "test", "create", "generate", "feature",
180
+ "playwright", "pytest", "username", "selector",
181
+ "is", "and", "use", "as", "credentials", "after", "verify",
182
+ "url", "contains", "password", "submit", "with",
183
+ ]);
184
+ function buildIntentTokens(task) {
185
+ const sanitizedTask = task
186
+ .toLowerCase()
187
+ .normalize("NFKD")
188
+ .replace(/[\u0300-\u036f]/g, "")
189
+ .replace(/https?:\/\/[^\s]+/g, " ")
190
+ .replace(/www\.[^\s]+/g, " ")
191
+ .replace(/[a-z0-9-]+\.(com|org|net|io|dev|app|co)[^\s]*/g, " ")
192
+ .replace(/[^a-z0-9\s]+/g, " ")
193
+ .trim();
194
+ const rawTokens = sanitizedTask.split(/\s+/).filter(Boolean);
195
+ const meaningfulTokens = rawTokens.filter((token) => !TASK_FILLER_WORDS.has(token));
196
+ const sourceTokens = meaningfulTokens.length > 0 ? meaningfulTokens : rawTokens;
197
+ const limitedTokens = [];
198
+ let totalLength = 0;
199
+ for (const token of sourceTokens) {
200
+ const nextLength = totalLength === 0 ? token.length : totalLength + 1 + token.length;
201
+ if (limitedTokens.length >= 5 || nextLength > 40) {
202
+ break;
203
+ }
204
+ limitedTokens.push(token);
205
+ totalLength = nextLength;
206
+ }
207
+ return limitedTokens.length > 0 ? limitedTokens : ["generated", "test"];
208
+ }
209
+ function buildOutputNameParts(task) {
210
+ const tokens = buildIntentTokens(task);
211
+ const slug = tokens.join("_");
212
+ const pascal = tokens
213
+ .map((token) => token.charAt(0).toUpperCase() + token.slice(1))
214
+ .join("");
215
+ return { slug, pascal };
216
+ }
217
+ function findExistingDirectory(files, matcher) {
218
+ const existingFile = [...files]
219
+ .sort((a, b) => {
220
+ const aIsPreferred = a.path.startsWith("src/test/resources/features/");
221
+ const bIsPreferred = b.path.startsWith("src/test/resources/features/");
222
+ if (aIsPreferred === bIsPreferred)
223
+ return a.path.localeCompare(b.path);
224
+ return aIsPreferred ? -1 : 1;
225
+ })
226
+ .find(matcher);
227
+ return existingFile ? node_path_1.default.posix.dirname(existingFile.path) : null;
228
+ }
229
+ function buildOutputPaths(task, fw, files) {
230
+ const { slug, pascal } = buildOutputNameParts(task);
231
+ const base = fw.testDir ?? "tests";
232
+ switch (fw.framework) {
233
+ case "playwright_ts":
234
+ return { testFile: `${base}/${slug}.spec.ts` };
235
+ case "playwright_js":
236
+ return { testFile: `${base}/${slug}.spec.js` };
237
+ case "cypress":
238
+ return { testFile: `cypress/e2e/${slug}.cy.ts` };
239
+ case "cucumber_java": {
240
+ const featureDir = findExistingDirectory(files, (file) => file.path.endsWith(".feature")) ??
241
+ fw.testDir ??
242
+ "src/test/resources/features";
243
+ const stepDefinitionDir = findExistingDirectory(files, (file) => file.path.endsWith("Steps.java")) ??
244
+ "src/test/java/com/stepdefinitions";
245
+ return {
246
+ testFile: `${featureDir}/${slug}.feature`,
247
+ featureFile: `${featureDir}/${slug}.feature`,
248
+ stepDefinition: `${stepDefinitionDir}/${pascal}Steps.java`,
249
+ };
250
+ }
251
+ case "selenium_java":
252
+ case "testng":
253
+ return { testFile: `src/test/java/${pascal}Test.java` };
254
+ case "pytest":
255
+ case "selenium_python":
256
+ return { testFile: `tests/test_${slug}.py` };
257
+ default:
258
+ return { testFile: `tests/${slug}.test` };
259
+ }
260
+ }
261
+ function buildTestEngineerContext(task, framework, files) {
262
+ const safeFiles = Array.isArray(files) ? files : [];
263
+ const existingTestFiles = detectTestFiles(safeFiles, framework);
264
+ const pageObjectFiles = detectPageObjects(safeFiles, framework.language);
265
+ const stepDefinitionFiles = detectStepDefinitions(safeFiles);
266
+ const featureFiles = detectFeatureFiles(safeFiles);
267
+ const configFiles = detectConfigFiles(safeFiles, framework);
268
+ return {
269
+ framework,
270
+ existingTestFiles,
271
+ pageObjectFiles,
272
+ stepDefinitionFiles,
273
+ featureFiles,
274
+ configFiles,
275
+ frameworkSummary: buildFrameworkSummary(framework),
276
+ promptRole: buildPromptRole(framework),
277
+ outputRules: buildOutputRules(framework),
278
+ fileLocationRules: buildFileLocationRules(framework),
279
+ outputPaths: buildOutputPaths(task, framework, safeFiles),
280
+ };
281
+ }
282
+ //# sourceMappingURL=testEngineerContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testEngineerContext.js","sourceRoot":"","sources":["../../src/roles/testEngineerContext.ts"],"names":[],"mappings":"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"}