SyntheticMDProductions commited on
Commit
e0265b9
·
verified ·
1 Parent(s): 741ead5

Some of Adams structure

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +11 -0
  2. .gitignore +11 -0
  3. ADAM.spec +74 -0
  4. Build ADAM.exe.ps1 +25 -0
  5. Launch ADAM.bat +61 -0
  6. README.md +346 -0
  7. adam/__init__.py +4 -0
  8. adam/__pycache__/__init__.cpython-310.pyc +0 -0
  9. adam/__pycache__/__init__.cpython-311.pyc +0 -0
  10. adam/__pycache__/app.cpython-310.pyc +0 -0
  11. adam/__pycache__/app.cpython-311.pyc +0 -0
  12. adam/__pycache__/assets.cpython-310.pyc +0 -0
  13. adam/__pycache__/assets.cpython-311.pyc +0 -0
  14. adam/__pycache__/atlas.cpython-310.pyc +0 -0
  15. adam/__pycache__/atlas.cpython-311.pyc +0 -0
  16. adam/__pycache__/commands.cpython-310.pyc +0 -0
  17. adam/__pycache__/commands.cpython-311.pyc +0 -0
  18. adam/__pycache__/config.cpython-310.pyc +0 -0
  19. adam/__pycache__/config.cpython-311.pyc +0 -0
  20. adam/__pycache__/eve.cpython-310.pyc +0 -0
  21. adam/__pycache__/eve.cpython-311.pyc +0 -0
  22. adam/__pycache__/executor.cpython-310.pyc +0 -0
  23. adam/__pycache__/executor.cpython-311.pyc +0 -0
  24. adam/__pycache__/external_tools.cpython-310.pyc +0 -0
  25. adam/__pycache__/external_tools.cpython-311.pyc +0 -0
  26. adam/__pycache__/generation_previews.cpython-310.pyc +0 -0
  27. adam/__pycache__/generation_previews.cpython-311.pyc +0 -0
  28. adam/__pycache__/generations.cpython-310.pyc +0 -0
  29. adam/__pycache__/generations.cpython-311.pyc +0 -0
  30. adam/__pycache__/job_manager.cpython-310.pyc +0 -0
  31. adam/__pycache__/job_manager.cpython-311.pyc +0 -0
  32. adam/__pycache__/logging_setup.cpython-310.pyc +0 -0
  33. adam/__pycache__/logging_setup.cpython-311.pyc +0 -0
  34. adam/__pycache__/models.cpython-310.pyc +0 -0
  35. adam/__pycache__/models.cpython-311.pyc +0 -0
  36. adam/__pycache__/monitoring.cpython-310.pyc +0 -0
  37. adam/__pycache__/monitoring.cpython-311.pyc +0 -0
  38. adam/__pycache__/nova.cpython-310.pyc +0 -0
  39. adam/__pycache__/nova.cpython-311.pyc +0 -0
  40. adam/__pycache__/ollama.cpython-310.pyc +0 -0
  41. adam/__pycache__/ollama.cpython-311.pyc +0 -0
  42. adam/__pycache__/orion.cpython-310.pyc +0 -0
  43. adam/__pycache__/orion.cpython-311.pyc +0 -0
  44. adam/__pycache__/planner.cpython-310.pyc +0 -0
  45. adam/__pycache__/planner.cpython-311.pyc +3 -0
  46. adam/__pycache__/process_control.cpython-310.pyc +0 -0
  47. adam/__pycache__/process_control.cpython-311.pyc +0 -0
  48. adam/__pycache__/registry.cpython-310.pyc +0 -0
  49. adam/__pycache__/registry.cpython-311.pyc +0 -0
  50. adam/__pycache__/showcase.cpython-310.pyc +0 -0
