Expose chat-latest and default Quick Question to it
TestFlight / Build and upload (push) Failing after 45s
TestFlight / Build and upload (push) Failing after 45s
This commit is contained in:
+5
-5
@@ -80,7 +80,7 @@ import {
|
||||
resolveSidebarSelectionAfterRefresh,
|
||||
type SidebarSelection,
|
||||
} from "@/lib/sidebar-selection";
|
||||
import { buildQuickQuestionRequest } from "@/lib/quick-question";
|
||||
import { buildQuickQuestionRequest, pickQuickQuestionModel, QUICK_QUESTION_DEFAULT_MODEL } from "@/lib/quick-question";
|
||||
import {
|
||||
appendStreamingDelta,
|
||||
clearStreamingAssistantTrace,
|
||||
@@ -161,7 +161,7 @@ function buildWorkspaceUrl(selection: SidebarSelection | null) {
|
||||
}
|
||||
|
||||
const PROVIDER_FALLBACK_MODELS: Record<Provider, string[]> = {
|
||||
openai: ["gpt-4.1-mini"],
|
||||
openai: ["gpt-4.1-mini", QUICK_QUESTION_DEFAULT_MODEL],
|
||||
anthropic: ["claude-3-5-sonnet-latest"],
|
||||
xai: ["grok-3-mini"],
|
||||
gemini: ["gemini-3.5-flash", "gemini-flash-latest"],
|
||||
@@ -991,7 +991,7 @@ export default function App() {
|
||||
);
|
||||
const [quickModel, setQuickModel] = useState(() => {
|
||||
const stored = loadStoredQuickQuestionModelSelection();
|
||||
return stored.modelPreferences[stored.provider] ?? PROVIDER_FALLBACK_MODELS[stored.provider][0];
|
||||
return pickQuickQuestionModel(stored.provider, PROVIDER_FALLBACK_MODELS[stored.provider], stored.modelPreferences[stored.provider]);
|
||||
});
|
||||
const [isQuickQuestionOpen, setIsQuickQuestionOpen] = useState(false);
|
||||
const [quickPrompt, setQuickPrompt] = useState("");
|
||||
@@ -1449,7 +1449,7 @@ export default function App() {
|
||||
useEffect(() => {
|
||||
if (quickModel.trim()) return;
|
||||
setQuickModel((current) => {
|
||||
return current.trim() || pickProviderModel(quickProviderModelOptions, quickProviderModelPreferences[quickProvider]);
|
||||
return current.trim() || pickQuickQuestionModel(quickProvider, quickProviderModelOptions, quickProviderModelPreferences[quickProvider]);
|
||||
});
|
||||
}, [quickModel, quickProvider, quickProviderModelOptions, quickProviderModelPreferences]);
|
||||
|
||||
@@ -4176,7 +4176,7 @@ export default function App() {
|
||||
const nextProvider = event.currentTarget.value as Provider;
|
||||
setQuickProvider(nextProvider);
|
||||
const options = getModelOptions(modelCatalog, nextProvider);
|
||||
setQuickModel(pickProviderModel(options, quickProviderModelPreferences[nextProvider]));
|
||||
setQuickModel(pickQuickQuestionModel(nextProvider, options, quickProviderModelPreferences[nextProvider]));
|
||||
}}
|
||||
disabled={isQuickQuestionSending || isConvertingQuickQuestion}
|
||||
aria-label="Quick question provider"
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
import type { Provider } from "./api";
|
||||
|
||||
export const QUICK_QUESTION_DEFAULT_MODEL = "chat-latest";
|
||||
|
||||
export function pickQuickQuestionModel(provider: Provider, options: string[], preferred: string | null = null) {
|
||||
if (preferred?.trim()) return preferred.trim();
|
||||
if (provider === "openai") return QUICK_QUESTION_DEFAULT_MODEL;
|
||||
return options[0] ?? "";
|
||||
}
|
||||
|
||||
export function buildQuickQuestionRequest({
|
||||
provider,
|
||||
model,
|
||||
|
||||
@@ -1,6 +1,27 @@
|
||||
import assert from "node:assert/strict";
|
||||
import test from "node:test";
|
||||
import { buildQuickQuestionRequest } from "../src/lib/quick-question.ts";
|
||||
import { buildQuickQuestionRequest, pickQuickQuestionModel } from "../src/lib/quick-question.ts";
|
||||
|
||||
test("quick questions default to chat-latest before and after the model catalog loads", () => {
|
||||
for (const options of [[], ["gpt-4.1-mini"], ["gpt-4.1-mini", "chat-latest"]]) {
|
||||
const model = pickQuickQuestionModel("openai", options);
|
||||
assert.equal(model, "chat-latest");
|
||||
assert.deepEqual(buildQuickQuestionRequest({ provider: "openai", model, content: "What is UTC?" }), {
|
||||
provider: "openai",
|
||||
model: "chat-latest",
|
||||
question: "What is UTC?",
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
test("quick questions preserve saved models and use provider-specific choices when switching providers", () => {
|
||||
assert.equal(pickQuickQuestionModel("openai", ["chat-latest"], " gpt-4.1-mini "), "gpt-4.1-mini");
|
||||
assert.equal(pickQuickQuestionModel("openai", ["gpt-4.1-mini"], " "), "chat-latest");
|
||||
assert.equal(pickQuickQuestionModel("anthropic", ["claude-3-5-sonnet-latest"]), "claude-3-5-sonnet-latest");
|
||||
assert.equal(pickQuickQuestionModel("anthropic", ["claude-3-5-sonnet-latest"], "claude-3-haiku"), "claude-3-haiku");
|
||||
assert.equal(pickQuickQuestionModel("anthropic", []), "");
|
||||
assert.equal(pickQuickQuestionModel("openai", ["gpt-4.1-mini", "chat-latest"]), "chat-latest");
|
||||
});
|
||||
|
||||
test("quick question requests use the dedicated server endpoint shape", () => {
|
||||
const request = buildQuickQuestionRequest({
|
||||
|
||||
Reference in New Issue
Block a user