| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465 |
- {
- "version": "3.16",
- "name": "VL_FullStack_CodeGen_3Files",
- "description": "Full-stack code generation using 3 auxiliary files: PRD -> default Theme/Theme.vth + VDB + ServiceMap + UIMap -> all VL files in parallel.",
- "_source": "DocCenter paths: 31-38 (agent prompts), 39 (aux spec), 1 (VL 3.7 syntax)",
- "registry": {
- "params": [
- "userRequest(STRING)",
- "targetLang(STRING)"
- ],
- "services": [],
- "apis": [],
- "components": [
- "ClearExisting"
- ],
- "vars": [
- "$prdJson(OBJECT)",
- "$prdJsonStr(STRING)",
- "$vdbContent(STRING)",
- "$serviceMapJson(OBJECT)",
- "$serviceMapJsonStr(STRING)",
- "$uiMapJson(OBJECT)",
- "$uiMapJsonStr(STRING)"
- ],
- "files": {
- "inputs": [
- "Process/Input/*",
- "Theme/Theme.vth"
- ],
- "artifacts": [
- "Process/Artifacts/*",
- "Database/*",
- "Services/*",
- "Sections/*",
- "ExtComponents/*",
- "Apps/*",
- "Theme/*"
- ]
- },
- "docs": {
- "1": "VL 3.7 Syntax Specification",
- "31": "Agent-100-PRD-Prompt",
- "32": "Agent-200-DB-Prompt",
- "33": "Agent-300-ServiceMap-Prompt",
- "34": "Agent-400-UIMap-Prompt",
- "35": "Agent-500-Component-Prompt",
- "36": "Agent-600-ServiceDomain-Prompt",
- "37": "Agent-700-Section-Prompt",
- "38": "Agent-800-AppEntry-Prompt"
- }
- },
- "steps": [
- {
- "id": "Component_ClearExisting",
- "meta": {
- "title": "0. Clear existing VL files before regeneration"
- },
- "in": {},
- "out": {},
- "next": "SeedTheme_050_DefaultTheme"
- },
- {
- "id": "SeedTheme_050_DefaultTheme",
- "meta": {
- "title": "0a. Seed default Theme/Theme.vth"
- },
- "in": {
- "path": "Theme/Theme.vth"
- },
- "out": {
- "/Theme/Theme.vth": "=_result"
- },
- "next": "LLM_100_PRD"
- },
- {
- "id": "LLM_100_PRD",
- "meta": {
- "title": "Agent-1 · PRD Analysis"
- },
- "in": {
- "docs": [
- "1",
- "31"
- ],
- "max_tokens": 8192,
- "messages": [
- {
- "role": "user",
- "content": "Requirement:"
- },
- {
- "role": "user",
- "content": "=userRequest"
- },
- {
- "role": "user",
- "content": "Target Language:"
- },
- {
- "role": "user",
- "content": "=targetLang"
- },
- {
- "role": "user",
- "content": "Naming contract: projectName must be PascalCase; database file is Database/<ProjectName>.vdb; theme file is Theme/Theme.vth."
- }
- ],
- "output_config": {
- "format": {
- "type": "json_object"
- }
- }
- },
- "out": {
- "$prdJson": "=_result",
- "$prdJsonStr": "=_result",
- "/Process/Artifacts/PRD.json": "=_result"
- },
- "next": "LLM_200_DB"
- },
- {
- "id": "LLM_200_DB",
- "meta": {
- "title": "Agent-2 · VDB Database Generation"
- },
- "in": {
- "stream": true,
- "docs": [
- "1",
- "32"
- ],
- "max_tokens": 16000,
- "messages": [
- {
- "role": "user",
- "content": "PRD:"
- },
- {
- "role": "user",
- "content": "=$prdJsonStr"
- }
- ]
- },
- "out": {
- "$vdbContent": "=_result",
- "/Database/{$prdJson.projectName || 'Project'}.vdb": "=_result"
- },
- "next": "LLM_300_ServiceMap"
- },
- {
- "id": "LLM_300_ServiceMap",
- "meta": {
- "title": "Agent-3 · ServiceMap Service Contract"
- },
- "in": {
- "docs": [
- "1",
- "33"
- ],
- "max_tokens": 8192,
- "messages": [
- {
- "role": "user",
- "content": "PRD:"
- },
- {
- "role": "user",
- "content": "=$prdJsonStr"
- },
- {
- "role": "user",
- "content": "VDB:"
- },
- {
- "role": "user",
- "content": "=$vdbContent"
- },
- {
- "role": "user",
- "content": "Service naming contract: every generated service filePath must be Services/<DomainId>.vs."
- }
- ],
- "output_config": {
- "format": {
- "type": "json_object"
- }
- }
- },
- "out": {
- "$serviceMapJson": "=_result",
- "$serviceMapJsonStr": "=_result",
- "/Process/Artifacts/ServiceMap.json": "=_result"
- },
- "next": "LLM_400_UIMap"
- },
- {
- "id": "LLM_400_UIMap",
- "meta": {
- "title": "Agent-4 · UIMap UI Architecture"
- },
- "in": {
- "docs": [
- "1",
- "34"
- ],
- "max_tokens": 16000,
- "messages": [
- {
- "role": "user",
- "content": "PRD:"
- },
- {
- "role": "user",
- "content": "=$prdJsonStr"
- },
- {
- "role": "user",
- "content": "ServiceMap:"
- },
- {
- "role": "user",
- "content": "=$serviceMapJsonStr"
- },
- {
- "role": "user",
- "content": "UI naming contract: theme file is Theme/Theme.vth; component filePath is ExtComponents/<Id>.cp; section filePath is Sections/<Id>.sc; app filePath is Apps/<Id>.vx."
- }
- ],
- "output_config": {
- "format": {
- "type": "json_object"
- }
- }
- },
- "out": {
- "$uiMapJson": "=_result",
- "$uiMapJsonStr": "=_result",
- "/Process/Artifacts/UIMap.json": "=_result"
- },
- "next": "Loop_Components"
- },
- {
- "id": "Loop_Components",
- "meta": {
- "title": "Phase-5 · Component Generation (.cp, parallel)"
- },
- "source": "=$uiMapJson.components",
- "mode": "parallel",
- "children": [
- "LLM_500_Component"
- ],
- "next": "Loop_ServiceDomains"
- },
- {
- "id": "LLM_500_Component",
- "meta": {
- "title": "Agent-5 · .cp Component"
- },
- "in": {
- "stream": true,
- "docs": [
- "1",
- "35"
- ],
- "max_tokens": 16000,
- "messages": [
- {
- "role": "user",
- "content": "ComponentItem:"
- },
- {
- "role": "user",
- "content": "=_item + ''"
- },
- {
- "role": "user",
- "content": "UIMap:"
- },
- {
- "role": "user",
- "content": "=$uiMapJsonStr"
- }
- ]
- },
- "out": {
- "/{_item.filePath}": "=_result"
- },
- "next": "RETURN"
- },
- {
- "id": "Loop_ServiceDomains",
- "meta": {
- "title": "Phase-6 · Service Generation (.vs)"
- },
- "source": "=$serviceMapJson.serviceDomains",
- "mode": "parallel",
- "children": [
- "LLM_600_ServiceDomain"
- ],
- "next": "Loop_Sections"
- },
- {
- "id": "LLM_600_ServiceDomain",
- "meta": {
- "title": "Agent-6 · .vs Service"
- },
- "in": {
- "stream": true,
- "docs": [
- "1",
- "36"
- ],
- "max_tokens": 16000,
- "messages": [
- {
- "role": "user",
- "content": "DomainItem:"
- },
- {
- "role": "user",
- "content": "=_item + ''"
- },
- {
- "role": "user",
- "content": "ServiceMap:"
- },
- {
- "role": "user",
- "content": "=$serviceMapJsonStr"
- },
- {
- "role": "user",
- "content": "VDB:"
- },
- {
- "role": "user",
- "content": "=$vdbContent"
- }
- ]
- },
- "out": {
- "/{_item.filePath}": "=_result"
- },
- "next": "RETURN"
- },
- {
- "id": "Loop_Sections",
- "meta": {
- "title": "Phase-7 · Section Generation (.sc, parallel)"
- },
- "source": "=$uiMapJson.sections",
- "mode": "parallel",
- "children": [
- "LLM_700_Section"
- ],
- "next": "Loop_Apps"
- },
- {
- "id": "LLM_700_Section",
- "meta": {
- "title": "Agent-7 · .sc Section"
- },
- "in": {
- "stream": true,
- "docs": [
- "1",
- "37"
- ],
- "max_tokens": 16000,
- "messages": [
- {
- "role": "user",
- "content": "SectionItem:"
- },
- {
- "role": "user",
- "content": "=_item + ''"
- },
- {
- "role": "user",
- "content": "UIMap:"
- },
- {
- "role": "user",
- "content": "=$uiMapJsonStr"
- },
- {
- "role": "user",
- "content": "ServiceMap:"
- },
- {
- "role": "user",
- "content": "=$serviceMapJsonStr"
- },
- {
- "role": "user",
- "content": "Compile-safety rules: 1) style: values must be static string literals only; NEVER use ternary, concat, variables, or any expression inside style:. If appearance depends on data, split the node with If blocks or use StateStyle conditions; never write style:($cond ? \"a\" : \"b\"). 2) NEVER emit CSS-only skin properties such as border-collapse. 3) Use only services that actually exist in ServiceMap, and keep ServiceDomain / Service names aligned with the declared domainId and serviceId. 4) Prefer simple VL-safe layout props over raw CSS. 5) NEVER bind events directly on <For-*> nodes; bind the event on the interactive child inside the loop instead. 6) NEVER emit deprecated <StateStyle-*> trigger:\"hover\" blocks. Output only valid .sc source."
- }
- ]
- },
- "out": {
- "/{_item.filePath}": "=_result"
- },
- "next": "RETURN"
- },
- {
- "id": "Loop_Apps",
- "meta": {
- "title": "Phase-8 · App Entry Generation (.vx)"
- },
- "source": "=$uiMapJson.apps",
- "mode": "parallel",
- "children": [
- "LLM_800_AppEntry"
- ],
- "next": "Stop_Done"
- },
- {
- "id": "LLM_800_AppEntry",
- "meta": {
- "title": "Agent-8 · .vx App Entry"
- },
- "in": {
- "stream": true,
- "docs": [
- "1",
- "38"
- ],
- "max_tokens": 16000,
- "messages": [
- {
- "role": "user",
- "content": "AppItem:"
- },
- {
- "role": "user",
- "content": "=_item + ''"
- },
- {
- "role": "user",
- "content": "UIMap:"
- },
- {
- "role": "user",
- "content": "=$uiMapJsonStr"
- },
- {
- "role": "user",
- "content": "Compile-safety rules: generate only VL-valid .vx source. Do not invent raw CSS properties, and only reference sections/components that exist in UIMap."
- }
- ]
- },
- "out": {
- "/{_item.filePath}": "=_result"
- },
- "next": "RETURN"
- },
- {
- "id": "Stop_Done",
- "meta": {
- "title": "✅ Code Generation Complete"
- }
- }
- ]
- }
|