.gitattributes CHANGED
@@ -33,3 +33,14 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ adam/__pycache__/planner.cpython-311.pyc filter=lfs diff=lfs merge=lfs -text
37
+ adam/ui/__pycache__/main_window.cpython-310.pyc filter=lfs diff=lfs merge=lfs -text
38
+ adam/ui/__pycache__/main_window.cpython-311.pyc filter=lfs diff=lfs merge=lfs -text
39
+ adam/ui/__pycache__/studio.cpython-311.pyc filter=lfs diff=lfs merge=lfs -text
40
+ assets/adam_atom.ico filter=lfs diff=lfs merge=lfs -text
41
+ assets/adam_atom.png filter=lfs diff=lfs merge=lfs -text
42
+ build/ADAM/ADAM.exe filter=lfs diff=lfs merge=lfs -text
43
+ build/ADAM/ADAM.pkg filter=lfs diff=lfs merge=lfs -text
44
+ build/ADAM/PYZ-00.pyz filter=lfs diff=lfs merge=lfs -text
45
+ build/ADAM/xref-ADAM.html filter=lfs diff=lfs merge=lfs -text
46
+ tests/__pycache__/test_generations.cpython-311-pytest-8.4.2.pyc filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ __pycache__/
2
+ *.py[cod]
3
+ .pytest_cache/
4
+ .venv/
5
+ venv/
6
+ logs/*.log
7
+ data/projects/*
8
+ !data/projects/.gitkeep
9
+ config/settings.local.json
10
+ *.tmp
11
+
ADAM.spec ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- mode: python ; coding: utf-8 -*-
2
+ from PyInstaller.utils.hooks import collect_submodules
3
+
4
+
5
+ hiddenimports = (
6
+ collect_submodules("adam.tools")
7
+ + collect_submodules("transformers.models.dinov2")
8
+ + ["transformers", "torch", "PIL"]
9
+ )
10
+
11
+ a = Analysis(
12
+ ["main.py"],
13
+ pathex=[],
14
+ binaries=[],
15
+ datas=[
16
+ ("assets/adam_atom.png", "assets"),
17
+ ("config/tools.json", "config"),
18
+ ("config/settings.json", "config"),
19
+ ("config/external_tools.json", "config"),
20
+ ],
21
+ hiddenimports=hiddenimports,
22
+ hookspath=[],
23
+ hooksconfig={},
24
+ runtime_hooks=[],
25
+ # Some ML/scientific packages advertise optional Qt integrations. ADAM uses
26
+ # PySide6 exclusively, and PyInstaller cannot bundle multiple Qt bindings.
27
+ excludes=[
28
+ "PyQt5",
29
+ "PyQt6",
30
+ "PySide2",
31
+ "IPython",
32
+ "jupyter",
33
+ "matplotlib",
34
+ "nltk",
35
+ "notebook",
36
+ "pandas",
37
+ "pytest",
38
+ "sklearn",
39
+ "tensorboard",
40
+ "tensorflow",
41
+ "torch.utils.tensorboard",
42
+ ],
43
+ noarchive=False,
44
+ optimize=0,
45
+ )
46
+ pyz = PYZ(a.pure)
47
+
48
+ exe = EXE(
49
+ pyz,
50
+ a.scripts,
51
+ [],
52
+ exclude_binaries=True,
53
+ name="ADAM",
54
+ debug=False,
55
+ bootloader_ignore_signals=False,
56
+ strip=False,
57
+ upx=True,
58
+ console=False,
59
+ disable_windowed_traceback=False,
60
+ argv_emulation=False,
61
+ target_arch=None,
62
+ codesign_identity=None,
63
+ entitlements_file=None,
64
+ icon="assets/adam_atom.ico",
65
+ )
66
+ coll = COLLECT(
67
+ exe,
68
+ a.binaries,
69
+ a.datas,
70
+ strip=False,
71
+ upx=True,
72
+ upx_exclude=[],
73
+ name="ADAM",
74
+ )
Build ADAM.exe.ps1 ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ $ErrorActionPreference = "Stop"
2
+ Set-Location -LiteralPath $PSScriptRoot
3
+
4
+ $ErrorActionPreference = "Continue"
5
+ python -c "import PyInstaller" 2>$null
6
+ $pyInstallerMissing = $LASTEXITCODE -ne 0
7
+ $ErrorActionPreference = "Stop"
8
+ if ($pyInstallerMissing) {
9
+ python -m pip install pyinstaller
10
+ if ($LASTEXITCODE -ne 0) { throw "PyInstaller installation failed." }
11
+ }
12
+
13
+ python -c "from PIL import Image; image=Image.open(r'assets/adam_atom.png').convert('RGBA'); image.save(r'assets/adam_atom.ico', sizes=[(16,16),(24,24),(32,32),(48,48),(64,64),(128,128),(256,256)])"
14
+ if ($LASTEXITCODE -ne 0) { throw "ADAM icon creation failed." }
15
+
16
+ python -m PyInstaller --noconfirm ADAM.spec
17
+ if ($LASTEXITCODE -ne 0) { throw "ADAM executable build failed." }
18
+
19
+ $portableAssets = Join-Path $PSScriptRoot "dist\ADAM\assets"
20
+ New-Item -ItemType Directory -Force -Path $portableAssets | Out-Null
21
+ Copy-Item -LiteralPath (Join-Path $PSScriptRoot "assets\adam_atom.png") -Destination $portableAssets -Force
22
+
23
+ Write-Host ""
24
+ Write-Host "ADAM.exe was created at:"
25
+ Write-Host (Join-Path $PSScriptRoot "dist\ADAM\ADAM.exe")
Launch ADAM.bat ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @echo off
2
+ setlocal
3
+ cd /d "%~dp0"
4
+ python -c "import yt_dlp, cv2, numpy" 2>nul
5
+ if errorlevel 1 (
6
+ echo Installing the ADAM Video Dataset Collector requirements...
7
+ python -m pip install -r "%~dp0requirements.txt"
8
+ if errorlevel 1 goto :adam_dependency_error
9
+ )
10
+ python -c "import selenium, requests, PIL" 2>nul
11
+ if errorlevel 1 (
12
+ echo Installing the Dataset Collector requirements for ADAM...
13
+ python -m pip install -r "D:\Users\PlayRobloxAllDay\Desktop\Programs\GoogleImageDatasetCollector\requirements.txt"
14
+ if errorlevel 1 goto :dependency_error
15
+ )
16
+ python -c "import datasets, diffusers, transformers, accelerate, torch, torchvision" 2>nul
17
+ if errorlevel 1 (
18
+ echo Installing the DDPM training requirements for ADAM...
19
+ python -m pip install -r "D:\Users\PlayRobloxAllDay\Desktop\Programs\DDPM\requirements.txt"
20
+ if errorlevel 1 goto :ddpm_dependency_error
21
+ )
22
+ python main.py
23
+ if errorlevel 1 (
24
+ echo.
25
+ echo ADAM could not start. Install the requirements with:
26
+ echo python -m pip install -r requirements.txt
27
+ echo.
28
+ pause
29
+ )
30
+ endlocal
31
+ exit /b
32
+
33
+ :adam_dependency_error
34
+ echo.
35
+ echo ADAM could not install its Video Dataset Collector requirements.
36
+ echo Run this command with the same Python used to start ADAM:
37
+ echo python -m pip install -r "%~dp0requirements.txt"
38
+ echo.
39
+ pause
40
+ endlocal
41
+ exit /b
42
+
43
+ :dependency_error
44
+ echo.
45
+ echo ADAM could not install the Dataset Collector requirements.
46
+ echo Run this command and then launch ADAM again:
47
+ echo python -m pip install -r "D:\Users\PlayRobloxAllDay\Desktop\Programs\GoogleImageDatasetCollector\requirements.txt"
48
+ echo.
49
+ pause
50
+ endlocal
51
+ exit /b
52
+
53
+ :ddpm_dependency_error
54
+ echo.
55
+ echo ADAM could not install the DDPM training requirements.
56
+ echo Run this command and then launch ADAM again:
57
+ echo python -m pip install -r "D:\Users\PlayRobloxAllDay\Desktop\Programs\DDPM\requirements.txt"
58
+ echo.
59
+ pause
60
+ endlocal
61
+ exit /b
README.md ADDED
@@ -0,0 +1,346 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # ADAM — AI Development and Automation Manager
2
+
3
+ ADAM is a local, safety-first desktop hub for orchestrating AI project tools.
4
+ It includes registered dataset, DDPM, and SDXL LoRA workflows with background
5
+ planning, approval gates, progress reporting, and persistent asset history.
6
+
7
+ Dataset preparation, captioning, and preview placeholders remain clearly marked
8
+ as demo tools. The connected Dataset Collector, DDPM trainer, and Local SDXL
9
+ LoRA Trainer use real adapters and never fall back to simulated training.
10
+
11
+ Existing program folders can be connected from **Settings → Tool folders**.
12
+ ADAM stores only the path and scans for likely entry points; it does not copy or
13
+ modify the external project. Folder assignments can also be pasted into chat:
14
+
15
+ ```text
16
+ DDPM Trainer: D:\AI\DDPM
17
+ Flow Matching Trainer: D:\AI\FlowMatchImageGenerator
18
+ ```
19
+
20
+ Detection does not automatically authorize training. A real training adapter
21
+ remains gated until its dataset, model name, run settings, and output location
22
+ are explicit.
23
+
24
+ ## Training agents
25
+
26
+ ADAM's training lifecycle is divided into four explainable responsibilities:
27
+
28
+ - **EVE** reviews dataset membership and leaves uncertain images for the user.
29
+ - **ORION** reviews planned epochs, batch size, resolution, image exposures, and
30
+ estimated optimizer steps. He can require approval but never silently changes
31
+ the requested settings. In the Model Creation Assistant, **ORION: apply a
32
+ starting recipe** fills a conservative, editable draft from the image count
33
+ and selected resolution before a plan is built.
34
+ - **ATLAS** watches active training for non-finite loss, sustained critical GPU
35
+ temperature, critically low disk space, stalls, and large runtime overruns.
36
+ Critical conditions pause the trainer process tree so the user can inspect it.
37
+ - **NOVA** examines available post-training previews and samples for unreadable
38
+ files and exact-looking duplicate collapse. Her report explicitly separates
39
+ technical sample health from subjective or subject-quality review.
40
+
41
+ ORION, ATLAS, and NOVA reports are stored with each durable job record and are
42
+ shown in Current Plan, Active Job, and Jobs / History respectively. ATLAS's
43
+ default thresholds can be overridden in `config/settings.json` with the
44
+ `atlas_*` settings defined in `adam/config.py`.
45
+
46
+ ## Real image collection
47
+
48
+ When a valid Dataset Collector folder is connected, the `dataset_collector`
49
+ registry entry uses ADAM's real visible-browser adapter. After plan approval it:
50
+
51
+ - opens Bing Images in a normal visible Chrome window;
52
+ - waits when consent/CAPTCHA/human-verification text is detected;
53
+ - resumes automatically after the user resolves the page;
54
+ - downloads valid images at least 256×256;
55
+ - removes exact duplicate downloads;
56
+ - writes a matching `.txt` caption beside every image; and
57
+ - records URLs, captions, sources, and dimensions in `metadata.csv`.
58
+
59
+ No CAPTCHA or website restriction is bypassed. Closing Chrome or stopping the
60
+ job ends collection safely. A new timestamped dataset folder is used rather
61
+ than overwriting an existing collection.
62
+
63
+ ADAM keeps an incomplete DDPM request in conversation memory. A follow-up such
64
+ as `dataset folder Mario, model name Mario V2, epoch count 100, output D:\Runs`
65
+ fills the pending fields and validates named datasets against the connected
66
+ collector. It will not start if the dataset cannot be found.
67
+
68
+ ## Showcase videos
69
+
70
+ The **Showcase Video** workspace creates a finished MP4 directly from completed
71
+ DDPM and Flow Matching models. Select and reorder the models, choose 12–24
72
+ images per model, a 3-, 4-, or 5-second image duration, shared steps and aspect
73
+ ratio, provider-compatible samplers, seed, and 720p or 1080p output. ADAM runs
74
+ the image batches sequentially and then renders a request-list interface that
75
+ tracks the active model, image number, trainer, steps, sampler, and aspect ratio.
76
+ LoRA models are intentionally excluded from this streamlined workflow.
77
+
78
+ When Ollama is reachable, messages that are not workflow commands receive a
79
+ short conversational answer. Ollama may explain or plan, but it still cannot
80
+ bypass the registry or confirmation gates.
81
+
82
+ ## Web search in Chat Mode
83
+
84
+ Chat Mode can give local Ollama current web context without an API key. Enable
85
+ it in **Settings → Planning model**, then ask naturally, for example:
86
+
87
+ ```text
88
+ Search the web for Dandy's World character ideas.
89
+ What are the latest Ollama release notes?
90
+ Look up a reference for a cyberpunk city character.
91
+ ```
92
+
93
+ ADAM sends only that search query to Bing's public results feed, reads the
94
+ result titles and snippets,
95
+ and passes up to five titles, snippets, and links to Ollama. It does not open
96
+ the result pages, download anything, or let web content run tools. Results are
97
+ untrusted reference material, so ADAM is instructed to cite the links and flag
98
+ uncertainty. Disable the setting to keep Chat Mode fully local.
99
+
100
+ When you explicitly ask ADAM to **read**, **open**, or **research** result links,
101
+ it can read up to three public HTML/text pages and give Ollama short extracts.
102
+ For example: `Search the web for Undertale character ideas and read the most
103
+ relevant links.` Direct links can be read with `Read https://example.com/ and
104
+ summarize it.` Private/local addresses, non-web protocols, oversized pages,
105
+ downloads, and more than three pages are blocked. This control can be disabled
106
+ in Settings.
107
+
108
+ Planning runs away from the interface thread, and conversational Ollama output
109
+ is streamed into the chat. ADAM validates training commands against a strict
110
+ schema and each registered trainer's declared capabilities before offering a
111
+ job.
112
+
113
+ In **Settings → Planning model**, **Chat response length** sets the maximum
114
+ number of generated tokens for a Chat Mode reply. Higher values allow longer
115
+ research summaries but use more time and GPU memory. The default is 1,024,
116
+ which gives Qwen3 enough room to reason and still produce a visible response.
117
+
118
+ ADAM stores friendly dataset/model names, paths, trainer types, epochs, and
119
+ resume checkpoints in `data/assets.json`. Requests such as:
120
+
121
+ ```text
122
+ From the Mario dataset, train it on a DDPM for 300 epochs.
123
+ With the Mario dataset, train it on a LoRA for 100 epochs.
124
+ Continue the Mario model from the DDPM for 50 epochs.
125
+ ```
126
+
127
+ are resolved to real paths before approval. Continuation is offered only when a
128
+ compatible checkpoint exists. New DDPM runs retain the latest resume checkpoint.
129
+
130
+ ## Run
131
+
132
+ ```powershell
133
+ python main.py
134
+ ```
135
+
136
+ On Windows, you can also double-click `Launch ADAM.bat`.
137
+
138
+ The app requires Python 3.10+ and PySide6. Optional integrations use `psutil`
139
+ for system information and `pynvml` for NVIDIA GPU information.
140
+
141
+ ```powershell
142
+ python -m pip install -r requirements.txt
143
+ ```
144
+
145
+ Try:
146
+
147
+ - Click **Create a model…** in Trainer Mode for the guided Model Creation Assistant.
148
+ - `Adam, train a LoRA of Hatsune Miku`
149
+ - `Adam, collect a dataset of liminal spaces`
150
+ - `Adam, generate previews`
151
+ - `Adam, check GPU status`
152
+ - `From the Mario dataset, train it on a DDPM for 300 epochs`
153
+ - `With the Mario dataset, train it on a LoRA for 100 epochs`
154
+
155
+ Training and large collection plans are never started until you approve the
156
+ plan. All actions are recorded in `logs/adam.log`, while project artifacts live
157
+ under `data/projects/`.
158
+
159
+ The Model Creation Assistant can start from a built-in Character LoRA, Style
160
+ LoRA, DDPM, or Flow Matching preset. It can create a dataset or select a
161
+ registered one, recommends starting values, and saves personal presets. The
162
+ result still goes through ADAM's normal validated planner and approval gate.
163
+ Use **+ Add model** to build a multi-model training batch. Each wide model tab
164
+ keeps its own dataset, trainer, name, and settings; the minus button removes an
165
+ unwanted model, and tabs can be dragged to change the run order. ADAM validates
166
+ all models, presents one combined approval plan, and runs them sequentially so
167
+ only one training workflow uses the GPU at a time. A failed step stops the batch
168
+ before a later model starts.
169
+ Before approval, ADAM adds checks for connected tools, dataset contents, the
170
+ LoRA base model, and output-drive free space. Completed dataset and training
171
+ jobs also include a suggested next step.
172
+
173
+ ### Model Batch Builder
174
+
175
+ Use **Create model batch…** to paste one requested subject per line. ADAM turns
176
+ the list into editable model tabs, removes duplicate names, and lets the current
177
+ trainer recipe be applied to any multi-selection of models. The batch is saved
178
+ as a draft so it can be closed and resumed later.
179
+
180
+ For a review-first workflow, choose **Collect missing datasets first**. This
181
+ queues only sequential dataset collection and leaves training in the saved
182
+ draft. After collection, reopen the draft, use **Find collected datasets**, and
183
+ review each dataset in Training Studio. **Exclude rejected** moves rejected
184
+ images out of the training folder into a recoverable quarantine, and **Restore
185
+ excluded** reverses it. **Keep all images** marks the whole selected dataset as
186
+ accepted in one action, after which individual bad images can still be rejected.
187
+ Training remains locked until each model is explicitly
188
+ marked as reviewed and ready. If every linked dataset is acceptable as-is,
189
+ **Approve all datasets** marks the entire batch ready after one confirmation;
190
+ it does not inspect individual images or apply pending rejection decisions.
191
+
192
+ Completed Flow Matching models can be selected in **Fine-tune**. ADAM uses the
193
+ saved Flow model folder as the continuation source, locks the continuation to
194
+ the model's original resolution, and writes the fine-tuned result to a new
195
+ output folder. This continues the saved weights while starting a fresh optimizer
196
+ and learning-rate schedule; it does not overwrite the original model.
197
+
198
+ ## Training Studio
199
+
200
+ The **Training Studio** turns completed work into a reviewable experiment loop:
201
+
202
+ - **Datasets** provides an image gallery, keep/reject decisions, caption editing,
203
+ exact duplicate detection, and visually similar duplicate candidates.
204
+ - **Experiments** compares job settings and outcomes, opens outputs, marks a
205
+ preferred model, and converts successful settings into reusable recipes.
206
+ - **Checkpoint Lab** browses model checkpoints and output images, records
207
+ consistent prompt/seed evaluations, and sends preview requests through the
208
+ normal approval-aware planner.
209
+ - **Recipes** preserves training starting points and can import or export
210
+ portable JSON recipe files.
211
+
212
+ ### EVE AI Dataset Review
213
+
214
+ In Training Studio → Datasets, **EVE AI Review…** performs a local reference-
215
+ guided visual review. Add one or more good reference images and optional bad
216
+ references, then choose Keep and Reject confidence thresholds. EVE uses a small
217
+ DINOv2 vision model to divide the selected dataset into **Keep**, **Reject**, and
218
+ **Uncertain** galleries with confidence scores. The model is downloaded once on
219
+ first use and subsequent analysis stays local.
220
+
221
+ Nothing is applied automatically. Inspect both sides, double-click images for a
222
+ full view, and move selected results between the three groups before choosing
223
+ **Apply EVE review**. EVE's decisions remain ordinary Training Studio review
224
+ marks: they can be manually changed, and rejected files are not moved until
225
+ **Exclude rejected** is selected. The latest proposal is also saved under
226
+ `data/eve_reviews/` for auditing. Use **Select all in current group** (or
227
+ Ctrl/Shift selection) to move many images at once; EVE transfers only the
228
+ chosen thumbnails so manual sorting stays responsive on large datasets.
229
+
230
+ Training panels show elapsed time, a progress-based ETA, recent logs, and a
231
+ loss sparkline when the connected trainer reports `loss`. Preflight summaries
232
+ include clearly labelled workload, duration, VRAM, and disk estimates. These
233
+ estimates are planning hints rather than hardware guarantees.
234
+
235
+ Create a Model also supports live training previews with a configurable
236
+ epoch interval, prompt, and reproducible seed for each model tab. While a
237
+ training job is active, its newest 256×256 preview appears in the right sidebar
238
+ with the source epoch and next scheduled preview. The full-size trainer output
239
+ can be opened from the card. Built-in adapters may publish previews directly;
240
+ registered DDPM, Flow, LoRA, APVD, MaskGit, and other trainers can also
241
+ participate by writing conventionally named `preview`, `sample`, or `epoch`
242
+ images beneath their declared output folder.
243
+
244
+ ## Generations
245
+
246
+ The **Generations** workspace runs compatible registered image generators
247
+ without opening their separate desktop interfaces. The connected DDPM and Flow
248
+ Matching projects can generate from completed models with a reproducible seed,
249
+ sampler or ODE method, step count, image count, and aspect ratio. Generation
250
+ work uses the normal ADAM job queue, progress reporting, cancellation, and
251
+ logging.
252
+
253
+ Every completed batch is stored under `data/generations/` with its images and a
254
+ `generation.json` sidecar. The history gallery can open an image or batch folder
255
+ and restore the exact settings for another run. DDPM creative notes are stored
256
+ with a batch for organization; they are not presented as text conditioning for
257
+ an unconditional DDPM model.
258
+
259
+ **Generation Cycle…** selects multiple compatible completed models and queues
260
+ one generation step per model. Choose images per model, a shared prompt or
261
+ creative note, starting seed, slideshow duration, looping, fullscreen playback,
262
+ and an optional model/trainer label. When the cycle finishes, ADAM opens the
263
+ results as a local slideshow while preserving every ordinary generation record
264
+ in history.
265
+
266
+ If ADAM discovers a job interrupted by an unexpected shutdown, it offers to
267
+ open Jobs & History. The previous record remains intact and can be retried as a
268
+ new approval-gated job. Job logs can also be exported for troubleshooting.
269
+
270
+ ## Connect an existing tool
271
+
272
+ ADAM supports importable Python functions and command-line Python scripts.
273
+ For a no-code setup, open **Settings → External Tools → Add external tool**.
274
+ Choose the program folder, select its training entry script and important
275
+ configuration files, then review ADAM's static compatibility and safety report.
276
+ The report covers:
277
+
278
+ - detected command-line options and required inputs;
279
+ - likely dataset formats;
280
+ - output and checkpoint behavior;
281
+ - progress reporting;
282
+ - resume-training support; and
283
+ - potentially risky operations visible in the selected entry script.
284
+
285
+ The 1–10 rating measures how clearly the script fits ADAM's safe command-line
286
+ contract. It is not a guarantee that third-party code is harmless. ADAM does
287
+ not execute a script while scanning it, external tools cannot replace built-in
288
+ registry entries, and every external-tool run requires explicit approval.
289
+
290
+ After registration, a tool can be planned with a request such as:
291
+
292
+ ```text
293
+ Run APVD Model Trainer with dataset=D:\DreamData, epochs=20, output=D:\APVD\output
294
+ ```
295
+
296
+ ADAM will ask for any required inputs that were omitted before it offers the
297
+ approval plan.
298
+
299
+ For manual registry configuration, edit the relevant item in
300
+ `config/tools.json`:
301
+
302
+ ```json
303
+ {
304
+ "backend": {
305
+ "type": "python",
306
+ "module": "my_tools.lora",
307
+ "function": "train"
308
+ },
309
+ "demo": false
310
+ }
311
+ ```
312
+
313
+ The function receives a `ToolContext` as its first argument and keyword
314
+ arguments from the approved plan. This keeps training code in one place: your
315
+ existing GUI and ADAM can both call the same backend.
316
+
317
+ For scripts:
318
+
319
+ ```json
320
+ {
321
+ "backend": {
322
+ "type": "script",
323
+ "path": "D:/AI/LoRATrainer/train.py"
324
+ },
325
+ "demo": false
326
+ }
327
+ ```
328
+
329
+ ADAM invokes scripts directly with the current Python interpreter, captures
330
+ stdout/stderr, and never drives another GUI with mouse clicks.
331
+
332
+ ## Safety model
333
+
334
+ - Plans are shown before execution.
335
+ - Long, destructive, or high-volume work requires confirmation.
336
+ - Unregistered tools cannot be invoked.
337
+ - External paths and arguments are validated before execution.
338
+ - The LLM may propose a plan, but only registered tools can execute it.
339
+ - Pause, resume, and cancel controls are available for active jobs.
340
+ - Every tool action and state transition is logged.
341
+
342
+ ## Tests
343
+
344
+ ```powershell
345
+ python -m pytest -q
346
+ ```
adam/__init__.py ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ """ADAM — AI Development and Automation Manager."""
2
+
3
+ __version__ = "0.1.0"
4
+
adam/__pycache__/__init__.cpython-310.pyc ADDED
Binary file (236 Bytes). View file
 
adam/__pycache__/__init__.cpython-311.pyc ADDED
Binary file (264 Bytes). View file
 
adam/__pycache__/app.cpython-310.pyc ADDED
Binary file (1.94 kB). View file
 
adam/__pycache__/app.cpython-311.pyc ADDED
Binary file (3.15 kB). View file
 
adam/__pycache__/assets.cpython-310.pyc ADDED
Binary file (9.31 kB). View file
 
adam/__pycache__/assets.cpython-311.pyc ADDED
Binary file (19.9 kB). View file
 
adam/__pycache__/atlas.cpython-310.pyc ADDED
Binary file (4.38 kB). View file
 
adam/__pycache__/atlas.cpython-311.pyc ADDED
Binary file (7.43 kB). View file
 
adam/__pycache__/commands.cpython-310.pyc ADDED
Binary file (4.14 kB). View file
 
adam/__pycache__/commands.cpython-311.pyc ADDED
Binary file (7.77 kB). View file
 
adam/__pycache__/config.cpython-310.pyc ADDED
Binary file (2.87 kB). View file
 
adam/__pycache__/config.cpython-311.pyc ADDED
Binary file (4.37 kB). View file
 
adam/__pycache__/eve.cpython-310.pyc ADDED
Binary file (7.59 kB). View file
 
adam/__pycache__/eve.cpython-311.pyc ADDED
Binary file (13.5 kB). View file
 
adam/__pycache__/executor.cpython-310.pyc ADDED
Binary file (9.34 kB). View file
 
adam/__pycache__/executor.cpython-311.pyc ADDED
Binary file (18.2 kB). View file
 
adam/__pycache__/external_tools.cpython-310.pyc ADDED
Binary file (12.5 kB). View file
 
adam/__pycache__/external_tools.cpython-311.pyc ADDED
Binary file (24.3 kB). View file
 
adam/__pycache__/generation_previews.cpython-310.pyc ADDED
Binary file (1.95 kB). View file
 
adam/__pycache__/generation_previews.cpython-311.pyc ADDED
Binary file (3.34 kB). View file
 
adam/__pycache__/generations.cpython-310.pyc ADDED
Binary file (13.2 kB). View file
 
adam/__pycache__/generations.cpython-311.pyc ADDED
Binary file (23.5 kB). View file
 
adam/__pycache__/job_manager.cpython-310.pyc ADDED
Binary file (19.2 kB). View file
 
adam/__pycache__/job_manager.cpython-311.pyc ADDED
Binary file (40.3 kB). View file
 
adam/__pycache__/logging_setup.cpython-310.pyc ADDED
Binary file (1.42 kB). View file
 
adam/__pycache__/logging_setup.cpython-311.pyc ADDED
Binary file (2.61 kB). View file
 
adam/__pycache__/models.cpython-310.pyc ADDED
Binary file (5.23 kB). View file
 
adam/__pycache__/models.cpython-311.pyc ADDED
Binary file (8.15 kB). View file
 
adam/__pycache__/monitoring.cpython-310.pyc ADDED
Binary file (2.36 kB). View file
 
adam/__pycache__/monitoring.cpython-311.pyc ADDED
Binary file (4.52 kB). View file
 
adam/__pycache__/nova.cpython-310.pyc ADDED
Binary file (3.22 kB). View file
 
adam/__pycache__/nova.cpython-311.pyc ADDED
Binary file (6.04 kB). View file
 
adam/__pycache__/ollama.cpython-310.pyc ADDED
Binary file (5.52 kB). View file
 
adam/__pycache__/ollama.cpython-311.pyc ADDED
Binary file (10.6 kB). View file
 
adam/__pycache__/orion.cpython-310.pyc ADDED
Binary file (6.93 kB). View file
 
adam/__pycache__/orion.cpython-311.pyc ADDED
Binary file (12.6 kB). View file
 
adam/__pycache__/planner.cpython-310.pyc ADDED
Binary file (52.8 kB). View file
 
adam/__pycache__/planner.cpython-311.pyc ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ae169edb82edce349fc8706aca61f2f58984794b462aa999203aa52af1b92770
3
+ size 100876
adam/__pycache__/process_control.cpython-310.pyc ADDED
Binary file (818 Bytes). View file
 
adam/__pycache__/process_control.cpython-311.pyc ADDED
Binary file (1.25 kB). View file
 
adam/__pycache__/registry.cpython-310.pyc ADDED
Binary file (5.91 kB). View file
 
adam/__pycache__/registry.cpython-311.pyc ADDED
Binary file (11.7 kB). View file
 
adam/__pycache__/showcase.cpython-310.pyc ADDED
Binary file (11.5 kB). View file