feat: maximize sorter demo realism and add safe agent MVP
Wire live classifyItem into continuous playback, add jam/E-stop cases, presenter controls (seek/speed/hotkeys), quality modes, demo scripts, audit docs, and a verify-only autonomous agent CLI with hard safety limits. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
25
src/App.tsx
25
src/App.tsx
@@ -22,7 +22,12 @@ import {
|
||||
resumePlayback,
|
||||
stopPlayback,
|
||||
updatePlayback,
|
||||
seekToCase,
|
||||
seekNextCase,
|
||||
seekPrevCase,
|
||||
setPlaybackSpeed,
|
||||
type ContinuousPlaybackState,
|
||||
type PlaybackSpeed,
|
||||
} from './domain/continuousPlayback';
|
||||
|
||||
function scrollToId(id: string) {
|
||||
@@ -236,6 +241,22 @@ function AppContent() {
|
||||
setPlayback(stopPlayback);
|
||||
}, []);
|
||||
|
||||
const handleSeekCase = useCallback((index: number) => {
|
||||
setPlayback((prev) => seekToCase(prev, index));
|
||||
}, []);
|
||||
|
||||
const handleSeekNext = useCallback(() => {
|
||||
setPlayback((prev) => seekNextCase(prev));
|
||||
}, []);
|
||||
|
||||
const handleSeekPrev = useCallback(() => {
|
||||
setPlayback((prev) => seekPrevCase(prev));
|
||||
}, []);
|
||||
|
||||
const handleSetSpeed = useCallback((speed: PlaybackSpeed) => {
|
||||
setPlayback((prev) => setPlaybackSpeed(prev, speed));
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<Routes>
|
||||
<Route
|
||||
@@ -246,6 +267,10 @@ function AppContent() {
|
||||
onPlay={handleMainPlay}
|
||||
onPause={handleMainPause}
|
||||
onStop={handleMainStop}
|
||||
onSeekCase={handleSeekCase}
|
||||
onSeekNext={handleSeekNext}
|
||||
onSeekPrev={handleSeekPrev}
|
||||
onSetSpeed={handleSetSpeed}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user