chore: update dependencies

This commit is contained in:
Amruth Pillai
2026-07-27 13:19:54 +02:00
parent 6503da7e49
commit 3266066826
19 changed files with 2862 additions and 2545 deletions
+21 -21
View File
@@ -18,23 +18,23 @@
"test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests"
},
"dependencies": {
"@ai-sdk/anthropic": "^4.0.10",
"@ai-sdk/cerebras": "^3.0.6",
"@ai-sdk/cohere": "^4.0.6",
"@ai-sdk/deepseek": "^3.0.6",
"@ai-sdk/fireworks": "^3.0.7",
"@ai-sdk/google": "^4.0.10",
"@ai-sdk/groq": "^4.0.6",
"@ai-sdk/mistral": "^4.0.7",
"@ai-sdk/openai": "^4.0.9",
"@ai-sdk/openai-compatible": "^3.0.6",
"@ai-sdk/perplexity": "^4.0.7",
"@ai-sdk/togetherai": "^3.0.7",
"@ai-sdk/xai": "^4.0.9",
"@aws-sdk/client-s3": "^3.1081.0",
"@orpc/client": "^1.14.7",
"@orpc/experimental-ratelimit": "^1.14.7",
"@orpc/server": "^1.14.7",
"@ai-sdk/anthropic": "^4.0.21",
"@ai-sdk/cerebras": "^3.0.14",
"@ai-sdk/cohere": "^4.0.12",
"@ai-sdk/deepseek": "^3.0.13",
"@ai-sdk/fireworks": "^3.0.15",
"@ai-sdk/google": "^4.0.24",
"@ai-sdk/groq": "^4.0.13",
"@ai-sdk/mistral": "^4.0.14",
"@ai-sdk/openai": "^4.0.20",
"@ai-sdk/openai-compatible": "^3.0.14",
"@ai-sdk/perplexity": "^4.0.13",
"@ai-sdk/togetherai": "^3.0.15",
"@ai-sdk/xai": "^4.0.18",
"@aws-sdk/client-s3": "^3.1095.0",
"@orpc/client": "^1.14.10",
"@orpc/experimental-ratelimit": "^1.14.10",
"@orpc/server": "^1.14.10",
"@reactive-resume/ai": "workspace:*",
"@reactive-resume/auth": "workspace:*",
"@reactive-resume/db": "workspace:*",
@@ -43,15 +43,15 @@
"@reactive-resume/resume": "workspace:*",
"@reactive-resume/schema": "workspace:*",
"@reactive-resume/utils": "workspace:*",
"ai": "^7.0.18",
"ai": "^7.0.37",
"bcrypt": "^6.0.0",
"better-auth": "1.6.23",
"better-auth": "1.6.25",
"drizzle-orm": "1.0.0-rc.4",
"drizzle-zod": "1.0.0-beta.14-a36c63d",
"es-toolkit": "^1.49.0",
"es-toolkit": "^1.50.0",
"ioredis": "^5.11.1",
"ollama-ai-provider-v2": "^4.0.1",
"react": "^19.2.7",
"react": "^19.2.8",
"resumable-stream": "^2.2.12",
"sharp": "^0.35.3",
"ts-pattern": "^5.9.0",
+14 -18
View File
@@ -52,14 +52,14 @@ describe("agent tools", () => {
expect(tools).not.toHaveProperty("web_search");
});
it.each([
"https://api.openai.com/v1?proxy=1",
"https://api.openai.com/v1#fragment",
])("does not add provider-native web search for OpenAI providers with non-exact base URL %s", (baseURL) => {
const tools = buildTools("openai", { baseURL });
it.each(["https://api.openai.com/v1?proxy=1", "https://api.openai.com/v1#fragment"])(
"does not add provider-native web search for OpenAI providers with non-exact base URL %s",
(baseURL) => {
const tools = buildTools("openai", { baseURL });
expect(tools).not.toHaveProperty("web_search");
});
expect(tools).not.toHaveProperty("web_search");
},
);
it("does not add provider-native web search for unsupported OpenAI models", () => {
const tools = buildTools("openai", { model: "custom-model" });
@@ -67,18 +67,14 @@ describe("agent tools", () => {
expect(tools).not.toHaveProperty("web_search");
});
it.each<AIProvider>([
"anthropic",
"gemini",
"vercel-ai-gateway",
"openrouter",
"ollama",
"openai-compatible",
])("does not add provider-native web search for %s", (provider) => {
const tools = buildTools(provider);
it.each<AIProvider>(["anthropic", "gemini", "vercel-ai-gateway", "openrouter", "ollama", "openai-compatible"])(
"does not add provider-native web search for %s",
(provider) => {
const tools = buildTools(provider);
expect(tools).not.toHaveProperty("web_search");
});
expect(tools).not.toHaveProperty("web_search");
},
);
it("keeps instructions explicit about native search availability", () => {
expect(buildAgentInstructions({ hasProviderNativeSearch: true })).toContain("Use web_search");
+8 -8
View File
@@ -15,20 +15,20 @@
"test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests"
},
"dependencies": {
"@better-auth/api-key": "^1.6.23",
"@better-auth/drizzle-adapter": "^1.6.23",
"@better-auth/infra": "^0.3.5",
"@better-auth/oauth-provider": "^1.6.23",
"@better-auth/passkey": "^1.6.23",
"@better-auth/api-key": "^1.6.25",
"@better-auth/drizzle-adapter": "^1.6.25",
"@better-auth/infra": "^0.3.7",
"@better-auth/oauth-provider": "^1.6.25",
"@better-auth/passkey": "^1.6.25",
"@reactive-resume/db": "workspace:*",
"@reactive-resume/email": "workspace:*",
"@reactive-resume/env": "workspace:*",
"@reactive-resume/utils": "workspace:*",
"bcrypt": "^6.0.0",
"better-auth": "1.6.23",
"better-auth": "1.6.25",
"drizzle-orm": "1.0.0-rc.4",
"jose": "^6.2.3",
"react": "^19.2.7"
"jose": "^6.2.4",
"react": "^19.2.8"
},
"devDependencies": {
"@reactive-resume/config": "workspace:*",
+3 -3
View File
@@ -18,11 +18,11 @@
"dependencies": {
"@reactive-resume/env": "workspace:*",
"nodemailer": "^9.0.3",
"react": "^19.2.7",
"react-email": "^6.6.8"
"react": "^19.2.8",
"react-email": "^6.9.1"
},
"devDependencies": {
"@react-email/ui": "^6.6.8",
"@react-email/ui": "^6.9.1",
"@reactive-resume/config": "workspace:*",
"@types/nodemailer": "^8.0.1",
"@types/react": "^19.2.17",
+1 -1
View File
@@ -20,7 +20,7 @@
},
"dependencies": {
"@modelcontextprotocol/sdk": "^1.29.0",
"@orpc/server": "^1.14.7",
"@orpc/server": "^1.14.10",
"@reactive-resume/ai": "workspace:*",
"@reactive-resume/api": "workspace:*",
"@reactive-resume/env": "workspace:*",
+1 -1
View File
@@ -27,7 +27,7 @@
"cjk-regex": "^3.4.0",
"node-html-parser": "^9.0.0",
"phosphor-icons-react-pdf": "^0.1.3",
"react": "^19.2.7",
"react": "^19.2.8",
"react-pdf-html": "^2.1.5"
},
"devDependencies": {
@@ -27,21 +27,22 @@ describe("rich text template styles", () => {
expect(richListItemContentBlock?.groups?.body).not.toMatch(/\blineHeight:/);
});
it.each(
templatePageFiles.map((file) => [basename(file), file]),
)("%s keeps list item rich text on the global body line height", (_name, file) => {
const source = readFileSync(file, "utf8");
it.each(templatePageFiles.map((file) => [basename(file), file]))(
"%s keeps list item rich text on the global body line height",
(_name, file) => {
const source = readFileSync(file, "utf8");
if (source.includes("createBaseTemplateStyles")) {
// Factory handles richListItemContent; guard is on the factory test above.
expect(source).toContain("createBaseTemplateStyles");
return;
}
if (source.includes("createBaseTemplateStyles")) {
// Factory handles richListItemContent; guard is on the factory test above.
expect(source).toContain("createBaseTemplateStyles");
return;
}
// Legacy: template defines richListItemContent inline — no lineHeight override allowed.
const richListItemContentBlock = source.match(/richListItemContent:\s*{(?<body>[\s\S]*?)^\s*},/m);
expect(richListItemContentBlock?.groups?.body).toBeDefined();
expect(richListItemContentBlock?.groups?.body).toContain("...bodyText");
expect(richListItemContentBlock?.groups?.body).not.toMatch(/\blineHeight:/);
});
// Legacy: template defines richListItemContent inline — no lineHeight override allowed.
const richListItemContentBlock = source.match(/richListItemContent:\s*{(?<body>[\s\S]*?)^\s*},/m);
expect(richListItemContentBlock?.groups?.body).toBeDefined();
expect(richListItemContentBlock?.groups?.body).toContain("...bodyText");
expect(richListItemContentBlock?.groups?.body).not.toMatch(/\blineHeight:/);
},
);
});
+8 -8
View File
@@ -19,7 +19,7 @@
},
"dependencies": {
"@base-ui/react": "^1.6.0",
"@fontsource-variable/ibm-plex-sans": "^5.2.8",
"@fontsource-variable/ibm-plex-sans": "^5.3.0",
"@phosphor-icons/react": "^2.1.10",
"@phosphor-icons/web": "^2.1.2",
"@reactive-resume/utils": "workspace:*",
@@ -27,22 +27,22 @@
"class-variance-authority": "^0.7.1",
"cmdk": "^1.1.1",
"next-themes": "^0.4.6",
"react": "^19.2.7",
"react-dom": "^19.2.7",
"react-resizable-panels": "^4.12.1",
"shadcn": "^4.13.0",
"react": "^19.2.8",
"react-dom": "^19.2.8",
"react-resizable-panels": "^4.12.2",
"shadcn": "^4.15.0",
"sonner": "^2.0.7",
"tw-animate-css": "^1.4.0"
},
"devDependencies": {
"@reactive-resume/config": "workspace:*",
"@tailwindcss/postcss": "^4.3.2",
"@tailwindcss/postcss": "^4.3.3",
"@tailwindcss/typography": "^0.5.20",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
"@typescript/native-preview": "7.0.0-dev.20260707.2",
"postcss": "^8.5.16",
"tailwindcss": "^4.3.2",
"postcss": "^8.5.23",
"tailwindcss": "^4.3.3",
"typescript": "^7.0.2"
}
}
+7 -9
View File
@@ -14,15 +14,13 @@ describe("Badge", () => {
expect(screen.getByText("x")).toHaveClass("my-extra");
});
it.each([
["default"],
["secondary"],
["destructive"],
["outline"],
] as const)("renders variant=%s without throwing", (variant) => {
render(<Badge variant={variant}>{variant}</Badge>);
expect(screen.getByText(variant)).toBeInTheDocument();
});
it.each([["default"], ["secondary"], ["destructive"], ["outline"]] as const)(
"renders variant=%s without throwing",
(variant) => {
render(<Badge variant={variant}>{variant}</Badge>);
expect(screen.getByText(variant)).toBeInTheDocument();
},
);
it("forwards aria attributes", () => {
render(<Badge aria-label="status indicator">3</Badge>);
+14 -24
View File
@@ -52,31 +52,21 @@ describe("Button", () => {
expect(screen.getByRole("button")).toBeDisabled();
});
it.each([
["default"],
["outline"],
["secondary"],
["ghost"],
["destructive"],
["link"],
] as const)("renders variant=%s without throwing", (variant) => {
render(<Button variant={variant}>x</Button>);
expect(screen.getByRole("button")).toBeInTheDocument();
});
it.each([["default"], ["outline"], ["secondary"], ["ghost"], ["destructive"], ["link"]] as const)(
"renders variant=%s without throwing",
(variant) => {
render(<Button variant={variant}>x</Button>);
expect(screen.getByRole("button")).toBeInTheDocument();
},
);
it.each([
["default"],
["xs"],
["sm"],
["lg"],
["icon"],
["icon-xs"],
["icon-sm"],
["icon-lg"],
] as const)("renders size=%s without throwing", (size) => {
render(<Button size={size}>x</Button>);
expect(screen.getByRole("button")).toBeInTheDocument();
});
it.each([["default"], ["xs"], ["sm"], ["lg"], ["icon"], ["icon-xs"], ["icon-sm"], ["icon-lg"]] as const)(
"renders size=%s without throwing",
(size) => {
render(<Button size={size}>x</Button>);
expect(screen.getByRole("button")).toBeInTheDocument();
},
);
it("forwards aria-label", () => {
render(<Button aria-label="Close">×</Button>);