(targetPath)
| 142 | } |
| 143 | |
| 144 | export async function explainBudget(targetPath) { |
| 145 | const target = await resolveTarget(targetPath); |
| 146 | const baseline = await loadBudgetBaseline(); |
| 147 | const rawBudget = await computeBudgetProfile(target); |
| 148 | const payload = { |
| 149 | kind: "budget-explanation", |
| 150 | createdAt: new Date().toISOString(), |
| 151 | target, |
| 152 | budgets: applyBudgetBands(rawBudget, baseline), |
| 153 | baselineEvidence: baseline.evidence, |
| 154 | workflowGuide: await buildWorkflowGuide(target.path, { |
| 155 | goal: "budget", |
| 156 | }), |
| 157 | }; |
| 158 | payload.nextAction = createBudgetNextAction(payload); |
| 159 | return payload; |
| 160 | } |
| 161 | |
| 162 | export async function recommendMeasures(targetPath, options = {}) { |
| 163 | const result = await analyzePath(targetPath, options); |
no test coverage detected