diff --git a/extensions/feishu/src/bitable.ts b/extensions/feishu/src/bitable.ts index 451839edb1f..b8c187ae106 100644 --- a/extensions/feishu/src/bitable.ts +++ b/extensions/feishu/src/bitable.ts @@ -14,6 +14,16 @@ function json(data: unknown) { } type LarkResponse = { code?: number; msg?: string; data?: T }; +type BitableRecordCreatePayload = NonNullable< + Parameters[0] +>; +type BitableRecordUpdatePayload = NonNullable< + Parameters[0] +>; +type BitableRecordFields = NonNullable["fields"]>; +type BitableRecordUpdateFields = NonNullable< + NonNullable["fields"] +>; export class LarkApiError extends Error { readonly code: number; @@ -212,12 +222,11 @@ async function createRecord( client: Lark.Client, appToken: string, tableId: string, - fields: Record, + fields: BitableRecordFields, ) { const res = await client.bitable.appTableRecord.create({ path: { app_token: appToken, table_id: tableId }, - // oxlint-disable-next-line typescript/no-explicit-any - data: { fields: fields as any }, + data: { fields }, }); ensureLarkSuccess(res, "bitable.appTableRecord.create", { appToken, tableId }); @@ -424,12 +433,11 @@ async function updateRecord( appToken: string, tableId: string, recordId: string, - fields: Record, + fields: NonNullable["fields"]>, ) { const res = await client.bitable.appTableRecord.update({ path: { app_token: appToken, table_id: tableId, record_id: recordId }, - // oxlint-disable-next-line typescript/no-explicit-any - data: { fields: fields as any }, + data: { fields }, }); ensureLarkSuccess(res, "bitable.appTableRecord.update", { appToken, tableId, recordId }); @@ -645,7 +653,7 @@ export function registerFeishuBitableTools(api: OpenClawPluginApi) { registerBitableTool<{ app_token: string; table_id: string; - fields: Record; + fields: BitableRecordFields; accountId?: string; }>({ name: "feishu_bitable_create_record", @@ -666,7 +674,7 @@ export function registerFeishuBitableTools(api: OpenClawPluginApi) { app_token: string; table_id: string; record_id: string; - fields: Record; + fields: BitableRecordUpdateFields; accountId?: string; }>({ name: "feishu_bitable_update_record", diff --git a/extensions/feishu/src/docx-batch-insert.ts b/extensions/feishu/src/docx-batch-insert.ts index f60d11b69e4..3416217337e 100644 --- a/extensions/feishu/src/docx-batch-insert.ts +++ b/extensions/feishu/src/docx-batch-insert.ts @@ -78,7 +78,6 @@ function collectDescendants( * @param parentBlockId - Parent block to insert into (defaults to docToken) * @param index - Position within parent's children (-1 = end) */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -- SDK block types async function insertBatch( client: Lark.Client, docToken: string, @@ -125,7 +124,6 @@ async function insertBatch( * each batch advances this by the number of first-level IDs inserted so far. * @returns Inserted children blocks and any skipped block IDs */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -- SDK block types export async function insertBlocksInBatches( client: Lark.Client, docToken: string, diff --git a/extensions/feishu/src/docx-color-text.ts b/extensions/feishu/src/docx-color-text.ts index c52cd551240..fedaff9f408 100644 --- a/extensions/feishu/src/docx-color-text.ts +++ b/extensions/feishu/src/docx-color-text.ts @@ -44,6 +44,11 @@ interface Segment { bold?: boolean; } +type DocxPatchPayload = NonNullable[0]>; +type DocxTextElement = NonNullable< + NonNullable["update_text_elements"]>["elements"] +>[number]; + /** * Parse color markup into segments. * @@ -120,8 +125,7 @@ export async function updateColorText( ) { const segments = parseColorMarkup(content); - // eslint-disable-next-line @typescript-eslint/no-explicit-any -- SDK type - const elements: any[] = segments.map((seg) => ({ + const elements: DocxTextElement[] = segments.map((seg) => ({ text_run: { content: seg.text, text_element_style: { diff --git a/extensions/feishu/src/docx-table-ops.ts b/extensions/feishu/src/docx-table-ops.ts index 1fcd6abfe5f..361917c6ced 100644 --- a/extensions/feishu/src/docx-table-ops.ts +++ b/extensions/feishu/src/docx-table-ops.ts @@ -65,7 +65,6 @@ export function calculateAdaptiveColumnWidths( const cellIds = normalizeChildBlockIds(tableBlock.children); // Build block lookup map - // eslint-disable-next-line @typescript-eslint/no-explicit-any const blockMap = new Map(); for (const block of blocks) { if (block.block_id) { diff --git a/extensions/feishu/src/perm.ts b/extensions/feishu/src/perm.ts index a9d2e062eec..b30aac5a26b 100644 --- a/extensions/feishu/src/perm.ts +++ b/extensions/feishu/src/perm.ts @@ -160,7 +160,6 @@ export function registerFeishuPermTools(api: OpenClawPluginApi) { await removeMember(client, p.token, p.type, p.member_type, p.member_id), ); default: - // eslint-disable-next-line @typescript-eslint/no-explicit-any -- exhaustive check fallback return unknownToolActionResult((p as { action?: unknown }).action); } } catch (err) { diff --git a/extensions/feishu/src/wiki.ts b/extensions/feishu/src/wiki.ts index a2df89ff0fe..02238006621 100644 --- a/extensions/feishu/src/wiki.ts +++ b/extensions/feishu/src/wiki.ts @@ -217,7 +217,6 @@ export function registerFeishuWikiTools(api: OpenClawPluginApi) { case "rename": return jsonToolResult(await renameNode(client, p.space_id, p.node_token, p.title)); default: - // eslint-disable-next-line @typescript-eslint/no-explicit-any -- exhaustive check fallback return unknownToolActionResult((p as { action?: unknown }).action); } } catch (err) {