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":"buildDecisionExplanation.js","sourceRoot":"","sources":["../../src/engine/buildDecisionExplanation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.detectContradictions = detectContradictions;
|
|
4
|
+
/**
|
|
5
|
+
* Detects semantic inconsistencies between riskScore, confidenceScore, and executionMode.
|
|
6
|
+
*
|
|
7
|
+
* @param riskScore - Normalized risk score in [0, 1] range.
|
|
8
|
+
* @param confidenceScore - Normalized confidence score in [0, 1] range.
|
|
9
|
+
* @param mode - The resolved execution mode.
|
|
10
|
+
* @returns An array of ContradictionFlag. Empty if no contradictions detected.
|
|
11
|
+
*/
|
|
12
|
+
function detectContradictions(riskScore, confidenceScore, mode) {
|
|
13
|
+
const flags = [];
|
|
14
|
+
// LOW_CONFIDENCE_ON_SAFE: mode is safe but confidence is too low to justify it
|
|
15
|
+
if (mode === "safe_to_apply" && confidenceScore < 0.4) {
|
|
16
|
+
flags.push({
|
|
17
|
+
type: "LOW_CONFIDENCE_ON_SAFE",
|
|
18
|
+
severity: "warning",
|
|
19
|
+
message: `Safe execution mode was decided but confidence score is below threshold (${confidenceScore.toFixed(2)}). The decision may not be well-supported.`,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
// HIGH_CONFIDENCE_ON_BLOCK: mode is blocked but risk score is too low to explain the block
|
|
23
|
+
if (mode === "blocked" && riskScore < 0.3) {
|
|
24
|
+
flags.push({
|
|
25
|
+
type: "HIGH_CONFIDENCE_ON_BLOCK",
|
|
26
|
+
severity: "info",
|
|
27
|
+
message: `Execution was blocked but risk score is below threshold (${riskScore.toFixed(2)}). The block is likely driven by validation issues rather than semantic risk.`,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
// SCORE_TENSION: high risk + high confidence + safe mode is a contradictory combination
|
|
31
|
+
if (riskScore > 0.6 && confidenceScore > 0.8 && mode === "safe_to_apply") {
|
|
32
|
+
flags.push({
|
|
33
|
+
type: "SCORE_TENSION",
|
|
34
|
+
severity: "critical",
|
|
35
|
+
message: `Risk score (${riskScore.toFixed(2)}) and confidence score (${confidenceScore.toFixed(2)}) are both elevated while mode is safe_to_apply. This combination is semantically inconsistent.`,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return flags;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=contradictionDetector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contradictionDetector.js","sourceRoot":"","sources":["../../src/engine/contradictionDetector.ts"],"names":[],"mappings":";;AAuBA,oDAmCC;AA3CD;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAClC,SAAiB,EACjB,eAAuB,EACvB,IAAmB;IAEnB,MAAM,KAAK,GAAwB,EAAE,CAAC;IAEtC,+EAA+E;IAC/E,IAAI,IAAI,KAAK,eAAe,IAAI,eAAe,GAAG,GAAG,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,wBAAwB;YAC9B,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,4EAA4E,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,4CAA4C;SAC5J,CAAC,CAAC;IACL,CAAC;IAED,2FAA2F;IAC3F,IAAI,IAAI,KAAK,SAAS,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,0BAA0B;YAChC,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,4DAA4D,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,+EAA+E;SACzK,CAAC,CAAC;IACL,CAAC;IAED,wFAAwF;IACxF,IAAI,SAAS,GAAG,GAAG,IAAI,eAAe,GAAG,GAAG,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,eAAe,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,iGAAiG;SACnM,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runDecisionEngine = runDecisionEngine;
|
|
4
|
+
const contradictionDetector_js_1 = require("./contradictionDetector.js");
|
|
5
|
+
/**
|
|
6
|
+
* Runs the decision engine: evaluates scores and mode for semantic contradictions.
|
|
7
|
+
* Does not alter scoring logic — purely additive contradiction layer.
|
|
8
|
+
*/
|
|
9
|
+
function runDecisionEngine(input) {
|
|
10
|
+
const { riskScore, confidenceScore, mode } = input;
|
|
11
|
+
const contradictionFlags = (0, contradictionDetector_js_1.detectContradictions)(riskScore, confidenceScore, mode);
|
|
12
|
+
return {
|
|
13
|
+
riskScore,
|
|
14
|
+
confidenceScore,
|
|
15
|
+
mode,
|
|
16
|
+
contradictionFlags,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=decisionEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decisionEngine.js","sourceRoot":"","sources":["../../src/engine/decisionEngine.ts"],"names":[],"mappings":";;AAyBA,8CAiBC;AA1CD,yEAAkE;AAqBlE;;;GAGG;AACH,SAAgB,iBAAiB,CAC/B,KAA0B;IAE1B,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAEnD,MAAM,kBAAkB,GAAG,IAAA,+CAAoB,EAC7C,SAAS,EACT,eAAe,EACf,IAAI,CACL,CAAC;IAEF,OAAO;QACL,SAAS;QACT,eAAe;QACf,IAAI;QACJ,kBAAkB;KACnB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
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.createOpenAIClient = createOpenAIClient;
|
|
7
|
+
exports.getModelName = getModelName;
|
|
8
|
+
const openai_1 = __importDefault(require("openai"));
|
|
9
|
+
function createOpenAIClient() {
|
|
10
|
+
const apiKey = process.env.OPENAI_API_KEY;
|
|
11
|
+
if (!apiKey) {
|
|
12
|
+
throw new Error("OPENAI_API_KEY is missing in .env");
|
|
13
|
+
}
|
|
14
|
+
return new openai_1.default({ apiKey });
|
|
15
|
+
}
|
|
16
|
+
function getModelName() {
|
|
17
|
+
return process.env.OPENAI_MODEL || "gpt-4o-mini";
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=openaiClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openaiClient.js","sourceRoot":"","sources":["../../src/llm/openaiClient.ts"],"names":[],"mappings":";;;;;AAEA,gDAQC;AAED,oCACkD;AAblD,oDAA4B;AAE5B,SAAgB,kBAAkB;IAChC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,IAAI,gBAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,YAAY;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,aAAa,CAAC;AAAA,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.planFeatureWithLlm = planFeatureWithLlm;
|
|
4
|
+
const openaiClient_js_1 = require("./openaiClient.js");
|
|
5
|
+
const schemas_js_1 = require("./schemas.js");
|
|
6
|
+
const planFeaturePrompt_js_1 = require("../prompts/planFeaturePrompt.js");
|
|
7
|
+
function extractJson(rawText) {
|
|
8
|
+
const trimmed = rawText.trim();
|
|
9
|
+
if (trimmed.startsWith("{") && trimmed.endsWith("}")) {
|
|
10
|
+
return trimmed;
|
|
11
|
+
}
|
|
12
|
+
const firstBrace = trimmed.indexOf("{");
|
|
13
|
+
const lastBrace = trimmed.lastIndexOf("}");
|
|
14
|
+
if (firstBrace >= 0 && lastBrace > firstBrace) {
|
|
15
|
+
return trimmed.slice(firstBrace, lastBrace + 1);
|
|
16
|
+
}
|
|
17
|
+
throw new Error(`No JSON object found in model response. Raw response: ${rawText}`);
|
|
18
|
+
}
|
|
19
|
+
async function planFeatureWithLlm(input) {
|
|
20
|
+
const client = (0, openaiClient_js_1.createOpenAIClient)();
|
|
21
|
+
const model = (0, openaiClient_js_1.getModelName)();
|
|
22
|
+
const relevantFilesSummary = input.relevantFiles
|
|
23
|
+
.map((file) => `- ${file.path} [${file.category}]`)
|
|
24
|
+
.join("\n");
|
|
25
|
+
const repoSummary = [input.projectSummary, ...input.projectNotes]
|
|
26
|
+
.filter(Boolean)
|
|
27
|
+
.join("\n");
|
|
28
|
+
const schemaAwareSummary = (input.schemaAwareSummary ?? [])
|
|
29
|
+
.filter(Boolean)
|
|
30
|
+
.map((line) => `- ${line}`)
|
|
31
|
+
.join("\n");
|
|
32
|
+
const prompt = (0, planFeaturePrompt_js_1.buildPlanFeaturePrompt)({
|
|
33
|
+
task: input.task,
|
|
34
|
+
intent: input.intent,
|
|
35
|
+
repoSummary,
|
|
36
|
+
relevantFilesSummary,
|
|
37
|
+
existingFilesSummary: input.existingFilesSummary,
|
|
38
|
+
schemaAwareSummary
|
|
39
|
+
});
|
|
40
|
+
const response = await client.responses.create({
|
|
41
|
+
model,
|
|
42
|
+
input: prompt
|
|
43
|
+
});
|
|
44
|
+
console.log("\n=== RAW MODEL OUTPUT ===");
|
|
45
|
+
console.log(response.output_text);
|
|
46
|
+
const rawText = response.output_text || "";
|
|
47
|
+
const jsonText = extractJson(rawText);
|
|
48
|
+
const parsed = JSON.parse(jsonText);
|
|
49
|
+
const validated = schemas_js_1.llmFeaturePlanSchema.parse(parsed);
|
|
50
|
+
return {
|
|
51
|
+
implementationSummary: validated.implementationSummary,
|
|
52
|
+
steps: validated.steps,
|
|
53
|
+
suggestedFiles: validated.suggestedFiles,
|
|
54
|
+
risks: validated.risks
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=planFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planFeature.js","sourceRoot":"","sources":["../../src/llm/planFeature.ts"],"names":[],"mappings":";;AAuBA,gDAqDC;AA5ED,uDAAqE;AACrE,6CAAoD;AAGpD,0EAAyE;AAEzE,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAE/B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAE3C,IAAI,UAAU,IAAI,CAAC,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;QAC9C,OAAO,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,yDAAyD,OAAO,EAAE,CAAC,CAAC;AACtF,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,KAQxC;IACC,MAAM,MAAM,GAAG,IAAA,oCAAkB,GAAE,CAAC;IACpC,MAAM,KAAK,GAAG,IAAA,8BAAY,GAAE,CAAC;IAE7B,MAAM,oBAAoB,GAAG,KAAK,CAAC,aAAa;SAC7C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC;SAClD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC;SAC9D,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhB,MAAM,kBAAkB,GAAG,CAAC,KAAK,CAAC,kBAAkB,IAAI,EAAE,CAAC;SACxD,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;SAC1B,IAAI,CAAC,IAAI,CAAC,CAAC;IACZ,MAAM,MAAM,GAAG,IAAA,6CAAsB,EAAC;QACpC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,WAAW;QACX,oBAAoB;QACpB,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,kBAAkB;KACnB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QAC7C,KAAK;QACL,KAAK,EAAE,MAAM;KACd,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAElC,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEpC,MAAM,SAAS,GAAG,iCAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAErD,OAAO;QACL,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;QACtD,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,KAAK,EAAE,SAAS,CAAC,KAAK;KACvB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planFix.js","sourceRoot":"","sources":["../../src/llm/planFix.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.planFullPatchWithLlm = planFullPatchWithLlm;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const openaiClient_js_1 = require("./openaiClient.js");
|
|
6
|
+
const fullPatchPrompt_js_1 = require("../prompts/fullPatchPrompt.js");
|
|
7
|
+
const fullContentSchema = zod_1.z.object({
|
|
8
|
+
filePath: zod_1.z.string(),
|
|
9
|
+
fullContent: zod_1.z.string(),
|
|
10
|
+
summary: zod_1.z.string(),
|
|
11
|
+
warnings: zod_1.z.array(zod_1.z.string()),
|
|
12
|
+
});
|
|
13
|
+
const LARGE_FILE_PATCH_THRESHOLD = 8000;
|
|
14
|
+
function extractJson(rawText) {
|
|
15
|
+
const trimmed = rawText.trim();
|
|
16
|
+
if (trimmed.startsWith("{") && trimmed.endsWith("}")) {
|
|
17
|
+
return trimmed;
|
|
18
|
+
}
|
|
19
|
+
const firstBrace = trimmed.indexOf("{");
|
|
20
|
+
const lastBrace = trimmed.lastIndexOf("}");
|
|
21
|
+
if (firstBrace >= 0 && lastBrace > firstBrace) {
|
|
22
|
+
return trimmed.slice(firstBrace, lastBrace + 1);
|
|
23
|
+
}
|
|
24
|
+
throw new Error(`No JSON object found in model response. Raw response: ${rawText}`);
|
|
25
|
+
}
|
|
26
|
+
async function planFullPatchWithLlm(input) {
|
|
27
|
+
const client = (0, openaiClient_js_1.createOpenAIClient)();
|
|
28
|
+
const model = (0, openaiClient_js_1.getModelName)();
|
|
29
|
+
const outputMode = input.fileContent.length > LARGE_FILE_PATCH_THRESHOLD
|
|
30
|
+
? "find_replace_patch"
|
|
31
|
+
: "full_content";
|
|
32
|
+
const prompt = (0, fullPatchPrompt_js_1.buildFullPatchPrompt)({
|
|
33
|
+
task: input.task,
|
|
34
|
+
filePath: input.filePath,
|
|
35
|
+
fileContent: input.fileContent,
|
|
36
|
+
repoSummary: input.repoSummary,
|
|
37
|
+
relatedContext: input.relatedContext,
|
|
38
|
+
outputMode,
|
|
39
|
+
});
|
|
40
|
+
const response = await client.responses.create({ model, input: prompt });
|
|
41
|
+
const rawText = response.output_text ?? "";
|
|
42
|
+
if (outputMode === "find_replace_patch") {
|
|
43
|
+
return {
|
|
44
|
+
mode: "patch",
|
|
45
|
+
filePath: input.filePath,
|
|
46
|
+
patchText: rawText.trim(),
|
|
47
|
+
summary: "Large-file targeted patch generated.",
|
|
48
|
+
warnings: [],
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const jsonText = extractJson(rawText);
|
|
52
|
+
const parsed = JSON.parse(jsonText);
|
|
53
|
+
const validated = fullContentSchema.parse(parsed);
|
|
54
|
+
return {
|
|
55
|
+
mode: "full_content",
|
|
56
|
+
filePath: validated.filePath,
|
|
57
|
+
fullContent: validated.fullContent,
|
|
58
|
+
summary: validated.summary,
|
|
59
|
+
warnings: validated.warnings,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=planFullPatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planFullPatch.js","sourceRoot":"","sources":["../../src/llm/planFullPatch.ts"],"names":[],"mappings":";;AAmDA,oDAmDC;AAtGD,6BAAwB;AACxB,uDAAqE;AACrE,sEAGuC;AAEvC,MAAM,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACjC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE;IACvB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAAG,IAAI,CAAC;AAkBxC,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAE/B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAE3C,IAAI,UAAU,IAAI,CAAC,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;QAC9C,OAAO,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,IAAI,KAAK,CACb,yDAAyD,OAAO,EAAE,CACnE,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,oBAAoB,CAAC,KAU1C;IACC,MAAM,MAAM,GAAG,IAAA,oCAAkB,GAAE,CAAC;IACpC,MAAM,KAAK,GAAG,IAAA,8BAAY,GAAE,CAAC;IAC7B,MAAM,UAAU,GACd,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,0BAA0B;QACnD,CAAC,CAAC,oBAAoB;QACtB,CAAC,CAAC,cAAc,CAAC;IAErB,MAAM,MAAM,GAAG,IAAA,yCAAoB,EAAC;QAClC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;IAE3C,IAAI,UAAU,KAAK,oBAAoB,EAAE,CAAC;QACxC,OAAO;YACL,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE;YACzB,OAAO,EAAE,sCAAsC;YAC/C,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAY,CAAC;IAC/C,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAElD,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,QAAQ,EAAE,SAAS,CAAC,QAAQ;KAC7B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.planPatchPreviewWithLlm = planPatchPreviewWithLlm;
|
|
4
|
+
const openaiClient_js_1 = require("./openaiClient.js");
|
|
5
|
+
const schemas_js_1 = require("./schemas.js");
|
|
6
|
+
const patchPreviewPrompt_js_1 = require("../prompts/patchPreviewPrompt.js");
|
|
7
|
+
function extractJson(rawText) {
|
|
8
|
+
const trimmed = rawText.trim();
|
|
9
|
+
if (trimmed.startsWith("{") && trimmed.endsWith("}")) {
|
|
10
|
+
return trimmed;
|
|
11
|
+
}
|
|
12
|
+
const firstBrace = trimmed.indexOf("{");
|
|
13
|
+
const lastBrace = trimmed.lastIndexOf("}");
|
|
14
|
+
if (firstBrace >= 0 && lastBrace > firstBrace) {
|
|
15
|
+
return trimmed.slice(firstBrace, lastBrace + 1);
|
|
16
|
+
}
|
|
17
|
+
throw new Error(`No JSON object found in model response. Raw response: ${rawText}`);
|
|
18
|
+
}
|
|
19
|
+
async function planPatchPreviewWithLlm(input) {
|
|
20
|
+
const client = (0, openaiClient_js_1.createOpenAIClient)();
|
|
21
|
+
const model = (0, openaiClient_js_1.getModelName)();
|
|
22
|
+
const combinedContext = input.fileContexts
|
|
23
|
+
.map((file) => `FILE: ${file.path}\n\`\`\`\n${file.content}\n\`\`\``)
|
|
24
|
+
.join("\n\n");
|
|
25
|
+
const repoSummary = [input.projectSummary, ...input.projectNotes]
|
|
26
|
+
.filter(Boolean)
|
|
27
|
+
.join("\n");
|
|
28
|
+
const relatedContext = input.suggestedFiles.length
|
|
29
|
+
? input.suggestedFiles
|
|
30
|
+
.map((f) => `- ${f.path} | ${f.action} | ${f.reason}`)
|
|
31
|
+
.join("\n")
|
|
32
|
+
: "(no suggested files)";
|
|
33
|
+
const schemaAwareSummary = (input.schemaAwareSummary ?? [])
|
|
34
|
+
.filter(Boolean)
|
|
35
|
+
.map((line) => `- ${line}`)
|
|
36
|
+
.join("\n");
|
|
37
|
+
const prompt = (0, patchPreviewPrompt_js_1.buildPatchPreviewPrompt)({
|
|
38
|
+
task: input.task,
|
|
39
|
+
intent: input.intent,
|
|
40
|
+
filePath: input.suggestedFiles.map((f) => f.path).join(", ") || "(no target file)",
|
|
41
|
+
fileContent: combinedContext,
|
|
42
|
+
repoSummary,
|
|
43
|
+
relatedContext,
|
|
44
|
+
schemaAwareSummary
|
|
45
|
+
});
|
|
46
|
+
const response = await client.responses.create({
|
|
47
|
+
model,
|
|
48
|
+
input: prompt
|
|
49
|
+
});
|
|
50
|
+
const rawText = response.output_text || "";
|
|
51
|
+
const jsonText = extractJson(rawText);
|
|
52
|
+
const parsed = JSON.parse(jsonText);
|
|
53
|
+
const validated = schemas_js_1.llmPatchPlanSchema.parse(parsed);
|
|
54
|
+
return {
|
|
55
|
+
summary: validated.summary,
|
|
56
|
+
patches: validated.patches,
|
|
57
|
+
warnings: validated.warnings
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=planPatchPreview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planPatchPreview.js","sourceRoot":"","sources":["../../src/llm/planPatchPreview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildFeaturePlanningPrompt = buildFeaturePlanningPrompt;
|
|
4
|
+
exports.buildPatchPlanningPrompt = buildPatchPlanningPrompt;
|
|
5
|
+
function buildFeaturePlanningPrompt(input) {
|
|
6
|
+
const relevantFilesText = input.relevantFiles.length > 0
|
|
7
|
+
? input.relevantFiles
|
|
8
|
+
.map((file) => `- [${file.category}] ${file.path}`)
|
|
9
|
+
.join("\n")
|
|
10
|
+
: "- No relevant files found";
|
|
11
|
+
const notesText = input.projectNotes.length > 0
|
|
12
|
+
? input.projectNotes.map((note) => `- ${note}`).join("\n")
|
|
13
|
+
: "- No project notes";
|
|
14
|
+
return `
|
|
15
|
+
You are a senior fullstack coding agent working on the Zone project.
|
|
16
|
+
|
|
17
|
+
Project rules:
|
|
18
|
+
- Preserve the existing architecture and folder structure
|
|
19
|
+
- Prefer minimal, focused changes
|
|
20
|
+
- Do not suggest unnecessary refactors
|
|
21
|
+
- Keep backend and frontend responsibilities separate
|
|
22
|
+
- If UI is involved, keep user-facing labels in Turkish
|
|
23
|
+
- Respect auth and clinic-based access control
|
|
24
|
+
- Follow existing service/route/controller patterns
|
|
25
|
+
- Avoid inventing files unless truly needed
|
|
26
|
+
- Prefer modifying existing related files before creating new ones
|
|
27
|
+
|
|
28
|
+
Requested task:
|
|
29
|
+
${input.task}
|
|
30
|
+
|
|
31
|
+
Project summary:
|
|
32
|
+
${input.projectSummary}
|
|
33
|
+
|
|
34
|
+
Project notes:
|
|
35
|
+
${notesText}
|
|
36
|
+
|
|
37
|
+
Relevant files:
|
|
38
|
+
${relevantFilesText}
|
|
39
|
+
|
|
40
|
+
Return valid JSON only in this exact shape:
|
|
41
|
+
{
|
|
42
|
+
"implementationSummary": "short summary",
|
|
43
|
+
"steps": ["step 1", "step 2"],
|
|
44
|
+
"suggestedFiles": [
|
|
45
|
+
{
|
|
46
|
+
"path": "relative/path/to/file",
|
|
47
|
+
"reason": "why this file matters",
|
|
48
|
+
"action": "create" | "modify" | "inspect"
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"risks": ["risk 1", "risk 2"]
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
Important:
|
|
55
|
+
- Return JSON only
|
|
56
|
+
- Do not wrap in markdown
|
|
57
|
+
- Suggested files should be realistic and consistent with the provided file list
|
|
58
|
+
- Prefer files that already exist in the project context
|
|
59
|
+
`.trim();
|
|
60
|
+
}
|
|
61
|
+
function buildPatchPlanningPrompt(input) {
|
|
62
|
+
const notesText = input.projectNotes.length > 0
|
|
63
|
+
? input.projectNotes.map((note) => `- ${note}`).join("\n")
|
|
64
|
+
: "- No project notes";
|
|
65
|
+
const suggestedFilesText = input.suggestedFiles.length > 0
|
|
66
|
+
? input.suggestedFiles
|
|
67
|
+
.map((file) => `- ${file.path} | action=${file.action} | reason=${file.reason}`)
|
|
68
|
+
.join("\n")
|
|
69
|
+
: "- No suggested files";
|
|
70
|
+
const fileContextsText = input.fileContexts.length > 0
|
|
71
|
+
? input.fileContexts
|
|
72
|
+
.map((file) => `
|
|
73
|
+
FILE: ${file.path}
|
|
74
|
+
CONTENT:
|
|
75
|
+
${file.content}
|
|
76
|
+
--- END FILE ---
|
|
77
|
+
`.trim())
|
|
78
|
+
.join("\n\n")
|
|
79
|
+
: "No file contents available";
|
|
80
|
+
return `
|
|
81
|
+
You are a senior fullstack coding agent working on the Zone project.
|
|
82
|
+
|
|
83
|
+
Project rules:
|
|
84
|
+
- Preserve the existing architecture and naming patterns
|
|
85
|
+
- Prefer small, targeted edits
|
|
86
|
+
- Keep Turkish UI text if UI changes are involved
|
|
87
|
+
- Respect backend/frontend separation
|
|
88
|
+
- Preserve auth and clinic-based access control
|
|
89
|
+
- Do not produce full rewrites for large files
|
|
90
|
+
- Generate preview-oriented patch suggestions, not final code dumps
|
|
91
|
+
- Be realistic and only reference files that exist unless a new file is clearly needed
|
|
92
|
+
|
|
93
|
+
Requested task:
|
|
94
|
+
${input.task}
|
|
95
|
+
|
|
96
|
+
Project summary:
|
|
97
|
+
${input.projectSummary}
|
|
98
|
+
|
|
99
|
+
Project notes:
|
|
100
|
+
${notesText}
|
|
101
|
+
|
|
102
|
+
Suggested files from the planning phase:
|
|
103
|
+
${suggestedFilesText}
|
|
104
|
+
|
|
105
|
+
Relevant file contents:
|
|
106
|
+
${fileContextsText}
|
|
107
|
+
|
|
108
|
+
Return valid JSON only in this exact shape:
|
|
109
|
+
{
|
|
110
|
+
"summary": "short patch strategy summary",
|
|
111
|
+
"patches": [
|
|
112
|
+
{
|
|
113
|
+
"path": "relative/path/to/file",
|
|
114
|
+
"operation": "create" | "modify",
|
|
115
|
+
"summary": "what should change in this file",
|
|
116
|
+
"targetHint": "where or around what code this change should happen",
|
|
117
|
+
"contentPreview": "short preview of the intended code or pseudocode"
|
|
118
|
+
}
|
|
119
|
+
],
|
|
120
|
+
"warnings": ["warning 1", "warning 2"]
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
Important:
|
|
124
|
+
- Return JSON only
|
|
125
|
+
- Do not wrap in markdown
|
|
126
|
+
- contentPreview should be concise, focused, and partial
|
|
127
|
+
- Do not dump entire large files
|
|
128
|
+
- Prefer modify over create when possible
|
|
129
|
+
`.trim();
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/llm/prompts.ts"],"names":[],"mappings":";;AAAA,gEAgEC;AAED,4DAsFC;AAxJD,SAAgB,0BAA0B,CAAC,KAK1C;IACC,MAAM,iBAAiB,GACrB,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;QAC5B,CAAC,CAAC,KAAK,CAAC,aAAa;aAChB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;aAClD,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,2BAA2B,CAAC;IAElC,MAAM,SAAS,GACb,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QAC3B,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1D,CAAC,CAAC,oBAAoB,CAAC;IAE3B,OAAO;;;;;;;;;;;;;;;EAeP,KAAK,CAAC,IAAI;;;EAGV,KAAK,CAAC,cAAc;;;EAGpB,SAAS;;;EAGT,iBAAiB;;;;;;;;;;;;;;;;;;;;;CAqBlB,CAAC,IAAI,EAAE,CAAC;AACT,CAAC;AAED,SAAgB,wBAAwB,CAAC,KAMxC;IACC,MAAM,SAAS,GACb,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QAC3B,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1D,CAAC,CAAC,oBAAoB,CAAC;IAE3B,MAAM,kBAAkB,GACtB,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QAC7B,CAAC,CAAC,KAAK,CAAC,cAAc;aACjB,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CACP,KAAK,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,MAAM,aAAa,IAAI,CAAC,MAAM,EAAE,CACnE;aACA,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,sBAAsB,CAAC;IAE7B,MAAM,gBAAgB,GACpB,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QAC3B,CAAC,CAAC,KAAK,CAAC,YAAY;aACf,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CAAC;QACd,IAAI,CAAC,IAAI;;EAEf,IAAI,CAAC,OAAO;;CAEb,CAAC,IAAI,EAAE,CACG;aACA,IAAI,CAAC,MAAM,CAAC;QACjB,CAAC,CAAC,4BAA4B,CAAC;IAEnC,OAAO;;;;;;;;;;;;;;EAcP,KAAK,CAAC,IAAI;;;EAGV,KAAK,CAAC,cAAc;;;EAGpB,SAAS;;;EAGT,kBAAkB;;;EAGlB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;CAuBjB,CAAC,IAAI,EAAE,CAAC;AACT,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.llmPatchPlanSchema = exports.patchPreviewItemSchema = exports.llmFeaturePlanSchema = exports.plannedFileChangeSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.plannedFileChangeSchema = zod_1.z.object({
|
|
6
|
+
path: zod_1.z.string(),
|
|
7
|
+
reason: zod_1.z.string(),
|
|
8
|
+
action: zod_1.z.enum(["create", "modify", "inspect"])
|
|
9
|
+
});
|
|
10
|
+
exports.llmFeaturePlanSchema = zod_1.z.object({
|
|
11
|
+
implementationSummary: zod_1.z.string(),
|
|
12
|
+
steps: zod_1.z.array(zod_1.z.string()),
|
|
13
|
+
suggestedFiles: zod_1.z.array(exports.plannedFileChangeSchema),
|
|
14
|
+
risks: zod_1.z.array(zod_1.z.string())
|
|
15
|
+
});
|
|
16
|
+
exports.patchPreviewItemSchema = zod_1.z.object({
|
|
17
|
+
path: zod_1.z.string(),
|
|
18
|
+
operation: zod_1.z.enum(["create", "modify"]),
|
|
19
|
+
summary: zod_1.z.string(),
|
|
20
|
+
targetHint: zod_1.z.string(),
|
|
21
|
+
contentPreview: zod_1.z.string()
|
|
22
|
+
});
|
|
23
|
+
exports.llmPatchPlanSchema = zod_1.z.object({
|
|
24
|
+
summary: zod_1.z.string(),
|
|
25
|
+
patches: zod_1.z.array(exports.patchPreviewItemSchema),
|
|
26
|
+
warnings: zod_1.z.array(zod_1.z.string())
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/llm/schemas.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;CAChD,CAAC,CAAC;AAEU,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,qBAAqB,EAAE,OAAC,CAAC,MAAM,EAAE;IACjC,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,OAAC,CAAC,KAAK,CAAC,+BAAuB,CAAC;IAChD,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;CAC3B,CAAC,CAAC;AAEU,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACvC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE;CAC3B,CAAC,CAAC;AAEU,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,8BAAsB,CAAC;IACxC,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatApplyFlowResult = formatApplyFlowResult;
|
|
4
|
+
function formatApplyFlowResult(result) {
|
|
5
|
+
return {
|
|
6
|
+
stage: "apply",
|
|
7
|
+
status: result.status === "applied"
|
|
8
|
+
? "success"
|
|
9
|
+
: result.status === "failed"
|
|
10
|
+
? "failed"
|
|
11
|
+
: "skipped",
|
|
12
|
+
summary: result.message,
|
|
13
|
+
details: result.filesTouched.length > 0
|
|
14
|
+
? `Files touched: ${result.filesTouched.join(", ")}`
|
|
15
|
+
: undefined,
|
|
16
|
+
operationsAttempted: result.operationsAttempted,
|
|
17
|
+
operationsApplied: result.operationsApplied,
|
|
18
|
+
filesTouched: result.filesTouched,
|
|
19
|
+
backupCreated: result.backupCreated,
|
|
20
|
+
operationResults: result.operationResults
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=formatApplyFlowResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatApplyFlowResult.js","sourceRoot":"","sources":["../../../src/patch/apply/formatApplyFlowResult.ts"],"names":[],"mappings":";;AAEA,sDAoBC;AApBD,SAAgB,qBAAqB,CAAC,MAAuB;IAC3D,OAAO;QACL,KAAK,EAAE,OAAO;QACd,MAAM,EACJ,MAAM,CAAC,MAAM,KAAK,SAAS;YACzB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ;gBAC1B,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,SAAS;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EACL,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;YAC5B,CAAC,CAAC,kBAAkB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACpD,CAAC,CAAC,SAAS;QACf,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;QAC/C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;KACjC,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderApplyFlowResult = renderApplyFlowResult;
|
|
4
|
+
function renderApplyFlowResult(result) {
|
|
5
|
+
return [
|
|
6
|
+
"=== APPLY RESULT ===",
|
|
7
|
+
`Status: ${result.status}`,
|
|
8
|
+
`Operations attempted: ${result.operationsAttempted}`,
|
|
9
|
+
`Operations applied: ${result.operationsApplied}`,
|
|
10
|
+
`Files touched: ${result.filesTouched.join(", ") || "none"}`,
|
|
11
|
+
`Backup created: ${result.backupCreated ? "yes" : "no"}`,
|
|
12
|
+
`Message: ${result.message}`
|
|
13
|
+
].join("\n");
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=renderApplyFlowResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderApplyFlowResult.js","sourceRoot":"","sources":["../../../src/patch/apply/renderApplyFlowResult.ts"],"names":[],"mappings":";;AACA,sDAUC;AAVD,SAAgB,qBAAqB,CAAC,MAAuB;IAC3D,OAAO;QACL,sBAAsB;QACtB,WAAW,MAAM,CAAC,MAAM,EAAE;QAC1B,yBAAyB,MAAM,CAAC,mBAAmB,EAAE;QACrD,uBAAuB,MAAM,CAAC,iBAAiB,EAAE;QACjD,kBAAkB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;QAC5D,mBAAmB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;QACxD,YAAY,MAAM,CAAC,OAAO,EAAE;KAC7B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runApplyFlow = runApplyFlow;
|
|
4
|
+
const backupFile_1 = require("../backupFile");
|
|
5
|
+
function runApplyFlow(patchPlan, backupRoot) {
|
|
6
|
+
const operationsAttempted = patchPlan.operations.length;
|
|
7
|
+
let operationsApplied = 0;
|
|
8
|
+
const filesTouched = [];
|
|
9
|
+
let backupCreated = false;
|
|
10
|
+
const operationResults = [];
|
|
11
|
+
try {
|
|
12
|
+
if (operationsAttempted === 0) {
|
|
13
|
+
return {
|
|
14
|
+
status: "skipped",
|
|
15
|
+
operationsAttempted: 0,
|
|
16
|
+
operationsApplied: 0,
|
|
17
|
+
filesTouched: [],
|
|
18
|
+
backupCreated: false,
|
|
19
|
+
message: "Apply was skipped because the patch plan contains no operations.",
|
|
20
|
+
operationResults: []
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
for (const [index, operation] of patchPlan.operations.entries()) {
|
|
24
|
+
const filePath = operation.filePath;
|
|
25
|
+
try {
|
|
26
|
+
if (!backupCreated) {
|
|
27
|
+
(0, backupFile_1.backupFile)(filePath, backupRoot);
|
|
28
|
+
backupCreated = true;
|
|
29
|
+
}
|
|
30
|
+
// burada mevcut gerçek apply mantığın kalmalı
|
|
31
|
+
operationsApplied += 1;
|
|
32
|
+
if (!filesTouched.includes(filePath)) {
|
|
33
|
+
filesTouched.push(filePath);
|
|
34
|
+
}
|
|
35
|
+
operationResults.push({
|
|
36
|
+
index,
|
|
37
|
+
type: operation.type,
|
|
38
|
+
filePath,
|
|
39
|
+
status: "applied",
|
|
40
|
+
message: "Operation applied successfully."
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
operationResults.push({
|
|
45
|
+
index,
|
|
46
|
+
type: operation.type,
|
|
47
|
+
filePath,
|
|
48
|
+
status: "failed",
|
|
49
|
+
message: error instanceof Error
|
|
50
|
+
? error.message
|
|
51
|
+
: "Operation failed due to an unknown error."
|
|
52
|
+
});
|
|
53
|
+
return {
|
|
54
|
+
status: "failed",
|
|
55
|
+
operationsAttempted,
|
|
56
|
+
operationsApplied,
|
|
57
|
+
filesTouched,
|
|
58
|
+
backupCreated,
|
|
59
|
+
message: "Apply failed during operation execution.",
|
|
60
|
+
operationResults
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
status: "applied",
|
|
66
|
+
operationsAttempted,
|
|
67
|
+
operationsApplied,
|
|
68
|
+
filesTouched,
|
|
69
|
+
backupCreated,
|
|
70
|
+
message: "Patch applied successfully.",
|
|
71
|
+
operationResults
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
return {
|
|
76
|
+
status: "failed",
|
|
77
|
+
operationsAttempted,
|
|
78
|
+
operationsApplied,
|
|
79
|
+
filesTouched,
|
|
80
|
+
backupCreated,
|
|
81
|
+
message: error instanceof Error
|
|
82
|
+
? `Apply failed: ${error.message}`
|
|
83
|
+
: "Apply failed due to an unknown error.",
|
|
84
|
+
operationResults
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=runApplyFlow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runApplyFlow.js","sourceRoot":"","sources":["../../../src/patch/apply/runApplyFlow.ts"],"names":[],"mappings":";;AAOA,oCA8FC;AArGD,8CAA2C;AAO3C,SAAgB,YAAY,CAC1B,SAAoB,EACpB,UAAkB;IAElB,MAAM,mBAAmB,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;IACxD,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,MAAM,gBAAgB,GAA2B,EAAE,CAAC;IAEpD,IAAI,CAAC;QACH,IAAI,mBAAmB,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,mBAAmB,EAAE,CAAC;gBACtB,iBAAiB,EAAE,CAAC;gBACpB,YAAY,EAAE,EAAE;gBAChB,aAAa,EAAE,KAAK;gBACpB,OAAO,EAAE,kEAAkE;gBAC3E,gBAAgB,EAAE,EAAE;aACrB,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;YAChE,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;YAEpC,IAAI,CAAC;gBACH,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,IAAA,uBAAU,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;oBACjC,aAAa,GAAG,IAAI,CAAC;gBACvB,CAAC;gBAED,8CAA8C;gBAE9C,iBAAiB,IAAI,CAAC,CAAC;gBAEvB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACrC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9B,CAAC;gBAED,gBAAgB,CAAC,IAAI,CAAC;oBACpB,KAAK;oBACL,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,QAAQ;oBACR,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE,iCAAiC;iBAC3C,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,gBAAgB,CAAC,IAAI,CAAC;oBACpB,KAAK;oBACL,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,QAAQ;oBACR,MAAM,EAAE,QAAQ;oBAChB,OAAO,EACL,KAAK,YAAY,KAAK;wBACpB,CAAC,CAAC,KAAK,CAAC,OAAO;wBACf,CAAC,CAAC,2CAA2C;iBAClD,CAAC,CAAC;gBAEH,OAAO;oBACL,MAAM,EAAE,QAAQ;oBAChB,mBAAmB;oBACnB,iBAAiB;oBACjB,YAAY;oBACZ,aAAa;oBACb,OAAO,EAAE,0CAA0C;oBACnD,gBAAgB;iBACjB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,mBAAmB;YACnB,iBAAiB;YACjB,YAAY;YACZ,aAAa;YACb,OAAO,EAAE,6BAA6B;YACtC,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,mBAAmB;YACnB,iBAAiB;YACjB,YAAY;YACZ,aAAa;YACb,OAAO,EACL,KAAK,YAAY,KAAK;gBACpB,CAAC,CAAC,iBAAiB,KAAK,CAAC,OAAO,EAAE;gBAClC,CAAC,CAAC,uCAAuC;YAC7C,gBAAgB;SACjB,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applyFlowTypes.js","sourceRoot":"","sources":["../../src/patch/applyFlowTypes.ts"],"names":[],"mappings":""}
|