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:
29
src/data/resolveItem.ts
Normal file
29
src/data/resolveItem.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* Resolve playlist / scenario item ids, including low-confidence variants (SKU-*-LC).
|
||||
*/
|
||||
|
||||
import type { Item } from '../domain/types';
|
||||
import { getItem, ITEMS } from './items';
|
||||
|
||||
/** Strip -LC suffix and apply low confidence when present. */
|
||||
export function resolveItem(itemId: string): Item {
|
||||
if (itemId.endsWith('-LC')) {
|
||||
const baseId = itemId.slice(0, -3);
|
||||
const base = getItem(baseId);
|
||||
return {
|
||||
...base,
|
||||
id: itemId,
|
||||
confidence: Math.min(base.confidence, 0.58),
|
||||
};
|
||||
}
|
||||
return getItem(itemId);
|
||||
}
|
||||
|
||||
export function findItemOrFallback(itemId: string): Item {
|
||||
try {
|
||||
return resolveItem(itemId);
|
||||
} catch {
|
||||
const stripped = itemId.replace(/-LC$/, '');
|
||||
return ITEMS.find((i) => i.id === stripped) ?? ITEMS[0];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user