# hkoueke/devtoolbox architecture

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

- Interactive diagram: https://gitdiagram.com/hkoueke/devtoolbox
- Repository: https://github.com/hkoueke/devtoolbox

## Overview

DevToolbox est une boîte à outils console pour Azure DevOps Server ; son outil livré, varcompare, compare en lecture seule les variables de plusieurs groupes. Le parcours principal identifie un projet, liste et fait choisir les groupes, les relit, puis construit et affiche une comparaison navigable avec états explicites pour les valeurs absentes, vides, secrètes ou indéterminées. Les reprises réconcilient la sélection et relisent les groupes ; les points de contrôle ne conservent pas les valeurs. Le graphe suit les étapes documentées et les responsabilités visibles dans les extraits ; certains liens internes non échantillonnés sont omis.

Main entry points: [`src/DevToolbox.Application/Runs/SequentialStepRunner.cs`](https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Application/Runs/SequentialStepRunner.cs) (Exécution séquentielle), [`src/DevToolbox.Console/Program.cs`](https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Console/Program.cs) (Racine console), [`tools/VarCompare/DevToolbox.Tools.VarCompare.Presentation/VarCompareTool.cs`](https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Presentation/VarCompareTool.cs) (Outil varcompare), [`src/DevToolbox.Infrastructure/AzureDevOps/AzureDevOpsClient.cs`](https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Infrastructure/AzureDevOps/AzureDevOpsClient.cs) (Client Azure DevOps)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Console et exécution"]
  node_program["Racine console<br/>[Program.cs]"]
  node_shell["Navigation shell<br/>[ShellNavigator.cs]"]
end

subgraph group_workflow["Parcours varcompare"]
  node_tool["Outil varcompare<br/>[VarCompareTool.cs]"]
  node_runner["Exécution séquentielle"]
  node_identify["Identifier projet"]
  node_folder["Contexte dépôt"]
  node_list["Lister groupes<br/>[ListGroupsStep.cs]"]
  node_select["Choisir groupes"]
  node_retrieve["Relire groupes"]
  node_build["Construire comparaison"]
  node_comparison["Modèle comparaison"]
end

subgraph group_azure["Accès Azure DevOps"]
  node_gateway["Passerelle groupes"]
  node_reader["Lecteur API"]
  node_client["Client Azure DevOps"]
  node_auth["Auth Windows intégrée"]
end

subgraph group_state["État et présentation"]
  node_session["Session comparaison"]
  node_presenter["Affichage comparaison"]
  node_resume["Reprise exécution"]
  node_checkpoint[("Points de contrôle")]
  node_settings[("Réglages serveur<br/>[SettingsStore.cs]")]
end

node_user(("Développeur"))
node_ado["Azure DevOps Server"]

node_user -->|"lance"| node_program
node_program -->|"ouvre menus"| node_shell
node_shell -->|"propose outil"| node_user
node_shell -->|"exécute"| node_tool
node_program -->|"lit réglages"| node_settings
node_program -->|"nettoie expirés"| node_checkpoint
node_tool -->|"délègue étapes"| node_runner
node_runner -->|"exécute"| node_identify
node_runner -->|"exécute"| node_list
node_runner -->|"exécute"| node_select
node_runner -->|"exécute"| node_retrieve
node_runner -->|"exécute"| node_build
node_identify -->|"inspecte dépôt"| node_folder
node_list -->|"demande projets et groupes"| node_gateway
node_retrieve -->|"lit groupes choisis"| node_gateway
node_gateway -->|"appelle lecteur"| node_reader
node_reader -->|"envoie requêtes"| node_client
node_client -->|"utilise gestionnaire"| node_auth
node_client -->|"requêtes GET"| node_ado
node_ado -->|"répond données"| node_client
node_build -->|"construit résultat"| node_comparison
node_tool -->|"pilote session"| node_session
node_session -->|"affiche résultat"| node_presenter
node_presenter -->|"montre comparaison"| node_user
node_tool -->|"reprend exécution"| node_resume
node_resume -->|"lit et écrit"| node_checkpoint
node_retrieve -->|"sauvegarde avancement"| node_checkpoint

