mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-01 09:29:38 +02:00
5.4 KiB
5.4 KiB
TrustGraph Configuration Dialog Flow
Overview
A configuration wizard system that guides users through TrustGraph deployment setup. Outputs deployment configuration and contextual documentation.
Supports two interfaces:
- Web UI: Step-by-step wizard with visual cards
- CLI: Interactive terminal prompts
Architecture
┌─────────────────────┐
│ trustgraph-flow │ State machine defining wizard steps
│ .yaml │ and transitions
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ Flow Engine │ Executes state machine, collects user input,
│ (Web UI / CLI) │ manages state and backtracking
└──────────┬──────────┘
│
▼
┌──────────────┐
│ Wizard State │ Simple key/value object
│ (JSON) │ e.g., { platform: "gke", model_deployment: "ollama", ... }
└──────┬───────┘
│
┌─────┴─────┐
▼ ▼
┌─────────┐ ┌─────────────┐
│ Output │ │Documentation│
│Transform│ │ Assembler │
└────┬────┘ └──────┬──────┘
│ │
▼ ▼
┌─────────┐ ┌─────────────┐
│Component│ │ README.md │
│ Array │ │ / Checklist │
│ (JSON) │ │ (JSON) │
└─────────┘ └─────────────┘
Key Design Decisions
| Decision | Choice | Rationale |
|---|---|---|
| Flow structure | State machine | Explicit transitions, supports conditional branching |
| Expression language | JSONata | Single language for conditions and transforms |
| Documentation storage | Manifest + markdown fragments | Clean separation, easy to maintain |
| Platform variants | in ['docker-compose', 'podman-compose'] |
Explicit grouping, no hidden logic |
| Template variables | {{var}} syntax |
Simple, familiar |
File Structure
config-dialog-flow/
├── dialog-flow-schema.json # Schema: flow definitions
├── docs-manifest-schema.json # Schema: documentation manifests
├── trustgraph-flow.yaml # Flow: wizard state machine
├── trustgraph-output.jsonata # Transform: state → components
├── trustgraph-docs.yaml # Manifest: state → documentation
└── docs/ # Fragments: markdown content
├── platform/
├── model/
├── storage/
├── gateway/
├── deploy/
└── features/
Data Flow
- Flow engine loads
trustgraph-flow.yaml - User progresses through steps, engine collects state
- On completion:
- Output transform evaluates
trustgraph-output.jsonataagainst state → component array - Doc assembler evaluates
trustgraph-docs.yamlconditions against state → filtered instructions → loads markdown fragments → outputs README or checklist JSON
- Output transform evaluates
Implementation Phases
Phase 1: Core Flow Engine
- Parse YAML flow definition
- Implement state machine executor
- Handle step rendering (title, description, input)
- Evaluate JSONata transition conditions
- Manage wizard state (set values, navigate)
- Implement backtracking (previous step, state rollback)
Phase 2: Input Types
- Select (single choice from options)
- Toggle (boolean)
- Number (with min/max/step)
- Text (free input)
- Skip single-option steps (UX decision)
Phase 3: Output Generation
- Load JSONata transform
- Evaluate against wizard state
- Produce component array JSON
- Package as downloadable ZIP (existing functionality)
Phase 4: Documentation Assembly
- Parse documentation manifest
- Evaluate
whenconditions (JSONata) - Filter to matching instructions
- Load markdown fragments
- Substitute
{{var}}placeholders - Output as README.md (CLI) or checklist JSON (Web)
Phase 5: CLI Interface
- Terminal prompt for each step
- Numbered option selection
- Progress indicator (
[3/12]) - Back command
- Review summary before generate
Phase 6: Web Interface
- Step-by-step card UI
- Progress bar
- Option cards with icons/descriptions
- Back navigation
- Review screen with edit capability
- Generate button
Expression Language
All conditions use JSONata:
platform = 'docker-compose'
platform in ['gke', 'eks', 'aks', 'minikube']
model_deployment = 'ollama' and platform in ['docker-compose', 'podman-compose']
version < '1.6.0'
ocr.enabled = true
State Shape
{
"version": "1.8.18",
"platform": "gke",
"k8s": { "namespace": "trustgraph" },
"graph_store": "cassandra",
"vector_db": "qdrant",
"object_store": "cassandra",
"model_deployment": "ollama",
"max_output_tokens": 2048,
"ocr": { "enabled": true, "engine": "tesseract" },
"embeddings": { "enabled": false }
}
Out of Scope (Future)
- Dual model mode (separate main/RAG models)
- Advanced settings (concurrency, chunking, memory profiles)
- Configuration import/export
- Validation beyond type checking