import * as improvements from '../../../db/repos/improvements.js'; import { recordAudit } from '../../../db/repos/audit.js'; // Dross's hands on the Void itself — CSS layer only, owner-approved, instantly // rollbackable (2.14: "empowered, with a leash"). Server code stays untouchable. export const proposeImprovementTool = { name: 'propose_improvement', description: 'Propose a visual improvement to the Void itself as CSS. NEVER applies directly — the owner approves it in Settings → Dross improvements, and can roll it back instantly. CSS only: no url()/@import. Target existing classes (inspect via context first). Keep each improvement small and single-purpose so rollback stays surgical.', input_schema: { type: 'object', properties: { summary: { type: 'string', description: 'one line: what this changes and why (shown to the owner)' }, css: { type: 'string', description: 'the CSS rules, complete and self-contained' } }, required: ['summary', 'css'] }, async handler({ summary, css }, ctx) { const err = improvements.validateCss(css); if (err) return { error: err }; if (!summary?.trim()) return { error: 'summary required' }; const row = await improvements.create({ summary, css }); await recordAudit({ kind: 'agent', id: ctx.agent?.id ?? null }, 'suggest', 'improvement', row.id, null, { summary }); return { ok: true, id: row.id, note: 'Drafted as a pending improvement. It is NOT live — the owner must approve it in Settings → Dross improvements. Say so plainly.' }; } };