| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- {
- "version": "3.16",
- "name": "CompileFix",
- "description": "Apply targeted VL fixes based on the latest .vl-code/last-compile.json report. Precondition: run VLCompile first so the compile report is fresh. This workflow fixes files from the current report, then stops for an external recompile/verification pass.",
- "sectionMerge": true,
- "registry": {
- "params": [
- "projectPath(STRING)"
- ],
- "services": [],
- "apis": [],
- "components": [],
- "vars": [
- "$compileReport(OBJECT)",
- "$errors(ARRAY)",
- "$fixTargets(ARRAY)"
- ],
- "files": {
- "inputs": [
- ".vl-code/last-compile.json"
- ],
- "artifacts": []
- },
- "docs": {
- "1": "VL Syntax Rules"
- }
- },
- "steps": [
- {
- "id": "LLM_010_LoadCompileReport",
- "meta": {
- "title": "1. Load latest compile report"
- },
- "in": {
- "docs": [
- "1"
- ],
- "max_tokens": 16384,
- "readFiles": [
- ".vl-code/last-compile.json"
- ],
- "messages": [
- {
- "role": "user",
- "content": "Read .vl-code/last-compile.json and return a JSON summary with EXACTLY these top-level keys: success(BOOL), errors(ARRAY of {file, line, message}), warningCount(INT), summary(STRING).\n\nRules:\n1. Only include hard compile errors in errors. Exclude warnings.\n2. If the file is missing, stale, malformed, or contains no hard errors, return success:true and errors:[] with an explanatory summary.\n3. Preserve file paths exactly as reported."
- }
- ],
- "output_config": {
- "format": {
- "type": "json_object"
- }
- }
- },
- "out": {
- "$compileReport": "=_result",
- "$errors": "=_result.errors"
- },
- "next": "Branch_015_CheckErrors"
- },
- {
- "id": "Branch_015_CheckErrors",
- "meta": {
- "title": "2. Check whether fixes are needed"
- },
- "cases": [
- {
- "condition": "=$errors.length > 0",
- "next": "LLM_020_PlanFixes"
- }
- ],
- "default": "Stop_NoErrors"
- },
- {
- "id": "LLM_020_PlanFixes",
- "meta": {
- "title": "3. Plan file-level fixes from compile errors"
- },
- "in": {
- "docs": [
- "1"
- ],
- "max_tokens": 32768,
- "readFiles": [
- "=$errors.map(e => e.file)"
- ],
- "messages": [
- {
- "role": "user",
- "content": "Latest compile report summary:"
- },
- {
- "role": "user",
- "content": "=$compileReport"
- },
- {
- "role": "user",
- "content": "Plan the minimum file-level fixes needed to resolve these compile errors. Return JSON with EXACTLY one top-level key: fixes(ARRAY of {file, line, errors, reason}).\n\nRules:\n1. Group multiple errors for the same file into a single fixes item.\n2. Keep file paths exactly as given.\n3. Do not invent new files.\n4. Focus only on the reported compiler errors."
- }
- ],
- "output_config": {
- "format": {
- "type": "json_object"
- }
- }
- },
- "out": {
- "$fixTargets": "=_result.fixes"
- },
- "next": "Loop_030_ApplyFixes"
- },
- {
- "id": "Loop_030_ApplyFixes",
- "meta": {
- "title": "4. Apply fixes to affected files"
- },
- "source": "=$fixTargets",
- "mode": "serial",
- "children": [
- "LLM_031_ApplyFix"
- ],
- "next": "Stop_NeedsRecompile",
- "onError": "skip"
- },
- {
- "id": "LLM_031_ApplyFix",
- "meta": {
- "title": "Fix file: =_item.file"
- },
- "in": {
- "docs": [
- "1"
- ],
- "max_tokens": 32768,
- "stream": true,
- "readFiles": [
- "=_item.file"
- ],
- "messages": [
- {
- "role": "user",
- "content": "Compiler-driven fix target:"
- },
- {
- "role": "user",
- "content": "=_item"
- },
- {
- "role": "user",
- "content": "Latest compile report summary:"
- },
- {
- "role": "user",
- "content": "=$compileReport"
- },
- {
- "role": "user",
- "content": "Update the file to resolve the reported compiler errors only. Output the COMPLETE updated file, preserve unaffected logic/layout, and keep the VL version header on the first non-empty line."
- }
- ]
- },
- "out": {
- "/{_item.file}": "=_result"
- },
- "next": "RETURN"
- },
- {
- "id": "Stop_NoErrors",
- "meta": {
- "title": "No hard compile errors in latest report"
- }
- },
- {
- "id": "Stop_NeedsRecompile",
- "meta": {
- "title": "Fixes applied — recompile externally to verify"
- }
- }
- ]
- }
|