cbuserguide Workflow & State Machine¶
Data Model¶
App (e.g., "cbapp")
└── Version (e.g., "1.0.0") ← one active at a time
└── Module (e.g., "admin-users", "admin-settings")
└── Artifacts
├── screenshots/
│ ├── users_list.png
│ └── users_new.png
└── markdown/
├── users.md
└── settings.md
State Machine¶
┌─────────────────────────────────────────┐
│ │
▼ │
┌──────────┐ ┌──────────────┐ ┌─────────────┐ ┌───────────┐
│ INIT │───▶│ GENERATING │───▶│ VALIDATING │───▶│ PUBLISHED │
└──────────┘ └──────────────┘ └─────────────┘ └───────────┘
│ │ │ │
│ │ │ │
└─────────────────┴───────────────────┴──────────────────┘
reset
States:
- INIT: Module created, no artifacts yet
- GENERATING: Screenshots and/or markdown being generated
- VALIDATING: Artifacts ready for human review
- PUBLISHED: Approved and live
State Transitions (API)¶
| From | To | Endpoint | Trigger |
|---|---|---|---|
| INIT | GENERATING | POST /modules/{id}/generate | Start generation |
| GENERATING | VALIDATING | (automatic) | Generation complete |
| VALIDATING | PUBLISHED | POST /modules/{id}/publish | Human approval |
| VALIDATING | GENERATING | POST /modules/{id}/regenerate | Request changes |
| ANY | INIT | POST /modules/{id}/reset | Start over |
Module Configuration¶
{
"id": "admin-users",
"name": "User Management",
"paths": ["/users", "/users/new", "/users/{id}"],
"generation_options": {
"screenshots": {
"auto": true,
"manual": false
},
"markdown": {
"auto": true,
"manual": false
}
},
"state": "init",
"artifacts": {
"screenshots": [],
"markdown": []
}
}
API Endpoints¶
Apps¶
GET /api/apps- List appsPOST /api/apps- Create appGET /api/apps/{app_id}- Get app details
Versions¶
GET /api/apps/{app_id}/versions- List versionsPOST /api/apps/{app_id}/versions- Create versionPUT /api/apps/{app_id}/versions/{v}/activate- Set active version
Modules¶
GET /api/versions/{v_id}/modules- List modulesPOST /api/versions/{v_id}/modules- Create moduleGET /api/modules/{id}- Get module detailsPATCH /api/modules/{id}- Update module configDELETE /api/modules/{id}- Delete module
State Transitions¶
POST /api/modules/{id}/generate- INIT → GENERATINGPOST /api/modules/{id}/publish- VALIDATING → PUBLISHEDPOST /api/modules/{id}/regenerate- VALIDATING → GENERATINGPOST /api/modules/{id}/reset- ANY → INIT
Artifacts¶
GET /api/modules/{id}/screenshots- List screenshotsGET /api/modules/{id}/markdown- List markdown filesGET /api/artifacts/{artifact_id}- Get artifact contentPOST /api/modules/{id}/screenshots/upload- Manual uploadPOST /api/modules/{id}/markdown/upload- Manual upload
Generation Options UI (Placebo Checkboxes)¶
┌─────────────────────────────────────────────────┐
│ User Management Module │
├─────────────────────────────────────────────────┤
│ │
│ Screenshots │
│ ┌─────────────────────────────────────────────┐ │
│ │ [x] Auto-generate [ ] Manual upload │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ Markdown Documentation │
│ ┌─────────────────────────────────────────────┐ │
│ │ [x] Auto-generate [ ] Manual upload │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ [ Generate ] [ Reset ] │
└─────────────────────────────────────────────────┘
Directory Structure¶
output/
└── cbapp/
└── 1.0.0/ # version
├── admin-users/ # module
│ ├── screenshots/
│ │ ├── users_list.png
│ │ └── users_new.png
│ └── markdown/
│ └── users.md
└── admin-settings/
├── screenshots/
│ └── settings_*.png
└── markdown/
└── settings.md
Workflow Example¶
-
Create App:
POST /api/apps→{"name": "cbapp", "base_url": "https://testsite.nominate.ai"} -
Create Version:
POST /api/apps/cbapp/versions→{"version": "1.0.0"} -
Create Module:
POST /api/versions/1/modules→ -
Generate:
POST /api/modules/1/generate - Triggers Playwright crawler for screenshots
- Triggers AI for markdown generation
-
State: INIT → GENERATING → VALIDATING
-
Review: Human views artifacts at
/api/modules/1/screenshotsand/api/modules/1/markdown -
Publish or Regenerate:
- Happy:
POST /api/modules/1/publish→ PUBLISHED - Changes needed:
POST /api/modules/1/regenerate→ GENERATING