click node_program "https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Console/Program.cs"
click node_shell "https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Presentation/Shell/ShellNavigator.cs"
click node_tool "https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Presentation/VarCompareTool.cs"
click node_runner "https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Application/Runs/SequentialStepRunner.cs"
click node_identify "https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Steps/IdentifyProjectStep.cs"
click node_folder "https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Infrastructure/WorkingFolderInspector.cs"
click node_list "https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Steps/ListGroupsStep.cs"
click node_select "https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Steps/SelectGroupsStep.cs"
click node_retrieve "https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Steps/RetrieveGroupsStep.cs"
click node_build "https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Steps/BuildComparisonStep.cs"
click node_comparison "https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Comparison/ComparisonBuilder.cs"
click node_gateway "https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Infrastructure/VariableGroupGateway.cs"
click node_reader "https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Infrastructure/AzureDevOps/AzureDevOpsApiReader.cs"
click node_client "https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Infrastructure/AzureDevOps/AzureDevOpsClient.cs"
click node_auth "https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Infrastructure/AzureDevOps/IntegratedAuthHandlerFactory.cs"
click node_session "https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Presentation/ComparisonSession.cs"
click node_presenter "https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Presentation/Rendering/ComparisonPresenter.cs"
click node_resume "https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Presentation/ResumeCoordinator.cs"
click node_checkpoint "https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Infrastructure/Storage/FileRunCheckpointStore.cs"
click node_settings "https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Infrastructure/Storage/SettingsStore.cs"

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_program,node_shell toneBlue
class node_tool,node_runner,node_identify,node_folder,node_list,node_select,node_retrieve,node_build,node_comparison toneAmber
class node_gateway,node_reader,node_client,node_auth,node_ado toneMint
class node_session,node_presenter,node_resume,node_checkpoint,node_settings toneRose
class node_user toneIndigo
```

## Components

### Console et exécution

- [Racine console](https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Console/Program.cs): `src/DevToolbox.Console/Program.cs`
- [Navigation shell](https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Presentation/Shell/ShellNavigator.cs): `src/DevToolbox.Presentation/Shell/ShellNavigator.cs`

### Parcours varcompare

- [Outil varcompare](https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Presentation/VarCompareTool.cs): `tools/VarCompare/DevToolbox.Tools.VarCompare.Presentation/VarCompareTool.cs`
- [Exécution séquentielle](https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Application/Runs/SequentialStepRunner.cs): `src/DevToolbox.Application/Runs/SequentialStepRunner.cs`
- [Identifier projet](https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Steps/IdentifyProjectStep.cs): `tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Steps/IdentifyProjectStep.cs`
- [Contexte dépôt](https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Infrastructure/WorkingFolderInspector.cs): `tools/VarCompare/DevToolbox.Tools.VarCompare.Infrastructure/WorkingFolderInspector.cs`
- [Lister groupes](https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Steps/ListGroupsStep.cs): `tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Steps/ListGroupsStep.cs`
- [Choisir groupes](https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Steps/SelectGroupsStep.cs): `tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Steps/SelectGroupsStep.cs`
- [Relire groupes](https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Steps/RetrieveGroupsStep.cs): `tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Steps/RetrieveGroupsStep.cs`
- [Construire comparaison](https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Steps/BuildComparisonStep.cs): `tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Steps/BuildComparisonStep.cs`
- [Modèle comparaison](https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Comparison/ComparisonBuilder.cs): `tools/VarCompare/DevToolbox.Tools.VarCompare.Core/Comparison/ComparisonBuilder.cs`

### Accès Azure DevOps

- [Passerelle groupes](https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Infrastructure/VariableGroupGateway.cs): `tools/VarCompare/DevToolbox.Tools.VarCompare.Infrastructure/VariableGroupGateway.cs`
- [Lecteur API](https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Infrastructure/AzureDevOps/AzureDevOpsApiReader.cs): `src/DevToolbox.Infrastructure/AzureDevOps/AzureDevOpsApiReader.cs`
- [Client Azure DevOps](https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Infrastructure/AzureDevOps/AzureDevOpsClient.cs): `src/DevToolbox.Infrastructure/AzureDevOps/AzureDevOpsClient.cs`
- [Auth Windows intégrée](https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Infrastructure/AzureDevOps/IntegratedAuthHandlerFactory.cs): `src/DevToolbox.Infrastructure/AzureDevOps/IntegratedAuthHandlerFactory.cs`

### État et présentation

- [Session comparaison](https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Presentation/ComparisonSession.cs): `tools/VarCompare/DevToolbox.Tools.VarCompare.Presentation/ComparisonSession.cs`
- [Affichage comparaison](https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Presentation/Rendering/ComparisonPresenter.cs): `tools/VarCompare/DevToolbox.Tools.VarCompare.Presentation/Rendering/ComparisonPresenter.cs`
- [Reprise exécution](https://github.com/hkoueke/devtoolbox/blob/develop/tools/VarCompare/DevToolbox.Tools.VarCompare.Presentation/ResumeCoordinator.cs): `tools/VarCompare/DevToolbox.Tools.VarCompare.Presentation/ResumeCoordinator.cs`
- [Points de contrôle](https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Infrastructure/Storage/FileRunCheckpointStore.cs): `src/DevToolbox.Infrastructure/Storage/FileRunCheckpointStore.cs`
- [Réglages serveur](https://github.com/hkoueke/devtoolbox/blob/develop/src/DevToolbox.Infrastructure/Storage/SettingsStore.cs): `src/DevToolbox.Infrastructure/Storage/SettingsStore.cs`

### Other components

- **Développeur**
- **Azure DevOps Server**

## Connections

- Développeur → Racine console: lance
- Racine console → Navigation shell: ouvre menus
- Navigation shell → Développeur: propose outil
- Navigation shell → Outil varcompare: exécute
- Racine console → Réglages serveur: lit réglages
- Racine console → Points de contrôle: nettoie expirés
- Outil varcompare → Exécution séquentielle: délègue étapes
- Exécution séquentielle → Identifier projet: exécute
- Exécution séquentielle → Lister groupes: exécute
- Exécution séquentielle → Choisir groupes: exécute
- Exécution séquentielle → Relire groupes: exécute
- Exécution séquentielle → Construire comparaison: exécute
- Identifier projet → Contexte dépôt: inspecte dépôt
- Lister groupes → Passerelle groupes: demande projets et groupes
- Relire groupes → Passerelle groupes: lit groupes choisis
- Passerelle groupes → Lecteur API: appelle lecteur
- Lecteur API → Client Azure DevOps: envoie requêtes
- Client Azure DevOps → Auth Windows intégrée: utilise gestionnaire
- Client Azure DevOps → Azure DevOps Server: requêtes GET
- Azure DevOps Server → Client Azure DevOps: répond données
- Construire comparaison → Modèle comparaison: construit résultat
- Outil varcompare → Session comparaison: pilote session
- Session comparaison → Affichage comparaison: affiche résultat
- Affichage comparaison → Développeur: montre comparaison
- Outil varcompare → Reprise exécution: reprend exécution
- Reprise exécution → Points de contrôle: lit et écrit
- Relire groupes → Points de contrôle: sauvegarde avancement
