| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- {
- "version": "3.16",
- "name": "FeatureAdjust",
- "description": "Add or modify a feature in an existing page/section — e.g., add a button, add a form field, add a chart, modify event behavior. More granular than add-page (which creates a whole new page).",
- "sectionMerge": true,
- "registry": {
- "params": [
- "featureRequest(STRING)",
- "currentMeta(OBJECT)"
- ],
- "services": [],
- "apis": [],
- "components": [],
- "vars": [
- "$featurePlan(OBJECT)",
- "$affectedSections(ARRAY)",
- "$affectedServices(ARRAY)",
- "$newComponents(ARRAY)",
- "$updatedMeta(OBJECT)"
- ],
- "files": {
- "inputs": [
- ".vl-code/ProjectMeta.json",
- "Sections/*",
- "Services/*",
- "ExtComponents/*"
- ],
- "artifacts": [
- ".vl-code/ProjectMeta.json",
- "Sections/*",
- "Services/*",
- "ExtComponents/*"
- ]
- },
- "docs": {
- "1": "VL 3.7 Syntax Rules"
- }
- },
- "steps": [
- {
- "id": "LLM_010_PlanFeature",
- "meta": {
- "title": "1. Analyze project and plan feature changes"
- },
- "in": {
- "docs": [
- "1"
- ],
- "max_tokens": 32768,
- "messages": [
- {
- "role": "user",
- "content": "You are a VL project architect. Analyze the current project and plan how to add/modify the requested feature.\n\nCurrent ProjectMeta:"
- },
- {
- "role": "user",
- "content": "=currentMeta"
- },
- {
- "role": "user",
- "content": "Feature request:"
- },
- {
- "role": "user",
- "content": "=featureRequest"
- },
- {
- "role": "user",
- "content": "Return a JSON plan with:\n- summary: one-line description of the change\n- affectedSections: [{name, file, changes: string}] — existing sections to modify\n- affectedServices: [{name, file, changes: string}] — existing services to modify\n- newComponents: [{name, description}] — new components to create (if any)\n- dbChanges: [{table, changes: string}] — database changes (if any)\n- updatedMeta: the FULL updated ProjectMeta reflecting the changes\n\nOnly include items that actually need changes. Prefer modifying existing files over creating new ones."
- }
- ],
- "output_config": {
- "format": {
- "type": "json_object"
- }
- },
- "stream": true
- },
- "out": {
- "$featurePlan": "=_result",
- "$affectedSections": "=_result.affectedSections",
- "$affectedServices": "=_result.affectedServices",
- "$newComponents": "=_result.newComponents",
- "$updatedMeta": "=_result.updatedMeta"
- },
- "next": "Pause_020_ReviewPlan"
- },
- {
- "id": "Pause_020_ReviewPlan",
- "meta": {
- "title": "2. Review feature plan (developer checkpoint)"
- },
- "resumeResultTarget": "$approved",
- "next": "Branch_030_CheckApproval"
- },
- {
- "id": "Branch_030_CheckApproval",
- "meta": {
- "title": "3. Check if plan was approved"
- },
- "cases": [
- {
- "condition": "=$approved === false",
- "next": "Stop_Cancelled"
- }
- ],
- "default": "Fork_040_Execute"
- },
- {
- "id": "Fork_040_Execute",
- "meta": {
- "title": "4. Execute changes in parallel"
- },
- "children": [
- "Loop_050_EditSections",
- "Loop_060_EditServices",
- "Loop_070_GenComponents"
- ],
- "next": "Set_080_UpdateMeta"
- },
- {
- "id": "Loop_050_EditSections",
- "meta": {
- "title": "4a. Edit affected sections"
- },
- "source": "=$affectedSections",
- "mode": "serial",
- "children": [
- "LLM_051_EditSection"
- ],
- "next": "RETURN"
- },
- {
- "id": "LLM_051_EditSection",
- "meta": {
- "title": "Edit section: =_item.name"
- },
- "in": {
- "docs": [
- "1"
- ],
- "max_tokens": 32768,
- "stream": true,
- "readFiles": [
- "=_item.file"
- ],
- "messages": [
- {
- "role": "user",
- "content": "You are editing an existing VL section file. Read the CURRENT file content carefully and make ONLY the changes described below.\n\nProject metadata:"
- },
- {
- "role": "user",
- "content": "=$updatedMeta"
- },
- {
- "role": "user",
- "content": "Changes to make:"
- },
- {
- "role": "user",
- "content": "=_item.changes"
- },
- {
- "role": "user",
- "content": "IMPORTANT: Output the COMPLETE updated section file. Preserve ALL existing bindings, events, and layout elements. Only add/modify what the changes require. 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": "retry",
- "retryCount": 1
- },
- {
- "id": "Loop_060_EditServices",
- "meta": {
- "title": "4b. Edit affected services"
- },
- "source": "=$affectedServices",
- "mode": "serial",
- "children": [
- "LLM_061_EditService"
- ],
- "next": "RETURN"
- },
- {
- "id": "LLM_061_EditService",
- "meta": {
- "title": "Edit service: =_item.name"
- },
- "in": {
- "docs": [
- "1"
- ],
- "max_tokens": 32768,
- "stream": true,
- "readFiles": [
- "=_item.file"
- ],
- "messages": [
- {
- "role": "user",
- "content": "You are editing an existing VL service file. Read the CURRENT file content carefully and make ONLY the changes described below.\n\nChanges to make:"
- },
- {
- "role": "user",
- "content": "=_item.changes"
- },
- {
- "role": "user",
- "content": "Output the COMPLETE updated service file. Preserve ALL existing methods. Only add/modify what the changes require.\n\nIMPORTANT: The file MUST start with '// VL_VERSION:3.7' as the first non-empty line."
- }
- ]
- },
- "out": {
- "/{_item.file}": "=_result"
- },
- "onError": "retry",
- "retryCount": 1
- },
- {
- "id": "Loop_070_GenComponents",
- "meta": {
- "title": "4c. Generate new components (if any)"
- },
- "source": "=$newComponents",
- "mode": "parallel",
- "children": [
- "LLM_071_GenComponent"
- ],
- "next": "RETURN",
- "onError": "skip"
- },
- {
- "id": "LLM_071_GenComponent",
- "meta": {
- "title": "Generate component: =_item.name"
- },
- "in": {
- "docs": [
- "1"
- ],
- "max_tokens": 32768,
- "stream": true,
- "messages": [
- {
- "role": "user",
- "content": "Generate a new VL 3.5 component (.cp) file.\n\nComponent spec:"
- },
- {
- "role": "user",
- "content": "=_item"
- },
- {
- "role": "user",
- "content": "Project metadata:"
- },
- {
- "role": "user",
- "content": "=$updatedMeta\n\nIMPORTANT: The file MUST start with '// VL_VERSION:3.7' as the first non-empty line."
- }
- ]
- },
- "out": {
- "/{_item.filePath}": "=_result"
- },
- "onError": "skip"
- },
- {
- "id": "Set_080_UpdateMeta",
- "meta": {
- "title": "5. Update ProjectMeta"
- },
- "in": {},
- "out": {
- "/.vl-code/ProjectMeta.json": "=$updatedMeta"
- },
- "next": "Set_090_SkipValidation"
- },
- {
- "id": "Set_090_SkipValidation",
- "meta": {
- "title": "6. Skip validation (generation-only mode)"
- },
- "target": "$validationSkipped",
- "value": "=true",
- "next": "Stop_Done"
- },
- {
- "id": "Stop_Done",
- "meta": {
- "title": "Feature adjustment complete"
- }
- },
- {
- "id": "Stop_Cancelled",
- "meta": {
- "title": "Feature adjustment cancelled by developer"
- }
- }
- ]
- }
|