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,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildRecommendation = buildRecommendation;
|
|
4
|
+
function hasReasonCode(result, codes) {
|
|
5
|
+
return result.reasons.some((reason) => codes.includes(reason.code));
|
|
6
|
+
}
|
|
7
|
+
function hasHighTopRisk(result) {
|
|
8
|
+
return (result.topRisks ?? []).some((risk) => risk.severity === "high");
|
|
9
|
+
}
|
|
10
|
+
function buildRecommendation(result) {
|
|
11
|
+
if (result.mode === "blocked") {
|
|
12
|
+
if (hasReasonCode(result, [
|
|
13
|
+
"SCHEMA_VALIDATION_ERROR",
|
|
14
|
+
"SCHEMA_VALIDATION_WARNING",
|
|
15
|
+
"LOW_SCHEMA_CONFIDENCE"
|
|
16
|
+
])) {
|
|
17
|
+
return "Do not apply automatically. Resolve schema issues and verify schema alignment first.";
|
|
18
|
+
}
|
|
19
|
+
return "Do not apply automatically. Fix blocking validation issues first.";
|
|
20
|
+
}
|
|
21
|
+
if (result.mode === "preview_only") {
|
|
22
|
+
if (hasHighTopRisk(result)) {
|
|
23
|
+
return "Preview the patch and complete manual review before any apply step because high-severity risks are still present.";
|
|
24
|
+
}
|
|
25
|
+
if (hasReasonCode(result, [
|
|
26
|
+
"SCHEMA_VALIDATION_ERROR",
|
|
27
|
+
"SCHEMA_VALIDATION_WARNING",
|
|
28
|
+
"LOW_SCHEMA_CONFIDENCE"
|
|
29
|
+
])) {
|
|
30
|
+
return "Preview the patch and verify schema alignment before any apply step.";
|
|
31
|
+
}
|
|
32
|
+
if (hasReasonCode(result, [
|
|
33
|
+
"PATCH_VALIDATION_WARNING",
|
|
34
|
+
"PATCH_RISK_WARNING",
|
|
35
|
+
"MISSING_VALIDATED_FILES"
|
|
36
|
+
])) {
|
|
37
|
+
return "Preview the patch and review patch scope before any apply step.";
|
|
38
|
+
}
|
|
39
|
+
return "Preview the patch and review warnings before any apply step.";
|
|
40
|
+
}
|
|
41
|
+
return "Patch can be applied automatically under current safeguards.";
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=buildRecommendation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildRecommendation.js","sourceRoot":"","sources":["../../../src/core/decision/buildRecommendation.ts"],"names":[],"mappings":";;AAaA,kDA8CC;AAzDD,SAAS,aAAa,CACpB,MAAiC,EACjC,KAAe;IAEf,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,cAAc,CAAC,MAAiC;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;AAC1E,CAAC;AAED,SAAgB,mBAAmB,CACjC,MAAiC;IAEjC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,IACE,aAAa,CAAC,MAAM,EAAE;YACpB,yBAAyB;YACzB,2BAA2B;YAC3B,uBAAuB;SACxB,CAAC,EACF,CAAC;YACD,OAAO,sFAAsF,CAAC;QAChG,CAAC;QAED,OAAO,mEAAmE,CAAC;IAC7E,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACnC,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,mHAAmH,CAAC;QAC7H,CAAC;QAED,IACE,aAAa,CAAC,MAAM,EAAE;YACpB,yBAAyB;YACzB,2BAA2B;YAC3B,uBAAuB;SACxB,CAAC,EACF,CAAC;YACD,OAAO,sEAAsE,CAAC;QAChF,CAAC;QAED,IACE,aAAa,CAAC,MAAM,EAAE;YACpB,0BAA0B;YAC1B,oBAAoB;YACpB,yBAAyB;SAC1B,CAAC,EACF,CAAC;YACD,OAAO,iEAAiE,CAAC;QAC3E,CAAC;QAED,OAAO,8DAA8D,CAAC;IACxE,CAAC;IAED,OAAO,8DAA8D,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decideExecutionMode = decideExecutionMode;
|
|
4
|
+
const computeConfidenceBreakdown_js_1 = require("../scoring/computeConfidenceBreakdown.js");
|
|
5
|
+
function mapPatchIssueToDecisionReason(issue, mode) {
|
|
6
|
+
return {
|
|
7
|
+
code: mode === "error" ? "PATCH_VALIDATION_ERROR" : "PATCH_VALIDATION_WARNING",
|
|
8
|
+
severity: mode === "error" ? "critical" : "warning",
|
|
9
|
+
message: issue.message,
|
|
10
|
+
details: [
|
|
11
|
+
issue.code,
|
|
12
|
+
...(issue.filePath ? [issue.filePath] : []),
|
|
13
|
+
...(issue.details ?? []),
|
|
14
|
+
],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function mapSchemaIssueToDecisionReason(issue, mode) {
|
|
18
|
+
return {
|
|
19
|
+
code: mode === "error" ? "SCHEMA_VALIDATION_ERROR" : "SCHEMA_VALIDATION_WARNING",
|
|
20
|
+
severity: mode === "error" ? "critical" : "warning",
|
|
21
|
+
message: issue.message,
|
|
22
|
+
details: [
|
|
23
|
+
issue.code,
|
|
24
|
+
...(issue.filePath ? [issue.filePath] : []),
|
|
25
|
+
...(issue.details ?? []),
|
|
26
|
+
],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function mapConfidenceFactorToReason(factor) {
|
|
30
|
+
switch (factor.key) {
|
|
31
|
+
case "schema_confidence":
|
|
32
|
+
return {
|
|
33
|
+
code: "LOW_SCHEMA_CONFIDENCE",
|
|
34
|
+
severity: factor.severity,
|
|
35
|
+
message: factor.reason,
|
|
36
|
+
};
|
|
37
|
+
case "storage_confidence":
|
|
38
|
+
return {
|
|
39
|
+
code: "LOW_STORAGE_CONFIDENCE",
|
|
40
|
+
severity: factor.severity,
|
|
41
|
+
message: factor.reason,
|
|
42
|
+
};
|
|
43
|
+
case "missing_validated_files":
|
|
44
|
+
return {
|
|
45
|
+
code: "MISSING_VALIDATED_FILES",
|
|
46
|
+
severity: factor.severity,
|
|
47
|
+
message: factor.reason,
|
|
48
|
+
};
|
|
49
|
+
case "patch_risk_warnings":
|
|
50
|
+
return {
|
|
51
|
+
code: "PATCH_RISK_WARNING",
|
|
52
|
+
severity: factor.severity,
|
|
53
|
+
message: factor.label,
|
|
54
|
+
details: [factor.reason],
|
|
55
|
+
};
|
|
56
|
+
case "architecture_warnings":
|
|
57
|
+
return {
|
|
58
|
+
code: "ARCHITECTURE_WARNING",
|
|
59
|
+
severity: factor.severity,
|
|
60
|
+
message: factor.label,
|
|
61
|
+
details: [factor.reason],
|
|
62
|
+
};
|
|
63
|
+
case "validation_errors":
|
|
64
|
+
return {
|
|
65
|
+
code: "CRITICAL_CONFIDENCE_RISK",
|
|
66
|
+
severity: "critical",
|
|
67
|
+
message: factor.reason,
|
|
68
|
+
};
|
|
69
|
+
default:
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function decideExecutionMode(input) {
|
|
74
|
+
const patchValidationIssues = input.patchValidationIssues ?? [];
|
|
75
|
+
const schemaValidationIssues = input.schemaValidationIssues ?? [];
|
|
76
|
+
const patchErrors = patchValidationIssues.filter((issue) => issue.level === "error");
|
|
77
|
+
const patchWarnings = patchValidationIssues.filter((issue) => issue.level === "warning");
|
|
78
|
+
const schemaErrors = schemaValidationIssues.filter((issue) => issue.level === "error");
|
|
79
|
+
const schemaWarnings = schemaValidationIssues.filter((issue) => issue.level === "warning");
|
|
80
|
+
const blockedReasons = [
|
|
81
|
+
...patchErrors.map((issue) => mapPatchIssueToDecisionReason(issue, "error")),
|
|
82
|
+
...schemaErrors.map((issue) => mapSchemaIssueToDecisionReason(issue, "error")),
|
|
83
|
+
];
|
|
84
|
+
if (blockedReasons.length > 0) {
|
|
85
|
+
return {
|
|
86
|
+
mode: "blocked",
|
|
87
|
+
confidenceScore: 0,
|
|
88
|
+
reasons: blockedReasons,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
const breakdown = (0, computeConfidenceBreakdown_js_1.computeConfidenceBreakdown)({
|
|
92
|
+
schemaConfidence: input.schemaConfidence,
|
|
93
|
+
storageConfidence: input.storageConfidence,
|
|
94
|
+
architectureWarnings: input.architectureWarnings ?? [],
|
|
95
|
+
patchRiskWarnings: input.patchRiskWarnings ?? [],
|
|
96
|
+
validationErrors: [],
|
|
97
|
+
hasValidatedFiles: input.hasValidatedFiles,
|
|
98
|
+
});
|
|
99
|
+
const previewReasons = [
|
|
100
|
+
...patchWarnings.map((issue) => mapPatchIssueToDecisionReason(issue, "warning")),
|
|
101
|
+
...schemaWarnings.map((issue) => mapSchemaIssueToDecisionReason(issue, "warning")),
|
|
102
|
+
...breakdown.factors
|
|
103
|
+
.map(mapConfidenceFactorToReason)
|
|
104
|
+
.filter((reason) => reason !== null),
|
|
105
|
+
];
|
|
106
|
+
if (previewReasons.length > 0) {
|
|
107
|
+
return {
|
|
108
|
+
mode: "preview_only",
|
|
109
|
+
confidenceScore: breakdown.finalScore,
|
|
110
|
+
reasons: previewReasons,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
mode: "safe_to_apply",
|
|
115
|
+
confidenceScore: breakdown.finalScore,
|
|
116
|
+
reasons: [
|
|
117
|
+
{
|
|
118
|
+
code: "SAFE_TO_APPLY",
|
|
119
|
+
severity: "info",
|
|
120
|
+
message: "No blocking or warning-level execution risks were detected.",
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=decideExecutionMode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decideExecutionMode.js","sourceRoot":"","sources":["../../../src/core/decision/decideExecutionMode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DECISION_REASON_CODE_META = void 0;
|
|
4
|
+
exports.getDecisionReasonCodeMeta = getDecisionReasonCodeMeta;
|
|
5
|
+
exports.buildDecisionReasonDetails = buildDecisionReasonDetails;
|
|
6
|
+
exports.DECISION_REASON_CODE_META = {
|
|
7
|
+
BLOCKED_DESTRUCTIVE_OPERATION: {
|
|
8
|
+
code: "BLOCKED_DESTRUCTIVE_OPERATION",
|
|
9
|
+
label: "Destructive operation detected",
|
|
10
|
+
summary: "Task includes destructive intent and should not be auto-applied.",
|
|
11
|
+
severity: "high",
|
|
12
|
+
category: "safety"
|
|
13
|
+
},
|
|
14
|
+
BLOCKED_SCHEMA_RISK: {
|
|
15
|
+
code: "BLOCKED_SCHEMA_RISK",
|
|
16
|
+
label: "Schema risk detected",
|
|
17
|
+
summary: "Task touches schema-sensitive areas and may break existing contracts.",
|
|
18
|
+
severity: "high",
|
|
19
|
+
category: "risk"
|
|
20
|
+
},
|
|
21
|
+
BLOCKED_CRITICAL_RISK: {
|
|
22
|
+
code: "BLOCKED_CRITICAL_RISK",
|
|
23
|
+
label: "Critical domain risk detected",
|
|
24
|
+
summary: "Task affects a critical domain and requires manual review before apply.",
|
|
25
|
+
severity: "high",
|
|
26
|
+
category: "risk"
|
|
27
|
+
},
|
|
28
|
+
BLOCKED_HIGH_RISK_SCORE: {
|
|
29
|
+
code: "BLOCKED_HIGH_RISK_SCORE",
|
|
30
|
+
label: "High risk threshold exceeded",
|
|
31
|
+
summary: "Overall risk score exceeded the blocked threshold for auto-apply.",
|
|
32
|
+
severity: "high",
|
|
33
|
+
category: "risk"
|
|
34
|
+
},
|
|
35
|
+
PREVIEW_DESTRUCTIVE_SIGNAL: {
|
|
36
|
+
code: "PREVIEW_DESTRUCTIVE_SIGNAL",
|
|
37
|
+
label: "Destructive signal detected",
|
|
38
|
+
summary: "Task contains destructive indicators and should be previewed carefully.",
|
|
39
|
+
severity: "high",
|
|
40
|
+
category: "safety"
|
|
41
|
+
},
|
|
42
|
+
PREVIEW_SCHEMA_UNCERTAINTY: {
|
|
43
|
+
code: "PREVIEW_SCHEMA_UNCERTAINTY",
|
|
44
|
+
label: "Schema uncertainty detected",
|
|
45
|
+
summary: "Task appears schema-related and should be verified before applying.",
|
|
46
|
+
severity: "medium",
|
|
47
|
+
category: "risk"
|
|
48
|
+
},
|
|
49
|
+
PREVIEW_CRITICAL_SIGNAL: {
|
|
50
|
+
code: "PREVIEW_CRITICAL_SIGNAL",
|
|
51
|
+
label: "Critical signal detected",
|
|
52
|
+
summary: "Task touches a critical area and should remain in preview mode.",
|
|
53
|
+
severity: "medium",
|
|
54
|
+
category: "risk"
|
|
55
|
+
},
|
|
56
|
+
PREVIEW_MASS_SCOPE_CHANGE: {
|
|
57
|
+
code: "PREVIEW_MASS_SCOPE_CHANGE",
|
|
58
|
+
label: "Mass-scope change detected",
|
|
59
|
+
summary: "Task appears to affect many records or a broad surface area.",
|
|
60
|
+
severity: "high",
|
|
61
|
+
category: "scope"
|
|
62
|
+
},
|
|
63
|
+
PREVIEW_LOW_CONFIDENCE: {
|
|
64
|
+
code: "PREVIEW_LOW_CONFIDENCE",
|
|
65
|
+
label: "Low confidence score",
|
|
66
|
+
summary: "Confidence score is below the safe threshold, so preview is safer.",
|
|
67
|
+
severity: "medium",
|
|
68
|
+
category: "confidence"
|
|
69
|
+
},
|
|
70
|
+
SAFE_LOW_RISK_LOCALIZED: {
|
|
71
|
+
code: "SAFE_LOW_RISK_LOCALIZED",
|
|
72
|
+
label: "Localized low-risk task",
|
|
73
|
+
summary: "Task appears narrowly scoped and low risk for automatic application.",
|
|
74
|
+
severity: "low",
|
|
75
|
+
category: "safety"
|
|
76
|
+
},
|
|
77
|
+
SAFE_HIGH_CONFIDENCE: {
|
|
78
|
+
code: "SAFE_HIGH_CONFIDENCE",
|
|
79
|
+
label: "High confidence score",
|
|
80
|
+
summary: "Confidence score is strong enough to support safe auto-apply.",
|
|
81
|
+
severity: "low",
|
|
82
|
+
category: "confidence"
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
function getDecisionReasonCodeMeta(code) {
|
|
86
|
+
return exports.DECISION_REASON_CODE_META[code];
|
|
87
|
+
}
|
|
88
|
+
function buildDecisionReasonDetails(codes) {
|
|
89
|
+
return codes.map((code) => getDecisionReasonCodeMeta(code));
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=decisionReasonCodeMeta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decisionReasonCodeMeta.js","sourceRoot":"","sources":["../../../src/core/decision/decisionReasonCodeMeta.ts"],"names":[],"mappings":";;;AA2HA,8DAIC;AAED,gEAIC;AAxGY,QAAA,yBAAyB,GAGlC;IACF,6BAA6B,EAAE;QAC7B,IAAI,EAAE,+BAA+B;QACrC,KAAK,EAAE,gCAAgC;QACvC,OAAO,EACL,kEAAkE;QACpE,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,QAAQ;KACnB;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,sBAAsB;QAC7B,OAAO,EACL,uEAAuE;QACzE,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,MAAM;KACjB;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,+BAA+B;QACtC,OAAO,EACL,yEAAyE;QAC3E,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,MAAM;KACjB;IACD,uBAAuB,EAAE;QACvB,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,8BAA8B;QACrC,OAAO,EACL,mEAAmE;QACrE,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,MAAM;KACjB;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,4BAA4B;QAClC,KAAK,EAAE,6BAA6B;QACpC,OAAO,EACL,yEAAyE;QAC3E,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,QAAQ;KACnB;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,4BAA4B;QAClC,KAAK,EAAE,6BAA6B;QACpC,OAAO,EACL,qEAAqE;QACvE,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM;KACjB;IACD,uBAAuB,EAAE;QACvB,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,0BAA0B;QACjC,OAAO,EACL,iEAAiE;QACnE,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM;KACjB;IACD,yBAAyB,EAAE;QACzB,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,4BAA4B;QACnC,OAAO,EACL,8DAA8D;QAChE,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,OAAO;KAClB;IACD,sBAAsB,EAAE;QACtB,IAAI,EAAE,wBAAwB;QAC9B,KAAK,EAAE,sBAAsB;QAC7B,OAAO,EACL,oEAAoE;QACtE,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,YAAY;KACvB;IACD,uBAAuB,EAAE;QACvB,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,yBAAyB;QAChC,OAAO,EACL,sEAAsE;QACxE,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,QAAQ;KACnB;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,uBAAuB;QAC9B,OAAO,EACL,+DAA+D;QACjE,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,YAAY;KACvB;CACF,CAAC;AAEF,SAAgB,yBAAyB,CACvC,IAAwB;IAExB,OAAO,iCAAyB,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,0BAA0B,CACxC,KAA2B;IAE3B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderDecisionSummary = renderDecisionSummary;
|
|
4
|
+
exports.renderSavedAgentResultSummary = renderSavedAgentResultSummary;
|
|
5
|
+
const buildDecisionExplanation_js_1 = require("./buildDecisionExplanation.js");
|
|
6
|
+
const buildSavedRecommendation_js_1 = require("../result/buildSavedRecommendation.js");
|
|
7
|
+
const buildRecommendation_js_1 = require("./buildRecommendation.js");
|
|
8
|
+
function formatReason(reason) {
|
|
9
|
+
const detailSuffix = reason.details && reason.details.length > 0
|
|
10
|
+
? ` (${reason.details.join(" | ")})`
|
|
11
|
+
: "";
|
|
12
|
+
const severityLabel = reason.severity === "critical"
|
|
13
|
+
? "CRITICAL"
|
|
14
|
+
: reason.severity === "warning"
|
|
15
|
+
? "WARNING"
|
|
16
|
+
: "INFO";
|
|
17
|
+
return `- [${severityLabel}] ${reason.code}: ${reason.message}${detailSuffix}`;
|
|
18
|
+
}
|
|
19
|
+
function formatRiskSeverity(severity) {
|
|
20
|
+
if (severity === "high")
|
|
21
|
+
return "HIGH";
|
|
22
|
+
if (severity === "medium")
|
|
23
|
+
return "MEDIUM";
|
|
24
|
+
return "LOW";
|
|
25
|
+
}
|
|
26
|
+
function renderTopRisks(topRisks, limit = 3) {
|
|
27
|
+
if (!topRisks || topRisks.length === 0) {
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
const lines = [];
|
|
31
|
+
lines.push("");
|
|
32
|
+
lines.push("Top Risks:");
|
|
33
|
+
for (const risk of topRisks.slice(0, limit)) {
|
|
34
|
+
lines.push(`- [${formatRiskSeverity(risk.severity)}] ${risk.title}`);
|
|
35
|
+
}
|
|
36
|
+
return lines;
|
|
37
|
+
}
|
|
38
|
+
function renderDecisionSummary(result) {
|
|
39
|
+
const lines = [];
|
|
40
|
+
lines.push("=== EXECUTION DECISION ===");
|
|
41
|
+
lines.push(`Mode: ${result.mode}`);
|
|
42
|
+
lines.push(`Confidence Score: ${result.confidenceScore}`);
|
|
43
|
+
lines.push("");
|
|
44
|
+
lines.push("Reasons:");
|
|
45
|
+
if (result.reasons.length === 0) {
|
|
46
|
+
lines.push("- No explicit reasons recorded.");
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
for (const reason of result.reasons) {
|
|
50
|
+
lines.push(formatReason(reason));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
lines.push(...renderTopRisks(result.topRisks));
|
|
54
|
+
lines.push("");
|
|
55
|
+
lines.push("Explanation:");
|
|
56
|
+
lines.push((0, buildDecisionExplanation_js_1.buildDecisionExplanation)(result));
|
|
57
|
+
lines.push("");
|
|
58
|
+
lines.push("Recommendation:");
|
|
59
|
+
lines.push((0, buildRecommendation_js_1.buildRecommendation)(result));
|
|
60
|
+
return lines.join("\n");
|
|
61
|
+
}
|
|
62
|
+
function formatIssueSeverity(severity) {
|
|
63
|
+
if (severity === "error")
|
|
64
|
+
return "ERROR";
|
|
65
|
+
if (severity === "warning")
|
|
66
|
+
return "WARNING";
|
|
67
|
+
return "INFO";
|
|
68
|
+
}
|
|
69
|
+
function renderSavedAgentResultSummary(result) {
|
|
70
|
+
const lines = [];
|
|
71
|
+
lines.push("=== AGENT DECISION ===");
|
|
72
|
+
lines.push(`Mode: ${result.decision.mode}`);
|
|
73
|
+
const confidenceLevel = result.confidenceBreakdown?.level
|
|
74
|
+
? ` (${result.confidenceBreakdown.level})`
|
|
75
|
+
: "";
|
|
76
|
+
lines.push(`Confidence: ${result.decision.confidence}/100${confidenceLevel}`);
|
|
77
|
+
lines.push("");
|
|
78
|
+
lines.push("Recommendation:");
|
|
79
|
+
lines.push((0, buildSavedRecommendation_js_1.buildSavedRecommendation)(result));
|
|
80
|
+
if (result.issues?.topRisks?.length) {
|
|
81
|
+
lines.push("");
|
|
82
|
+
lines.push("Top Risks:");
|
|
83
|
+
for (const risk of result.issues.topRisks.slice(0, 5)) {
|
|
84
|
+
const meta = risk.category && risk.relatedCode
|
|
85
|
+
? ` (${risk.category} / ${risk.relatedCode})`
|
|
86
|
+
: risk.category
|
|
87
|
+
? ` (${risk.category})`
|
|
88
|
+
: risk.relatedCode
|
|
89
|
+
? ` (${risk.relatedCode})`
|
|
90
|
+
: "";
|
|
91
|
+
lines.push(`- [${formatRiskSeverity(risk.severity)} | score=${risk.score}] ${risk.title}${meta}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (result.issues?.grouped?.length) {
|
|
95
|
+
lines.push("");
|
|
96
|
+
lines.push("Issue Groups:");
|
|
97
|
+
for (const group of result.issues.grouped) {
|
|
98
|
+
lines.push(`- ${group.label}: ${group.errors} error, ${group.warnings} warning`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (result.issues?.summary) {
|
|
102
|
+
lines.push("");
|
|
103
|
+
lines.push("Summary:");
|
|
104
|
+
lines.push(`- Total: ${result.issues.summary.total} issue(s)`);
|
|
105
|
+
lines.push(`- Errors: ${result.issues.summary.errors}`);
|
|
106
|
+
lines.push(`- Warnings: ${result.issues.summary.warnings}`);
|
|
107
|
+
}
|
|
108
|
+
if (result.statusLine) {
|
|
109
|
+
lines.push("");
|
|
110
|
+
lines.push("Status:");
|
|
111
|
+
lines.push(result.statusLine);
|
|
112
|
+
}
|
|
113
|
+
return lines.join("\n");
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=renderDecisionSummary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderDecisionSummary.js","sourceRoot":"","sources":["../../../src/core/decision/renderDecisionSummary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.detectResourceStorage = detectResourceStorage;
|
|
4
|
+
function toLikelyTableName(resource) {
|
|
5
|
+
if (!resource)
|
|
6
|
+
return resource;
|
|
7
|
+
if (resource.endsWith("s"))
|
|
8
|
+
return resource;
|
|
9
|
+
return `${resource}s`;
|
|
10
|
+
}
|
|
11
|
+
function detectResourceStorage(input) {
|
|
12
|
+
const { parentResource, nestedResource, files, schema } = input;
|
|
13
|
+
const evidence = [];
|
|
14
|
+
if (schema && nestedResource) {
|
|
15
|
+
const exactTable = `${parentResource}_${nestedResource}`;
|
|
16
|
+
if (schema.tables.includes(exactTable)) {
|
|
17
|
+
evidence.push(`Found table ${exactTable} in schema.`);
|
|
18
|
+
return {
|
|
19
|
+
parentResource,
|
|
20
|
+
nestedResource,
|
|
21
|
+
storageKind: "separate_table",
|
|
22
|
+
tableName: exactTable,
|
|
23
|
+
parentTableName: toLikelyTableName(parentResource), evidence
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const parentTable = toLikelyTableName(parentResource);
|
|
27
|
+
const possibleJsonColumn = nestedResource;
|
|
28
|
+
const jsonLikeColumn = schema.columns.find((col) => col.tableName === parentTable &&
|
|
29
|
+
col.columnName === possibleJsonColumn &&
|
|
30
|
+
["json", "jsonb"].includes(col.dataType.toLowerCase()));
|
|
31
|
+
if (jsonLikeColumn) {
|
|
32
|
+
evidence.push(`Found JSON column ${parentTable}.${possibleJsonColumn}`);
|
|
33
|
+
return {
|
|
34
|
+
parentResource,
|
|
35
|
+
nestedResource,
|
|
36
|
+
storageKind: "json_field",
|
|
37
|
+
parentTableName: parentTable,
|
|
38
|
+
jsonFieldName: possibleJsonColumn,
|
|
39
|
+
evidence
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
for (const file of files) {
|
|
44
|
+
if (nestedResource &&
|
|
45
|
+
new RegExp(`from\\(["'\`]${parentResource}_${nestedResource}["'\`]\\)`).test(file.content)) {
|
|
46
|
+
evidence.push(`Detected table usage ${parentResource}_${nestedResource} in ${file.path}`);
|
|
47
|
+
return {
|
|
48
|
+
parentResource,
|
|
49
|
+
nestedResource,
|
|
50
|
+
storageKind: "separate_table",
|
|
51
|
+
tableName: `${parentResource}_${nestedResource}`,
|
|
52
|
+
parentTableName: `${parentResource}s`,
|
|
53
|
+
evidence
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if (nestedResource &&
|
|
57
|
+
new RegExp(`${nestedResource}\\s*:`).test(file.content) &&
|
|
58
|
+
/update\(|upsert\(/.test(file.content)) {
|
|
59
|
+
evidence.push(`Detected possible JSON field update for ${nestedResource} in ${file.path}`);
|
|
60
|
+
return {
|
|
61
|
+
parentResource,
|
|
62
|
+
nestedResource,
|
|
63
|
+
storageKind: "json_field",
|
|
64
|
+
parentTableName: `${parentResource}s`,
|
|
65
|
+
jsonFieldName: nestedResource,
|
|
66
|
+
evidence
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
evidence.push("Could not confidently determine storage type.");
|
|
71
|
+
return {
|
|
72
|
+
parentResource,
|
|
73
|
+
nestedResource,
|
|
74
|
+
storageKind: "unknown",
|
|
75
|
+
evidence
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=detectResourceStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectResourceStorage.js","sourceRoot":"","sources":["../../src/core/detectResourceStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatOutput = formatOutput;
|
|
4
|
+
const renderRunAgentResult_js_1 = require("./renderRunAgentResult.js");
|
|
5
|
+
const buildDecisionAuditSnapshot_js_1 = require("./buildDecisionAuditSnapshot.js");
|
|
6
|
+
const decisionReasonCodeMeta_js_1 = require("./decision/decisionReasonCodeMeta.js");
|
|
7
|
+
function formatOutput(result, format, options = {}) {
|
|
8
|
+
const { showTrace = false, verbose = false } = options;
|
|
9
|
+
const includeTrace = showTrace || verbose;
|
|
10
|
+
const typedReasonCodes = (result.reasonCodes ?? []);
|
|
11
|
+
const reasonDetails = verbose && typedReasonCodes.length > 0
|
|
12
|
+
? (0, decisionReasonCodeMeta_js_1.buildDecisionReasonDetails)(typedReasonCodes)
|
|
13
|
+
: undefined;
|
|
14
|
+
const auditSnapshot = verbose
|
|
15
|
+
? (0, buildDecisionAuditSnapshot_js_1.buildDecisionAuditSnapshot)({
|
|
16
|
+
decision: result.decision,
|
|
17
|
+
risk: result.risk,
|
|
18
|
+
topRisks: result.topRisks,
|
|
19
|
+
reasonCodes: typedReasonCodes,
|
|
20
|
+
trace: result.trace
|
|
21
|
+
})
|
|
22
|
+
: undefined;
|
|
23
|
+
if (format === "json") {
|
|
24
|
+
const baseResult = includeTrace
|
|
25
|
+
? result
|
|
26
|
+
: (() => {
|
|
27
|
+
const { trace: _trace, ...resultWithoutTrace } = result;
|
|
28
|
+
return resultWithoutTrace;
|
|
29
|
+
})();
|
|
30
|
+
const output = {
|
|
31
|
+
...baseResult,
|
|
32
|
+
...(reasonDetails ? { reasonDetails } : {}),
|
|
33
|
+
...(auditSnapshot ? { auditSnapshot } : {})
|
|
34
|
+
};
|
|
35
|
+
return JSON.stringify(output, null, 2);
|
|
36
|
+
}
|
|
37
|
+
const base = (0, renderRunAgentResult_js_1.renderRunAgentResult)({
|
|
38
|
+
...result,
|
|
39
|
+
reasonCodes: typedReasonCodes,
|
|
40
|
+
...(auditSnapshot ? { auditSnapshot } : {})
|
|
41
|
+
}, { verbose });
|
|
42
|
+
if (!includeTrace || !result.trace) {
|
|
43
|
+
return base;
|
|
44
|
+
}
|
|
45
|
+
const lines = [base, "", "--- Decision Trace ---", "Path:"];
|
|
46
|
+
for (const step of result.trace.decisionPath) {
|
|
47
|
+
lines.push(`→ ${step}`);
|
|
48
|
+
}
|
|
49
|
+
lines.push(`Formula: ${result.trace.confidenceFormula}`);
|
|
50
|
+
lines.push(`Triggered by: ${result.trace.decisionFactors.triggeredBy.join(", ") || "none"}`);
|
|
51
|
+
return lines.join("\n");
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=formatOutput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatOutput.js","sourceRoot":"","sources":["../../src/core/formatOutput.ts"],"names":[],"mappings":";;AAeA,oCAmEC;AAjFD,uEAAiE;AACjE,mFAA6E;AAC7E,oFAG8C;AAS9C,SAAgB,YAAY,CAC1B,MAAsB,EACtB,MAAoB,EACpB,UAA+B,EAAE;IAEjC,MAAM,EAAE,SAAS,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEvD,MAAM,YAAY,GAAG,SAAS,IAAI,OAAO,CAAC;IAC1C,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAyB,CAAC;IAE5E,MAAM,aAAa,GACjB,OAAO,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;QACpC,CAAC,CAAC,IAAA,sDAA0B,EAAC,gBAAgB,CAAC;QAC9C,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,aAAa,GAAG,OAAO;QAC3B,CAAC,CAAC,IAAA,0DAA0B,EAAC;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW,EAAE,gBAAgB;YAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,YAAY;YAC7B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,CAAC,GAAG,EAAE;gBACJ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE,GAAG,MAAM,CAAC;gBACxD,OAAO,kBAAkB,CAAC;YAC5B,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,MAAM,GAAG;YACb,GAAG,UAAU;YACb,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,IAAI,GAAG,IAAA,8CAAoB,EAC/B;QACE,GAAG,MAAM;QACT,WAAW,EAAE,gBAAgB;QAC7B,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,EACD,EAAE,OAAO,EAAE,CACZ,CAAC;IAEF,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAa,CAAC,IAAI,EAAE,EAAE,EAAE,wBAAwB,EAAE,OAAO,CAAC,CAAC;IAEtE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,CACR,iBAAiB,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CACjF,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getIntentAwareScoreBoost = getIntentAwareScoreBoost;
|
|
4
|
+
function getIntentAwareScoreBoost(filePath, content, intent) {
|
|
5
|
+
let score = 0;
|
|
6
|
+
const path = filePath.toLowerCase();
|
|
7
|
+
const text = content.toLowerCase();
|
|
8
|
+
if (intent.resourceKind === "nested_resource") {
|
|
9
|
+
if (path.includes("route") ||
|
|
10
|
+
path.includes("controller") ||
|
|
11
|
+
path.includes("service")) {
|
|
12
|
+
score += 3;
|
|
13
|
+
}
|
|
14
|
+
if (text.includes("timeline") ||
|
|
15
|
+
text.includes("entry") ||
|
|
16
|
+
text.includes("item")) {
|
|
17
|
+
score += 4;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (intent.action === "update" || intent.action === "delete") {
|
|
21
|
+
if (text.includes("update") ||
|
|
22
|
+
text.includes("delete") ||
|
|
23
|
+
text.includes("remove") ||
|
|
24
|
+
text.includes("patch")) {
|
|
25
|
+
score += 2;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
for (const param of intent.paramHints) {
|
|
29
|
+
if (text.toLowerCase().includes(param.toLowerCase())) {
|
|
30
|
+
score += 2;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return score;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=intentAwareScore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intentAwareScore.js","sourceRoot":"","sources":["../../src/core/intentAwareScore.ts"],"names":[],"mappings":";;AAEA,4DA6CC;AA7CD,SAAgB,wBAAwB,CACtC,QAAgB,EAChB,OAAe,EACf,MAAkB;IAElB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEnC,IAAI,MAAM,CAAC,YAAY,KAAK,iBAAiB,EAAE,CAAC;QAC9C,IACE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EACxB,CAAC;YACD,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QAED,IACE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EACrB,CAAC;YACD,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7D,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EACtB,CAAC;YACD,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACrD,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
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.loadSavedAgentResult = loadSavedAgentResult;
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const files_js_1 = require("../utils/files.js");
|
|
9
|
+
async function loadSavedAgentResult(targetPath) {
|
|
10
|
+
const resultPath = node_path_1.default.join(targetPath, ".agent-cache", "last-result.json");
|
|
11
|
+
const exists = await (0, files_js_1.fileExists)(resultPath);
|
|
12
|
+
if (!exists) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
const raw = await (0, files_js_1.readTextFile)(resultPath);
|
|
16
|
+
return JSON.parse(raw);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=loadSavedAgentResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadSavedAgentResult.js","sourceRoot":"","sources":["../../src/core/loadSavedAgentResult.ts"],"names":[],"mappings":";;;;;AAIA,oDAYC;AAhBD,0DAA6B;AAE7B,gDAA6D;AAEtD,KAAK,UAAU,oBAAoB,CACxC,UAAkB;IAElB,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC;IAE7E,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAU,EAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,IAAA,uBAAY,EAAC,UAAU,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC;AAC7C,CAAC"}
|