Replace thinking with native Gemini thinking summaries (#400)

This uses Gemini's native [thinking
summaries](https://cloud.google.com/vertex-ai/generative-ai/docs/thinking#thought-summaries)
which were recently added to the API.

Why? The grafted thinking would sometimes cause weird issues where the
model, especially Gemini 2.5 Flash, got confused and put dyad tags like
`<dyad-write>` inside the `<think>` tags.

This also improves the UX because you can see the native thoughts rather
than having the Gemini response load for a while without any feedback.

I tried adding Anthropic extended thinking, however it requires temp to
be set at 1, which isn't ideal for Dyad's use case where we need precise
syntax following.
This commit is contained in:
Will Chen
2025-06-16 17:29:32 -07:00
committed by GitHub
parent 3a6ab12bed
commit 30b5c0d0ef
39 changed files with 1020 additions and 628 deletions

View File

@@ -139,10 +139,14 @@ export class PageObject {
});
}
async openProModesDialog(): Promise<ProModesDialog> {
async openProModesDialog({
location = "chat-input-container",
}: {
location?: "chat-input-container" | "home-chat-input-container";
} = {}): Promise<ProModesDialog> {
const proButton = this.page
// Assumes you're on the chat page.
.getByTestId("chat-input-container")
.getByTestId(location)
.getByRole("button", { name: "Pro", exact: true });
await proButton.click();
return new ProModesDialog(this.page, async () => {
@@ -396,7 +400,7 @@ export class PageObject {
async selectModel({ provider, model }: { provider: string; model: string }) {
await this.page.getByRole("button", { name: "Model: Auto" }).click();
await this.page.getByText(provider).click();
await this.page.getByText(model).click();
await this.page.getByText(model, { exact: true }).click();
}
async selectTestModel() {