Align lint fixes with main and resolve merge conflicts

- Convert biome-ignore to oxlint-disable-next-line across client app
- Fix no-base-to-string with type narrowing instead of suppressions
- Fix no-floating-promises with fireAndForget() in proxy app
- Fix restrict-template-expressions with String() wrapping
- Resolve leftover merge conflict markers in manager.rs
- Remove duplicate cmd_plugin_init_errors from lib.rs
- Add graphql as explicit dependency in yaak-client

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Gregory Schier
2026-03-13 13:02:29 -07:00
parent 7314aedc71
commit ee69db0f12
54 changed files with 272 additions and 264 deletions

View File

@@ -3,11 +3,13 @@ import { useEffect, useState } from "react";
import { rpc } from "../lib/rpc";
/** Look up metadata for a specific action invocation. */
// oxlint-disable-next-line no-redundant-type-constituents -- ActionMetadata resolves at runtime
export function useActionMetadata(action: ActionInvocation): ActionMetadata | null {
// oxlint-disable-next-line no-redundant-type-constituents -- ActionMetadata resolves at runtime
const [meta, setMeta] = useState<ActionMetadata | null>(null);
useEffect(() => {
getActions().then((actions) => {
void getActions().then((actions) => {
const match = actions.find(
([inv]) => inv.scope === action.scope && inv.action === action.action,
);

View File

@@ -16,7 +16,7 @@ export function useRpcQueryWithEvent<
const query = useRpcQuery(cmd, payload, opts);
useRpcEvent(event, () => {
queryClient.invalidateQueries({ queryKey: [cmd, payload] });
void queryClient.invalidateQueries({ queryKey: [cmd, payload] });
});
return query;

View File

@@ -0,0 +1,5 @@
export function fireAndForget(promise: Promise<unknown>) {
promise.catch((err: unknown) => {
console.error("Unhandled async error:", err);
});
}

View File

@@ -38,6 +38,7 @@ export async function initHotkeys(): Promise<() => void> {
const bindings: ActionBinding[] = actions
.filter(
// oxlint-disable-next-line no-redundant-type-constituents -- ActionMetadata resolves at runtime
(entry): entry is [ActionInvocation, ActionMetadata & { defaultHotkey: string }] =>
entry[1].defaultHotkey != null,
)
@@ -51,7 +52,7 @@ export async function initHotkeys(): Promise<() => void> {
for (const binding of bindings) {
if (matchesEvent(binding.keys, e)) {
e.preventDefault();
rpc("execute_action", binding.invocation);
void rpc("execute_action", binding.invocation);
return;
}
}

View File

@@ -13,15 +13,15 @@ const queryClient = new QueryClient();
const jotaiStore = createStore();
// Load initial models from the database
rpc("list_models", {}).then((res) => {
void rpc("list_models", {}).then((res) => {
jotaiStore.set(dataAtom, (prev) => replaceAll(prev, "http_exchange", res.httpExchanges));
});
// Register hotkeys from action metadata
initHotkeys();
void initHotkeys();
// Subscribe to model change events from the backend
listen("model_write", (payload) => {
void listen("model_write", (payload) => {
jotaiStore.set(dataAtom, (prev) =>
applyChange(prev, "http_exchange", payload.model, payload.change),
);