zone-ai-agent 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/.gittignore +4 -0
  2. package/README.md +36 -0
  3. package/dist/api/server.js +136 -0
  4. package/dist/api/server.js.map +1 -0
  5. package/dist/apply/applyPatchPlan.js +17 -0
  6. package/dist/apply/applyPatchPlan.js.map +1 -0
  7. package/dist/apply/canApplyDecision.js +26 -0
  8. package/dist/apply/canApplyDecision.js.map +1 -0
  9. package/dist/apply/patchPlan.js +3 -0
  10. package/dist/apply/patchPlan.js.map +1 -0
  11. package/dist/apply/renderApplyResult.js +18 -0
  12. package/dist/apply/renderApplyResult.js.map +1 -0
  13. package/dist/apply/runApplyFlow.js +40 -0
  14. package/dist/apply/runApplyFlow.js.map +1 -0
  15. package/dist/apply/types.js +3 -0
  16. package/dist/apply/types.js.map +1 -0
  17. package/dist/audit/auditDiffIntelligence.js +3 -0
  18. package/dist/audit/auditDiffIntelligence.js.map +1 -0
  19. package/dist/audit/auditSnapshot.js +87 -0
  20. package/dist/audit/auditSnapshot.js.map +1 -0
  21. package/dist/audit/renderAuditDiff.js +64 -0
  22. package/dist/audit/renderAuditDiff.js.map +1 -0
  23. package/dist/audit/snapshotDiff.js +53 -0
  24. package/dist/audit/snapshotDiff.js.map +1 -0
  25. package/dist/audit/snapshotReader.js +31 -0
  26. package/dist/audit/snapshotReader.js.map +1 -0
  27. package/dist/audit/snapshotWriter.js +59 -0
  28. package/dist/audit/snapshotWriter.js.map +1 -0
  29. package/dist/ci/evaluateCiResult.js +142 -0
  30. package/dist/ci/evaluateCiResult.js.map +1 -0
  31. package/dist/cli/buildGeneratedPatchPlanPreview.js +65 -0
  32. package/dist/cli/buildGeneratedPatchPlanPreview.js.map +1 -0
  33. package/dist/cli/colors.js +28 -0
  34. package/dist/cli/colors.js.map +1 -0
  35. package/dist/cli/diffOutput.js +37 -0
  36. package/dist/cli/diffOutput.js.map +1 -0
  37. package/dist/cli/index.js +850 -0
  38. package/dist/cli/index.js.map +1 -0
  39. package/dist/cli/loadPatchPlan.js +52 -0
  40. package/dist/cli/loadPatchPlan.js.map +1 -0
  41. package/dist/cli/output.js +34 -0
  42. package/dist/cli/output.js.map +1 -0
  43. package/dist/cli/parseCliArgs.js +3 -0
  44. package/dist/cli/parseCliArgs.js.map +1 -0
  45. package/dist/cli/runGeneratedPatchPlanFlow.js +23 -0
  46. package/dist/cli/runGeneratedPatchPlanFlow.js.map +1 -0
  47. package/dist/components/LoginForm.js +64 -0
  48. package/dist/components/LoginForm.js.map +1 -0
  49. package/dist/core/analyzeCodePatterns.js +3 -0
  50. package/dist/core/analyzeCodePatterns.js.map +1 -0
  51. package/dist/core/applyLlmPatches.js +43 -0
  52. package/dist/core/applyLlmPatches.js.map +1 -0
  53. package/dist/core/buildConfidenceBreakdownFromSignals.js +33 -0
  54. package/dist/core/buildConfidenceBreakdownFromSignals.js.map +1 -0
  55. package/dist/core/buildDecisionAuditSnapshot.js +18 -0
  56. package/dist/core/buildDecisionAuditSnapshot.js.map +1 -0
  57. package/dist/core/buildDecisionTrace.js +113 -0
  58. package/dist/core/buildDecisionTrace.js.map +1 -0
  59. package/dist/core/buildFallbackPatchPlan.js +23 -0
  60. package/dist/core/buildFallbackPatchPlan.js.map +1 -0
  61. package/dist/core/buildFallbackPlan.js +25 -0
  62. package/dist/core/buildFallbackPlan.js.map +1 -0
  63. package/dist/core/buildSchemaAwareContext.js +49 -0
  64. package/dist/core/buildSchemaAwareContext.js.map +1 -0
  65. package/dist/core/buildTaskExecutionContext.js +70 -0
  66. package/dist/core/buildTaskExecutionContext.js.map +1 -0
  67. package/dist/core/ciEvaluator.js +83 -0
  68. package/dist/core/ciEvaluator.js.map +1 -0
  69. package/dist/core/computeRiskScore.js +43 -0
  70. package/dist/core/computeRiskScore.js.map +1 -0
  71. package/dist/core/computeRiskScoreDetails.js +106 -0
  72. package/dist/core/computeRiskScoreDetails.js.map +1 -0
  73. package/dist/core/confidenceGate.js +83 -0
  74. package/dist/core/confidenceGate.js.map +1 -0
  75. package/dist/core/decision/buildDecisionExplanation.js +91 -0
  76. package/dist/core/decision/buildDecisionExplanation.js.map +1 -0
  77. package/dist/core/decision/buildDecisionReasonCodes.js +65 -0
  78. package/dist/core/decision/buildDecisionReasonCodes.js.map +1 -0
  79. package/dist/core/decision/buildReasonSummaryLine.js +24 -0
  80. package/dist/core/decision/buildReasonSummaryLine.js.map +1 -0
  81. package/dist/core/decision/buildRecommendation.js +43 -0
  82. package/dist/core/decision/buildRecommendation.js.map +1 -0
  83. package/dist/core/decision/decideExecutionMode.js +125 -0
  84. package/dist/core/decision/decideExecutionMode.js.map +1 -0
  85. package/dist/core/decision/decisionReasonCodeMeta.js +91 -0
  86. package/dist/core/decision/decisionReasonCodeMeta.js.map +1 -0
  87. package/dist/core/decision/renderDecisionSummary.js +115 -0
  88. package/dist/core/decision/renderDecisionSummary.js.map +1 -0
  89. package/dist/core/detectResourceStorage.js +78 -0
  90. package/dist/core/detectResourceStorage.js.map +1 -0
  91. package/dist/core/formatOutput.js +53 -0
  92. package/dist/core/formatOutput.js.map +1 -0
  93. package/dist/core/intentAwareScore.js +35 -0
  94. package/dist/core/intentAwareScore.js.map +1 -0
  95. package/dist/core/loadSavedAgentResult.js +18 -0
  96. package/dist/core/loadSavedAgentResult.js.map +1 -0
  97. package/dist/core/normalizeIssues.js +50 -0
  98. package/dist/core/normalizeIssues.js.map +1 -0
  99. package/dist/core/normalizeSignals.js +40 -0
  100. package/dist/core/normalizeSignals.js.map +1 -0
  101. package/dist/core/output/zoneStageTypes.js +3 -0
  102. package/dist/core/output/zoneStageTypes.js.map +1 -0
  103. package/dist/core/patchRiskAnalyzer.js +50 -0
  104. package/dist/core/patchRiskAnalyzer.js.map +1 -0
  105. package/dist/core/renderRunAgentResult.js +77 -0
  106. package/dist/core/renderRunAgentResult.js.map +1 -0
  107. package/dist/core/result/buildApplyStageResult.js +61 -0
  108. package/dist/core/result/buildApplyStageResult.js.map +1 -0
  109. package/dist/core/result/buildCliViewModel.js +79 -0
  110. package/dist/core/result/buildCliViewModel.js.map +1 -0
  111. package/dist/core/result/buildConversionStageResult.js +62 -0
  112. package/dist/core/result/buildConversionStageResult.js.map +1 -0
  113. package/dist/core/result/buildDecisionStageResult.js +61 -0
  114. package/dist/core/result/buildDecisionStageResult.js.map +1 -0
  115. package/dist/core/result/buildExecutionResult.js +148 -0
  116. package/dist/core/result/buildExecutionResult.js.map +1 -0
  117. package/dist/core/result/buildPreviewStageResult.js +47 -0
  118. package/dist/core/result/buildPreviewStageResult.js.map +1 -0
  119. package/dist/core/result/buildSavedDecisionExplanation.js +52 -0
  120. package/dist/core/result/buildSavedDecisionExplanation.js.map +1 -0
  121. package/dist/core/result/buildSavedRecommendation.js +39 -0
  122. package/dist/core/result/buildSavedRecommendation.js.map +1 -0
  123. package/dist/core/result/buildStageResultV2.js +52 -0
  124. package/dist/core/result/buildStageResultV2.js.map +1 -0
  125. package/dist/core/result/renderBundledResult.js +47 -0
  126. package/dist/core/result/renderBundledResult.js.map +1 -0
  127. package/dist/core/result/renderCliResult.js +93 -0
  128. package/dist/core/result/renderCliResult.js.map +1 -0
  129. package/dist/core/result/scoreTopRisks.js +205 -0
  130. package/dist/core/result/scoreTopRisks.js.map +1 -0
  131. package/dist/core/runAgent.js +210 -0
  132. package/dist/core/runAgent.js.map +1 -0
  133. package/dist/core/runFeatureAgent.js +684 -0
  134. package/dist/core/runFeatureAgent.js.map +1 -0
  135. package/dist/core/runLlmPatchFlow.js +522 -0
  136. package/dist/core/runLlmPatchFlow.js.map +1 -0
  137. package/dist/core/saveAgentResult.js +234 -0
  138. package/dist/core/saveAgentResult.js.map +1 -0
  139. package/dist/core/scoring/computeConfidenceBreakdown.js +130 -0
  140. package/dist/core/scoring/computeConfidenceBreakdown.js.map +1 -0
  141. package/dist/core/scoring/computeConfidenceScore.js +37 -0
  142. package/dist/core/scoring/computeConfidenceScore.js.map +1 -0
  143. package/dist/core/scoring/confidenceRules.js +58 -0
  144. package/dist/core/scoring/confidenceRules.js.map +1 -0
  145. package/dist/core/scoring/confidenceScore.js +8 -0
  146. package/dist/core/scoring/confidenceScore.js.map +1 -0
  147. package/dist/core/selectRelevantBlocks.js +58 -0
  148. package/dist/core/selectRelevantBlocks.js.map +1 -0
  149. package/dist/core/selfHealingLoop.js +209 -0
  150. package/dist/core/selfHealingLoop.js.map +1 -0
  151. package/dist/core/taskIntentParser.js +165 -0
  152. package/dist/core/taskIntentParser.js.map +1 -0
  153. package/dist/core/types/agentResult.js +3 -0
  154. package/dist/core/types/agentResult.js.map +1 -0
  155. package/dist/core/types/risk.js +3 -0
  156. package/dist/core/types/risk.js.map +1 -0
  157. package/dist/core/validatePatchAgainstSchema.js +100 -0
  158. package/dist/core/validatePatchAgainstSchema.js.map +1 -0
  159. package/dist/core/validateSuggestedArchitecture.js +24 -0
  160. package/dist/core/validateSuggestedArchitecture.js.map +1 -0
  161. package/dist/engine/buildDecisionExplanation.js +114 -0
  162. package/dist/engine/buildDecisionExplanation.js.map +1 -0
  163. package/dist/engine/contradictionDetector.js +40 -0
  164. package/dist/engine/contradictionDetector.js.map +1 -0
  165. package/dist/engine/decisionEngine.js +19 -0
  166. package/dist/engine/decisionEngine.js.map +1 -0
  167. package/dist/llm/openaiClient.js +19 -0
  168. package/dist/llm/openaiClient.js.map +1 -0
  169. package/dist/llm/planFeature.js +57 -0
  170. package/dist/llm/planFeature.js.map +1 -0
  171. package/dist/llm/planFix.js +3 -0
  172. package/dist/llm/planFix.js.map +1 -0
  173. package/dist/llm/planFullPatch.js +62 -0
  174. package/dist/llm/planFullPatch.js.map +1 -0
  175. package/dist/llm/planPatchPreview.js +60 -0
  176. package/dist/llm/planPatchPreview.js.map +1 -0
  177. package/dist/llm/prompts.js +131 -0
  178. package/dist/llm/prompts.js.map +1 -0
  179. package/dist/llm/schemas.js +28 -0
  180. package/dist/llm/schemas.js.map +1 -0
  181. package/dist/patch/apply/formatApplyFlowResult.js +23 -0
  182. package/dist/patch/apply/formatApplyFlowResult.js.map +1 -0
  183. package/dist/patch/apply/renderApplyFlowResult.js +15 -0
  184. package/dist/patch/apply/renderApplyFlowResult.js.map +1 -0
  185. package/dist/patch/apply/runApplyFlow.js +88 -0
  186. package/dist/patch/apply/runApplyFlow.js.map +1 -0
  187. package/dist/patch/applyFlowTypes.js +3 -0
  188. package/dist/patch/applyFlowTypes.js.map +1 -0
  189. package/dist/patch/applyPatchPlan.js +117 -0
  190. package/dist/patch/applyPatchPlan.js.map +1 -0
  191. package/dist/patch/backupFile.js +23 -0
  192. package/dist/patch/backupFile.js.map +1 -0
  193. package/dist/patch/conversion/canConvertGeneratedPlanToPatchPlan.js +57 -0
  194. package/dist/patch/conversion/canConvertGeneratedPlanToPatchPlan.js.map +1 -0
  195. package/dist/patch/conversion/convertGeneratedPlanToPatchPlan.js +38 -0
  196. package/dist/patch/conversion/convertGeneratedPlanToPatchPlan.js.map +1 -0
  197. package/dist/patch/conversion/formatGeneratedPlanConversionFailure.js +17 -0
  198. package/dist/patch/conversion/formatGeneratedPlanConversionFailure.js.map +1 -0
  199. package/dist/patch/conversion/generatedPlanConversionFailureMeta.js +40 -0
  200. package/dist/patch/conversion/generatedPlanConversionFailureMeta.js.map +1 -0
  201. package/dist/patch/conversion/generatedPlanConversionTypes.js +3 -0
  202. package/dist/patch/conversion/generatedPlanConversionTypes.js.map +1 -0
  203. package/dist/patch/conversion/renderGeneratedPlanConversionFailure.js +16 -0
  204. package/dist/patch/conversion/renderGeneratedPlanConversionFailure.js.map +1 -0
  205. package/dist/patch/generatedPlanConversion.js +96 -0
  206. package/dist/patch/generatedPlanConversion.js.map +1 -0
  207. package/dist/patch/patchAnchors.js +3 -0
  208. package/dist/patch/patchAnchors.js.map +1 -0
  209. package/dist/patch/patchValidationRules.js +116 -0
  210. package/dist/patch/patchValidationRules.js.map +1 -0
  211. package/dist/patch/patchValidationTypes.js +3 -0
  212. package/dist/patch/patchValidationTypes.js.map +1 -0
  213. package/dist/patch/renderApplyFlowResult.js +26 -0
  214. package/dist/patch/renderApplyFlowResult.js.map +1 -0
  215. package/dist/patch/validatePatchPlan.js +148 -0
  216. package/dist/patch/validatePatchPlan.js.map +1 -0
  217. package/dist/patch-generation/buildGeneratedPatchPlan.js +94 -0
  218. package/dist/patch-generation/buildGeneratedPatchPlan.js.map +1 -0
  219. package/dist/patch-generation/buildPatchOperations.js +41 -0
  220. package/dist/patch-generation/buildPatchOperations.js.map +1 -0
  221. package/dist/patch-generation/classifyPatchIntent.js +62 -0
  222. package/dist/patch-generation/classifyPatchIntent.js.map +1 -0
  223. package/dist/patch-generation/formatGeneratedPatchPlanPreview.js +25 -0
  224. package/dist/patch-generation/formatGeneratedPatchPlanPreview.js.map +1 -0
  225. package/dist/patch-generation/generatePatchPlan.js +74 -0
  226. package/dist/patch-generation/generatePatchPlan.js.map +1 -0
  227. package/dist/patch-generation/generatedPatchPlanTypes.js +3 -0
  228. package/dist/patch-generation/generatedPatchPlanTypes.js.map +1 -0
  229. package/dist/patch-generation/isIntentAllowed.js +15 -0
  230. package/dist/patch-generation/isIntentAllowed.js.map +1 -0
  231. package/dist/patch-generation/renderGeneratedPatchPlan.js +62 -0
  232. package/dist/patch-generation/renderGeneratedPatchPlan.js.map +1 -0
  233. package/dist/prompts/developerPrompt.js +213 -0
  234. package/dist/prompts/developerPrompt.js.map +1 -0
  235. package/dist/prompts/fullPatchPrompt.js +82 -0
  236. package/dist/prompts/fullPatchPrompt.js.map +1 -0
  237. package/dist/prompts/patchPreviewPrompt.js +83 -0
  238. package/dist/prompts/patchPreviewPrompt.js.map +1 -0
  239. package/dist/prompts/planFeaturePrompt.js +73 -0
  240. package/dist/prompts/planFeaturePrompt.js.map +1 -0
  241. package/dist/prompts/testEngineerContext.js +184 -0
  242. package/dist/prompts/testEngineerContext.js.map +1 -0
  243. package/dist/prompts/testEngineerPrompt.js +135 -0
  244. package/dist/prompts/testEngineerPrompt.js.map +1 -0
  245. package/dist/repo/analyzeProjectPatterns.js +46 -0
  246. package/dist/repo/analyzeProjectPatterns.js.map +1 -0
  247. package/dist/repo/detectProjectStructure.js +45 -0
  248. package/dist/repo/detectProjectStructure.js.map +1 -0
  249. package/dist/repo/getGitChangedFiles.js +96 -0
  250. package/dist/repo/getGitChangedFiles.js.map +1 -0
  251. package/dist/repo/loadSchemaSnapshot.js +29 -0
  252. package/dist/repo/loadSchemaSnapshot.js.map +1 -0
  253. package/dist/repo/rankRelevantFiles.js +306 -0
  254. package/dist/repo/rankRelevantFiles.js.map +1 -0
  255. package/dist/repo/readProjectFiles.js +27 -0
  256. package/dist/repo/readProjectFiles.js.map +1 -0
  257. package/dist/repo/scanRepo.js +93 -0
  258. package/dist/repo/scanRepo.js.map +1 -0
  259. package/dist/repo/validateSuggestedFiles.js +66 -0
  260. package/dist/repo/validateSuggestedFiles.js.map +1 -0
  261. package/dist/roles/dataAnalystContext.js +155 -0
  262. package/dist/roles/dataAnalystContext.js.map +1 -0
  263. package/dist/roles/detectDataSchema.js +152 -0
  264. package/dist/roles/detectDataSchema.js.map +1 -0
  265. package/dist/roles/detectTestComplexity.js +74 -0
  266. package/dist/roles/detectTestComplexity.js.map +1 -0
  267. package/dist/roles/detectTestFramework.js +166 -0
  268. package/dist/roles/detectTestFramework.js.map +1 -0
  269. package/dist/roles/runDataAnalystFlow.js +221 -0
  270. package/dist/roles/runDataAnalystFlow.js.map +1 -0
  271. package/dist/roles/runTestEngineerFlow.js +266 -0
  272. package/dist/roles/runTestEngineerFlow.js.map +1 -0
  273. package/dist/roles/testEngineerContext.js +282 -0
  274. package/dist/roles/testEngineerContext.js.map +1 -0
  275. package/dist/roles/testOutputValidator.js +474 -0
  276. package/dist/roles/testOutputValidator.js.map +1 -0
  277. package/dist/types/agent.js +3 -0
  278. package/dist/types/agent.js.map +1 -0
  279. package/dist/types/analysis.js +3 -0
  280. package/dist/types/analysis.js.map +1 -0
  281. package/dist/types/patch.js +3 -0
  282. package/dist/types/patch.js.map +1 -0
  283. package/dist/types/project.js +3 -0
  284. package/dist/types/project.js.map +1 -0
  285. package/dist/types/schema.js +3 -0
  286. package/dist/types/schema.js.map +1 -0
  287. package/dist/utils/executionTracker.js +33 -0
  288. package/dist/utils/executionTracker.js.map +1 -0
  289. package/dist/utils/files.js +35 -0
  290. package/dist/utils/files.js.map +1 -0
  291. package/dist/utils/logger.js +179 -0
  292. package/dist/utils/logger.js.map +1 -0
  293. package/dist/utils/paths.js +14 -0
  294. package/dist/utils/paths.js.map +1 -0
  295. package/dist/utils/trace.js +10 -0
  296. package/dist/utils/trace.js.map +1 -0
  297. package/dist/utils/validation.js +24 -0
  298. package/dist/utils/validation.js.map +1 -0
  299. package/package.json +53 -0
  300. package/tsconfig.json +17 -0
  301. package/vitest.config.ts +21 -0
