# jiangzmj/dia-cad architecture

> Architecture diagram of the GitHub repository jiangzmj/dia-cad, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jiangzmj/dia-cad
- Repository: https://github.com/jiangzmj/dia-cad

## Overview

DIA-CAD turns a STEP model and edit description into an edited CAD model: it prepares model views, predicts visual targets, structures the design intent, then iterates on CadQuery code and verifies the output. The README documents this stage order; sampled handlers show helper-model calls and the edit-harness handoff, while the execution skill exports STEP/STL. Other subsystem links reflect documented capabilities, but their internal call wiring is not fully sampled.

Main entry points: [`src/harness/pipeline/runtime.py`](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/runtime.py) (Stage runtime), [`src/harness/pipeline/edit_harness/loop.py`](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/edit_harness/loop.py) (State-driven edit loop), [`src/harness/pipeline/artifacts.py`](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/artifacts.py) (Run artifacts), [`src/harness/agents/helper.py`](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/agents/helper.py) (Multimodal helper)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_pipeline["Edit pipeline"]
  node_entry["Pipeline entry<br/>[__main__.py]"]
  node_runtime["Stage runtime<br/>[runtime.py]"]
  node_inputs["Input preparation<br/>[inputs.py]"]
  node_orient["Orientation and views<br/>[orient.py]"]
  node_targets["Visual hypotheses<br/>[handlers.py]"]
  node_intent["Structured intent<br/>[handlers.py]"]
  node_feature["Feature probing<br/>[feature_probe.py]"]
  node_edit_handler["Harness stage handler<br/>[handler.py]"]
  node_result_qc["Result verification<br/>[target_qc.py]"]
end

subgraph group_harness["CAD edit harness"]
  node_edit_loop["State-driven edit loop<br/>[loop.py]"]
  node_propose["Edit proposals<br/>[propose.py]"]
  node_execute["CadQuery execution<br/>[cadquery_exec.py]"]
  node_validate["Geometric validation<br/>[validate.py]"]
end

subgraph group_runtime["Model runtime"]
  node_helper["Multimodal helper<br/>[helper.py]"]
  node_router["Provider router<br/>[router.py]"]
  node_oauth["OAuth provider<br/>[chatgpt_oauth.py]"]
  node_compat["Compatible provider<br/>[openai_compat.py]"]
end

subgraph group_artifacts["Artifacts and state"]
  node_artifacts["Run artifacts<br/>[artifacts.py]"]
  node_manifest["Run manifest<br/>[manifest.py]"]
end

node_user(("CAD user"))
node_case["STEP and description"]
node_model_api(("Model API"))
node_cad_output["Verified STEP and STL"]

node_user -->|"starts run"| node_entry
node_case -->|"supplies case"| node_entry
node_entry -->|"starts stages"| node_runtime
node_runtime -->|"prepares input"| node_inputs
node_runtime -->|"runs stage"| node_orient
node_runtime -->|"runs stage"| node_targets
node_runtime -->|"runs stage"| node_intent
node_runtime -->|"runs probe"| node_feature
node_runtime -->|"runs stage"| node_edit_handler
node_runtime -->|"runs verification"| node_result_qc
node_inputs -->|"copies inputs"| node_artifacts
node_orient -->|"writes views"| node_artifacts
node_targets -->|"writes target renders"| node_artifacts
node_intent -->|"writes edit data"| node_artifacts
node_runtime -->|"updates run state"| node_manifest
node_edit_handler -->|"invokes loop"| node_edit_loop
node_edit_loop -->|"requests edits"| node_propose
node_edit_loop -->|"runs generated code"| node_execute
node_edit_loop -->|"checks iteration"| node_validate
node_edit_loop -->|"records history"| node_artifacts
node_execute -->|"exports STEP and STL"| node_cad_output
node_result_qc -->|"verifies output"| node_cad_output
node_targets -->|"requests visual analysis"| node_helper
node_intent -->|"requests structuring"| node_helper
node_result_qc -->|"requests result review"| node_helper
node_helper -->|"sends chat"| node_router
node_router -->|"selects provider"| node_oauth
node_router -.->|"selects provider"| node_compat
node_oauth -->|"calls model"| node_model_api
node_compat -.->|"calls model"| node_model_api

