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.
- package/.gittignore +4 -0
- package/README.md +36 -0
- package/dist/api/server.js +136 -0
- package/dist/api/server.js.map +1 -0
- package/dist/apply/applyPatchPlan.js +17 -0
- package/dist/apply/applyPatchPlan.js.map +1 -0
- package/dist/apply/canApplyDecision.js +26 -0
- package/dist/apply/canApplyDecision.js.map +1 -0
- package/dist/apply/patchPlan.js +3 -0
- package/dist/apply/patchPlan.js.map +1 -0
- package/dist/apply/renderApplyResult.js +18 -0
- package/dist/apply/renderApplyResult.js.map +1 -0
- package/dist/apply/runApplyFlow.js +40 -0
- package/dist/apply/runApplyFlow.js.map +1 -0
- package/dist/apply/types.js +3 -0
- package/dist/apply/types.js.map +1 -0
- package/dist/audit/auditDiffIntelligence.js +3 -0
- package/dist/audit/auditDiffIntelligence.js.map +1 -0
- package/dist/audit/auditSnapshot.js +87 -0
- package/dist/audit/auditSnapshot.js.map +1 -0
- package/dist/audit/renderAuditDiff.js +64 -0
- package/dist/audit/renderAuditDiff.js.map +1 -0
- package/dist/audit/snapshotDiff.js +53 -0
- package/dist/audit/snapshotDiff.js.map +1 -0
- package/dist/audit/snapshotReader.js +31 -0
- package/dist/audit/snapshotReader.js.map +1 -0
- package/dist/audit/snapshotWriter.js +59 -0
- package/dist/audit/snapshotWriter.js.map +1 -0
- package/dist/ci/evaluateCiResult.js +142 -0
- package/dist/ci/evaluateCiResult.js.map +1 -0
- package/dist/cli/buildGeneratedPatchPlanPreview.js +65 -0
- package/dist/cli/buildGeneratedPatchPlanPreview.js.map +1 -0
- package/dist/cli/colors.js +28 -0
- package/dist/cli/colors.js.map +1 -0
- package/dist/cli/diffOutput.js +37 -0
- package/dist/cli/diffOutput.js.map +1 -0
- package/dist/cli/index.js +850 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/loadPatchPlan.js +52 -0
- package/dist/cli/loadPatchPlan.js.map +1 -0
- package/dist/cli/output.js +34 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/parseCliArgs.js +3 -0
- package/dist/cli/parseCliArgs.js.map +1 -0
- package/dist/cli/runGeneratedPatchPlanFlow.js +23 -0
- package/dist/cli/runGeneratedPatchPlanFlow.js.map +1 -0
- package/dist/components/LoginForm.js +64 -0
- package/dist/components/LoginForm.js.map +1 -0
- package/dist/core/analyzeCodePatterns.js +3 -0
- package/dist/core/analyzeCodePatterns.js.map +1 -0
- package/dist/core/applyLlmPatches.js +43 -0
- package/dist/core/applyLlmPatches.js.map +1 -0
- package/dist/core/buildConfidenceBreakdownFromSignals.js +33 -0
- package/dist/core/buildConfidenceBreakdownFromSignals.js.map +1 -0
- package/dist/core/buildDecisionAuditSnapshot.js +18 -0
- package/dist/core/buildDecisionAuditSnapshot.js.map +1 -0
- package/dist/core/buildDecisionTrace.js +113 -0
- package/dist/core/buildDecisionTrace.js.map +1 -0
- package/dist/core/buildFallbackPatchPlan.js +23 -0
- package/dist/core/buildFallbackPatchPlan.js.map +1 -0
- package/dist/core/buildFallbackPlan.js +25 -0
- package/dist/core/buildFallbackPlan.js.map +1 -0
- package/dist/core/buildSchemaAwareContext.js +49 -0
- package/dist/core/buildSchemaAwareContext.js.map +1 -0
- package/dist/core/buildTaskExecutionContext.js +70 -0
- package/dist/core/buildTaskExecutionContext.js.map +1 -0
- package/dist/core/ciEvaluator.js +83 -0
- package/dist/core/ciEvaluator.js.map +1 -0
- package/dist/core/computeRiskScore.js +43 -0
- package/dist/core/computeRiskScore.js.map +1 -0
- package/dist/core/computeRiskScoreDetails.js +106 -0
- package/dist/core/computeRiskScoreDetails.js.map +1 -0
- package/dist/core/confidenceGate.js +83 -0
- package/dist/core/confidenceGate.js.map +1 -0
- package/dist/core/decision/buildDecisionExplanation.js +91 -0
- package/dist/core/decision/buildDecisionExplanation.js.map +1 -0
- package/dist/core/decision/buildDecisionReasonCodes.js +65 -0
- package/dist/core/decision/buildDecisionReasonCodes.js.map +1 -0
- package/dist/core/decision/buildReasonSummaryLine.js +24 -0
- package/dist/core/decision/buildReasonSummaryLine.js.map +1 -0
- package/dist/core/decision/buildRecommendation.js +43 -0
- package/dist/core/decision/buildRecommendation.js.map +1 -0
- package/dist/core/decision/decideExecutionMode.js +125 -0
- package/dist/core/decision/decideExecutionMode.js.map +1 -0
- package/dist/core/decision/decisionReasonCodeMeta.js +91 -0
- package/dist/core/decision/decisionReasonCodeMeta.js.map +1 -0
- package/dist/core/decision/renderDecisionSummary.js +115 -0
- package/dist/core/decision/renderDecisionSummary.js.map +1 -0
- package/dist/core/detectResourceStorage.js +78 -0
- package/dist/core/detectResourceStorage.js.map +1 -0
- package/dist/core/formatOutput.js +53 -0
- package/dist/core/formatOutput.js.map +1 -0
- package/dist/core/intentAwareScore.js +35 -0
- package/dist/core/intentAwareScore.js.map +1 -0
- package/dist/core/loadSavedAgentResult.js +18 -0
- package/dist/core/loadSavedAgentResult.js.map +1 -0
- package/dist/core/normalizeIssues.js +50 -0
- package/dist/core/normalizeIssues.js.map +1 -0
- package/dist/core/normalizeSignals.js +40 -0
- package/dist/core/normalizeSignals.js.map +1 -0
- package/dist/core/output/zoneStageTypes.js +3 -0
- package/dist/core/output/zoneStageTypes.js.map +1 -0
- package/dist/core/patchRiskAnalyzer.js +50 -0
- package/dist/core/patchRiskAnalyzer.js.map +1 -0
- package/dist/core/renderRunAgentResult.js +77 -0
- package/dist/core/renderRunAgentResult.js.map +1 -0
- package/dist/core/result/buildApplyStageResult.js +61 -0
- package/dist/core/result/buildApplyStageResult.js.map +1 -0
- package/dist/core/result/buildCliViewModel.js +79 -0
- package/dist/core/result/buildCliViewModel.js.map +1 -0
- package/dist/core/result/buildConversionStageResult.js +62 -0
- package/dist/core/result/buildConversionStageResult.js.map +1 -0
- package/dist/core/result/buildDecisionStageResult.js +61 -0
- package/dist/core/result/buildDecisionStageResult.js.map +1 -0
- package/dist/core/result/buildExecutionResult.js +148 -0
- package/dist/core/result/buildExecutionResult.js.map +1 -0
- package/dist/core/result/buildPreviewStageResult.js +47 -0
- package/dist/core/result/buildPreviewStageResult.js.map +1 -0
- package/dist/core/result/buildSavedDecisionExplanation.js +52 -0
- package/dist/core/result/buildSavedDecisionExplanation.js.map +1 -0
- package/dist/core/result/buildSavedRecommendation.js +39 -0
- package/dist/core/result/buildSavedRecommendation.js.map +1 -0
- package/dist/core/result/buildStageResultV2.js +52 -0
- package/dist/core/result/buildStageResultV2.js.map +1 -0
- package/dist/core/result/renderBundledResult.js +47 -0
- package/dist/core/result/renderBundledResult.js.map +1 -0
- package/dist/core/result/renderCliResult.js +93 -0
- package/dist/core/result/renderCliResult.js.map +1 -0
- package/dist/core/result/scoreTopRisks.js +205 -0
- package/dist/core/result/scoreTopRisks.js.map +1 -0
- package/dist/core/runAgent.js +210 -0
- package/dist/core/runAgent.js.map +1 -0
- package/dist/core/runFeatureAgent.js +684 -0
- package/dist/core/runFeatureAgent.js.map +1 -0
- package/dist/core/runLlmPatchFlow.js +522 -0
- package/dist/core/runLlmPatchFlow.js.map +1 -0
- package/dist/core/saveAgentResult.js +234 -0
- package/dist/core/saveAgentResult.js.map +1 -0
- package/dist/core/scoring/computeConfidenceBreakdown.js +130 -0
- package/dist/core/scoring/computeConfidenceBreakdown.js.map +1 -0
- package/dist/core/scoring/computeConfidenceScore.js +37 -0
- package/dist/core/scoring/computeConfidenceScore.js.map +1 -0
- package/dist/core/scoring/confidenceRules.js +58 -0
- package/dist/core/scoring/confidenceRules.js.map +1 -0
- package/dist/core/scoring/confidenceScore.js +8 -0
- package/dist/core/scoring/confidenceScore.js.map +1 -0
- package/dist/core/selectRelevantBlocks.js +58 -0
- package/dist/core/selectRelevantBlocks.js.map +1 -0
- package/dist/core/selfHealingLoop.js +209 -0
- package/dist/core/selfHealingLoop.js.map +1 -0
- package/dist/core/taskIntentParser.js +165 -0
- package/dist/core/taskIntentParser.js.map +1 -0
- package/dist/core/types/agentResult.js +3 -0
- package/dist/core/types/agentResult.js.map +1 -0
- package/dist/core/types/risk.js +3 -0
- package/dist/core/types/risk.js.map +1 -0
- package/dist/core/validatePatchAgainstSchema.js +100 -0
- package/dist/core/validatePatchAgainstSchema.js.map +1 -0
- package/dist/core/validateSuggestedArchitecture.js +24 -0
- package/dist/core/validateSuggestedArchitecture.js.map +1 -0
- package/dist/engine/buildDecisionExplanation.js +114 -0
- package/dist/engine/buildDecisionExplanation.js.map +1 -0
- package/dist/engine/contradictionDetector.js +40 -0
- package/dist/engine/contradictionDetector.js.map +1 -0
- package/dist/engine/decisionEngine.js +19 -0
- package/dist/engine/decisionEngine.js.map +1 -0
- package/dist/llm/openaiClient.js +19 -0
- package/dist/llm/openaiClient.js.map +1 -0
- package/dist/llm/planFeature.js +57 -0
- package/dist/llm/planFeature.js.map +1 -0
- package/dist/llm/planFix.js +3 -0
- package/dist/llm/planFix.js.map +1 -0
- package/dist/llm/planFullPatch.js +62 -0
- package/dist/llm/planFullPatch.js.map +1 -0
- package/dist/llm/planPatchPreview.js +60 -0
- package/dist/llm/planPatchPreview.js.map +1 -0
- package/dist/llm/prompts.js +131 -0
- package/dist/llm/prompts.js.map +1 -0
- package/dist/llm/schemas.js +28 -0
- package/dist/llm/schemas.js.map +1 -0
- package/dist/patch/apply/formatApplyFlowResult.js +23 -0
- package/dist/patch/apply/formatApplyFlowResult.js.map +1 -0
- package/dist/patch/apply/renderApplyFlowResult.js +15 -0
- package/dist/patch/apply/renderApplyFlowResult.js.map +1 -0
- package/dist/patch/apply/runApplyFlow.js +88 -0
- package/dist/patch/apply/runApplyFlow.js.map +1 -0
- package/dist/patch/applyFlowTypes.js +3 -0
- package/dist/patch/applyFlowTypes.js.map +1 -0
- package/dist/patch/applyPatchPlan.js +117 -0
- package/dist/patch/applyPatchPlan.js.map +1 -0
- package/dist/patch/backupFile.js +23 -0
- package/dist/patch/backupFile.js.map +1 -0
- package/dist/patch/conversion/canConvertGeneratedPlanToPatchPlan.js +57 -0
- package/dist/patch/conversion/canConvertGeneratedPlanToPatchPlan.js.map +1 -0
- package/dist/patch/conversion/convertGeneratedPlanToPatchPlan.js +38 -0
- package/dist/patch/conversion/convertGeneratedPlanToPatchPlan.js.map +1 -0
- package/dist/patch/conversion/formatGeneratedPlanConversionFailure.js +17 -0
- package/dist/patch/conversion/formatGeneratedPlanConversionFailure.js.map +1 -0
- package/dist/patch/conversion/generatedPlanConversionFailureMeta.js +40 -0
- package/dist/patch/conversion/generatedPlanConversionFailureMeta.js.map +1 -0
- package/dist/patch/conversion/generatedPlanConversionTypes.js +3 -0
- package/dist/patch/conversion/generatedPlanConversionTypes.js.map +1 -0
- package/dist/patch/conversion/renderGeneratedPlanConversionFailure.js +16 -0
- package/dist/patch/conversion/renderGeneratedPlanConversionFailure.js.map +1 -0
- package/dist/patch/generatedPlanConversion.js +96 -0
- package/dist/patch/generatedPlanConversion.js.map +1 -0
- package/dist/patch/patchAnchors.js +3 -0
- package/dist/patch/patchAnchors.js.map +1 -0
- package/dist/patch/patchValidationRules.js +116 -0
- package/dist/patch/patchValidationRules.js.map +1 -0
- package/dist/patch/patchValidationTypes.js +3 -0
- package/dist/patch/patchValidationTypes.js.map +1 -0
- package/dist/patch/renderApplyFlowResult.js +26 -0
- package/dist/patch/renderApplyFlowResult.js.map +1 -0
- package/dist/patch/validatePatchPlan.js +148 -0
- package/dist/patch/validatePatchPlan.js.map +1 -0
- package/dist/patch-generation/buildGeneratedPatchPlan.js +94 -0
- package/dist/patch-generation/buildGeneratedPatchPlan.js.map +1 -0
- package/dist/patch-generation/buildPatchOperations.js +41 -0
- package/dist/patch-generation/buildPatchOperations.js.map +1 -0
- package/dist/patch-generation/classifyPatchIntent.js +62 -0
- package/dist/patch-generation/classifyPatchIntent.js.map +1 -0
- package/dist/patch-generation/formatGeneratedPatchPlanPreview.js +25 -0
- package/dist/patch-generation/formatGeneratedPatchPlanPreview.js.map +1 -0
- package/dist/patch-generation/generatePatchPlan.js +74 -0
- package/dist/patch-generation/generatePatchPlan.js.map +1 -0
- package/dist/patch-generation/generatedPatchPlanTypes.js +3 -0
- package/dist/patch-generation/generatedPatchPlanTypes.js.map +1 -0
- package/dist/patch-generation/isIntentAllowed.js +15 -0
- package/dist/patch-generation/isIntentAllowed.js.map +1 -0
- package/dist/patch-generation/renderGeneratedPatchPlan.js +62 -0
- package/dist/patch-generation/renderGeneratedPatchPlan.js.map +1 -0
- package/dist/prompts/developerPrompt.js +213 -0
- package/dist/prompts/developerPrompt.js.map +1 -0
- package/dist/prompts/fullPatchPrompt.js +82 -0
- package/dist/prompts/fullPatchPrompt.js.map +1 -0
- package/dist/prompts/patchPreviewPrompt.js +83 -0
- package/dist/prompts/patchPreviewPrompt.js.map +1 -0
- package/dist/prompts/planFeaturePrompt.js +73 -0
- package/dist/prompts/planFeaturePrompt.js.map +1 -0
- package/dist/prompts/testEngineerContext.js +184 -0
- package/dist/prompts/testEngineerContext.js.map +1 -0
- package/dist/prompts/testEngineerPrompt.js +135 -0
- package/dist/prompts/testEngineerPrompt.js.map +1 -0
- package/dist/repo/analyzeProjectPatterns.js +46 -0
- package/dist/repo/analyzeProjectPatterns.js.map +1 -0
- package/dist/repo/detectProjectStructure.js +45 -0
- package/dist/repo/detectProjectStructure.js.map +1 -0
- package/dist/repo/getGitChangedFiles.js +96 -0
- package/dist/repo/getGitChangedFiles.js.map +1 -0
- package/dist/repo/loadSchemaSnapshot.js +29 -0
- package/dist/repo/loadSchemaSnapshot.js.map +1 -0
- package/dist/repo/rankRelevantFiles.js +306 -0
- package/dist/repo/rankRelevantFiles.js.map +1 -0
- package/dist/repo/readProjectFiles.js +27 -0
- package/dist/repo/readProjectFiles.js.map +1 -0
- package/dist/repo/scanRepo.js +93 -0
- package/dist/repo/scanRepo.js.map +1 -0
- package/dist/repo/validateSuggestedFiles.js +66 -0
- package/dist/repo/validateSuggestedFiles.js.map +1 -0
- package/dist/roles/dataAnalystContext.js +155 -0
- package/dist/roles/dataAnalystContext.js.map +1 -0
- package/dist/roles/detectDataSchema.js +152 -0
- package/dist/roles/detectDataSchema.js.map +1 -0
- package/dist/roles/detectTestComplexity.js +74 -0
- package/dist/roles/detectTestComplexity.js.map +1 -0
- package/dist/roles/detectTestFramework.js +166 -0
- package/dist/roles/detectTestFramework.js.map +1 -0
- package/dist/roles/runDataAnalystFlow.js +221 -0
- package/dist/roles/runDataAnalystFlow.js.map +1 -0
- package/dist/roles/runTestEngineerFlow.js +266 -0
- package/dist/roles/runTestEngineerFlow.js.map +1 -0
- package/dist/roles/testEngineerContext.js +282 -0
- package/dist/roles/testEngineerContext.js.map +1 -0
- package/dist/roles/testOutputValidator.js +474 -0
- package/dist/roles/testOutputValidator.js.map +1 -0
- package/dist/types/agent.js +3 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/analysis.js +3 -0
- package/dist/types/analysis.js.map +1 -0
- package/dist/types/patch.js +3 -0
- package/dist/types/patch.js.map +1 -0
- package/dist/types/project.js +3 -0
- package/dist/types/project.js.map +1 -0
- package/dist/types/schema.js +3 -0
- package/dist/types/schema.js.map +1 -0
- package/dist/utils/executionTracker.js +33 -0
- package/dist/utils/executionTracker.js.map +1 -0
- package/dist/utils/files.js +35 -0
- package/dist/utils/files.js.map +1 -0
- package/dist/utils/logger.js +179 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/paths.js +14 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/trace.js +10 -0
- package/dist/utils/trace.js.map +1 -0
- package/dist/utils/validation.js +24 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +53 -0
- package/tsconfig.json +17 -0
- package/vitest.config.ts +21 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testEngineerContext.js","sourceRoot":"","sources":["../../src/prompts/testEngineerContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildTestEngineerPrompt = buildTestEngineerPrompt;
|
|
4
|
+
const detectTestComplexity_js_1 = require("../roles/detectTestComplexity.js");
|
|
5
|
+
function buildTestEngineerPrompt(input) {
|
|
6
|
+
const { task, context, pageObjectContents, stepDefinitionContents, featureContents, existingTestContents, } = input;
|
|
7
|
+
const { framework, outputPaths } = context;
|
|
8
|
+
const { complexity, hints, suggestedPatterns } = (0, detectTestComplexity_js_1.detectTestComplexity)(input.task);
|
|
9
|
+
const pageObjectSection = pageObjectContents.length > 0
|
|
10
|
+
? pageObjectContents
|
|
11
|
+
.map((f) => `FILE: ${f.path}\n\`\`\`\n${f.content}\n\`\`\``)
|
|
12
|
+
.join("\n\n")
|
|
13
|
+
: "(no page objects found)";
|
|
14
|
+
const pageObjectHints = pageObjectContents.length > 0
|
|
15
|
+
? pageObjectContents.map((f) => `- ${f.path}`).join("\n")
|
|
16
|
+
: "(no page object usage hints found)";
|
|
17
|
+
const stepDefinitionSection = stepDefinitionContents.length > 0
|
|
18
|
+
? stepDefinitionContents
|
|
19
|
+
.map((f) => `FILE: ${f.path}\n\`\`\`java\n${f.content}\n\`\`\``)
|
|
20
|
+
.join("\n\n")
|
|
21
|
+
: "(no existing step definition examples found)";
|
|
22
|
+
const featureSection = featureContents.length > 0
|
|
23
|
+
? featureContents
|
|
24
|
+
.map((f) => `FILE: ${f.path}\n\`\`\`gherkin\n${f.content}\n\`\`\``)
|
|
25
|
+
.join("\n\n")
|
|
26
|
+
: "(no existing feature file examples found)";
|
|
27
|
+
const existingTestSection = existingTestContents.length > 0
|
|
28
|
+
? existingTestContents
|
|
29
|
+
.map((f) => `FILE: ${f.path}\n\`\`\`\n${f.content}\n\`\`\``)
|
|
30
|
+
.join("\n\n")
|
|
31
|
+
: "(no existing tests found)";
|
|
32
|
+
const rulesSection = context.outputRules.map((r) => `- ${r}`).join("\n");
|
|
33
|
+
const locationSection = context.fileLocationRules.map((r) => `- ${r}`).join("\n");
|
|
34
|
+
const outputSection = framework.framework === "cucumber_java"
|
|
35
|
+
? `Feature file: ${outputPaths.featureFile}
|
|
36
|
+
Step definitions: ${outputPaths.stepDefinition}`
|
|
37
|
+
: `Test file: ${outputPaths.testFile}`;
|
|
38
|
+
const isCucumberJava = framework.framework === "cucumber_java";
|
|
39
|
+
const outputFormat = isCucumberJava
|
|
40
|
+
? `{
|
|
41
|
+
"featureFile": {
|
|
42
|
+
"path": "${outputPaths.featureFile ?? outputPaths.testFile}",
|
|
43
|
+
"content": "full gherkin content"
|
|
44
|
+
},
|
|
45
|
+
"stepDefinitionFile": {
|
|
46
|
+
"path": "${outputPaths.stepDefinition ?? ""}",
|
|
47
|
+
"content": "full java step definition content"
|
|
48
|
+
},
|
|
49
|
+
"summary": "what this test does",
|
|
50
|
+
"warnings": ["any risks or missing methods"],
|
|
51
|
+
"confidence": 0
|
|
52
|
+
}`
|
|
53
|
+
: `{
|
|
54
|
+
"testFile": {
|
|
55
|
+
"path": "${outputPaths.testFile}",
|
|
56
|
+
"content": "full file content"
|
|
57
|
+
},
|
|
58
|
+
"summary": "what this test does",
|
|
59
|
+
"warnings": ["any risks or missing methods"],
|
|
60
|
+
"confidence": 0
|
|
61
|
+
}`;
|
|
62
|
+
return `
|
|
63
|
+
${context.promptRole}
|
|
64
|
+
|
|
65
|
+
Your job is to write a complete, runnable test for the given task.
|
|
66
|
+
You must follow the exact framework, language, and patterns detected in this repository.
|
|
67
|
+
You must NEVER invent new methods - always use what already exists in the page objects.
|
|
68
|
+
|
|
69
|
+
=== TASK ===
|
|
70
|
+
${task}
|
|
71
|
+
|
|
72
|
+
=== DETECTED FRAMEWORK ===
|
|
73
|
+
${context.frameworkSummary}
|
|
74
|
+
|
|
75
|
+
=== OUTPUT RULES ===
|
|
76
|
+
${rulesSection}
|
|
77
|
+
|
|
78
|
+
=== COMPLEXITY GUIDANCE ===
|
|
79
|
+
Detected complexity: ${complexity}
|
|
80
|
+
Hints: ${hints.join(", ") || "none"}
|
|
81
|
+
Suggested patterns: ${suggestedPatterns.join(", ") || "none"}
|
|
82
|
+
|
|
83
|
+
Framework-specific complexity instructions:
|
|
84
|
+
- If complexity is "data_driven" and framework is pytest/selenium_python: MUST use @pytest.mark.parametrize with at least 2 data rows
|
|
85
|
+
- If complexity is "data_driven" and framework is cucumber_java: MUST use Scenario Outline with Examples table containing at least 2 rows
|
|
86
|
+
- If complexity is "data_driven" and framework is playwright_ts/playwright_js: MUST use test.each() or a data array with forEach
|
|
87
|
+
- If complexity is "e2e": Chain multiple page objects, add assertions at each major step
|
|
88
|
+
- If complexity is "negative": Include at least one test case for the failure/error scenario
|
|
89
|
+
- If complexity is "multi_scenario": Write multiple separate test functions or scenarios
|
|
90
|
+
|
|
91
|
+
=== FILE LOCATION RULES ===
|
|
92
|
+
${locationSection}
|
|
93
|
+
|
|
94
|
+
=== EXISTING PAGE OBJECTS ===
|
|
95
|
+
${pageObjectSection}
|
|
96
|
+
|
|
97
|
+
=== PAGE OBJECT USAGE HINTS ===
|
|
98
|
+
${pageObjectHints}
|
|
99
|
+
|
|
100
|
+
=== EXISTING STEP DEFINITION EXAMPLES ===
|
|
101
|
+
${stepDefinitionSection}
|
|
102
|
+
|
|
103
|
+
=== EXISTING FEATURE FILE EXAMPLES ===
|
|
104
|
+
${featureSection}
|
|
105
|
+
|
|
106
|
+
=== EXISTING TEST EXAMPLES ===
|
|
107
|
+
${existingTestSection}
|
|
108
|
+
|
|
109
|
+
=== OUTPUT REQUIREMENTS ===
|
|
110
|
+
${outputSection}
|
|
111
|
+
|
|
112
|
+
=== CRITICAL RULES ===
|
|
113
|
+
1. Use ONLY the exact method names found in the page objects above.
|
|
114
|
+
2. Compose step definitions from existing page object methods instead of inventing new convenience methods.
|
|
115
|
+
3. NEVER call a convenience method such as "searchRoundTripFlight(...)" unless that exact method exists in the provided page objects.
|
|
116
|
+
4. NEVER use placeholder URLs or placeholder data such as "http://example.com", "https://example.com", or fake cities/dates when repository-style phrasing examples exist.
|
|
117
|
+
5. When repository examples use "Scenario Outline" with an "Examples:" table, you MUST use the same pattern for parameterized search tasks unless a concrete repository-specific reason prevents it.
|
|
118
|
+
6. If repository-specific phrasing exists in the provided examples, do NOT fall back to generic phrasing.
|
|
119
|
+
7. Each generated step definition method body must map closely to one or a small number of real page object method calls.
|
|
120
|
+
8. Do NOT collapse multiple UI actions into a single invented abstraction, helper, or convenience step.
|
|
121
|
+
9. Reuse existing feature phrasing, step annotations, package names, imports, and page object usage patterns when examples are provided.
|
|
122
|
+
10. NEVER create new WebDriver or browser instances - use existing page objects.
|
|
123
|
+
11. If a required method does not exist in the page objects, add it to warnings with the missing method names clearly listed.
|
|
124
|
+
12. Avoid placeholder comments or TODO-style filler unless the repository examples already use that exact pattern.
|
|
125
|
+
13. Follow the exact import/package structure of the existing files.
|
|
126
|
+
14. For Cucumber Java: write both feature file AND step definitions.
|
|
127
|
+
15. confidence field: 0-100 based on how well page objects cover the task.
|
|
128
|
+
16. Return raw JSON only - no markdown, no code fences, no explanations.
|
|
129
|
+
|
|
130
|
+
=== OUTPUT FORMAT ===
|
|
131
|
+
Return JSON only:
|
|
132
|
+
${outputFormat}
|
|
133
|
+
`.trim();
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=testEngineerPrompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testEngineerPrompt.js","sourceRoot":"","sources":["../../src/prompts/testEngineerPrompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.analyzeProjectPatterns = analyzeProjectPatterns;
|
|
4
|
+
function analyzeProjectPatterns(files) {
|
|
5
|
+
let authMiddlewareName;
|
|
6
|
+
let responseShape = "unknown";
|
|
7
|
+
let dbClient = "unknown";
|
|
8
|
+
let backendStyle = "unknown";
|
|
9
|
+
let frontendStyle = "unknown";
|
|
10
|
+
const routePatterns = [];
|
|
11
|
+
const evidence = [];
|
|
12
|
+
for (const file of files) {
|
|
13
|
+
const content = file.content;
|
|
14
|
+
if (file.path.includes("/routes/") && /express|router\.(get|post|put|patch|delete)/.test(content)) {
|
|
15
|
+
backendStyle = "express";
|
|
16
|
+
routePatterns.push(file.path);
|
|
17
|
+
}
|
|
18
|
+
if (/requireAuth/.test(content)) {
|
|
19
|
+
authMiddlewareName = "requireAuth";
|
|
20
|
+
evidence.push(`Detected requireAuth in ${file.path}`);
|
|
21
|
+
}
|
|
22
|
+
if (/success\s*:\s*(true|false)/.test(content) && /message\s*:/.test(content) && /data\s*:/.test(content)) {
|
|
23
|
+
responseShape = "success-message-data";
|
|
24
|
+
}
|
|
25
|
+
else if (/data\s*:/.test(content) && /error\s*:/.test(content)) {
|
|
26
|
+
responseShape = "data-error";
|
|
27
|
+
}
|
|
28
|
+
if (/from\(["'`]([a-zA-Z0-9_]+)["'`]\)/.test(content) || /supabase/.test(content)) {
|
|
29
|
+
dbClient = "supabase";
|
|
30
|
+
evidence.push(`Detected Supabase usage in ${file.path}`);
|
|
31
|
+
}
|
|
32
|
+
if (/react|useState|useEffect|jsx/.test(content)) {
|
|
33
|
+
frontendStyle = "react";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
authMiddlewareName,
|
|
38
|
+
responseShape,
|
|
39
|
+
dbClient,
|
|
40
|
+
backendStyle,
|
|
41
|
+
frontendStyle,
|
|
42
|
+
routePatterns,
|
|
43
|
+
evidence
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=analyzeProjectPatterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzeProjectPatterns.js","sourceRoot":"","sources":["../../src/repo/analyzeProjectPatterns.ts"],"names":[],"mappings":";;AAOA,wDAgDC;AAhDD,SAAgB,sBAAsB,CAAC,KAAkB;IACvD,IAAI,kBAAsC,CAAC;IAC3C,IAAI,aAAa,GAA4C,SAAS,CAAC;IACvE,IAAI,QAAQ,GAAuC,SAAS,CAAC;IAC7D,IAAI,YAAY,GAA2C,SAAS,CAAC;IACrE,IAAI,aAAa,GAA4C,SAAS,CAAC;IAEvE,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE7B,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,6CAA6C,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClG,YAAY,GAAG,SAAS,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,kBAAkB,GAAG,aAAa,CAAC;YACnC,QAAQ,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1G,aAAa,GAAG,sBAAsB,CAAC;QACzC,CAAC;aAAM,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,aAAa,GAAG,YAAY,CAAC;QAC/B,CAAC;QAED,IAAI,mCAAmC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClF,QAAQ,GAAG,UAAU,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,aAAa,GAAG,OAAO,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO;QACL,kBAAkB;QAClB,aAAa;QACb,QAAQ;QACR,YAAY;QACZ,aAAa;QACb,aAAa;QACb,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.detectProjectStructure = detectProjectStructure;
|
|
4
|
+
function detectProjectStructure(files) {
|
|
5
|
+
const filePaths = files.map((file) => file.path.replace(/\\/g, "/"));
|
|
6
|
+
const hasClientFolder = filePaths.some((file) => file.startsWith("client/"));
|
|
7
|
+
const hasServerFolder = filePaths.some((file) => file.startsWith("server/"));
|
|
8
|
+
const isReactApp = filePaths.some((file) => file.endsWith(".jsx") ||
|
|
9
|
+
file.endsWith(".tsx") ||
|
|
10
|
+
file.includes("react") ||
|
|
11
|
+
file.includes("App."));
|
|
12
|
+
const isExpressApp = filePaths.some((file) => file.includes("routes/") ||
|
|
13
|
+
file.includes("controllers/") ||
|
|
14
|
+
file.endsWith("server/index.js") ||
|
|
15
|
+
file.endsWith("server/index.ts"));
|
|
16
|
+
const hasServicesPattern = filePaths.some((file) => file.includes("/services/"));
|
|
17
|
+
const hasRoutesPattern = filePaths.some((file) => file.includes("/routes/"));
|
|
18
|
+
const hasControllersPattern = filePaths.some((file) => file.includes("/controllers/"));
|
|
19
|
+
const notes = [];
|
|
20
|
+
if (hasClientFolder)
|
|
21
|
+
notes.push("Client folder detected");
|
|
22
|
+
if (hasServerFolder)
|
|
23
|
+
notes.push("Server folder detected");
|
|
24
|
+
if (isReactApp)
|
|
25
|
+
notes.push("React-like frontend detected");
|
|
26
|
+
if (isExpressApp)
|
|
27
|
+
notes.push("Express-like backend detected");
|
|
28
|
+
if (hasServicesPattern)
|
|
29
|
+
notes.push("Services pattern detected");
|
|
30
|
+
if (hasRoutesPattern)
|
|
31
|
+
notes.push("Routes pattern detected");
|
|
32
|
+
if (hasControllersPattern)
|
|
33
|
+
notes.push("Controllers pattern detected");
|
|
34
|
+
return {
|
|
35
|
+
isReactApp,
|
|
36
|
+
isExpressApp,
|
|
37
|
+
hasClientFolder,
|
|
38
|
+
hasServerFolder,
|
|
39
|
+
hasServicesPattern,
|
|
40
|
+
hasRoutesPattern,
|
|
41
|
+
hasControllersPattern,
|
|
42
|
+
notes
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=detectProjectStructure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectProjectStructure.js","sourceRoot":"","sources":["../../src/repo/detectProjectStructure.ts"],"names":[],"mappings":";;AAEA,wDAsDC;AAtDD,SAAgB,sBAAsB,CAAC,KAAiB;IACtD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAErE,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7E,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAE7E,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAC/B,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CACxB,CAAC;IAEF,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CACjC,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CACnC,CAAC;IAEF,MAAM,kBAAkB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACjD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAC5B,CAAC;IAEF,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAC/C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC1B,CAAC;IAEF,MAAM,qBAAqB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACpD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAC/B,CAAC;IAEF,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,eAAe;QAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC1D,IAAI,eAAe;QAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC1D,IAAI,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC3D,IAAI,YAAY;QAAE,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC9D,IAAI,kBAAkB;QAAE,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAChE,IAAI,gBAAgB;QAAE,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC5D,IAAI,qBAAqB;QAAE,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAEtE,OAAO;QACL,UAAU;QACV,YAAY;QACZ,eAAe;QACf,eAAe;QACf,kBAAkB;QAClB,gBAAgB;QAChB,qBAAqB;QACrB,KAAK;KACN,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
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.getGitChangedFiles = getGitChangedFiles;
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const node_child_process_1 = require("node:child_process");
|
|
9
|
+
const node_util_1 = require("node:util");
|
|
10
|
+
const execFileAsync = (0, node_util_1.promisify)(node_child_process_1.execFile);
|
|
11
|
+
function normalizeGitPath(filePath) {
|
|
12
|
+
return filePath.replace(/\\/g, "/").trim();
|
|
13
|
+
}
|
|
14
|
+
async function runGit(cwd, args) {
|
|
15
|
+
const { stdout } = await execFileAsync("git", args, {
|
|
16
|
+
cwd,
|
|
17
|
+
windowsHide: true
|
|
18
|
+
});
|
|
19
|
+
return stdout
|
|
20
|
+
.split("\n")
|
|
21
|
+
.map((line) => normalizeGitPath(line))
|
|
22
|
+
.filter(Boolean);
|
|
23
|
+
}
|
|
24
|
+
async function getMergeBaseBranch(targetPath) {
|
|
25
|
+
const candidates = ["origin/main", "origin/master", "main", "master"];
|
|
26
|
+
for (const candidate of candidates) {
|
|
27
|
+
try {
|
|
28
|
+
await execFileAsync("git", ["rev-parse", "--verify", candidate], {
|
|
29
|
+
cwd: targetPath,
|
|
30
|
+
windowsHide: true
|
|
31
|
+
});
|
|
32
|
+
return candidate;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// try next
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
async function getGitChangedFiles(targetPath) {
|
|
41
|
+
try {
|
|
42
|
+
const repoRootResult = await execFileAsync("git", ["rev-parse", "--show-toplevel"], {
|
|
43
|
+
cwd: targetPath,
|
|
44
|
+
windowsHide: true
|
|
45
|
+
});
|
|
46
|
+
const repoRoot = repoRootResult.stdout.trim();
|
|
47
|
+
if (!repoRoot) {
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
const relativeBase = node_path_1.default.relative(repoRoot, targetPath).replace(/\\/g, "/");
|
|
51
|
+
const baseBranch = await getMergeBaseBranch(repoRoot);
|
|
52
|
+
let changedFiles = [];
|
|
53
|
+
if (baseBranch) {
|
|
54
|
+
try {
|
|
55
|
+
changedFiles = await runGit(repoRoot, [
|
|
56
|
+
"diff",
|
|
57
|
+
"--name-only",
|
|
58
|
+
`${baseBranch}...HEAD`
|
|
59
|
+
]);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
changedFiles = [];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (changedFiles.length === 0) {
|
|
66
|
+
try {
|
|
67
|
+
const statusResult = await execFileAsync("git", ["status", "--short"], {
|
|
68
|
+
cwd: repoRoot,
|
|
69
|
+
windowsHide: true
|
|
70
|
+
});
|
|
71
|
+
changedFiles = statusResult.stdout
|
|
72
|
+
.split("\n")
|
|
73
|
+
.map((line) => line.replace(/\\/g, "/"))
|
|
74
|
+
.map((line) => line.slice(3).trim())
|
|
75
|
+
.filter(Boolean);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
changedFiles = [];
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (!relativeBase || relativeBase === "") {
|
|
82
|
+
return [...new Set(changedFiles)];
|
|
83
|
+
}
|
|
84
|
+
return [
|
|
85
|
+
...new Set(changedFiles
|
|
86
|
+
.filter((filePath) => filePath === relativeBase || filePath.startsWith(`${relativeBase}/`))
|
|
87
|
+
.map((filePath) => filePath.startsWith(`${relativeBase}/`)
|
|
88
|
+
? filePath.slice(relativeBase.length + 1)
|
|
89
|
+
: node_path_1.default.basename(filePath)))
|
|
90
|
+
];
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=getGitChangedFiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getGitChangedFiles.js","sourceRoot":"","sources":["../../src/repo/getGitChangedFiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
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.loadSchemaSnapshot = loadSchemaSnapshot;
|
|
7
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
async function loadSchemaSnapshot(projectRoot) {
|
|
10
|
+
const candidatePaths = [
|
|
11
|
+
node_path_1.default.join(projectRoot, ".agent-cache", "schema.json"),
|
|
12
|
+
node_path_1.default.join(projectRoot, "schema.json"),
|
|
13
|
+
node_path_1.default.join(projectRoot, "supabase-schema.json")
|
|
14
|
+
];
|
|
15
|
+
for (const filePath of candidatePaths) {
|
|
16
|
+
try {
|
|
17
|
+
const raw = await promises_1.default.readFile(filePath, "utf-8");
|
|
18
|
+
const parsed = JSON.parse(raw);
|
|
19
|
+
if (parsed && Array.isArray(parsed.tables) && Array.isArray(parsed.columns)) {
|
|
20
|
+
return parsed;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// ignore and continue
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=loadSchemaSnapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadSchemaSnapshot.js","sourceRoot":"","sources":["../../src/repo/loadSchemaSnapshot.ts"],"names":[],"mappings":";;;;;AAIA,gDAqBC;AAzBD,gEAAkC;AAClC,0DAA6B;AAGtB,KAAK,UAAU,kBAAkB,CAAC,WAAmB;IAC1D,MAAM,cAAc,GAAG;QACrB,mBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,aAAa,CAAC;QACrD,mBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC;QACrC,mBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC;KAC/C,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;YAEjD,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5E,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|