diff --git a/CHANGELOG.md b/CHANGELOG.md index a5191ff1a94..75e88ea0956 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ Docs: https://docs.openclaw.ai ### Changes +- TypeScript: enable stricter compiler checks for implicit returns, side-effect imports, overrides, and unused production code. - Build: upgrade workspace package management to pnpm 11 and keep Docker, install, update, and release workflows on the pnpm 11 config surface. (#79414) Thanks @altaywtf. - Models: add provider-level `localService` startup for on-demand local model servers before OpenAI-compatible requests, including one-shot model probes. - Agents: trim default system prompt guidance and send-only message tool schemas to reduce prompt tokens while preserving GPT-5 personality guidance. diff --git a/docs/.generated/plugin-sdk-api-baseline.sha256 b/docs/.generated/plugin-sdk-api-baseline.sha256 index a886f7e74ad..06672938506 100644 --- a/docs/.generated/plugin-sdk-api-baseline.sha256 +++ b/docs/.generated/plugin-sdk-api-baseline.sha256 @@ -1,2 +1,2 @@ -5219fe6237bdf573740840ef3c29631a8465abb73dd60128fb94589384ae2a96 plugin-sdk-api-baseline.json -f63c9723859bb900cf636e5e3fc1349a48563e279ca09e01a7ffafad9efe72f8 plugin-sdk-api-baseline.jsonl +c1d16721a00a26fc578878e508e9a4e2190fe2fadd80534873d0b47ef5e4b513 plugin-sdk-api-baseline.json +cb008db0486c3ba433bfda844a1c2526bb9729afa21f865e0e86f3ad95ac7cfe plugin-sdk-api-baseline.jsonl diff --git a/extensions/codex/src/command-handlers.ts b/extensions/codex/src/command-handlers.ts index a02576c6562..491a61df9a6 100644 --- a/extensions/codex/src/command-handlers.ts +++ b/extensions/codex/src/command-handlers.ts @@ -647,19 +647,12 @@ async function handleCodexDiagnosticsFeedback( text: await previewCodexDiagnosticsFeedbackApproval(deps, ctx, parsed.note), }; } - return await requestCodexDiagnosticsFeedbackApproval( - deps, - ctx, - pluginConfig, - parsed.note, - commandPrefix, - ); + return await requestCodexDiagnosticsFeedbackApproval(deps, ctx, parsed.note, commandPrefix); } async function requestCodexDiagnosticsFeedbackApproval( deps: CodexCommandDeps, ctx: PluginCommandContext, - pluginConfig: unknown, note: string, commandPrefix: string, ): Promise { diff --git a/extensions/discord/src/approval-handler.runtime.ts b/extensions/discord/src/approval-handler.runtime.ts index 4ea278664b9..7dd7be134db 100644 --- a/extensions/discord/src/approval-handler.runtime.ts +++ b/extensions/discord/src/approval-handler.runtime.ts @@ -111,9 +111,9 @@ class ExecApprovalContainer extends DiscordUiContainer { } class ExecApprovalActionButton extends Button { - customId: string; - label: string; - style: ButtonStyle; + override customId: string; + override label: string; + override style: ButtonStyle; constructor(params: { approvalId: string; descriptor: ExecApprovalActionDescriptor }) { super(); diff --git a/extensions/discord/src/components.builders.ts b/extensions/discord/src/components.builders.ts index 5369457f0d1..f36fc6c6447 100644 --- a/extensions/discord/src/components.builders.ts +++ b/extensions/discord/src/components.builders.ts @@ -77,9 +77,9 @@ function createButtonComponent(params: { class DynamicButton extends Button { label = params.spec.label; customId = customId; - style = style; - emoji = params.spec.emoji; - disabled = params.spec.disabled ?? false; + override style = style; + override emoji = params.spec.emoji; + override disabled = params.spec.disabled ?? false; } if (internalCustomId) { return { @@ -137,11 +137,11 @@ function createSelectComponent(params: { } class DynamicStringSelect extends StringSelectMenu { customId = customId; - options = options; - minValues = params.spec.minValues; - maxValues = params.spec.maxValues; - placeholder = params.spec.placeholder; - disabled = false; + override options = options; + override minValues = params.spec.minValues; + override maxValues = params.spec.maxValues; + override placeholder = params.spec.placeholder; + override disabled = false; } return { component: new DynamicStringSelect(), @@ -155,10 +155,10 @@ function createSelectComponent(params: { if (type === "user") { class DynamicUserSelect extends UserSelectMenu { customId = customId; - minValues = params.spec.minValues; - maxValues = params.spec.maxValues; - placeholder = params.spec.placeholder; - disabled = false; + override minValues = params.spec.minValues; + override maxValues = params.spec.maxValues; + override placeholder = params.spec.placeholder; + override disabled = false; } return { component: new DynamicUserSelect(), @@ -168,10 +168,10 @@ function createSelectComponent(params: { if (type === "role") { class DynamicRoleSelect extends RoleSelectMenu { customId = customId; - minValues = params.spec.minValues; - maxValues = params.spec.maxValues; - placeholder = params.spec.placeholder; - disabled = false; + override minValues = params.spec.minValues; + override maxValues = params.spec.maxValues; + override placeholder = params.spec.placeholder; + override disabled = false; } return { component: new DynamicRoleSelect(), @@ -181,10 +181,10 @@ function createSelectComponent(params: { if (type === "mentionable") { class DynamicMentionableSelect extends MentionableSelectMenu { customId = customId; - minValues = params.spec.minValues; - maxValues = params.spec.maxValues; - placeholder = params.spec.placeholder; - disabled = false; + override minValues = params.spec.minValues; + override maxValues = params.spec.maxValues; + override placeholder = params.spec.placeholder; + override disabled = false; } return { component: new DynamicMentionableSelect(), @@ -193,10 +193,10 @@ function createSelectComponent(params: { } class DynamicChannelSelect extends ChannelSelectMenu { customId = customId; - minValues = params.spec.minValues; - maxValues = params.spec.maxValues; - placeholder = params.spec.placeholder; - disabled = false; + override minValues = params.spec.minValues; + override maxValues = params.spec.maxValues; + override placeholder = params.spec.placeholder; + override disabled = false; } return { component: new DynamicChannelSelect(), diff --git a/extensions/discord/src/components.modal.ts b/extensions/discord/src/components.modal.ts index 626d07e4714..ed7371ada06 100644 --- a/extensions/discord/src/components.modal.ts +++ b/extensions/discord/src/components.modal.ts @@ -26,11 +26,11 @@ function createModalFieldComponent( if (field.type === "text") { class DynamicTextInput extends TextInput { customId = field.id; - style = mapTextInputStyle(field.style); - placeholder = field.placeholder; - required = field.required; - minLength = field.minLength; - maxLength = field.maxLength; + override style = mapTextInputStyle(field.style); + override placeholder = field.placeholder; + override required = field.required; + override minLength = field.minLength; + override maxLength = field.maxLength; } return new DynamicTextInput(); } @@ -38,31 +38,31 @@ function createModalFieldComponent( const options = field.options ?? []; class DynamicModalSelect extends StringSelectMenu { customId = field.id; - options = options; - required = field.required; - minValues = field.minValues; - maxValues = field.maxValues; - placeholder = field.placeholder; + override options = options; + override required = field.required; + override minValues = field.minValues; + override maxValues = field.maxValues; + override placeholder = field.placeholder; } return new DynamicModalSelect(); } if (field.type === "role-select") { class DynamicModalRoleSelect extends RoleSelectMenu { customId = field.id; - required = field.required; - minValues = field.minValues; - maxValues = field.maxValues; - placeholder = field.placeholder; + override required = field.required; + override minValues = field.minValues; + override maxValues = field.maxValues; + override placeholder = field.placeholder; } return new DynamicModalRoleSelect(); } if (field.type === "user-select") { class DynamicModalUserSelect extends UserSelectMenu { customId = field.id; - required = field.required; - minValues = field.minValues; - maxValues = field.maxValues; - placeholder = field.placeholder; + override required = field.required; + override minValues = field.minValues; + override maxValues = field.maxValues; + override placeholder = field.placeholder; } return new DynamicModalUserSelect(); } @@ -70,29 +70,29 @@ function createModalFieldComponent( const options = field.options ?? []; class DynamicCheckboxGroup extends CheckboxGroup { customId = field.id; - options = options; - required = field.required; - minValues = field.minValues; - maxValues = field.maxValues; + override options = options; + override required = field.required; + override minValues = field.minValues; + override maxValues = field.maxValues; } return new DynamicCheckboxGroup(); } const options = field.options ?? []; class DynamicRadioGroup extends RadioGroup { customId = field.id; - options = options; - required = field.required; - minValues = field.minValues; - maxValues = field.maxValues; + override options = options; + override required = field.required; + override minValues = field.minValues; + override maxValues = field.maxValues; } return new DynamicRadioGroup(); } export class DiscordFormModal extends ModalBase { - title: string; - customId: string; - components: Array