click node_entry "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/__main__.py"
click node_runtime "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/runtime.py"
click node_inputs "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/inputs.py"
click node_orient "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/orient.py"
click node_targets "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/handlers.py"
click node_intent "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/handlers.py"
click node_feature "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/feature_probe.py"
click node_edit_handler "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/edit_harness/handler.py"
click node_edit_loop "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/edit_harness/loop.py"
click node_propose "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/edit_harness/propose.py"
click node_execute "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/skills/cadquery_exec.py"
click node_validate "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/edit_harness/validate.py"
click node_result_qc "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/target_qc.py"
click node_artifacts "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/artifacts.py"
click node_manifest "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/manifest.py"
click node_helper "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/agents/helper.py"
click node_router "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/providers/router.py"
click node_oauth "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/providers/chatgpt_oauth.py"
click node_compat "https://github.com/jiangzmj/dia-cad/blob/main/src/harness/providers/openai_compat.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_entry,node_runtime,node_inputs,node_orient,node_targets,node_intent,node_feature,node_edit_handler,node_result_qc,node_user toneBlue
class node_edit_loop,node_propose,node_execute,node_validate toneAmber
class node_helper,node_router,node_oauth,node_compat,node_model_api toneMint
class node_artifacts,node_manifest toneRose
class node_case,node_cad_output toneIndigo
```

## Components

### Edit pipeline

- [Pipeline entry](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/__main__.py): `src/harness/pipeline/__main__.py`
- [Stage runtime](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/runtime.py): `src/harness/pipeline/runtime.py`
- [Input preparation](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/inputs.py): `src/harness/pipeline/inputs.py`
- [Orientation and views](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/orient.py): `src/harness/pipeline/orient.py`
- [Visual hypotheses](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/handlers.py): `src/harness/pipeline/handlers.py`
- [Structured intent](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/handlers.py): `src/harness/pipeline/handlers.py`
- [Feature probing](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/feature_probe.py): `src/harness/pipeline/feature_probe.py`
- [Harness stage handler](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/edit_harness/handler.py): `src/harness/pipeline/edit_harness/handler.py`
- [Result verification](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/target_qc.py): `src/harness/pipeline/target_qc.py`

### CAD edit harness

- [State-driven edit loop](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/edit_harness/loop.py): `src/harness/pipeline/edit_harness/loop.py`
- [Edit proposals](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/edit_harness/propose.py): `src/harness/pipeline/edit_harness/propose.py`
- [CadQuery execution](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/skills/cadquery_exec.py): `src/harness/pipeline/skills/cadquery_exec.py`
- [Geometric validation](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/edit_harness/validate.py): `src/harness/pipeline/edit_harness/validate.py`

### Model runtime

- [Multimodal helper](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/agents/helper.py): `src/harness/agents/helper.py`
- [Provider router](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/providers/router.py): `src/harness/providers/router.py`
- [OAuth provider](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/providers/chatgpt_oauth.py): `src/harness/providers/chatgpt_oauth.py`
- [Compatible provider](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/providers/openai_compat.py): `src/harness/providers/openai_compat.py`

### Artifacts and state

- [Run artifacts](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/artifacts.py): `src/harness/pipeline/artifacts.py`
- [Run manifest](https://github.com/jiangzmj/dia-cad/blob/main/src/harness/pipeline/manifest.py): `src/harness/pipeline/manifest.py`

### Other components

- **CAD user**
- **STEP and description**
- **Model API**
- **Verified STEP and STL**

## Connections

- CAD user → Pipeline entry: starts run
- STEP and description → Pipeline entry: supplies case
- Pipeline entry → Stage runtime: starts stages
- Stage runtime → Input preparation: prepares input
- Stage runtime → Orientation and views: runs stage
- Stage runtime → Visual hypotheses: runs stage
- Stage runtime → Structured intent: runs stage
- Stage runtime → Feature probing: runs probe
- Stage runtime → Harness stage handler: runs stage
- Stage runtime → Result verification: runs verification
- Input preparation → Run artifacts: copies inputs
- Orientation and views → Run artifacts: writes views
- Visual hypotheses → Run artifacts: writes target renders
- Structured intent → Run artifacts: writes edit data
- Stage runtime → Run manifest: updates run state
- Harness stage handler → State-driven edit loop: invokes loop
- State-driven edit loop → Edit proposals: requests edits
- State-driven edit loop → CadQuery execution: runs generated code
- State-driven edit loop → Geometric validation: checks iteration
- State-driven edit loop → Run artifacts: records history
- CadQuery execution → Verified STEP and STL: exports STEP and STL
- Result verification → Verified STEP and STL: verifies output
- Visual hypotheses → Multimodal helper: requests visual analysis
- Structured intent → Multimodal helper: requests structuring
- Result verification → Multimodal helper: requests result review
- Multimodal helper → Provider router: sends chat
- Provider router → OAuth provider: selects provider
- Provider router → Compatible provider: selects provider
- OAuth provider → Model API: calls model
- Compatible provider → Model API: calls model
