app
AI Flow
Public Made by Adomby adom
Adom's AI Flow: a tool to help the AI follow all of the steps it takes to build a board.
← Commit history
Allow remote-reviewed recording without automatic EDA-host capture or raw publication
2 files changed
+16
crates/adom-aiflow/src/main.rs+10@@ -423,6 +423,9 @@ fn publish_clips(r: &Run, dir: &Path, page: &str, push: bool) -> Result<(String, /// After a clip stops: when the run has a page, rebuild and push the clips page. Best effort: a /// failure is said, never a failed step. fn auto_clips(r: &Run, dir: &Path) -> String {+ if std::env::var("AIFLOW_AUTO_PUBLISH_CLIPS").ok().map(|v| matches!(v.trim().to_ascii_lowercase().as_str(), "off" | "false" | "0")).unwrap_or(false) {+ return "Automatic raw-clip publication disabled; publish reviewed, narrated clips explicitly.".into();+ } let Some(pg) = clips_page_of(r) else { return String::new() }; match publish_clips(r, dir, &pg, true) { Ok((s, _)) => s, Err(e) => format!("clips page: {e}") } }@@ -4540,6 +4543,12 @@ fn main() { clip_note.push_str(&format!("clip for {} stopped and pulled; ", prev.clone().unwrap_or_default())); clip_stopped = true; }+ // Recording can be delegated to another host without changing the EDA target.+ // Always settle an existing take above, but never start/focus/capture here when off.+ if std::env::var("AIFLOW_AUTO_CAPTURE").ok().map(|v| matches!(v.trim().to_ascii_lowercase().as_str(), "off" | "false" | "0")).unwrap_or(false) {+ clip_note.push_str("automatic step capture disabled; record reviewed clips on the chosen capture host");+ r.log("clip-auto-disabled", json!({"step":name,"reason":"AIFLOW_AUTO_CAPTURE"}));+ } else { // the fields step films the app's window through `tour fields`: no editor clip for it // a Fusion run films Fusion's own window, the board fitted to it first (a remembered // hwnd can be a KiCad window from before the board, and Fusion keeps whatever zoom it had)@@ -4604,6 +4613,7 @@ fn main() { }, None => clip_note.push_str(&format!("no clip for {name}: no PCB editor open on the test box (capture open first)")), }+ } } r.save().unwrap(); let clips_note = if clip_stopped { auto_clips(&r, &dir) } else { String::new() };
skills/aiflow-live-clips/SKILL.md+6@@ -56,3 +56,9 @@ When a clip stops (`step <next>`, `capture stop`, `finish`, `deliver`, or the cl - Nine clips over about twelve hours: placement, routing and first pours, routing rework (back from the current analysis), pours rework (back from the Fields solve), thermal with the SW throat widened (215 to 50 A/mm2), the Fields walkthrough, the net walkthrough, silkscreen, and the 3D walkthrough. - Two notes were not `ok`: a blank flag that was false (the board sat left of the sampled middle at that zoom; the sheet showed real footage), and a silkscreen take stopped by the guard after 43 minutes with no 10x cut made. - The clips page was added late in the run, after the human asked. Start it at step one.++## Separate recording storage from the EDA host++Honor the user's recording/storage target. An EDA bound to a low-disk laptop does not authorize automatic capture there. Set `AIFLOW_AUTO_CAPTURE=off` to prevent `step` from starting a new window/monitor recording or bringing a recording window forward. A running take is still settled before the next step. This setting does not redirect capture to another host: use the named remote Bridge target explicitly and retain/render raw media there. Explicit `capture start` and tours still require choosing the correct host.++Set `AIFLOW_AUTO_PUBLISH_CLIPS=off` when raw clips require editorial/narration review before wiki publication. This disables automatic raw-clip publication,not explicit reviewed publication or engineering gates. For the electronic-load workflow,use remote footage with Adom TTS,no dead air,and separate player captions;never burn captions into reusable footage. Verify the rendered wiki player and caption control. If automatic capture ignored the storage preference,stop it,mark the take rejected,withdraw its unreviewed player from the clip index,and archive it on the requested host before removing local raw copies.