feat: add claw backend adapter
This commit is contained in:
@@ -378,6 +378,7 @@ export interface ProjectAgentControls {
|
||||
modelOverride?: string;
|
||||
reasoningEffortOverride?: ReasoningEffort;
|
||||
promptOverride?: string;
|
||||
backendOverride?: "claw-runtime";
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
@@ -1715,6 +1716,16 @@ function parseReasoningEffortOverride(value: unknown) {
|
||||
return { kind: "set" as const, value };
|
||||
}
|
||||
|
||||
function parseBackendOverride(value: unknown) {
|
||||
if (value === undefined || value === null) {
|
||||
return { kind: "clear" as const };
|
||||
}
|
||||
if (value !== "claw-runtime") {
|
||||
return { kind: "invalid" as const };
|
||||
}
|
||||
return { kind: "set" as const, value: "claw-runtime" as const };
|
||||
}
|
||||
|
||||
function normalizeStringSet(values: string[]) {
|
||||
return dedupeStrings(values.map((value) => value.trim()).filter(Boolean)).sort((a, b) => a.localeCompare(b));
|
||||
}
|
||||
@@ -2144,8 +2155,9 @@ function normalizeProjectAgentControls(
|
||||
? raw.reasoningEffortOverride
|
||||
: undefined;
|
||||
const promptOverride = trimToDefined(raw?.promptOverride);
|
||||
const backendOverride = raw?.backendOverride === "claw-runtime" ? raw.backendOverride : undefined;
|
||||
|
||||
if (!modelOverride && !reasoningEffortOverride && !promptOverride) {
|
||||
if (!modelOverride && !reasoningEffortOverride && !promptOverride && !backendOverride) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
@@ -2153,6 +2165,7 @@ function normalizeProjectAgentControls(
|
||||
modelOverride,
|
||||
reasoningEffortOverride,
|
||||
promptOverride,
|
||||
backendOverride,
|
||||
updatedAt: raw?.updatedAt ?? nowIso(),
|
||||
};
|
||||
}
|
||||
@@ -3610,6 +3623,7 @@ export async function updateProjectAgentControls(
|
||||
modelOverride?: unknown;
|
||||
reasoningEffortOverride?: unknown;
|
||||
promptOverride?: unknown;
|
||||
backendOverride?: unknown;
|
||||
},
|
||||
account?: string,
|
||||
) {
|
||||
@@ -3626,6 +3640,9 @@ export async function updateProjectAgentControls(
|
||||
const promptOverrideInput = Object.prototype.hasOwnProperty.call(payload, "promptOverride")
|
||||
? parseControlTextOverride(payload.promptOverride)
|
||||
: { kind: "preserve" as const };
|
||||
const backendOverrideInput = Object.prototype.hasOwnProperty.call(payload, "backendOverride")
|
||||
? parseBackendOverride(payload.backendOverride)
|
||||
: { kind: "preserve" as const };
|
||||
if (modelOverrideInput.kind === "invalid") {
|
||||
throw new Error("INVALID_MODEL_OVERRIDE");
|
||||
}
|
||||
@@ -3635,6 +3652,9 @@ export async function updateProjectAgentControls(
|
||||
if (promptOverrideInput.kind === "invalid") {
|
||||
throw new Error("INVALID_PROMPT_OVERRIDE");
|
||||
}
|
||||
if (backendOverrideInput.kind === "invalid") {
|
||||
throw new Error("INVALID_BACKEND_OVERRIDE");
|
||||
}
|
||||
|
||||
return mutateStateIfChanged((state) => {
|
||||
const project = state.projects.find((item) => item.id === projectId);
|
||||
@@ -3661,14 +3681,22 @@ export async function updateProjectAgentControls(
|
||||
: promptOverrideInput.kind === "clear"
|
||||
? undefined
|
||||
: currentControls?.promptOverride;
|
||||
const backendOverride =
|
||||
backendOverrideInput.kind === "set"
|
||||
? backendOverrideInput.value
|
||||
: backendOverrideInput.kind === "clear"
|
||||
? undefined
|
||||
: currentControls?.backendOverride;
|
||||
|
||||
const currentModelOverride = currentControls?.modelOverride;
|
||||
const currentReasoningEffortOverride = currentControls?.reasoningEffortOverride;
|
||||
const currentPromptOverride = currentControls?.promptOverride;
|
||||
const currentBackendOverride = currentControls?.backendOverride;
|
||||
if (
|
||||
currentModelOverride === modelOverride &&
|
||||
currentReasoningEffortOverride === reasoningEffortOverride &&
|
||||
currentPromptOverride === promptOverride
|
||||
currentPromptOverride === promptOverride &&
|
||||
currentBackendOverride === backendOverride
|
||||
) {
|
||||
return { result: currentControls, changed: false };
|
||||
}
|
||||
@@ -3677,6 +3705,7 @@ export async function updateProjectAgentControls(
|
||||
modelOverride,
|
||||
reasoningEffortOverride,
|
||||
promptOverride,
|
||||
backendOverride,
|
||||
updatedAt: nowIso(),
|
||||
} satisfies ProjectAgentControls;
|
||||
const normalizedControls = normalizeProjectAgentControls(nextControls) ?? null;
|
||||
|
||||
Reference in New Issue
Block a user