| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- {
- "version": "3.16",
- "name": "BatchAdjust",
- "description": "Apply multiple small adjustments in one pass — e.g., rename fields, add buttons across pages, fix multiple UI issues. Decomposes the request into atomic changes, executes each, and finalizes the project without validation gating.",
- "sectionMerge": true,
- "registry": {
- "params": [
- "batchRequest(STRING)",
- "currentMeta(OBJECT)"
- ],
- "services": [],
- "apis": [],
- "components": [],
- "vars": [
- "$changeList(ARRAY)",
- "$changeResults(ARRAY)",
- "$updatedMeta(OBJECT)"
- ],
- "files": {
- "inputs": [
- ".vl-code/ProjectMeta.json",
- "Sections/*",
- "Services/*",
- "Database/*",
- "Apps/*"
- ],
- "artifacts": [
- ".vl-code/ProjectMeta.json",
- "Sections/*",
- "Services/*",
- "Database/*",
- "Apps/*",
- "ExtComponents/*"
- ]
- },
- "docs": {
- "1": "VL 3.7 Syntax Rules"
- }
- },
- "steps": [
- {
- "id": "LLM_010_Decompose",
- "meta": {
- "title": "1. Decompose batch request into atomic changes"
- },
- "in": {
- "docs": [
- "1"
- ],
- "max_tokens": 32768,
- "messages": [
- {
- "role": "user",
- "content": "You are a VL project architect. Break down the following batch change request into a list of atomic, independent changes.\n\nCurrent ProjectMeta:"
- },
- {
- "role": "user",
- "content": "=currentMeta"
- },
- {
- "role": "user",
- "content": "Batch request:"
- },
- {
- "role": "user",
- "content": "=batchRequest"
- },
- {
- "role": "user",
- "content": "Return JSON with:\n- updatedMeta: FULL updated ProjectMeta reflecting ALL changes\n- changes: [{id: \"change_01\", type: \"editSection\"|\"editService\"|\"editDatabase\"|\"editApp\"|\"newComponent\", file: \"path/to/file\", description: \"what to change\", priority: 1-5}]\n\nSort changes by priority (1=highest). Group related changes into single atomic operations where possible. Each change must be independently executable."
- }
- ],
- "output_config": {
- "format": {
- "type": "json_object"
- }
- },
- "stream": true
- },
- "out": {
- "$changeList": "=_result.changes",
- "$updatedMeta": "=_result.updatedMeta"
- },
- "next": "Pause_020_ReviewChanges"
- },
- {
- "id": "Pause_020_ReviewChanges",
- "meta": {
- "title": "2. Review change list (developer checkpoint)"
- },
- "resumeResultTarget": "$approved",
- "next": "Branch_025_CheckApproval"
- },
- {
- "id": "Branch_025_CheckApproval",
- "meta": {
- "title": "Check approval"
- },
- "cases": [
- {
- "condition": "=$approved === false",
- "next": "Stop_Cancelled"
- }
- ],
- "default": "Loop_030_ExecuteChanges"
- },
- {
- "id": "Loop_030_ExecuteChanges",
- "meta": {
- "title": "3. Execute each atomic change"
- },
- "source": "=$changeList",
- "mode": "serial",
- "children": [
- "LLM_031_ApplyChange"
- ],
- "next": "Set_040_UpdateMeta",
- "onError": "skip"
- },
- {
- "id": "LLM_031_ApplyChange",
- "meta": {
- "title": "Apply change: =_item.id — =_item.description"
- },
- "in": {
- "docs": [
- "1"
- ],
- "max_tokens": 32768,
- "stream": true,
- "readFiles": [
- "=_item.file"
- ],
- "messages": [
- {
- "role": "user",
- "content": "Apply the following change to a VL file.\n\nChange spec:"
- },
- {
- "role": "user",
- "content": "=_item"
- },
- {
- "role": "user",
- "content": "Updated project metadata (for reference):"
- },
- {
- "role": "user",
- "content": "=$updatedMeta"
- },
- {
- "role": "user",
- "content": "IMPORTANT: Output the COMPLETE updated file. Preserve everything that isn't being changed. Use VL 3.7 syntax with hyphen indentation.\n\nIMPORTANT: The file MUST start with '// VL_VERSION:3.7' as the first non-empty line."
- }
- ]
- },
- "out": {
- "/{_item.file}": "=_result"
- },
- "onError": "skip"
- },
- {
- "id": "Set_040_UpdateMeta",
- "meta": {
- "title": "4. Update ProjectMeta"
- },
- "in": {},
- "out": {
- "/.vl-code/ProjectMeta.json": "=$updatedMeta"
- },
- "next": "Set_050_SkipValidation"
- },
- {
- "id": "Set_050_SkipValidation",
- "meta": {
- "title": "5. Skip validation (generation-only mode)"
- },
- "target": "$validationSkipped",
- "value": "=true",
- "next": "Stop_Done"
- },
- {
- "id": "Stop_Done",
- "meta": {
- "title": "Batch adjustment complete"
- }
- },
- {
- "id": "Stop_Cancelled",
- "meta": {
- "title": "Batch adjustment cancelled by developer"
- }
- }
- ]
- }
|