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,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizePatchValidationIssues = normalizePatchValidationIssues;
4
+ exports.normalizeSchemaValidationIssues = normalizeSchemaValidationIssues;
5
+ exports.normalizePatchRiskWarnings = normalizePatchRiskWarnings;
6
+ exports.normalizeArchitectureWarnings = normalizeArchitectureWarnings;
7
+ /**
8
+ * Normalize functions for ValidationIssue production.
9
+ * Shared by runFeatureAgent.ts and saveAgentResult.ts to ensure
10
+ * consistent source/code/severity assignment across the pipeline.
11
+ */
12
+ function normalizePatchValidationIssues(issues) {
13
+ return issues.map((issue) => ({
14
+ code: issue.level === "error"
15
+ ? "PATCH_VALIDATION_ERROR"
16
+ : "PATCH_VALIDATION_WARNING",
17
+ message: issue.message,
18
+ severity: issue.level,
19
+ source: "patch",
20
+ file: issue.filePath
21
+ }));
22
+ }
23
+ function normalizeSchemaValidationIssues(issues) {
24
+ return issues.map((issue) => ({
25
+ code: issue.level === "error"
26
+ ? "SCHEMA_VALIDATION_ERROR"
27
+ : "SCHEMA_VALIDATION_WARNING",
28
+ message: issue.message,
29
+ severity: issue.level,
30
+ source: "schema",
31
+ file: issue.filePath
32
+ }));
33
+ }
34
+ function normalizePatchRiskWarnings(warnings) {
35
+ return warnings.map((message) => ({
36
+ code: "PATCH_RISK_WARNING",
37
+ message,
38
+ severity: "warning",
39
+ source: "patch"
40
+ }));
41
+ }
42
+ function normalizeArchitectureWarnings(warnings) {
43
+ return warnings.map((message) => ({
44
+ code: "ARCHITECTURE_WARNING",
45
+ message,
46
+ severity: "warning",
47
+ source: "architecture"
48
+ }));
49
+ }
50
+ //# sourceMappingURL=normalizeIssues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeIssues.js","sourceRoot":"","sources":["../../src/core/normalizeIssues.ts"],"names":[],"mappings":";;AAQA,wEAiBC;AAED,0EAiBC;AAED,gEAOC;AAED,sEAOC;AA5DD;;;;GAIG;AAEH,SAAgB,8BAA8B,CAC5C,MAIE;IAEF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,IAAI,EACF,KAAK,CAAC,KAAK,KAAK,OAAO;YACrB,CAAC,CAAC,wBAAwB;YAC1B,CAAC,CAAC,0BAA0B;QAChC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,KAAK,CAAC,KAAK;QACrB,MAAM,EAAE,OAAgB;QACxB,IAAI,EAAE,KAAK,CAAC,QAAQ;KACrB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAgB,+BAA+B,CAC7C,MAIE;IAEF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,IAAI,EACF,KAAK,CAAC,KAAK,KAAK,OAAO;YACrB,CAAC,CAAC,yBAAyB;YAC3B,CAAC,CAAC,2BAA2B;QACjC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,KAAK,CAAC,KAAK;QACrB,MAAM,EAAE,QAAiB;QACzB,IAAI,EAAE,KAAK,CAAC,QAAQ;KACrB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAgB,0BAA0B,CAAC,QAAkB;IAC3D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,oBAAoB;QAC1B,OAAO;QACP,QAAQ,EAAE,SAAkB;QAC5B,MAAM,EAAE,OAAgB;KACzB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAgB,6BAA6B,CAAC,QAAkB;IAC9D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,sBAAsB;QAC5B,OAAO;QACP,QAAQ,EAAE,SAAkB;QAC5B,MAAM,EAAE,cAAuB;KAChC,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeSignals = normalizeSignals;
4
+ function normalizeSignals(signals) {
5
+ const result = [];
6
+ if (signals.includes("destructive")) {
7
+ result.push({
8
+ type: "destructive",
9
+ severity: "high",
10
+ confidenceImpact: -50,
11
+ label: "Potentially destructive change"
12
+ });
13
+ }
14
+ if (signals.includes("schema")) {
15
+ result.push({
16
+ type: "schema",
17
+ severity: "medium",
18
+ confidenceImpact: -25,
19
+ label: "Schema-sensitive change"
20
+ });
21
+ }
22
+ if (signals.includes("critical_domain")) {
23
+ result.push({
24
+ type: "critical_domain",
25
+ severity: "medium",
26
+ confidenceImpact: -20,
27
+ label: "Critical domain surface"
28
+ });
29
+ }
30
+ if (signals.includes("mass_scope")) {
31
+ result.push({
32
+ type: "mass_scope",
33
+ severity: "high",
34
+ confidenceImpact: -25,
35
+ label: "Mass-scope operation"
36
+ });
37
+ }
38
+ return result;
39
+ }
40
+ //# sourceMappingURL=normalizeSignals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeSignals.js","sourceRoot":"","sources":["../../src/core/normalizeSignals.ts"],"names":[],"mappings":";;AAAA,4CAwCC;AAxCD,SAAgB,gBAAgB,CAAC,OAAiB;IAChD,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,MAAM;YAChB,gBAAgB,EAAE,CAAC,EAAE;YACrB,KAAK,EAAE,gCAAgC;SACxC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,QAAQ;YAClB,gBAAgB,EAAE,CAAC,EAAE;YACrB,KAAK,EAAE,yBAAyB;SACjC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,QAAQ;YAClB,gBAAgB,EAAE,CAAC,EAAE;YACrB,KAAK,EAAE,yBAAyB;SACjC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,MAAM;YAChB,gBAAgB,EAAE,CAAC,EAAE;YACrB,KAAK,EAAE,sBAAsB;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=zoneStageTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zoneStageTypes.js","sourceRoot":"","sources":["../../../src/core/output/zoneStageTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.analyzePatchRisk = analyzePatchRisk;
4
+ function includesAny(text, patterns) {
5
+ const lower = text.toLowerCase();
6
+ return patterns.some((p) => lower.includes(p.toLowerCase()));
7
+ }
8
+ function analyzePatchRisk(intent, patchPreview) {
9
+ const warnings = [];
10
+ const preview = patchPreview.toLowerCase();
11
+ if (intent.resourceKind === "nested_resource") {
12
+ const suspiciousParentDelete = includesAny(preview, [
13
+ "findbyidanddelete",
14
+ "deletetreatment",
15
+ "remove treatment",
16
+ "delete treatment",
17
+ "router.delete('/:id'",
18
+ 'router.delete("/:id"',
19
+ "delete('/:id'",
20
+ 'delete("/:id"'
21
+ ]);
22
+ const suspiciousParentUpdate = includesAny(preview, [
23
+ "updatetreatment(",
24
+ "findbyidandupdate(",
25
+ "replace entire treatment",
26
+ "treatment update payload"
27
+ ]);
28
+ const matchedParamCount = intent.paramHints.filter((param) => preview.includes(param.toLowerCase())).length;
29
+ const missingNestedParam = intent.paramHints.length > 1 &&
30
+ matchedParamCount < intent.paramHints.length;
31
+ if (suspiciousParentDelete) {
32
+ warnings.push("Patch appears to delete parent resource while task targets nested resource.");
33
+ }
34
+ if (suspiciousParentUpdate) {
35
+ warnings.push("Patch appears to update parent resource broadly instead of nested item.");
36
+ }
37
+ if (missingNestedParam) {
38
+ warnings.push("Patch may be missing nested identifier params required by task intent.");
39
+ }
40
+ }
41
+ if (intent.action === "delete" &&
42
+ !includesAny(preview, ["filter", ".find(", ".filter(", "timelineid", "itemid", "entryid"])) {
43
+ warnings.push("Delete patch does not clearly show targeted filtering logic.");
44
+ }
45
+ return {
46
+ warnings,
47
+ isHighRisk: warnings.length > 0
48
+ };
49
+ }
50
+ //# sourceMappingURL=patchRiskAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patchRiskAnalyzer.js","sourceRoot":"","sources":["../../src/core/patchRiskAnalyzer.ts"],"names":[],"mappings":";;AAYA,4CAkEC;AAvED,SAAS,WAAW,CAAC,IAAY,EAAE,QAAkB;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAgB,gBAAgB,CAC9B,MAAkB,EAClB,YAAoB;IAEpB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAE3C,IAAI,MAAM,CAAC,YAAY,KAAK,iBAAiB,EAAE,CAAC;QAC9C,MAAM,sBAAsB,GAAG,WAAW,CAAC,OAAO,EAAE;YAClD,mBAAmB;YACnB,iBAAiB;YACjB,kBAAkB;YAClB,kBAAkB;YAClB,sBAAsB;YACtB,sBAAsB;YACtB,eAAe;YACf,eAAe;SAChB,CAAC,CAAC;QAEH,MAAM,sBAAsB,GAAG,WAAW,CAAC,OAAO,EAAE;YAClD,kBAAkB;YAClB,oBAAoB;YACpB,0BAA0B;YAC1B,0BAA0B;SAC3B,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAC3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CACtC,CAAC,MAAM,CAAC;QAET,MAAM,kBAAkB,GACtB,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAC5B,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;QAE/C,IAAI,sBAAsB,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CACX,6EAA6E,CAC9E,CAAC;QACJ,CAAC;QAED,IAAI,sBAAsB,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CACX,yEAAyE,CAC1E,CAAC;QACJ,CAAC;QAED,IAAI,kBAAkB,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CACX,wEAAwE,CACzE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IACE,MAAM,CAAC,MAAM,KAAK,QAAQ;QAC1B,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,EAC1F,CAAC;QACD,QAAQ,CAAC,IAAI,CACX,8DAA8D,CAC/D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ;QACR,UAAU,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;KAChC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderRunAgentResult = renderRunAgentResult;
4
+ const decisionReasonCodeMeta_js_1 = require("./decision/decisionReasonCodeMeta.js");
5
+ function renderRunAgentResult(input, options = {}) {
6
+ const lines = [];
7
+ const reasonCodes = input.reasonCodes ?? [];
8
+ const { verbose = false } = options;
9
+ lines.push("=== ZONE ===");
10
+ lines.push(`Task: ${input.task}`);
11
+ lines.push(`Decision: ${input.decision.mode}`);
12
+ lines.push(`Confidence: ${input.decision.confidenceScore}`);
13
+ lines.push(`Explanation: ${input.explanation}`);
14
+ lines.push(`Recommendation: ${input.recommendation}`);
15
+ if (reasonCodes.length > 0) {
16
+ lines.push("");
17
+ lines.push("Reason Codes:");
18
+ for (const code of reasonCodes) {
19
+ lines.push(`- ${code}`);
20
+ }
21
+ if (verbose) {
22
+ const reasonDetails = (0, decisionReasonCodeMeta_js_1.buildDecisionReasonDetails)([...reasonCodes]);
23
+ lines.push("");
24
+ lines.push("Reason Details:");
25
+ for (const detail of reasonDetails) {
26
+ lines.push(`- ${detail.label} [${detail.severity}/${detail.category}]`);
27
+ lines.push(` code: ${detail.code}`);
28
+ lines.push(` summary: ${detail.summary}`);
29
+ }
30
+ }
31
+ }
32
+ if (verbose && input.auditSnapshot) {
33
+ lines.push("");
34
+ lines.push("Audit Summary:");
35
+ lines.push(`- triggered by: ${input.auditSnapshot.triggeredBy.join(", ") || "none"}`);
36
+ lines.push(`- confidence formula: ${input.auditSnapshot.confidenceFormula || "n/a"}`);
37
+ if (input.auditSnapshot.reasonDetails.length > 0) {
38
+ lines.push("- audit reasons:");
39
+ for (const detail of input.auditSnapshot.reasonDetails) {
40
+ lines.push(` - ${detail.label}`);
41
+ }
42
+ }
43
+ }
44
+ if (input.risk) {
45
+ lines.push("");
46
+ lines.push("=== RISK ===");
47
+ lines.push(`${input.risk.score}/100`);
48
+ lines.push("=== RISK BREAKDOWN ===");
49
+ lines.push(`- destructive: ${input.risk.breakdown.destructive}`);
50
+ lines.push(`- schema: ${input.risk.breakdown.schema}`);
51
+ lines.push(`- critical: ${input.risk.breakdown.critical}`);
52
+ lines.push(`- low-risk: ${input.risk.breakdown.lowRisk}`);
53
+ lines.push(`- mass-scope: ${input.risk.breakdown.massScope}`);
54
+ }
55
+ if (input.confidence) {
56
+ lines.push("");
57
+ lines.push("=== CONFIDENCE BREAKDOWN ===");
58
+ lines.push(`- base: ${input.confidence.breakdown.base}`);
59
+ lines.push(`- destructive penalty: ${input.confidence.breakdown.destructivePenalty}`);
60
+ lines.push(`- schema penalty: ${input.confidence.breakdown.schemaPenalty}`);
61
+ lines.push(`- critical penalty: ${input.confidence.breakdown.criticalPenalty}`);
62
+ lines.push(`- mass-scope penalty: ${input.confidence.breakdown.massScopePenalty}`);
63
+ lines.push(`- low-risk bonus: ${input.confidence.breakdown.lowRiskBonus}`);
64
+ }
65
+ lines.push("");
66
+ lines.push("Top Risks:");
67
+ if (input.topRisks.length === 0) {
68
+ lines.push("- none");
69
+ }
70
+ else {
71
+ for (const risk of input.topRisks) {
72
+ lines.push(`- [${risk.severity}] ${risk.title}: ${risk.reason}`);
73
+ }
74
+ }
75
+ return lines.join("\n");
76
+ }
77
+ //# sourceMappingURL=renderRunAgentResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderRunAgentResult.js","sourceRoot":"","sources":["../../src/core/renderRunAgentResult.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildApplyStageResult = buildApplyStageResult;
4
+ const buildStageResultV2_js_1 = require("./buildStageResultV2.js");
5
+ function resolveStatus(status) {
6
+ switch (status) {
7
+ case "applied":
8
+ return "success";
9
+ case "failed":
10
+ return "failed";
11
+ case "skipped":
12
+ return "skipped";
13
+ }
14
+ }
15
+ function resolveSeverity(status, operationsApplied) {
16
+ switch (status) {
17
+ case "applied":
18
+ return "ok";
19
+ case "failed":
20
+ return operationsApplied > 0 ? "error" : "fatal";
21
+ case "skipped":
22
+ return "warning";
23
+ }
24
+ }
25
+ function resolveCode(status, operationsApplied) {
26
+ switch (status) {
27
+ case "applied":
28
+ return "ZONE_APPLY_SUCCESS";
29
+ case "failed":
30
+ return operationsApplied > 0 ? "ZONE_APPLY_PARTIAL" : "ZONE_APPLY_FAILED";
31
+ case "skipped":
32
+ return "ZONE_SKIPPED";
33
+ }
34
+ }
35
+ function resolveSummary(status, operationsApplied) {
36
+ switch (status) {
37
+ case "applied":
38
+ return "Apply succeeded: all operations applied successfully.";
39
+ case "failed":
40
+ return operationsApplied > 0
41
+ ? "Apply partially failed: some operations were not applied."
42
+ : "Apply failed: no operations were applied.";
43
+ case "skipped":
44
+ return "Apply skipped: no operations were executed.";
45
+ }
46
+ }
47
+ function buildApplyStageResult(result) {
48
+ const { status, operationsApplied, filesTouched } = result;
49
+ const details = filesTouched.length > 0
50
+ ? `Files touched: ${filesTouched.join(", ")}`
51
+ : undefined;
52
+ return (0, buildStageResultV2_js_1.buildStageResultV2)({
53
+ stage: "apply",
54
+ status: resolveStatus(status),
55
+ severity: resolveSeverity(status, operationsApplied),
56
+ code: resolveCode(status, operationsApplied),
57
+ summary: resolveSummary(status, operationsApplied),
58
+ details,
59
+ });
60
+ }
61
+ //# sourceMappingURL=buildApplyStageResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildApplyStageResult.js","sourceRoot":"","sources":["../../../src/core/result/buildApplyStageResult.ts"],"names":[],"mappings":";;AA2DA,sDAgBC;AAzED,mEAA6D;AAE7D,SAAS,aAAa,CAAC,MAAiC;IACtD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,MAAiC,EACjC,iBAAyB;IAEzB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QACnD,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,MAAiC,EACjC,iBAAyB;IAEzB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,oBAAoB,CAAC;QAC9B,KAAK,QAAQ;YACX,OAAO,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAC;QAC5E,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACrB,MAAiC,EACjC,iBAAyB;IAEzB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,uDAAuD,CAAC;QACjE,KAAK,QAAQ;YACX,OAAO,iBAAiB,GAAG,CAAC;gBAC1B,CAAC,CAAC,2DAA2D;gBAC7D,CAAC,CAAC,2CAA2C,CAAC;QAClD,KAAK,SAAS;YACZ,OAAO,6CAA6C,CAAC;IACzD,CAAC;AACH,CAAC;AAED,SAAgB,qBAAqB,CAAC,MAAuB;IAC3D,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAE3D,MAAM,OAAO,GACX,YAAY,CAAC,MAAM,GAAG,CAAC;QACrB,CAAC,CAAC,kBAAkB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC7C,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO,IAAA,0CAAkB,EAAC;QACxB,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC;QAC7B,QAAQ,EAAE,eAAe,CAAC,MAAM,EAAE,iBAAiB,CAAC;QACpD,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC;QAC5C,OAAO,EAAE,cAAc,CAAC,MAAM,EAAE,iBAAiB,CAAC;QAClD,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildCliViewModel = buildCliViewModel;
4
+ function toDecisionLabel(mode) {
5
+ switch (mode) {
6
+ case "blocked":
7
+ return "BLOCKED";
8
+ case "preview":
9
+ return "PREVIEW ONLY";
10
+ case "apply":
11
+ return "SAFE TO APPLY";
12
+ }
13
+ }
14
+ function normalizeIssue(issue) {
15
+ if (issue.severity === "error") {
16
+ return {
17
+ code: issue.code,
18
+ severity: "error",
19
+ message: issue.message
20
+ };
21
+ }
22
+ if (issue.severity === "warning" || issue.severity === "info") {
23
+ return {
24
+ code: issue.code,
25
+ severity: "warning",
26
+ message: issue.message
27
+ };
28
+ }
29
+ return null;
30
+ }
31
+ function toCliRiskSeverity(severity) {
32
+ switch (severity) {
33
+ case "high":
34
+ return "HIGH";
35
+ case "medium":
36
+ return "MEDIUM";
37
+ case "low":
38
+ return "LOW";
39
+ }
40
+ }
41
+ function buildCliViewModel(result) {
42
+ const groupedIssues = (result.issues?.grouped ?? []).map((group) => {
43
+ const issues = group.issues
44
+ .map(normalizeIssue)
45
+ .filter((item) => item !== null);
46
+ return {
47
+ label: group.label,
48
+ errors: group.errors,
49
+ warnings: group.warnings,
50
+ issues
51
+ };
52
+ });
53
+ const notes = [
54
+ ...result.notes.execution,
55
+ ...result.notes.assumptions,
56
+ ...result.notes.followUps
57
+ ];
58
+ return {
59
+ decisionMode: result.decision.mode,
60
+ decisionLabel: toDecisionLabel(result.decision.mode),
61
+ statusLine: result.statusLine ??
62
+ `STATUS: ${result.decision.mode.toUpperCase()} | confidence=${result.decision.confidence}`,
63
+ confidenceScore: result.confidenceBreakdown?.finalScore ?? result.decision.confidence,
64
+ errorCount: result.issues?.summary.errors ?? 0,
65
+ warningCount: result.issues?.summary.warnings ?? 0,
66
+ recommendation: result.decision.recommendation ?? result.decision.reason,
67
+ notes,
68
+ topRisks: (result.issues?.topRisks ?? []).map((risk) => ({
69
+ title: risk.title,
70
+ severity: toCliRiskSeverity(risk.severity),
71
+ score: risk.score,
72
+ description: risk.description,
73
+ category: risk.category
74
+ })),
75
+ groupedIssues,
76
+ rawResult: result
77
+ };
78
+ }
79
+ //# sourceMappingURL=buildCliViewModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildCliViewModel.js","sourceRoot":"","sources":["../../../src/core/result/buildCliViewModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildConversionStageResult = buildConversionStageResult;
4
+ const buildStageResultV2_js_1 = require("./buildStageResultV2.js");
5
+ function resolveFailureSummary(code) {
6
+ switch (code) {
7
+ case "EMPTY_OPERATIONS":
8
+ return "Conversion blocked: generated plan contains no operations.";
9
+ case "MULTI_OPERATION_NOT_SUPPORTED":
10
+ return "Conversion blocked: multiple operations are not supported.";
11
+ case "UNSUPPORTED_INTENT":
12
+ return "Conversion blocked: plan intent is not supported.";
13
+ case "UNSUPPORTED_OPERATION":
14
+ return "Conversion blocked: plan operation type is not supported.";
15
+ case "PLACEHOLDER_FILE_PATH":
16
+ return "Conversion blocked: file path contains a placeholder value.";
17
+ case "PLACEHOLDER_TEXT":
18
+ return "Conversion blocked: find/replace values contain placeholders.";
19
+ case "MISSING_REQUIRED_FIELDS":
20
+ return "Conversion blocked: required fields are missing.";
21
+ case "NON_EXACT_MATCH":
22
+ return "Conversion blocked: only exact match mode is supported.";
23
+ case "NO_OP_REPLACEMENT":
24
+ return "Conversion blocked: find and replaceWith are identical.";
25
+ }
26
+ }
27
+ function resolveFailureCode(code) {
28
+ switch (code) {
29
+ case "PLACEHOLDER_FILE_PATH":
30
+ case "PLACEHOLDER_TEXT":
31
+ return "ZONE_CONVERSION_FAILED_PLACEHOLDER";
32
+ case "UNSUPPORTED_INTENT":
33
+ case "UNSUPPORTED_OPERATION":
34
+ return "ZONE_CONVERSION_FAILED_UNSUPPORTED";
35
+ case "EMPTY_OPERATIONS":
36
+ case "MULTI_OPERATION_NOT_SUPPORTED":
37
+ case "MISSING_REQUIRED_FIELDS":
38
+ case "NON_EXACT_MATCH":
39
+ case "NO_OP_REPLACEMENT":
40
+ return "ZONE_CONVERSION_FAILED";
41
+ }
42
+ }
43
+ function buildConversionStageResult(check) {
44
+ if (check.canConvert) {
45
+ return (0, buildStageResultV2_js_1.buildStageResultV2)({
46
+ stage: "generated_patch_conversion",
47
+ status: "success",
48
+ severity: "ok",
49
+ code: "ZONE_OK",
50
+ summary: "Generated patch plan conversion succeeded.",
51
+ });
52
+ }
53
+ return (0, buildStageResultV2_js_1.buildStageResultV2)({
54
+ stage: "generated_patch_conversion",
55
+ status: "blocked",
56
+ severity: "fatal",
57
+ code: resolveFailureCode(check.code),
58
+ summary: resolveFailureSummary(check.code),
59
+ details: check.reason,
60
+ });
61
+ }
62
+ //# sourceMappingURL=buildConversionStageResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildConversionStageResult.js","sourceRoot":"","sources":["../../../src/core/result/buildConversionStageResult.ts"],"names":[],"mappings":";;AA4CA,gEAqBC;AA/DD,mEAA6D;AAE7D,SAAS,qBAAqB,CAAC,IAAwC;IACrE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,kBAAkB;YACrB,OAAO,4DAA4D,CAAC;QACtE,KAAK,+BAA+B;YAClC,OAAO,4DAA4D,CAAC;QACtE,KAAK,oBAAoB;YACvB,OAAO,mDAAmD,CAAC;QAC7D,KAAK,uBAAuB;YAC1B,OAAO,2DAA2D,CAAC;QACrE,KAAK,uBAAuB;YAC1B,OAAO,6DAA6D,CAAC;QACvE,KAAK,kBAAkB;YACrB,OAAO,+DAA+D,CAAC;QACzE,KAAK,yBAAyB;YAC5B,OAAO,kDAAkD,CAAC;QAC5D,KAAK,iBAAiB;YACpB,OAAO,yDAAyD,CAAC;QACnE,KAAK,mBAAmB;YACtB,OAAO,yDAAyD,CAAC;IACrE,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAwC;IAClE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,uBAAuB,CAAC;QAC7B,KAAK,kBAAkB;YACrB,OAAO,oCAAoC,CAAC;QAC9C,KAAK,oBAAoB,CAAC;QAC1B,KAAK,uBAAuB;YAC1B,OAAO,oCAAoC,CAAC;QAC9C,KAAK,kBAAkB,CAAC;QACxB,KAAK,+BAA+B,CAAC;QACrC,KAAK,yBAAyB,CAAC;QAC/B,KAAK,iBAAiB,CAAC;QACvB,KAAK,mBAAmB;YACtB,OAAO,wBAAwB,CAAC;IACpC,CAAC;AACH,CAAC;AAED,SAAgB,0BAA0B,CACxC,KAAmC;IAEnC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,IAAA,0CAAkB,EAAC;YACxB,KAAK,EAAE,4BAA4B;YACnC,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,4CAA4C;SACtD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAA,0CAAkB,EAAC;QACxB,KAAK,EAAE,4BAA4B;QACnC,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;QACpC,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC;QAC1C,OAAO,EAAE,KAAK,CAAC,MAAM;KACtB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildDecisionStageResult = buildDecisionStageResult;
4
+ const buildStageResultV2_js_1 = require("./buildStageResultV2.js");
5
+ function resolveStatus(mode) {
6
+ switch (mode) {
7
+ case "blocked":
8
+ return "blocked";
9
+ case "preview_only":
10
+ return "success";
11
+ case "safe_to_apply":
12
+ return "success";
13
+ }
14
+ }
15
+ function resolveSeverity(mode) {
16
+ switch (mode) {
17
+ case "blocked":
18
+ return "fatal";
19
+ case "preview_only":
20
+ return "warning";
21
+ case "safe_to_apply":
22
+ return "ok";
23
+ }
24
+ }
25
+ function resolveCode(mode, reasons) {
26
+ switch (mode) {
27
+ case "blocked":
28
+ return reasons.some((r) => r.code === "SCHEMA_VALIDATION_ERROR")
29
+ ? "ZONE_BLOCKED_SCHEMA_ERROR"
30
+ : "ZONE_BLOCKED_HIGH_RISK";
31
+ case "preview_only":
32
+ return "ZONE_PREVIEW_ONLY";
33
+ case "safe_to_apply":
34
+ return "ZONE_OK";
35
+ }
36
+ }
37
+ function resolveSummary(mode) {
38
+ switch (mode) {
39
+ case "blocked":
40
+ return "Decision blocked: automatic apply is not permitted.";
41
+ case "preview_only":
42
+ return "Decision preview only: manual review is required before apply.";
43
+ case "safe_to_apply":
44
+ return "Decision safe to apply: no blocking risks detected.";
45
+ }
46
+ }
47
+ function buildDecisionStageResult(result) {
48
+ const { mode, reasons } = result;
49
+ const details = reasons.length > 0
50
+ ? reasons.map((r) => r.message).join(" | ")
51
+ : undefined;
52
+ return (0, buildStageResultV2_js_1.buildStageResultV2)({
53
+ stage: "decision",
54
+ status: resolveStatus(mode),
55
+ severity: resolveSeverity(mode),
56
+ code: resolveCode(mode, reasons),
57
+ summary: resolveSummary(mode),
58
+ details,
59
+ });
60
+ }
61
+ //# sourceMappingURL=buildDecisionStageResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildDecisionStageResult.js","sourceRoot":"","sources":["../../../src/core/result/buildDecisionStageResult.ts"],"names":[],"mappings":";;AAqDA,4DAkBC;AArED,mEAA6D;AAE7D,SAAS,aAAa,CAAC,IAAuC;IAC5D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,cAAc;YACjB,OAAO,SAAS,CAAC;QACnB,KAAK,eAAe;YAClB,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAuC;IAC9D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC;QACjB,KAAK,cAAc;YACjB,OAAO,SAAS,CAAC;QACnB,KAAK,eAAe;YAClB,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,IAAuC,EACvC,OAA6C;IAE7C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,yBAAyB,CAAC;gBAC9D,CAAC,CAAC,2BAA2B;gBAC7B,CAAC,CAAC,wBAAwB,CAAC;QAC/B,KAAK,cAAc;YACjB,OAAO,mBAAmB,CAAC;QAC7B,KAAK,eAAe;YAClB,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAuC;IAC7D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,qDAAqD,CAAC;QAC/D,KAAK,cAAc;YACjB,OAAO,gEAAgE,CAAC;QAC1E,KAAK,eAAe;YAClB,OAAO,qDAAqD,CAAC;IACjE,CAAC;AACH,CAAC;AAED,SAAgB,wBAAwB,CACtC,MAAiC;IAEjC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEjC,MAAM,OAAO,GACX,OAAO,CAAC,MAAM,GAAG,CAAC;QAChB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3C,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO,IAAA,0CAAkB,EAAC;QACxB,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC;QAC3B,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC;QAC/B,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC;QAChC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;QAC7B,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}