refactor(ts-migration): Phase 11 batch 6 — agent and skill components
The fifteen files under `src/components/agents/` (including `skills/`)
and `src/components/skills/`. 15/15 erase byte-identically; bundle hash
unchanged.
Renaming raised 43 errors and 29 of them came from one thing: these
files carry 24 `/** @param {any} props */` annotations, one per
component, and JSDoc stops applying at the extension boundary. Without
them TypeScript infers every destructured prop as required, so a call
site passing seven of nine props is an error — which is how a file that
declared its props `any` ended up with fourteen complaints about missing
`className`. Restoring the author's own declaration as `: any` is not
blanket typing; it is the annotation that was already there, in the only
form that still works.
`Workspace` in `AgentCanvas` was the one component in that file its
author left without the hatch. It now matches its siblings.
The rest were five separate things:
- `React.isValidElement(children)` no longer narrows enough to read
`children.props.id`: React 19 types `ReactElement`'s props as
`unknown`. `isValidElement<any>` says what the `cloneElement` call
beneath it has always assumed. The migration plan predicted this
site by name.
- `useSkillSections(page, placement)` is called with one argument by
`UiEditingProvider`, which its doc comment explicitly permits —
"called with no placement it returns every section on the page". The
parameter simply lacked its optional marker. The marker erases, so
the emitted signature is unchanged.
- `new Date(b.at) - new Date(a.at)` is valueOf coercion, which
JavaScript performs and TypeScript refuses to describe. Cast rather
than rewritten to `.getTime()`: that would change the emitted code,
and this comparison orders the list.
- `Object.values<any>` on a tally, the same inference gap as earlier
batches, which also fixed a `ReactNode` complaint downstream of it.
All fifteen are linted under their new extensions, checked by name.
Measured against `446df7b`:
typecheck 6 errors, down from 9; no new error anywhere
lint exit 0, 0 errors, 289 warnings, 15/15 linted by name
npm test 1684/1691, the same 7 failures verbatim
build exit 0, identical bundle hash 74d17e2d…
type erasure 72/72 byte-identical across Phase 11 so far
No baseline artifact touched.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HBG1wnuRfJKCstGB8Fekr8
This commit is contained in:
@@ -133,7 +133,7 @@ function ListSection({ data }) {
|
||||
function TimelineSection({ data }) {
|
||||
const items = [...(data.items || [])]
|
||||
.filter((item) => item.at)
|
||||
.sort((a, b) => new Date(b.at) - new Date(a.at));
|
||||
.sort((a, b) => (new Date(b.at) as any) - (new Date(a.at) as any));
|
||||
if (data.empty || !items.length) return <EmptyNote>{data.emptyNote}</EmptyNote>;
|
||||
|
||||
return (
|
||||
@@ -308,7 +308,7 @@ function WeightsSection({ data, section, onApply, compact = false }) {
|
||||
if (data?.empty || !rows.length) return <EmptyNote>{data?.emptyNote}</EmptyNote>;
|
||||
|
||||
const current = draft || Object.fromEntries(rows.map((r) => [r.id, Number(r.value) || 0]));
|
||||
const total = Object.values(current).reduce((a, b) => a + b, 0);
|
||||
const total = Object.values<any>(current).reduce((a, b) => a + b, 0);
|
||||
const balanced = total === 100;
|
||||
const dirty = draft !== null && rows.some((r) => (Number(r.value) || 0) !== current[r.id]);
|
||||
|
||||
@@ -49,7 +49,7 @@ import { agentPermitsSkill } from '@/lib/agents/runtime';
|
||||
* from one resolution, or the two would disagree about what a page carries.
|
||||
* Called with no placement it returns every section on the page.
|
||||
*/
|
||||
export function useSkillSections(page, placement) {
|
||||
export function useSkillSections(page, placement?) {
|
||||
const preferences = usePreferences();
|
||||
/**
|
||||
* Who is answering here.
|
||||
@@ -217,7 +217,6 @@ function SkillSection({ skill, section, context }) {
|
||||
);
|
||||
}
|
||||
|
||||
/** @param {any} props */
|
||||
export function SkillSurface({
|
||||
page = '',
|
||||
placement = '',
|
||||
@@ -231,7 +230,7 @@ export function SkillSurface({
|
||||
_customSources = [],
|
||||
_email = '',
|
||||
_onOpenTraining = null,
|
||||
}) {
|
||||
}: any) {
|
||||
const sections = useSkillSections(page, placement);
|
||||
const resolved = useSkillDataContext(context);
|
||||
|
||||
Reference in New Issue
Block a user