refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771)

Codebase-wide sweep bringing the web client into strict compliance with the AGENTS.md TypeScript and Mantine/React conventions: ~170 inline 2+-static-prop elements extracted to named .withProps() constants across ~77 files, the AGENTS.md rule wording tightened to match (static-prop boundary + Accordion/Transition/data-*/Box exemptions), a real ScreenStage Box->Flex layout regression fixed (direction: column) with a Storybook regression guard, and an App.tsx double-cast tightened. Closes #1762.
This commit is contained in:
Cliff Hall 2026-07-25 11:38:49 -04:00 • committed by GitHub
commit da37692485
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -164,6 +164,23 @@ export function ToolsScreen({
: undefined;
const isExecuting = callState?.status === "pending";
const handleSelectTool = (name: string) => {
// Seed the form with the tool's schema defaults so default-only fields the
// user never edits are still sent on execute (the form shows defaults via
// resolveValue, but onChange only writes edited fields).
const tool = tools.find((t) => t.name === name);
// `name` always comes from the rendered tools list (ToolControls only emits
// names it was given), so the lookup never misses; the empty-object fallback
// is an unreachable defensive default.
let nextFormValues: Record<string, unknown> = {};
/* v8 ignore next -- unreachable: onSelectTool always names a tool in the list */
if (tool)
nextFormValues = collectSchemaDefaults(
toFormSchema(tool.inputSchema) ?? {},
);
onUiChange({ ...ui, selectedToolName: name, formValues: nextFormValues });
};
return (
<ScreenLayout>
<Sidebar>
@ -177,27 +194,7 @@ export function ToolsScreen({
onRefreshList={onRefreshList}
pagination={pagination}
onSearchChange={(value) => onUiChange({ ...ui, search: value })}
onSelectTool={(name) => {
// Seed the form with the tool's schema defaults so default-only
// fields the user never edits are still sent on execute (the
// form shows defaults via resolveValue, but onChange only writes
// edited fields).
const tool = tools.find((t) => t.name === name);
// `name` always comes from the rendered tools list (ToolControls
// only emits names it was given), so the lookup never misses; the
// empty-object fallback is an unreachable defensive default.
let formValues: Record<string, unknown> = {};
/* v8 ignore next -- unreachable: onSelectTool always names a tool in the list */
if (tool)
formValues = collectSchemaDefaults(
toFormSchema(tool.inputSchema) ?? {},
);
onUiChange({
...ui,
selectedToolName: name,
formValues,
});
}}
onSelectTool={handleSelectTool}
/>
</SidebarCard>
</Sidebar>