@@ -0,0 +1,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":";;AA8HA,kDA6DC;AA3LD,4FAAsF;AA2CtF,SAAS,6BAA6B,CACpC,KAA2B,EAC3B,IAAyB;IAEzB,OAAO;QACL,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,0BAA0B;QAC9E,QAAQ,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACnD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE;YACP,KAAK,CAAC,IAAI;YACV,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;SACzB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CACrC,KAA2B,EAC3B,IAAyB;IAEzB,OAAO;QACL,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,2BAA2B;QAChF,QAAQ,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACnD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE;YACP,KAAK,CAAC,IAAI;YACV,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;SACzB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAwB;IAC3D,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;QACnB,KAAK,mBAAmB;YACtB,OAAO;gBACL,IAAI,EAAE,uBAAuB;gBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,MAAM,CAAC,MAAM;aACvB,CAAC;QAEJ,KAAK,oBAAoB;YACvB,OAAO;gBACL,IAAI,EAAE,wBAAwB;gBAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,MAAM,CAAC,MAAM;aACvB,CAAC;QAEJ,KAAK,yBAAyB;YAC5B,OAAO;gBACL,IAAI,EAAE,yBAAyB;gBAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,MAAM,CAAC,MAAM;aACvB,CAAC;QAEJ,KAAK,qBAAqB;YACxB,OAAO;gBACL,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,MAAM,CAAC,KAAK;gBACrB,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;aACzB,CAAC;QAEJ,KAAK,uBAAuB;YAC1B,OAAO;gBACL,IAAI,EAAE,sBAAsB;gBAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,MAAM,CAAC,KAAK;gBACrB,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;aACzB,CAAC;QAEJ,KAAK,mBAAmB;YACtB,OAAO;gBACL,IAAI,EAAE,0BAA0B;gBAChC,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,MAAM,CAAC,MAAM;aACvB,CAAC;QAEJ;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAgB,mBAAmB,CACjC,KAA+B;IAE/B,MAAM,qBAAqB,GAAG,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC;IAChE,MAAM,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC;IAElE,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IACrF,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAEzF,MAAM,YAAY,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IACvF,MAAM,cAAc,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAE3F,MAAM,cAAc,GAAqB;QACvC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5E,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,8BAA8B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KAC/E,CAAC;IAEF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,IAAI,EAAE,SAAS;YACf,eAAe,EAAE,CAAC;YAClB,OAAO,EAAE,cAAc;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,0DAA0B,EAAC;QAC3C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,IAAI,EAAE;QACtD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,IAAI,EAAE;QAChD,gBAAgB,EAAE,EAAE;QACpB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;KAC3C,CAAC,CAAC;IAEH,MAAM,cAAc,GAAqB;QACvC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,6BAA6B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAChF,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,8BAA8B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAClF,GAAG,SAAS,CAAC,OAAO;aACjB,GAAG,CAAC,2BAA2B,CAAC;aAChC,MAAM,CAAC,CAAC,MAAM,EAA4B,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC;KACjE,CAAC;IAEF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,eAAe,EAAE,SAAS,CAAC,UAAU;YACrC,OAAO,EAAE,cAAc;SACxB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,eAAe,EAAE,SAAS,CAAC,UAAU;QACrC,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,6DAA6D;aACvE;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -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":";;AAmDA,sDA8BC;AASD,sEA2DC;AA5ID,+EAAyE;AACzE,uFAAiF;AACjF,qEAA+D;AAC/D,SAAS,YAAY,CAAC,MAAsB;IAC1C,MAAM,YAAY,GAChB,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACzC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;QACpC,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,aAAa,GACjB,MAAM,CAAC,QAAQ,KAAK,UAAU;QAC5B,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS;YAC7B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,MAAM,CAAC;IAEf,OAAO,MAAM,aAAa,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,GAAG,YAAY,EAAE,CAAC;AACjF,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAmC;IAC7D,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACvC,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC3C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,QAAuB,EAAE,KAAK,GAAG,CAAC;IACxD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAGD,SAAgB,qBAAqB,CACnC,MAAiC;IAEjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,IAAA,sDAAwB,EAAC,MAAM,CAAC,CAAC,CAAC;IAE7C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,IAAA,4CAAmB,EAAC,MAAM,CAAC,CAAC,CAAC;IAExC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAqC;IAChE,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC;AAGD,SAAgB,6BAA6B,CAC3C,MAAwB;IAExB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,eAAe,GAAG,MAAM,CAAC,mBAAmB,EAAE,KAAK;QACvD,CAAC,CAAC,KAAK,MAAM,CAAC,mBAAmB,CAAC,KAAK,GAAG;QAC1C,CAAC,CAAC,EAAE,CAAC;IACP,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,QAAQ,CAAC,UAAU,OAAO,eAAe,EAAE,CAAC,CAAC;IAE9E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,IAAA,sDAAwB,EAAC,MAAM,CAAC,CAAC,CAAC;IAC3C,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,GACR,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW;gBAC/B,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,WAAW,GAAG;gBAC7C,CAAC,CAAC,IAAI,CAAC,QAAQ;oBACb,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,GAAG;oBACvB,CAAC,CAAC,IAAI,CAAC,WAAW;wBAChB,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,GAAG;wBAC1B,CAAC,CAAC,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CACR,MAAM,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,CACtF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CACR,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC,QAAQ,UAAU,CACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,CAAC,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -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"}