UNPKG

@fusedashlabs/ui9000-workspace

Version:

UI9000 workspace MCP. One tool, show_workspace, draws a chart from your table. Set TYPESAFE_API_KEY to let Jev choose the chart.

41 lines (40 loc) • 1.18 kB
export const AUDIT_VERDICTS = ['approve', 'reject']; const ROW_KEYS = new Set(['rows', 'data']); export function assertAuditHasNoRows(value) { if (Array.isArray(value)) { for (const item of value) assertAuditHasNoRows(item); return; } if (!value || typeof value !== 'object') return; for (const [key, child] of Object.entries(value)) { if (ROW_KEYS.has(key) && Array.isArray(child)) { throw new Error('audit must not contain rows'); } assertAuditHasNoRows(child); } } export function createAuditLog() { const records = []; return { append(record) { assertAuditHasNoRows(record); const frozen = Object.freeze({ ...record }); records.push(frozen); return frozen; }, entries() { return records.map((record) => Object.freeze({ ...record })); }, }; } export function recordVerdict(log, proposal, verdict, recordedAt) { return log.append({ proposalId: proposal.id, action: proposal.action, verdict, preview: proposal.preview, recordedAt, }); }