mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-08-24 15:22:20 +10:00
chore: update dependencies
This commit is contained in:
+34
-34
@@ -17,33 +17,33 @@
|
|||||||
"#react-pdf-renderer": "@react-pdf/renderer"
|
"#react-pdf-renderer": "@react-pdf/renderer"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ai-sdk/anthropic": "^4.0.10",
|
"@ai-sdk/anthropic": "^4.0.21",
|
||||||
"@ai-sdk/cerebras": "^3.0.6",
|
"@ai-sdk/cerebras": "^3.0.14",
|
||||||
"@ai-sdk/cohere": "^4.0.6",
|
"@ai-sdk/cohere": "^4.0.12",
|
||||||
"@ai-sdk/deepseek": "^3.0.6",
|
"@ai-sdk/deepseek": "^3.0.13",
|
||||||
"@ai-sdk/fireworks": "^3.0.7",
|
"@ai-sdk/fireworks": "^3.0.15",
|
||||||
"@ai-sdk/google": "^4.0.10",
|
"@ai-sdk/google": "^4.0.24",
|
||||||
"@ai-sdk/groq": "^4.0.6",
|
"@ai-sdk/groq": "^4.0.13",
|
||||||
"@ai-sdk/mistral": "^4.0.7",
|
"@ai-sdk/mistral": "^4.0.14",
|
||||||
"@ai-sdk/openai": "^4.0.9",
|
"@ai-sdk/openai": "^4.0.20",
|
||||||
"@ai-sdk/openai-compatible": "^3.0.6",
|
"@ai-sdk/openai-compatible": "^3.0.14",
|
||||||
"@ai-sdk/perplexity": "^4.0.7",
|
"@ai-sdk/perplexity": "^4.0.13",
|
||||||
"@ai-sdk/togetherai": "^3.0.7",
|
"@ai-sdk/togetherai": "^3.0.15",
|
||||||
"@ai-sdk/xai": "^4.0.9",
|
"@ai-sdk/xai": "^4.0.18",
|
||||||
"@aws-sdk/client-s3": "^3.1081.0",
|
"@aws-sdk/client-s3": "^3.1095.0",
|
||||||
"@better-auth/api-key": "^1.6.23",
|
"@better-auth/api-key": "^1.6.25",
|
||||||
"@better-auth/drizzle-adapter": "^1.6.23",
|
"@better-auth/drizzle-adapter": "^1.6.25",
|
||||||
"@better-auth/infra": "^0.3.5",
|
"@better-auth/infra": "^0.3.7",
|
||||||
"@better-auth/oauth-provider": "^1.6.23",
|
"@better-auth/oauth-provider": "^1.6.25",
|
||||||
"@better-auth/passkey": "^1.6.23",
|
"@better-auth/passkey": "^1.6.25",
|
||||||
"@hono/node-server": "^2.0.8",
|
"@hono/node-server": "^2.0.12",
|
||||||
"@modelcontextprotocol/sdk": "^1.29.0",
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
||||||
"@orpc/client": "^1.14.7",
|
"@orpc/client": "^1.14.10",
|
||||||
"@orpc/experimental-ratelimit": "^1.14.7",
|
"@orpc/experimental-ratelimit": "^1.14.10",
|
||||||
"@orpc/json-schema": "^1.14.7",
|
"@orpc/json-schema": "^1.14.10",
|
||||||
"@orpc/openapi": "^1.14.7",
|
"@orpc/openapi": "^1.14.10",
|
||||||
"@orpc/server": "^1.14.7",
|
"@orpc/server": "^1.14.10",
|
||||||
"@orpc/zod": "^1.14.7",
|
"@orpc/zod": "^1.14.10",
|
||||||
"@react-pdf/renderer": "^4.5.1",
|
"@react-pdf/renderer": "^4.5.1",
|
||||||
"@reactive-resume/api": "workspace:*",
|
"@reactive-resume/api": "workspace:*",
|
||||||
"@reactive-resume/auth": "workspace:*",
|
"@reactive-resume/auth": "workspace:*",
|
||||||
@@ -55,24 +55,24 @@
|
|||||||
"@sindresorhus/slugify": "^3.0.0",
|
"@sindresorhus/slugify": "^3.0.0",
|
||||||
"@t3-oss/env-core": "^0.13.11",
|
"@t3-oss/env-core": "^0.13.11",
|
||||||
"@uiw/color-convert": "^2.10.3",
|
"@uiw/color-convert": "^2.10.3",
|
||||||
"ai": "^7.0.18",
|
"ai": "^7.0.37",
|
||||||
"bcrypt": "^6.0.0",
|
"bcrypt": "^6.0.0",
|
||||||
"better-auth": "1.6.23",
|
"better-auth": "1.6.25",
|
||||||
"cjk-regex": "^3.4.0",
|
"cjk-regex": "^3.4.0",
|
||||||
"deepmerge-ts": "^7.1.5",
|
"deepmerge-ts": "^7.1.5",
|
||||||
"drizzle-orm": "1.0.0-rc.4",
|
"drizzle-orm": "1.0.0-rc.4",
|
||||||
"drizzle-zod": "1.0.0-beta.14-a36c63d",
|
"drizzle-zod": "1.0.0-beta.14-a36c63d",
|
||||||
"es-toolkit": "^1.49.0",
|
"es-toolkit": "^1.50.0",
|
||||||
"fast-json-patch": "^3.1.1",
|
"fast-json-patch": "^3.1.1",
|
||||||
"hono": "^4.12.28",
|
"hono": "^4.12.32",
|
||||||
"jsonrepair": "^3.15.0",
|
"jsonrepair": "^3.15.0",
|
||||||
"node-html-parser": "^9.0.0",
|
"node-html-parser": "^9.0.0",
|
||||||
"nodemailer": "^9.0.3",
|
"nodemailer": "^9.0.3",
|
||||||
"ollama-ai-provider-v2": "^4.0.1",
|
"ollama-ai-provider-v2": "^4.0.1",
|
||||||
"pg": "^8.22.0",
|
"pg": "^8.22.0",
|
||||||
"phosphor-icons-react-pdf": "^0.1.3",
|
"phosphor-icons-react-pdf": "^0.1.3",
|
||||||
"react": "^19.2.7",
|
"react": "^19.2.8",
|
||||||
"react-email": "^6.6.8",
|
"react-email": "^6.9.1",
|
||||||
"react-pdf-html": "^2.1.5",
|
"react-pdf-html": "^2.1.5",
|
||||||
"resumable-stream": "^2.2.12",
|
"resumable-stream": "^2.2.12",
|
||||||
"sharp": "^0.35.3",
|
"sharp": "^0.35.3",
|
||||||
@@ -87,8 +87,8 @@
|
|||||||
"@types/pg": "^8.20.0",
|
"@types/pg": "^8.20.0",
|
||||||
"@types/react": "^19.2.17",
|
"@types/react": "^19.2.17",
|
||||||
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
||||||
"tsdown": "^0.22.4",
|
"tsdown": "^0.22.14",
|
||||||
"tsx": "^4.23.0",
|
"tsx": "^4.23.1",
|
||||||
"typescript": "^7.0.2",
|
"typescript": "^7.0.2",
|
||||||
"vitest": "^4.1.10"
|
"vitest": "^4.1.10"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,21 +41,17 @@ describe("web app fallback classification", () => {
|
|||||||
expect(response.headers.get("Content-Security-Policy-Report-Only")).toContain("frame-ancestors 'none'");
|
expect(response.headers.get("Content-Security-Policy-Report-Only")).toContain("frame-ancestors 'none'");
|
||||||
});
|
});
|
||||||
|
|
||||||
it.each([
|
it.each(["/auth/login", "/dashboard", "/builder/resume-1", "/agent", "/templates", "/templates/azurill.pdf"])(
|
||||||
"/auth/login",
|
"serves noindex shell for known app prefix %s",
|
||||||
"/dashboard",
|
async (pathname) => {
|
||||||
"/builder/resume-1",
|
const response = await handleWebApp(new Request(`https://example.com${pathname}`));
|
||||||
"/agent",
|
|
||||||
"/templates",
|
|
||||||
"/templates/azurill.pdf",
|
|
||||||
])("serves noindex shell for known app prefix %s", async (pathname) => {
|
|
||||||
const response = await handleWebApp(new Request(`https://example.com${pathname}`));
|
|
||||||
|
|
||||||
expect(response.status).toBe(200);
|
expect(response.status).toBe(200);
|
||||||
expect(response.headers.get("Content-Type")).toBe("text/html; charset=UTF-8");
|
expect(response.headers.get("Content-Type")).toBe("text/html; charset=UTF-8");
|
||||||
expect(response.headers.get("X-Robots-Tag")).toBe("noindex, follow");
|
expect(response.headers.get("X-Robots-Tag")).toBe("noindex, follow");
|
||||||
expect(await response.text()).toBe("<html>app</html>");
|
expect(await response.text()).toBe("<html>app</html>");
|
||||||
});
|
},
|
||||||
|
);
|
||||||
|
|
||||||
it("serves noindex shell for public resume shaped routes", async () => {
|
it("serves noindex shell for public resume shaped routes", async () => {
|
||||||
const response = await handleWebApp(new Request("https://example.com/alice/resume"));
|
const response = await handleWebApp(new Request("https://example.com/alice/resume"));
|
||||||
@@ -75,19 +71,18 @@ describe("web app fallback classification", () => {
|
|||||||
expect(fs.readFile).not.toHaveBeenCalled();
|
expect(fs.readFile).not.toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
it.each([
|
it.each(["/api/foo", "/mcp/foo", "/uploads/foo"])(
|
||||||
"/api/foo",
|
"does not treat reserved two-segment path %s as a public resume",
|
||||||
"/mcp/foo",
|
async (pathname) => {
|
||||||
"/uploads/foo",
|
const response = await handleWebApp(new Request(`https://example.com${pathname}`));
|
||||||
])("does not treat reserved two-segment path %s as a public resume", async (pathname) => {
|
|
||||||
const response = await handleWebApp(new Request(`https://example.com${pathname}`));
|
|
||||||
|
|
||||||
expect(response.status).toBe(404);
|
expect(response.status).toBe(404);
|
||||||
expect(response.headers.get("Content-Type")).toBe("text/plain; charset=UTF-8");
|
expect(response.headers.get("Content-Type")).toBe("text/plain; charset=UTF-8");
|
||||||
expect(response.headers.get("X-Robots-Tag")).toBe("noindex, nofollow");
|
expect(response.headers.get("X-Robots-Tag")).toBe("noindex, nofollow");
|
||||||
expect(await response.text()).toBe("Not Found");
|
expect(await response.text()).toBe("Not Found");
|
||||||
expect(fs.readFile).not.toHaveBeenCalled();
|
expect(fs.readFile).not.toHaveBeenCalled();
|
||||||
});
|
},
|
||||||
|
);
|
||||||
|
|
||||||
it("returns plain 404 for missing asset-looking paths", async () => {
|
it("returns plain 404 for missing asset-looking paths", async () => {
|
||||||
const response = await handleWebApp(new Request("https://example.com/assets/missing.css"));
|
const response = await handleWebApp(new Request("https://example.com/assets/missing.css"));
|
||||||
|
|||||||
+41
-41
@@ -16,20 +16,20 @@
|
|||||||
"lingui:extract": "lingui extract --clean --overwrite"
|
"lingui:extract": "lingui extract --clean --overwrite"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ai-sdk/react": "^4.0.19",
|
"@ai-sdk/react": "^4.0.40",
|
||||||
"@base-ui/react": "^1.6.0",
|
"@base-ui/react": "^1.6.0",
|
||||||
"@better-auth/api-key": "^1.6.23",
|
"@better-auth/api-key": "^1.6.25",
|
||||||
"@better-auth/infra": "^0.3.5",
|
"@better-auth/infra": "^0.3.7",
|
||||||
"@better-auth/oauth-provider": "^1.6.23",
|
"@better-auth/oauth-provider": "^1.6.25",
|
||||||
"@better-auth/passkey": "^1.6.23",
|
"@better-auth/passkey": "^1.6.25",
|
||||||
"@dnd-kit/core": "^6.3.1",
|
"@dnd-kit/core": "^6.3.1",
|
||||||
"@dnd-kit/sortable": "^10.0.0",
|
"@dnd-kit/sortable": "^10.0.0",
|
||||||
"@dnd-kit/utilities": "^3.2.2",
|
"@dnd-kit/utilities": "^3.2.2",
|
||||||
"@lingui/core": "^6.5.0",
|
"@lingui/core": "^6.6.0",
|
||||||
"@lingui/react": "^6.5.0",
|
"@lingui/react": "^6.6.0",
|
||||||
"@orpc/client": "^1.14.7",
|
"@orpc/client": "^1.14.10",
|
||||||
"@orpc/server": "^1.14.7",
|
"@orpc/server": "^1.14.10",
|
||||||
"@orpc/tanstack-query": "^1.14.7",
|
"@orpc/tanstack-query": "^1.14.10",
|
||||||
"@phosphor-icons/react": "^2.1.10",
|
"@phosphor-icons/react": "^2.1.10",
|
||||||
"@react-pdf/renderer": "^4.5.1",
|
"@react-pdf/renderer": "^4.5.1",
|
||||||
"@reactive-resume/ai": "workspace:*",
|
"@reactive-resume/ai": "workspace:*",
|
||||||
@@ -43,39 +43,39 @@
|
|||||||
"@reactive-resume/schema": "workspace:*",
|
"@reactive-resume/schema": "workspace:*",
|
||||||
"@reactive-resume/ui": "workspace:*",
|
"@reactive-resume/ui": "workspace:*",
|
||||||
"@reactive-resume/utils": "workspace:*",
|
"@reactive-resume/utils": "workspace:*",
|
||||||
"@tailwindcss/vite": "^4.3.2",
|
"@tailwindcss/vite": "^4.3.3",
|
||||||
"@tanstack/react-form": "^1.33.0",
|
"@tanstack/react-form": "^1.33.2",
|
||||||
"@tanstack/react-hotkeys": "^0.10.0",
|
"@tanstack/react-hotkeys": "^0.10.0",
|
||||||
"@tanstack/react-query": "^5.101.2",
|
"@tanstack/react-query": "^5.101.4",
|
||||||
"@tanstack/react-router": "^1.170.17",
|
"@tanstack/react-router": "^1.170.18",
|
||||||
"@tiptap/extension-color": "^3.27.3",
|
"@tiptap/extension-color": "^3.29.1",
|
||||||
"@tiptap/extension-highlight": "^3.27.3",
|
"@tiptap/extension-highlight": "^3.29.1",
|
||||||
"@tiptap/extension-text-align": "^3.27.3",
|
"@tiptap/extension-text-align": "^3.29.1",
|
||||||
"@tiptap/extension-text-style": "^3.27.3",
|
"@tiptap/extension-text-style": "^3.29.1",
|
||||||
"@tiptap/pm": "^3.27.3",
|
"@tiptap/pm": "^3.29.1",
|
||||||
"@tiptap/react": "^3.27.3",
|
"@tiptap/react": "^3.29.1",
|
||||||
"@tiptap/starter-kit": "^3.27.3",
|
"@tiptap/starter-kit": "^3.29.1",
|
||||||
"@types/js-cookie": "^3.0.6",
|
"@types/js-cookie": "^3.0.6",
|
||||||
"@uiw/color-convert": "^2.10.3",
|
"@uiw/color-convert": "^2.10.3",
|
||||||
"@uiw/react-color-colorful": "^2.10.3",
|
"@uiw/react-color-colorful": "^2.10.3",
|
||||||
"ai": "^7.0.18",
|
"ai": "^7.0.37",
|
||||||
"better-auth": "1.6.23",
|
"better-auth": "1.6.25",
|
||||||
"cmdk": "^1.1.1",
|
"cmdk": "^1.1.1",
|
||||||
"drizzle-orm": "1.0.0-rc.4",
|
"drizzle-orm": "1.0.0-rc.4",
|
||||||
"es-toolkit": "^1.49.0",
|
"es-toolkit": "^1.50.0",
|
||||||
"fuse.js": "^7.4.2",
|
"fuse.js": "^7.5.0",
|
||||||
"immer": "^11.1.11",
|
"immer": "^11.1.15",
|
||||||
"js-cookie": "^3.0.8",
|
"js-cookie": "^3.0.8",
|
||||||
"motion": "^12.42.2",
|
"motion": "^12.42.2",
|
||||||
"pdfjs-dist": "6.1.200",
|
"pdfjs-dist": "6.1.200",
|
||||||
"pg": "^8.22.0",
|
"pg": "^8.22.0",
|
||||||
"qrcode.react": "^4.2.0",
|
"qrcode.react": "^4.2.0",
|
||||||
"react": "^19.2.7",
|
"react": "^19.2.8",
|
||||||
"react-dom": "^19.2.7",
|
"react-dom": "^19.2.8",
|
||||||
"react-easy-crop": "^6.2.2",
|
"react-easy-crop": "^6.2.3",
|
||||||
"react-markdown": "^10.1.0",
|
"react-markdown": "^10.1.0",
|
||||||
"react-resizable-panels": "^4.12.1",
|
"react-resizable-panels": "^4.12.2",
|
||||||
"react-window": "^2.2.7",
|
"react-window": "^2.3.0",
|
||||||
"react-zoom-pan-pinch": "^4.0.3",
|
"react-zoom-pan-pinch": "^4.0.3",
|
||||||
"remark-gfm": "^4.0.1",
|
"remark-gfm": "^4.0.1",
|
||||||
"sonner": "^2.0.7",
|
"sonner": "^2.0.7",
|
||||||
@@ -86,27 +86,27 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^8.0.1",
|
"@babel/core": "^8.0.1",
|
||||||
"@lingui/babel-plugin-lingui-macro": "^6.5.0",
|
"@lingui/babel-plugin-lingui-macro": "^6.6.0",
|
||||||
"@lingui/cli": "^6.5.0",
|
"@lingui/cli": "^6.6.0",
|
||||||
"@lingui/format-po": "^6.5.0",
|
"@lingui/format-po": "^6.6.0",
|
||||||
"@lingui/vite-plugin": "^6.5.0",
|
"@lingui/vite-plugin": "^6.6.0",
|
||||||
"@reactive-resume/config": "workspace:*",
|
"@reactive-resume/config": "workspace:*",
|
||||||
"@rolldown/plugin-babel": "^0.2.3",
|
"@rolldown/plugin-babel": "^0.2.3",
|
||||||
"@tanstack/devtools-vite": "^0.8.1",
|
"@tanstack/devtools-vite": "^0.8.3",
|
||||||
"@tanstack/react-devtools": "^0.10.8",
|
"@tanstack/react-devtools": "^0.10.9",
|
||||||
"@tanstack/react-query-devtools": "^5.101.2",
|
"@tanstack/react-query-devtools": "^5.101.4",
|
||||||
"@tanstack/react-router-devtools": "^1.167.0",
|
"@tanstack/react-router-devtools": "^1.167.0",
|
||||||
"@tanstack/router-plugin": "^1.168.19",
|
"@tanstack/router-plugin": "^1.168.23",
|
||||||
"@types/babel__core": "^7.20.5",
|
"@types/babel__core": "^7.20.5",
|
||||||
"@types/pg": "^8.20.0",
|
"@types/pg": "^8.20.0",
|
||||||
"@types/react": "^19.2.17",
|
"@types/react": "^19.2.17",
|
||||||
"@types/react-dom": "^19.2.3",
|
"@types/react-dom": "^19.2.3",
|
||||||
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
||||||
"@vitejs/plugin-react": "^6.0.3",
|
"@vitejs/plugin-react": "^6.0.4",
|
||||||
"babel-plugin-macros": "^3.1.0",
|
"babel-plugin-macros": "^3.1.0",
|
||||||
"babel-plugin-react-compiler": "^1.0.0",
|
"babel-plugin-react-compiler": "^1.0.0",
|
||||||
"rimraf": "^6.1.3",
|
"rimraf": "^6.1.3",
|
||||||
"typescript": "^7.0.2",
|
"typescript": "^7.0.2",
|
||||||
"vite": "^8.1.3"
|
"vite": "^8.1.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,21 +15,21 @@ function rendererBody(name: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
describe("custom section dialog layout", () => {
|
describe("custom section dialog layout", () => {
|
||||||
it.each([
|
it.each(["CreateCustomSectionFormRenderer", "UpdateCustomSectionFormRenderer"])(
|
||||||
"CreateCustomSectionFormRenderer",
|
"renders icon and title in one row for %s",
|
||||||
"UpdateCustomSectionFormRenderer",
|
(name) => {
|
||||||
])("renders icon and title in one row for %s", (name) => {
|
const body = rendererBody(name);
|
||||||
const body = rendererBody(name);
|
const rowIndex = body.indexOf('"flex items-end sm:col-span-full"');
|
||||||
const rowIndex = body.indexOf('"flex items-end sm:col-span-full"');
|
const iconIndex = body.indexOf('name="icon"', rowIndex);
|
||||||
const iconIndex = body.indexOf('name="icon"', rowIndex);
|
const titleIndex = body.indexOf('name="title"', rowIndex);
|
||||||
const titleIndex = body.indexOf('name="title"', rowIndex);
|
const sectionTypeIndex = body.indexOf('name="type"', rowIndex);
|
||||||
const sectionTypeIndex = body.indexOf('name="type"', rowIndex);
|
|
||||||
|
|
||||||
expect(rowIndex).toBeGreaterThanOrEqual(0);
|
expect(rowIndex).toBeGreaterThanOrEqual(0);
|
||||||
expect(iconIndex).toBeGreaterThan(rowIndex);
|
expect(iconIndex).toBeGreaterThan(rowIndex);
|
||||||
expect(titleIndex).toBeGreaterThan(iconIndex);
|
expect(titleIndex).toBeGreaterThan(iconIndex);
|
||||||
expect(sectionTypeIndex).toBeGreaterThan(titleIndex);
|
expect(sectionTypeIndex).toBeGreaterThan(titleIndex);
|
||||||
expect(body).toContain('className="rounded-r-none border-input border-e-0"');
|
expect(body).toContain('className="rounded-r-none border-input border-e-0"');
|
||||||
expect(body).toContain('className="rounded-s-none"');
|
expect(body).toContain('className="rounded-s-none"');
|
||||||
});
|
},
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|||||||
+260
-260
@@ -9,45 +9,39 @@
|
|||||||
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
|
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
|
||||||
|
|
||||||
import { Route as rootRouteImport } from "./routes/__root";
|
import { Route as rootRouteImport } from "./routes/__root";
|
||||||
import { Route as DashboardRouteRouteImport } from "./routes/dashboard/route";
|
|
||||||
import { Route as AuthRouteRouteImport } from "./routes/auth/route";
|
|
||||||
import { Route as AgentRouteRouteImport } from "./routes/agent/route";
|
|
||||||
import { Route as HomeRouteRouteImport } from "./routes/_home/route";
|
import { Route as HomeRouteRouteImport } from "./routes/_home/route";
|
||||||
import { Route as DashboardIndexRouteImport } from "./routes/dashboard/index";
|
import { Route as AgentRouteRouteImport } from "./routes/agent/route";
|
||||||
import { Route as AuthIndexRouteImport } from "./routes/auth/index";
|
import { Route as AuthRouteRouteImport } from "./routes/auth/route";
|
||||||
import { Route as AgentIndexRouteImport } from "./routes/agent/index";
|
import { Route as DashboardRouteRouteImport } from "./routes/dashboard/route";
|
||||||
import { Route as HomeIndexRouteImport } from "./routes/_home/index";
|
|
||||||
import { Route as TemplatesSplatRouteImport } from "./routes/templates/$";
|
|
||||||
import { Route as AuthVerify2faBackupRouteImport } from "./routes/auth/verify-2fa-backup";
|
|
||||||
import { Route as AuthVerify2faRouteImport } from "./routes/auth/verify-2fa";
|
|
||||||
import { Route as AuthResumePasswordRouteImport } from "./routes/auth/resume-password";
|
|
||||||
import { Route as AuthResetPasswordRouteImport } from "./routes/auth/reset-password";
|
|
||||||
import { Route as AuthRegisterRouteImport } from "./routes/auth/register";
|
|
||||||
import { Route as AuthLoginRouteImport } from "./routes/auth/login";
|
|
||||||
import { Route as AuthForgotPasswordRouteImport } from "./routes/auth/forgot-password";
|
|
||||||
import { Route as AgentNewRouteImport } from "./routes/agent/new";
|
|
||||||
import { Route as AgentThreadIdRouteImport } from "./routes/agent/$threadId";
|
|
||||||
import { Route as UsernameSlugRouteImport } from "./routes/$username/$slug";
|
import { Route as UsernameSlugRouteImport } from "./routes/$username/$slug";
|
||||||
|
import { Route as HomeIndexRouteImport } from "./routes/_home/index";
|
||||||
|
import { Route as AgentIndexRouteImport } from "./routes/agent/index";
|
||||||
|
import { Route as AgentThreadIdRouteImport } from "./routes/agent/$threadId";
|
||||||
|
import { Route as AgentNewRouteImport } from "./routes/agent/new";
|
||||||
|
import { Route as AuthIndexRouteImport } from "./routes/auth/index";
|
||||||
|
import { Route as AuthForgotPasswordRouteImport } from "./routes/auth/forgot-password";
|
||||||
|
import { Route as AuthLoginRouteImport } from "./routes/auth/login";
|
||||||
|
import { Route as AuthRegisterRouteImport } from "./routes/auth/register";
|
||||||
|
import { Route as AuthResetPasswordRouteImport } from "./routes/auth/reset-password";
|
||||||
|
import { Route as AuthResumePasswordRouteImport } from "./routes/auth/resume-password";
|
||||||
|
import { Route as AuthVerify2faRouteImport } from "./routes/auth/verify-2fa";
|
||||||
|
import { Route as AuthVerify2faBackupRouteImport } from "./routes/auth/verify-2fa-backup";
|
||||||
import { Route as BuilderResumeIdRouteRouteImport } from "./routes/builder/$resumeId/route";
|
import { Route as BuilderResumeIdRouteRouteImport } from "./routes/builder/$resumeId/route";
|
||||||
import { Route as DashboardResumesIndexRouteImport } from "./routes/dashboard/resumes/index";
|
import { Route as DashboardIndexRouteImport } from "./routes/dashboard/index";
|
||||||
import { Route as DashboardApplicationsIndexRouteImport } from "./routes/dashboard/applications/index";
|
import { Route as TemplatesSplatRouteImport } from "./routes/templates/$";
|
||||||
import { Route as BuilderResumeIdIndexRouteImport } from "./routes/builder/$resumeId/index";
|
import { Route as BuilderResumeIdIndexRouteImport } from "./routes/builder/$resumeId/index";
|
||||||
import { Route as DashboardSettingsProfileRouteImport } from "./routes/dashboard/settings/profile";
|
import { Route as DashboardApplicationsIndexRouteImport } from "./routes/dashboard/applications/index";
|
||||||
import { Route as DashboardSettingsPreferencesRouteImport } from "./routes/dashboard/settings/preferences";
|
import { Route as DashboardResumesIndexRouteImport } from "./routes/dashboard/resumes/index";
|
||||||
import { Route as DashboardSettingsJobSearchRouteImport } from "./routes/dashboard/settings/job-search";
|
|
||||||
import { Route as DashboardSettingsDangerZoneRouteImport } from "./routes/dashboard/settings/danger-zone";
|
|
||||||
import { Route as DashboardSettingsApiKeysRouteImport } from "./routes/dashboard/settings/api-keys";
|
import { Route as DashboardSettingsApiKeysRouteImport } from "./routes/dashboard/settings/api-keys";
|
||||||
|
import { Route as DashboardSettingsDangerZoneRouteImport } from "./routes/dashboard/settings/danger-zone";
|
||||||
import { Route as DashboardSettingsIntegrationsRouteRouteImport } from "./routes/dashboard/settings/integrations/route";
|
import { Route as DashboardSettingsIntegrationsRouteRouteImport } from "./routes/dashboard/settings/integrations/route";
|
||||||
|
import { Route as DashboardSettingsJobSearchRouteImport } from "./routes/dashboard/settings/job-search";
|
||||||
|
import { Route as DashboardSettingsPreferencesRouteImport } from "./routes/dashboard/settings/preferences";
|
||||||
|
import { Route as DashboardSettingsProfileRouteImport } from "./routes/dashboard/settings/profile";
|
||||||
import { Route as DashboardSettingsAuthenticationIndexRouteImport } from "./routes/dashboard/settings/authentication/index";
|
import { Route as DashboardSettingsAuthenticationIndexRouteImport } from "./routes/dashboard/settings/authentication/index";
|
||||||
|
|
||||||
const DashboardRouteRoute = DashboardRouteRouteImport.update({
|
const HomeRouteRoute = HomeRouteRouteImport.update({
|
||||||
id: "/dashboard",
|
id: "/_home",
|
||||||
path: "/dashboard",
|
|
||||||
getParentRoute: () => rootRouteImport,
|
|
||||||
} as any);
|
|
||||||
const AuthRouteRoute = AuthRouteRouteImport.update({
|
|
||||||
id: "/auth",
|
|
||||||
path: "/auth",
|
|
||||||
getParentRoute: () => rootRouteImport,
|
getParentRoute: () => rootRouteImport,
|
||||||
} as any);
|
} as any);
|
||||||
const AgentRouteRoute = AgentRouteRouteImport.update({
|
const AgentRouteRoute = AgentRouteRouteImport.update({
|
||||||
@@ -55,73 +49,29 @@ const AgentRouteRoute = AgentRouteRouteImport.update({
|
|||||||
path: "/agent",
|
path: "/agent",
|
||||||
getParentRoute: () => rootRouteImport,
|
getParentRoute: () => rootRouteImport,
|
||||||
} as any);
|
} as any);
|
||||||
const HomeRouteRoute = HomeRouteRouteImport.update({
|
const AuthRouteRoute = AuthRouteRouteImport.update({
|
||||||
id: "/_home",
|
id: "/auth",
|
||||||
|
path: "/auth",
|
||||||
getParentRoute: () => rootRouteImport,
|
getParentRoute: () => rootRouteImport,
|
||||||
} as any);
|
} as any);
|
||||||
const DashboardIndexRoute = DashboardIndexRouteImport.update({
|
const DashboardRouteRoute = DashboardRouteRouteImport.update({
|
||||||
id: "/",
|
id: "/dashboard",
|
||||||
path: "/",
|
path: "/dashboard",
|
||||||
getParentRoute: () => DashboardRouteRoute,
|
getParentRoute: () => rootRouteImport,
|
||||||
} as any);
|
} as any);
|
||||||
const AuthIndexRoute = AuthIndexRouteImport.update({
|
const UsernameSlugRoute = UsernameSlugRouteImport.update({
|
||||||
id: "/",
|
id: "/$username/$slug",
|
||||||
path: "/",
|
path: "/$username/$slug",
|
||||||
getParentRoute: () => AuthRouteRoute,
|
getParentRoute: () => rootRouteImport,
|
||||||
} as any);
|
|
||||||
const AgentIndexRoute = AgentIndexRouteImport.update({
|
|
||||||
id: "/",
|
|
||||||
path: "/",
|
|
||||||
getParentRoute: () => AgentRouteRoute,
|
|
||||||
} as any);
|
} as any);
|
||||||
const HomeIndexRoute = HomeIndexRouteImport.update({
|
const HomeIndexRoute = HomeIndexRouteImport.update({
|
||||||
id: "/",
|
id: "/",
|
||||||
path: "/",
|
path: "/",
|
||||||
getParentRoute: () => HomeRouteRoute,
|
getParentRoute: () => HomeRouteRoute,
|
||||||
} as any);
|
} as any);
|
||||||
const TemplatesSplatRoute = TemplatesSplatRouteImport.update({
|
const AgentIndexRoute = AgentIndexRouteImport.update({
|
||||||
id: "/templates/$",
|
id: "/",
|
||||||
path: "/templates/$",
|
path: "/",
|
||||||
getParentRoute: () => rootRouteImport,
|
|
||||||
} as any);
|
|
||||||
const AuthVerify2faBackupRoute = AuthVerify2faBackupRouteImport.update({
|
|
||||||
id: "/verify-2fa-backup",
|
|
||||||
path: "/verify-2fa-backup",
|
|
||||||
getParentRoute: () => AuthRouteRoute,
|
|
||||||
} as any);
|
|
||||||
const AuthVerify2faRoute = AuthVerify2faRouteImport.update({
|
|
||||||
id: "/verify-2fa",
|
|
||||||
path: "/verify-2fa",
|
|
||||||
getParentRoute: () => AuthRouteRoute,
|
|
||||||
} as any);
|
|
||||||
const AuthResumePasswordRoute = AuthResumePasswordRouteImport.update({
|
|
||||||
id: "/resume-password",
|
|
||||||
path: "/resume-password",
|
|
||||||
getParentRoute: () => AuthRouteRoute,
|
|
||||||
} as any);
|
|
||||||
const AuthResetPasswordRoute = AuthResetPasswordRouteImport.update({
|
|
||||||
id: "/reset-password",
|
|
||||||
path: "/reset-password",
|
|
||||||
getParentRoute: () => AuthRouteRoute,
|
|
||||||
} as any);
|
|
||||||
const AuthRegisterRoute = AuthRegisterRouteImport.update({
|
|
||||||
id: "/register",
|
|
||||||
path: "/register",
|
|
||||||
getParentRoute: () => AuthRouteRoute,
|
|
||||||
} as any);
|
|
||||||
const AuthLoginRoute = AuthLoginRouteImport.update({
|
|
||||||
id: "/login",
|
|
||||||
path: "/login",
|
|
||||||
getParentRoute: () => AuthRouteRoute,
|
|
||||||
} as any);
|
|
||||||
const AuthForgotPasswordRoute = AuthForgotPasswordRouteImport.update({
|
|
||||||
id: "/forgot-password",
|
|
||||||
path: "/forgot-password",
|
|
||||||
getParentRoute: () => AuthRouteRoute,
|
|
||||||
} as any);
|
|
||||||
const AgentNewRoute = AgentNewRouteImport.update({
|
|
||||||
id: "/new",
|
|
||||||
path: "/new",
|
|
||||||
getParentRoute: () => AgentRouteRoute,
|
getParentRoute: () => AgentRouteRoute,
|
||||||
} as any);
|
} as any);
|
||||||
const AgentThreadIdRoute = AgentThreadIdRouteImport.update({
|
const AgentThreadIdRoute = AgentThreadIdRouteImport.update({
|
||||||
@@ -129,48 +79,86 @@ const AgentThreadIdRoute = AgentThreadIdRouteImport.update({
|
|||||||
path: "/$threadId",
|
path: "/$threadId",
|
||||||
getParentRoute: () => AgentRouteRoute,
|
getParentRoute: () => AgentRouteRoute,
|
||||||
} as any);
|
} as any);
|
||||||
const UsernameSlugRoute = UsernameSlugRouteImport.update({
|
const AgentNewRoute = AgentNewRouteImport.update({
|
||||||
id: "/$username/$slug",
|
id: "/new",
|
||||||
path: "/$username/$slug",
|
path: "/new",
|
||||||
getParentRoute: () => rootRouteImport,
|
getParentRoute: () => AgentRouteRoute,
|
||||||
|
} as any);
|
||||||
|
const AuthIndexRoute = AuthIndexRouteImport.update({
|
||||||
|
id: "/",
|
||||||
|
path: "/",
|
||||||
|
getParentRoute: () => AuthRouteRoute,
|
||||||
|
} as any);
|
||||||
|
const AuthForgotPasswordRoute = AuthForgotPasswordRouteImport.update({
|
||||||
|
id: "/forgot-password",
|
||||||
|
path: "/forgot-password",
|
||||||
|
getParentRoute: () => AuthRouteRoute,
|
||||||
|
} as any);
|
||||||
|
const AuthLoginRoute = AuthLoginRouteImport.update({
|
||||||
|
id: "/login",
|
||||||
|
path: "/login",
|
||||||
|
getParentRoute: () => AuthRouteRoute,
|
||||||
|
} as any);
|
||||||
|
const AuthRegisterRoute = AuthRegisterRouteImport.update({
|
||||||
|
id: "/register",
|
||||||
|
path: "/register",
|
||||||
|
getParentRoute: () => AuthRouteRoute,
|
||||||
|
} as any);
|
||||||
|
const AuthResetPasswordRoute = AuthResetPasswordRouteImport.update({
|
||||||
|
id: "/reset-password",
|
||||||
|
path: "/reset-password",
|
||||||
|
getParentRoute: () => AuthRouteRoute,
|
||||||
|
} as any);
|
||||||
|
const AuthResumePasswordRoute = AuthResumePasswordRouteImport.update({
|
||||||
|
id: "/resume-password",
|
||||||
|
path: "/resume-password",
|
||||||
|
getParentRoute: () => AuthRouteRoute,
|
||||||
|
} as any);
|
||||||
|
const AuthVerify2faRoute = AuthVerify2faRouteImport.update({
|
||||||
|
id: "/verify-2fa",
|
||||||
|
path: "/verify-2fa",
|
||||||
|
getParentRoute: () => AuthRouteRoute,
|
||||||
|
} as any);
|
||||||
|
const AuthVerify2faBackupRoute = AuthVerify2faBackupRouteImport.update({
|
||||||
|
id: "/verify-2fa-backup",
|
||||||
|
path: "/verify-2fa-backup",
|
||||||
|
getParentRoute: () => AuthRouteRoute,
|
||||||
} as any);
|
} as any);
|
||||||
const BuilderResumeIdRouteRoute = BuilderResumeIdRouteRouteImport.update({
|
const BuilderResumeIdRouteRoute = BuilderResumeIdRouteRouteImport.update({
|
||||||
id: "/builder/$resumeId",
|
id: "/builder/$resumeId",
|
||||||
path: "/builder/$resumeId",
|
path: "/builder/$resumeId",
|
||||||
getParentRoute: () => rootRouteImport,
|
getParentRoute: () => rootRouteImport,
|
||||||
} as any);
|
} as any);
|
||||||
const DashboardResumesIndexRoute = DashboardResumesIndexRouteImport.update({
|
const DashboardIndexRoute = DashboardIndexRouteImport.update({
|
||||||
id: "/resumes/",
|
id: "/",
|
||||||
path: "/resumes/",
|
path: "/",
|
||||||
getParentRoute: () => DashboardRouteRoute,
|
getParentRoute: () => DashboardRouteRoute,
|
||||||
} as any);
|
} as any);
|
||||||
|
const TemplatesSplatRoute = TemplatesSplatRouteImport.update({
|
||||||
|
id: "/templates/$",
|
||||||
|
path: "/templates/$",
|
||||||
|
getParentRoute: () => rootRouteImport,
|
||||||
|
} as any);
|
||||||
|
const BuilderResumeIdIndexRoute = BuilderResumeIdIndexRouteImport.update({
|
||||||
|
id: "/",
|
||||||
|
path: "/",
|
||||||
|
getParentRoute: () => BuilderResumeIdRouteRoute,
|
||||||
|
} as any);
|
||||||
const DashboardApplicationsIndexRoute =
|
const DashboardApplicationsIndexRoute =
|
||||||
DashboardApplicationsIndexRouteImport.update({
|
DashboardApplicationsIndexRouteImport.update({
|
||||||
id: "/applications/",
|
id: "/applications/",
|
||||||
path: "/applications/",
|
path: "/applications/",
|
||||||
getParentRoute: () => DashboardRouteRoute,
|
getParentRoute: () => DashboardRouteRoute,
|
||||||
} as any);
|
} as any);
|
||||||
const BuilderResumeIdIndexRoute = BuilderResumeIdIndexRouteImport.update({
|
const DashboardResumesIndexRoute = DashboardResumesIndexRouteImport.update({
|
||||||
id: "/",
|
id: "/resumes/",
|
||||||
path: "/",
|
path: "/resumes/",
|
||||||
getParentRoute: () => BuilderResumeIdRouteRoute,
|
getParentRoute: () => DashboardRouteRoute,
|
||||||
} as any);
|
} as any);
|
||||||
const DashboardSettingsProfileRoute =
|
const DashboardSettingsApiKeysRoute =
|
||||||
DashboardSettingsProfileRouteImport.update({
|
DashboardSettingsApiKeysRouteImport.update({
|
||||||
id: "/settings/profile",
|
id: "/settings/api-keys",
|
||||||
path: "/settings/profile",
|
path: "/settings/api-keys",
|
||||||
getParentRoute: () => DashboardRouteRoute,
|
|
||||||
} as any);
|
|
||||||
const DashboardSettingsPreferencesRoute =
|
|
||||||
DashboardSettingsPreferencesRouteImport.update({
|
|
||||||
id: "/settings/preferences",
|
|
||||||
path: "/settings/preferences",
|
|
||||||
getParentRoute: () => DashboardRouteRoute,
|
|
||||||
} as any);
|
|
||||||
const DashboardSettingsJobSearchRoute =
|
|
||||||
DashboardSettingsJobSearchRouteImport.update({
|
|
||||||
id: "/settings/job-search",
|
|
||||||
path: "/settings/job-search",
|
|
||||||
getParentRoute: () => DashboardRouteRoute,
|
getParentRoute: () => DashboardRouteRoute,
|
||||||
} as any);
|
} as any);
|
||||||
const DashboardSettingsDangerZoneRoute =
|
const DashboardSettingsDangerZoneRoute =
|
||||||
@@ -179,18 +167,30 @@ const DashboardSettingsDangerZoneRoute =
|
|||||||
path: "/settings/danger-zone",
|
path: "/settings/danger-zone",
|
||||||
getParentRoute: () => DashboardRouteRoute,
|
getParentRoute: () => DashboardRouteRoute,
|
||||||
} as any);
|
} as any);
|
||||||
const DashboardSettingsApiKeysRoute =
|
|
||||||
DashboardSettingsApiKeysRouteImport.update({
|
|
||||||
id: "/settings/api-keys",
|
|
||||||
path: "/settings/api-keys",
|
|
||||||
getParentRoute: () => DashboardRouteRoute,
|
|
||||||
} as any);
|
|
||||||
const DashboardSettingsIntegrationsRouteRoute =
|
const DashboardSettingsIntegrationsRouteRoute =
|
||||||
DashboardSettingsIntegrationsRouteRouteImport.update({
|
DashboardSettingsIntegrationsRouteRouteImport.update({
|
||||||
id: "/settings/integrations",
|
id: "/settings/integrations",
|
||||||
path: "/settings/integrations",
|
path: "/settings/integrations",
|
||||||
getParentRoute: () => DashboardRouteRoute,
|
getParentRoute: () => DashboardRouteRoute,
|
||||||
} as any);
|
} as any);
|
||||||
|
const DashboardSettingsJobSearchRoute =
|
||||||
|
DashboardSettingsJobSearchRouteImport.update({
|
||||||
|
id: "/settings/job-search",
|
||||||
|
path: "/settings/job-search",
|
||||||
|
getParentRoute: () => DashboardRouteRoute,
|
||||||
|
} as any);
|
||||||
|
const DashboardSettingsPreferencesRoute =
|
||||||
|
DashboardSettingsPreferencesRouteImport.update({
|
||||||
|
id: "/settings/preferences",
|
||||||
|
path: "/settings/preferences",
|
||||||
|
getParentRoute: () => DashboardRouteRoute,
|
||||||
|
} as any);
|
||||||
|
const DashboardSettingsProfileRoute =
|
||||||
|
DashboardSettingsProfileRouteImport.update({
|
||||||
|
id: "/settings/profile",
|
||||||
|
path: "/settings/profile",
|
||||||
|
getParentRoute: () => DashboardRouteRoute,
|
||||||
|
} as any);
|
||||||
const DashboardSettingsAuthenticationIndexRoute =
|
const DashboardSettingsAuthenticationIndexRoute =
|
||||||
DashboardSettingsAuthenticationIndexRouteImport.update({
|
DashboardSettingsAuthenticationIndexRouteImport.update({
|
||||||
id: "/settings/authentication/",
|
id: "/settings/authentication/",
|
||||||
@@ -394,18 +394,11 @@ export interface RootRouteChildren {
|
|||||||
|
|
||||||
declare module "@tanstack/react-router" {
|
declare module "@tanstack/react-router" {
|
||||||
interface FileRoutesByPath {
|
interface FileRoutesByPath {
|
||||||
"/dashboard": {
|
"/_home": {
|
||||||
id: "/dashboard";
|
id: "/_home";
|
||||||
path: "/dashboard";
|
path: "";
|
||||||
fullPath: "/dashboard";
|
fullPath: "/";
|
||||||
preLoaderRoute: typeof DashboardRouteRouteImport;
|
preLoaderRoute: typeof HomeRouteRouteImport;
|
||||||
parentRoute: typeof rootRouteImport;
|
|
||||||
};
|
|
||||||
"/auth": {
|
|
||||||
id: "/auth";
|
|
||||||
path: "/auth";
|
|
||||||
fullPath: "/auth";
|
|
||||||
preLoaderRoute: typeof AuthRouteRouteImport;
|
|
||||||
parentRoute: typeof rootRouteImport;
|
parentRoute: typeof rootRouteImport;
|
||||||
};
|
};
|
||||||
"/agent": {
|
"/agent": {
|
||||||
@@ -415,33 +408,26 @@ declare module "@tanstack/react-router" {
|
|||||||
preLoaderRoute: typeof AgentRouteRouteImport;
|
preLoaderRoute: typeof AgentRouteRouteImport;
|
||||||
parentRoute: typeof rootRouteImport;
|
parentRoute: typeof rootRouteImport;
|
||||||
};
|
};
|
||||||
"/_home": {
|
"/auth": {
|
||||||
id: "/_home";
|
id: "/auth";
|
||||||
path: "";
|
path: "/auth";
|
||||||
fullPath: "/";
|
fullPath: "/auth";
|
||||||
preLoaderRoute: typeof HomeRouteRouteImport;
|
preLoaderRoute: typeof AuthRouteRouteImport;
|
||||||
parentRoute: typeof rootRouteImport;
|
parentRoute: typeof rootRouteImport;
|
||||||
};
|
};
|
||||||
"/dashboard/": {
|
"/dashboard": {
|
||||||
id: "/dashboard/";
|
id: "/dashboard";
|
||||||
path: "/";
|
path: "/dashboard";
|
||||||
fullPath: "/dashboard/";
|
fullPath: "/dashboard";
|
||||||
preLoaderRoute: typeof DashboardIndexRouteImport;
|
preLoaderRoute: typeof DashboardRouteRouteImport;
|
||||||
parentRoute: typeof DashboardRouteRoute;
|
parentRoute: typeof rootRouteImport;
|
||||||
};
|
};
|
||||||
"/auth/": {
|
"/$username/$slug": {
|
||||||
id: "/auth/";
|
id: "/$username/$slug";
|
||||||
path: "/";
|
path: "/$username/$slug";
|
||||||
fullPath: "/auth/";
|
fullPath: "/$username/$slug";
|
||||||
preLoaderRoute: typeof AuthIndexRouteImport;
|
preLoaderRoute: typeof UsernameSlugRouteImport;
|
||||||
parentRoute: typeof AuthRouteRoute;
|
parentRoute: typeof rootRouteImport;
|
||||||
};
|
|
||||||
"/agent/": {
|
|
||||||
id: "/agent/";
|
|
||||||
path: "/";
|
|
||||||
fullPath: "/agent/";
|
|
||||||
preLoaderRoute: typeof AgentIndexRouteImport;
|
|
||||||
parentRoute: typeof AgentRouteRoute;
|
|
||||||
};
|
};
|
||||||
"/_home/": {
|
"/_home/": {
|
||||||
id: "/_home/";
|
id: "/_home/";
|
||||||
@@ -450,67 +436,11 @@ declare module "@tanstack/react-router" {
|
|||||||
preLoaderRoute: typeof HomeIndexRouteImport;
|
preLoaderRoute: typeof HomeIndexRouteImport;
|
||||||
parentRoute: typeof HomeRouteRoute;
|
parentRoute: typeof HomeRouteRoute;
|
||||||
};
|
};
|
||||||
"/templates/$": {
|
"/agent/": {
|
||||||
id: "/templates/$";
|
id: "/agent/";
|
||||||
path: "/templates/$";
|
path: "/";
|
||||||
fullPath: "/templates/$";
|
fullPath: "/agent/";
|
||||||
preLoaderRoute: typeof TemplatesSplatRouteImport;
|
preLoaderRoute: typeof AgentIndexRouteImport;
|
||||||
parentRoute: typeof rootRouteImport;
|
|
||||||
};
|
|
||||||
"/auth/verify-2fa-backup": {
|
|
||||||
id: "/auth/verify-2fa-backup";
|
|
||||||
path: "/verify-2fa-backup";
|
|
||||||
fullPath: "/auth/verify-2fa-backup";
|
|
||||||
preLoaderRoute: typeof AuthVerify2faBackupRouteImport;
|
|
||||||
parentRoute: typeof AuthRouteRoute;
|
|
||||||
};
|
|
||||||
"/auth/verify-2fa": {
|
|
||||||
id: "/auth/verify-2fa";
|
|
||||||
path: "/verify-2fa";
|
|
||||||
fullPath: "/auth/verify-2fa";
|
|
||||||
preLoaderRoute: typeof AuthVerify2faRouteImport;
|
|
||||||
parentRoute: typeof AuthRouteRoute;
|
|
||||||
};
|
|
||||||
"/auth/resume-password": {
|
|
||||||
id: "/auth/resume-password";
|
|
||||||
path: "/resume-password";
|
|
||||||
fullPath: "/auth/resume-password";
|
|
||||||
preLoaderRoute: typeof AuthResumePasswordRouteImport;
|
|
||||||
parentRoute: typeof AuthRouteRoute;
|
|
||||||
};
|
|
||||||
"/auth/reset-password": {
|
|
||||||
id: "/auth/reset-password";
|
|
||||||
path: "/reset-password";
|
|
||||||
fullPath: "/auth/reset-password";
|
|
||||||
preLoaderRoute: typeof AuthResetPasswordRouteImport;
|
|
||||||
parentRoute: typeof AuthRouteRoute;
|
|
||||||
};
|
|
||||||
"/auth/register": {
|
|
||||||
id: "/auth/register";
|
|
||||||
path: "/register";
|
|
||||||
fullPath: "/auth/register";
|
|
||||||
preLoaderRoute: typeof AuthRegisterRouteImport;
|
|
||||||
parentRoute: typeof AuthRouteRoute;
|
|
||||||
};
|
|
||||||
"/auth/login": {
|
|
||||||
id: "/auth/login";
|
|
||||||
path: "/login";
|
|
||||||
fullPath: "/auth/login";
|
|
||||||
preLoaderRoute: typeof AuthLoginRouteImport;
|
|
||||||
parentRoute: typeof AuthRouteRoute;
|
|
||||||
};
|
|
||||||
"/auth/forgot-password": {
|
|
||||||
id: "/auth/forgot-password";
|
|
||||||
path: "/forgot-password";
|
|
||||||
fullPath: "/auth/forgot-password";
|
|
||||||
preLoaderRoute: typeof AuthForgotPasswordRouteImport;
|
|
||||||
parentRoute: typeof AuthRouteRoute;
|
|
||||||
};
|
|
||||||
"/agent/new": {
|
|
||||||
id: "/agent/new";
|
|
||||||
path: "/new";
|
|
||||||
fullPath: "/agent/new";
|
|
||||||
preLoaderRoute: typeof AgentNewRouteImport;
|
|
||||||
parentRoute: typeof AgentRouteRoute;
|
parentRoute: typeof AgentRouteRoute;
|
||||||
};
|
};
|
||||||
"/agent/$threadId": {
|
"/agent/$threadId": {
|
||||||
@@ -520,12 +450,68 @@ declare module "@tanstack/react-router" {
|
|||||||
preLoaderRoute: typeof AgentThreadIdRouteImport;
|
preLoaderRoute: typeof AgentThreadIdRouteImport;
|
||||||
parentRoute: typeof AgentRouteRoute;
|
parentRoute: typeof AgentRouteRoute;
|
||||||
};
|
};
|
||||||
"/$username/$slug": {
|
"/agent/new": {
|
||||||
id: "/$username/$slug";
|
id: "/agent/new";
|
||||||
path: "/$username/$slug";
|
path: "/new";
|
||||||
fullPath: "/$username/$slug";
|
fullPath: "/agent/new";
|
||||||
preLoaderRoute: typeof UsernameSlugRouteImport;
|
preLoaderRoute: typeof AgentNewRouteImport;
|
||||||
parentRoute: typeof rootRouteImport;
|
parentRoute: typeof AgentRouteRoute;
|
||||||
|
};
|
||||||
|
"/auth/": {
|
||||||
|
id: "/auth/";
|
||||||
|
path: "/";
|
||||||
|
fullPath: "/auth/";
|
||||||
|
preLoaderRoute: typeof AuthIndexRouteImport;
|
||||||
|
parentRoute: typeof AuthRouteRoute;
|
||||||
|
};
|
||||||
|
"/auth/forgot-password": {
|
||||||
|
id: "/auth/forgot-password";
|
||||||
|
path: "/forgot-password";
|
||||||
|
fullPath: "/auth/forgot-password";
|
||||||
|
preLoaderRoute: typeof AuthForgotPasswordRouteImport;
|
||||||
|
parentRoute: typeof AuthRouteRoute;
|
||||||
|
};
|
||||||
|
"/auth/login": {
|
||||||
|
id: "/auth/login";
|
||||||
|
path: "/login";
|
||||||
|
fullPath: "/auth/login";
|
||||||
|
preLoaderRoute: typeof AuthLoginRouteImport;
|
||||||
|
parentRoute: typeof AuthRouteRoute;
|
||||||
|
};
|
||||||
|
"/auth/register": {
|
||||||
|
id: "/auth/register";
|
||||||
|
path: "/register";
|
||||||
|
fullPath: "/auth/register";
|
||||||
|
preLoaderRoute: typeof AuthRegisterRouteImport;
|
||||||
|
parentRoute: typeof AuthRouteRoute;
|
||||||
|
};
|
||||||
|
"/auth/reset-password": {
|
||||||
|
id: "/auth/reset-password";
|
||||||
|
path: "/reset-password";
|
||||||
|
fullPath: "/auth/reset-password";
|
||||||
|
preLoaderRoute: typeof AuthResetPasswordRouteImport;
|
||||||
|
parentRoute: typeof AuthRouteRoute;
|
||||||
|
};
|
||||||
|
"/auth/resume-password": {
|
||||||
|
id: "/auth/resume-password";
|
||||||
|
path: "/resume-password";
|
||||||
|
fullPath: "/auth/resume-password";
|
||||||
|
preLoaderRoute: typeof AuthResumePasswordRouteImport;
|
||||||
|
parentRoute: typeof AuthRouteRoute;
|
||||||
|
};
|
||||||
|
"/auth/verify-2fa": {
|
||||||
|
id: "/auth/verify-2fa";
|
||||||
|
path: "/verify-2fa";
|
||||||
|
fullPath: "/auth/verify-2fa";
|
||||||
|
preLoaderRoute: typeof AuthVerify2faRouteImport;
|
||||||
|
parentRoute: typeof AuthRouteRoute;
|
||||||
|
};
|
||||||
|
"/auth/verify-2fa-backup": {
|
||||||
|
id: "/auth/verify-2fa-backup";
|
||||||
|
path: "/verify-2fa-backup";
|
||||||
|
fullPath: "/auth/verify-2fa-backup";
|
||||||
|
preLoaderRoute: typeof AuthVerify2faBackupRouteImport;
|
||||||
|
parentRoute: typeof AuthRouteRoute;
|
||||||
};
|
};
|
||||||
"/builder/$resumeId": {
|
"/builder/$resumeId": {
|
||||||
id: "/builder/$resumeId";
|
id: "/builder/$resumeId";
|
||||||
@@ -534,19 +520,19 @@ declare module "@tanstack/react-router" {
|
|||||||
preLoaderRoute: typeof BuilderResumeIdRouteRouteImport;
|
preLoaderRoute: typeof BuilderResumeIdRouteRouteImport;
|
||||||
parentRoute: typeof rootRouteImport;
|
parentRoute: typeof rootRouteImport;
|
||||||
};
|
};
|
||||||
"/dashboard/resumes/": {
|
"/dashboard/": {
|
||||||
id: "/dashboard/resumes/";
|
id: "/dashboard/";
|
||||||
path: "/resumes";
|
path: "/";
|
||||||
fullPath: "/dashboard/resumes/";
|
fullPath: "/dashboard/";
|
||||||
preLoaderRoute: typeof DashboardResumesIndexRouteImport;
|
preLoaderRoute: typeof DashboardIndexRouteImport;
|
||||||
parentRoute: typeof DashboardRouteRoute;
|
parentRoute: typeof DashboardRouteRoute;
|
||||||
};
|
};
|
||||||
"/dashboard/applications/": {
|
"/templates/$": {
|
||||||
id: "/dashboard/applications/";
|
id: "/templates/$";
|
||||||
path: "/applications";
|
path: "/templates/$";
|
||||||
fullPath: "/dashboard/applications/";
|
fullPath: "/templates/$";
|
||||||
preLoaderRoute: typeof DashboardApplicationsIndexRouteImport;
|
preLoaderRoute: typeof TemplatesSplatRouteImport;
|
||||||
parentRoute: typeof DashboardRouteRoute;
|
parentRoute: typeof rootRouteImport;
|
||||||
};
|
};
|
||||||
"/builder/$resumeId/": {
|
"/builder/$resumeId/": {
|
||||||
id: "/builder/$resumeId/";
|
id: "/builder/$resumeId/";
|
||||||
@@ -555,32 +541,18 @@ declare module "@tanstack/react-router" {
|
|||||||
preLoaderRoute: typeof BuilderResumeIdIndexRouteImport;
|
preLoaderRoute: typeof BuilderResumeIdIndexRouteImport;
|
||||||
parentRoute: typeof BuilderResumeIdRouteRoute;
|
parentRoute: typeof BuilderResumeIdRouteRoute;
|
||||||
};
|
};
|
||||||
"/dashboard/settings/profile": {
|
"/dashboard/applications/": {
|
||||||
id: "/dashboard/settings/profile";
|
id: "/dashboard/applications/";
|
||||||
path: "/settings/profile";
|
path: "/applications";
|
||||||
fullPath: "/dashboard/settings/profile";
|
fullPath: "/dashboard/applications/";
|
||||||
preLoaderRoute: typeof DashboardSettingsProfileRouteImport;
|
preLoaderRoute: typeof DashboardApplicationsIndexRouteImport;
|
||||||
parentRoute: typeof DashboardRouteRoute;
|
parentRoute: typeof DashboardRouteRoute;
|
||||||
};
|
};
|
||||||
"/dashboard/settings/preferences": {
|
"/dashboard/resumes/": {
|
||||||
id: "/dashboard/settings/preferences";
|
id: "/dashboard/resumes/";
|
||||||
path: "/settings/preferences";
|
path: "/resumes";
|
||||||
fullPath: "/dashboard/settings/preferences";
|
fullPath: "/dashboard/resumes/";
|
||||||
preLoaderRoute: typeof DashboardSettingsPreferencesRouteImport;
|
preLoaderRoute: typeof DashboardResumesIndexRouteImport;
|
||||||
parentRoute: typeof DashboardRouteRoute;
|
|
||||||
};
|
|
||||||
"/dashboard/settings/job-search": {
|
|
||||||
id: "/dashboard/settings/job-search";
|
|
||||||
path: "/settings/job-search";
|
|
||||||
fullPath: "/dashboard/settings/job-search";
|
|
||||||
preLoaderRoute: typeof DashboardSettingsJobSearchRouteImport;
|
|
||||||
parentRoute: typeof DashboardRouteRoute;
|
|
||||||
};
|
|
||||||
"/dashboard/settings/danger-zone": {
|
|
||||||
id: "/dashboard/settings/danger-zone";
|
|
||||||
path: "/settings/danger-zone";
|
|
||||||
fullPath: "/dashboard/settings/danger-zone";
|
|
||||||
preLoaderRoute: typeof DashboardSettingsDangerZoneRouteImport;
|
|
||||||
parentRoute: typeof DashboardRouteRoute;
|
parentRoute: typeof DashboardRouteRoute;
|
||||||
};
|
};
|
||||||
"/dashboard/settings/api-keys": {
|
"/dashboard/settings/api-keys": {
|
||||||
@@ -590,6 +562,13 @@ declare module "@tanstack/react-router" {
|
|||||||
preLoaderRoute: typeof DashboardSettingsApiKeysRouteImport;
|
preLoaderRoute: typeof DashboardSettingsApiKeysRouteImport;
|
||||||
parentRoute: typeof DashboardRouteRoute;
|
parentRoute: typeof DashboardRouteRoute;
|
||||||
};
|
};
|
||||||
|
"/dashboard/settings/danger-zone": {
|
||||||
|
id: "/dashboard/settings/danger-zone";
|
||||||
|
path: "/settings/danger-zone";
|
||||||
|
fullPath: "/dashboard/settings/danger-zone";
|
||||||
|
preLoaderRoute: typeof DashboardSettingsDangerZoneRouteImport;
|
||||||
|
parentRoute: typeof DashboardRouteRoute;
|
||||||
|
};
|
||||||
"/dashboard/settings/integrations": {
|
"/dashboard/settings/integrations": {
|
||||||
id: "/dashboard/settings/integrations";
|
id: "/dashboard/settings/integrations";
|
||||||
path: "/settings/integrations";
|
path: "/settings/integrations";
|
||||||
@@ -597,6 +576,27 @@ declare module "@tanstack/react-router" {
|
|||||||
preLoaderRoute: typeof DashboardSettingsIntegrationsRouteRouteImport;
|
preLoaderRoute: typeof DashboardSettingsIntegrationsRouteRouteImport;
|
||||||
parentRoute: typeof DashboardRouteRoute;
|
parentRoute: typeof DashboardRouteRoute;
|
||||||
};
|
};
|
||||||
|
"/dashboard/settings/job-search": {
|
||||||
|
id: "/dashboard/settings/job-search";
|
||||||
|
path: "/settings/job-search";
|
||||||
|
fullPath: "/dashboard/settings/job-search";
|
||||||
|
preLoaderRoute: typeof DashboardSettingsJobSearchRouteImport;
|
||||||
|
parentRoute: typeof DashboardRouteRoute;
|
||||||
|
};
|
||||||
|
"/dashboard/settings/preferences": {
|
||||||
|
id: "/dashboard/settings/preferences";
|
||||||
|
path: "/settings/preferences";
|
||||||
|
fullPath: "/dashboard/settings/preferences";
|
||||||
|
preLoaderRoute: typeof DashboardSettingsPreferencesRouteImport;
|
||||||
|
parentRoute: typeof DashboardRouteRoute;
|
||||||
|
};
|
||||||
|
"/dashboard/settings/profile": {
|
||||||
|
id: "/dashboard/settings/profile";
|
||||||
|
path: "/settings/profile";
|
||||||
|
fullPath: "/dashboard/settings/profile";
|
||||||
|
preLoaderRoute: typeof DashboardSettingsProfileRouteImport;
|
||||||
|
parentRoute: typeof DashboardRouteRoute;
|
||||||
|
};
|
||||||
"/dashboard/settings/authentication/": {
|
"/dashboard/settings/authentication/": {
|
||||||
id: "/dashboard/settings/authentication/";
|
id: "/dashboard/settings/authentication/";
|
||||||
path: "/settings/authentication";
|
path: "/settings/authentication";
|
||||||
|
|||||||
+8
-8
@@ -13,7 +13,7 @@
|
|||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/amruthpillai/reactive-resume.git"
|
"url": "https://github.com/amruthpillai/reactive-resume.git"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@11.10.0",
|
"packageManager": "pnpm@11.17.0+sha512.cca3cea332ad254bb84145f966d19f4879615210346fc92c79a047f23a0d7b3cca3c3792f0076ba1f1831d277efbcf0a9119b31a9a60eca7fb3d6231f331ef72",
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
"apps/*",
|
"apps/*",
|
||||||
"packages/*",
|
"packages/*",
|
||||||
@@ -41,25 +41,25 @@
|
|||||||
"test:agent": "turbo run test:agent"
|
"test:agent": "turbo run test:agent"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "^2.5.3",
|
"@biomejs/biome": "^2.5.5",
|
||||||
"@commitlint/cli": "^21.2.1",
|
"@commitlint/cli": "^21.2.1",
|
||||||
"@commitlint/config-conventional": "^21.2.0",
|
"@commitlint/config-conventional": "^21.2.0",
|
||||||
"@playwright/test": "^1.61.1",
|
"@playwright/test": "^1.62.0",
|
||||||
"@reactive-resume/config": "workspace:*",
|
"@reactive-resume/config": "workspace:*",
|
||||||
"@testing-library/dom": "^10.4.1",
|
"@testing-library/dom": "^10.4.1",
|
||||||
"@testing-library/jest-dom": "^6.9.1",
|
"@testing-library/jest-dom": "^7.0.0",
|
||||||
"@testing-library/react": "^16.3.2",
|
"@testing-library/react": "^16.3.2",
|
||||||
"@testing-library/user-event": "^14.6.1",
|
"@testing-library/user-event": "^14.6.1",
|
||||||
"@types/node": "^26.1.1",
|
"@types/node": "^26.1.1",
|
||||||
"@types/pg": "^8.20.0",
|
"@types/pg": "^8.20.0",
|
||||||
"@vitest/coverage-v8": "^4.1.10",
|
"@vitest/coverage-v8": "^4.1.10",
|
||||||
"github-actionlint": "1.7.12",
|
"github-actionlint": "1.7.12",
|
||||||
"happy-dom": "^20.10.6",
|
"happy-dom": "^20.11.1",
|
||||||
"knip": "^6.25.0",
|
"knip": "^6.29.0",
|
||||||
"lefthook": "^2.1.10",
|
"lefthook": "^2.1.10",
|
||||||
"markdownlint-cli2": "0.23.0",
|
"markdownlint-cli2": "0.23.2",
|
||||||
"pg": "^8.22.0",
|
"pg": "^8.22.0",
|
||||||
"turbo": "^2.10.4",
|
"turbo": "^2.10.7",
|
||||||
"typescript": "^7.0.2",
|
"typescript": "^7.0.2",
|
||||||
"vitest": "^4.1.10"
|
"vitest": "^4.1.10"
|
||||||
}
|
}
|
||||||
|
|||||||
+21
-21
@@ -18,23 +18,23 @@
|
|||||||
"test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests"
|
"test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ai-sdk/anthropic": "^4.0.10",
|
"@ai-sdk/anthropic": "^4.0.21",
|
||||||
"@ai-sdk/cerebras": "^3.0.6",
|
"@ai-sdk/cerebras": "^3.0.14",
|
||||||
"@ai-sdk/cohere": "^4.0.6",
|
"@ai-sdk/cohere": "^4.0.12",
|
||||||
"@ai-sdk/deepseek": "^3.0.6",
|
"@ai-sdk/deepseek": "^3.0.13",
|
||||||
"@ai-sdk/fireworks": "^3.0.7",
|
"@ai-sdk/fireworks": "^3.0.15",
|
||||||
"@ai-sdk/google": "^4.0.10",
|
"@ai-sdk/google": "^4.0.24",
|
||||||
"@ai-sdk/groq": "^4.0.6",
|
"@ai-sdk/groq": "^4.0.13",
|
||||||
"@ai-sdk/mistral": "^4.0.7",
|
"@ai-sdk/mistral": "^4.0.14",
|
||||||
"@ai-sdk/openai": "^4.0.9",
|
"@ai-sdk/openai": "^4.0.20",
|
||||||
"@ai-sdk/openai-compatible": "^3.0.6",
|
"@ai-sdk/openai-compatible": "^3.0.14",
|
||||||
"@ai-sdk/perplexity": "^4.0.7",
|
"@ai-sdk/perplexity": "^4.0.13",
|
||||||
"@ai-sdk/togetherai": "^3.0.7",
|
"@ai-sdk/togetherai": "^3.0.15",
|
||||||
"@ai-sdk/xai": "^4.0.9",
|
"@ai-sdk/xai": "^4.0.18",
|
||||||
"@aws-sdk/client-s3": "^3.1081.0",
|
"@aws-sdk/client-s3": "^3.1095.0",
|
||||||
"@orpc/client": "^1.14.7",
|
"@orpc/client": "^1.14.10",
|
||||||
"@orpc/experimental-ratelimit": "^1.14.7",
|
"@orpc/experimental-ratelimit": "^1.14.10",
|
||||||
"@orpc/server": "^1.14.7",
|
"@orpc/server": "^1.14.10",
|
||||||
"@reactive-resume/ai": "workspace:*",
|
"@reactive-resume/ai": "workspace:*",
|
||||||
"@reactive-resume/auth": "workspace:*",
|
"@reactive-resume/auth": "workspace:*",
|
||||||
"@reactive-resume/db": "workspace:*",
|
"@reactive-resume/db": "workspace:*",
|
||||||
@@ -43,15 +43,15 @@
|
|||||||
"@reactive-resume/resume": "workspace:*",
|
"@reactive-resume/resume": "workspace:*",
|
||||||
"@reactive-resume/schema": "workspace:*",
|
"@reactive-resume/schema": "workspace:*",
|
||||||
"@reactive-resume/utils": "workspace:*",
|
"@reactive-resume/utils": "workspace:*",
|
||||||
"ai": "^7.0.18",
|
"ai": "^7.0.37",
|
||||||
"bcrypt": "^6.0.0",
|
"bcrypt": "^6.0.0",
|
||||||
"better-auth": "1.6.23",
|
"better-auth": "1.6.25",
|
||||||
"drizzle-orm": "1.0.0-rc.4",
|
"drizzle-orm": "1.0.0-rc.4",
|
||||||
"drizzle-zod": "1.0.0-beta.14-a36c63d",
|
"drizzle-zod": "1.0.0-beta.14-a36c63d",
|
||||||
"es-toolkit": "^1.49.0",
|
"es-toolkit": "^1.50.0",
|
||||||
"ioredis": "^5.11.1",
|
"ioredis": "^5.11.1",
|
||||||
"ollama-ai-provider-v2": "^4.0.1",
|
"ollama-ai-provider-v2": "^4.0.1",
|
||||||
"react": "^19.2.7",
|
"react": "^19.2.8",
|
||||||
"resumable-stream": "^2.2.12",
|
"resumable-stream": "^2.2.12",
|
||||||
"sharp": "^0.35.3",
|
"sharp": "^0.35.3",
|
||||||
"ts-pattern": "^5.9.0",
|
"ts-pattern": "^5.9.0",
|
||||||
|
|||||||
@@ -52,14 +52,14 @@ describe("agent tools", () => {
|
|||||||
expect(tools).not.toHaveProperty("web_search");
|
expect(tools).not.toHaveProperty("web_search");
|
||||||
});
|
});
|
||||||
|
|
||||||
it.each([
|
it.each(["https://api.openai.com/v1?proxy=1", "https://api.openai.com/v1#fragment"])(
|
||||||
"https://api.openai.com/v1?proxy=1",
|
"does not add provider-native web search for OpenAI providers with non-exact base URL %s",
|
||||||
"https://api.openai.com/v1#fragment",
|
(baseURL) => {
|
||||||
])("does not add provider-native web search for OpenAI providers with non-exact base URL %s", (baseURL) => {
|
const tools = buildTools("openai", { 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", () => {
|
it("does not add provider-native web search for unsupported OpenAI models", () => {
|
||||||
const tools = buildTools("openai", { model: "custom-model" });
|
const tools = buildTools("openai", { model: "custom-model" });
|
||||||
@@ -67,18 +67,14 @@ describe("agent tools", () => {
|
|||||||
expect(tools).not.toHaveProperty("web_search");
|
expect(tools).not.toHaveProperty("web_search");
|
||||||
});
|
});
|
||||||
|
|
||||||
it.each<AIProvider>([
|
it.each<AIProvider>(["anthropic", "gemini", "vercel-ai-gateway", "openrouter", "ollama", "openai-compatible"])(
|
||||||
"anthropic",
|
"does not add provider-native web search for %s",
|
||||||
"gemini",
|
(provider) => {
|
||||||
"vercel-ai-gateway",
|
const tools = buildTools(provider);
|
||||||
"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", () => {
|
it("keeps instructions explicit about native search availability", () => {
|
||||||
expect(buildAgentInstructions({ hasProviderNativeSearch: true })).toContain("Use web_search");
|
expect(buildAgentInstructions({ hasProviderNativeSearch: true })).toContain("Use web_search");
|
||||||
|
|||||||
@@ -15,20 +15,20 @@
|
|||||||
"test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests"
|
"test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@better-auth/api-key": "^1.6.23",
|
"@better-auth/api-key": "^1.6.25",
|
||||||
"@better-auth/drizzle-adapter": "^1.6.23",
|
"@better-auth/drizzle-adapter": "^1.6.25",
|
||||||
"@better-auth/infra": "^0.3.5",
|
"@better-auth/infra": "^0.3.7",
|
||||||
"@better-auth/oauth-provider": "^1.6.23",
|
"@better-auth/oauth-provider": "^1.6.25",
|
||||||
"@better-auth/passkey": "^1.6.23",
|
"@better-auth/passkey": "^1.6.25",
|
||||||
"@reactive-resume/db": "workspace:*",
|
"@reactive-resume/db": "workspace:*",
|
||||||
"@reactive-resume/email": "workspace:*",
|
"@reactive-resume/email": "workspace:*",
|
||||||
"@reactive-resume/env": "workspace:*",
|
"@reactive-resume/env": "workspace:*",
|
||||||
"@reactive-resume/utils": "workspace:*",
|
"@reactive-resume/utils": "workspace:*",
|
||||||
"bcrypt": "^6.0.0",
|
"bcrypt": "^6.0.0",
|
||||||
"better-auth": "1.6.23",
|
"better-auth": "1.6.25",
|
||||||
"drizzle-orm": "1.0.0-rc.4",
|
"drizzle-orm": "1.0.0-rc.4",
|
||||||
"jose": "^6.2.3",
|
"jose": "^6.2.4",
|
||||||
"react": "^19.2.7"
|
"react": "^19.2.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@reactive-resume/config": "workspace:*",
|
"@reactive-resume/config": "workspace:*",
|
||||||
|
|||||||
@@ -18,11 +18,11 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@reactive-resume/env": "workspace:*",
|
"@reactive-resume/env": "workspace:*",
|
||||||
"nodemailer": "^9.0.3",
|
"nodemailer": "^9.0.3",
|
||||||
"react": "^19.2.7",
|
"react": "^19.2.8",
|
||||||
"react-email": "^6.6.8"
|
"react-email": "^6.9.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@react-email/ui": "^6.6.8",
|
"@react-email/ui": "^6.9.1",
|
||||||
"@reactive-resume/config": "workspace:*",
|
"@reactive-resume/config": "workspace:*",
|
||||||
"@types/nodemailer": "^8.0.1",
|
"@types/nodemailer": "^8.0.1",
|
||||||
"@types/react": "^19.2.17",
|
"@types/react": "^19.2.17",
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@modelcontextprotocol/sdk": "^1.29.0",
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
||||||
"@orpc/server": "^1.14.7",
|
"@orpc/server": "^1.14.10",
|
||||||
"@reactive-resume/ai": "workspace:*",
|
"@reactive-resume/ai": "workspace:*",
|
||||||
"@reactive-resume/api": "workspace:*",
|
"@reactive-resume/api": "workspace:*",
|
||||||
"@reactive-resume/env": "workspace:*",
|
"@reactive-resume/env": "workspace:*",
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
"cjk-regex": "^3.4.0",
|
"cjk-regex": "^3.4.0",
|
||||||
"node-html-parser": "^9.0.0",
|
"node-html-parser": "^9.0.0",
|
||||||
"phosphor-icons-react-pdf": "^0.1.3",
|
"phosphor-icons-react-pdf": "^0.1.3",
|
||||||
"react": "^19.2.7",
|
"react": "^19.2.8",
|
||||||
"react-pdf-html": "^2.1.5"
|
"react-pdf-html": "^2.1.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@@ -27,21 +27,22 @@ describe("rich text template styles", () => {
|
|||||||
expect(richListItemContentBlock?.groups?.body).not.toMatch(/\blineHeight:/);
|
expect(richListItemContentBlock?.groups?.body).not.toMatch(/\blineHeight:/);
|
||||||
});
|
});
|
||||||
|
|
||||||
it.each(
|
it.each(templatePageFiles.map((file) => [basename(file), file]))(
|
||||||
templatePageFiles.map((file) => [basename(file), file]),
|
"%s keeps list item rich text on the global body line height",
|
||||||
)("%s keeps list item rich text on the global body line height", (_name, file) => {
|
(_name, file) => {
|
||||||
const source = readFileSync(file, "utf8");
|
const source = readFileSync(file, "utf8");
|
||||||
|
|
||||||
if (source.includes("createBaseTemplateStyles")) {
|
if (source.includes("createBaseTemplateStyles")) {
|
||||||
// Factory handles richListItemContent; guard is on the factory test above.
|
// Factory handles richListItemContent; guard is on the factory test above.
|
||||||
expect(source).toContain("createBaseTemplateStyles");
|
expect(source).toContain("createBaseTemplateStyles");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Legacy: template defines richListItemContent inline — no lineHeight override allowed.
|
// Legacy: template defines richListItemContent inline — no lineHeight override allowed.
|
||||||
const richListItemContentBlock = source.match(/richListItemContent:\s*{(?<body>[\s\S]*?)^\s*},/m);
|
const richListItemContentBlock = source.match(/richListItemContent:\s*{(?<body>[\s\S]*?)^\s*},/m);
|
||||||
expect(richListItemContentBlock?.groups?.body).toBeDefined();
|
expect(richListItemContentBlock?.groups?.body).toBeDefined();
|
||||||
expect(richListItemContentBlock?.groups?.body).toContain("...bodyText");
|
expect(richListItemContentBlock?.groups?.body).toContain("...bodyText");
|
||||||
expect(richListItemContentBlock?.groups?.body).not.toMatch(/\blineHeight:/);
|
expect(richListItemContentBlock?.groups?.body).not.toMatch(/\blineHeight:/);
|
||||||
});
|
},
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@base-ui/react": "^1.6.0",
|
"@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/react": "^2.1.10",
|
||||||
"@phosphor-icons/web": "^2.1.2",
|
"@phosphor-icons/web": "^2.1.2",
|
||||||
"@reactive-resume/utils": "workspace:*",
|
"@reactive-resume/utils": "workspace:*",
|
||||||
@@ -27,22 +27,22 @@
|
|||||||
"class-variance-authority": "^0.7.1",
|
"class-variance-authority": "^0.7.1",
|
||||||
"cmdk": "^1.1.1",
|
"cmdk": "^1.1.1",
|
||||||
"next-themes": "^0.4.6",
|
"next-themes": "^0.4.6",
|
||||||
"react": "^19.2.7",
|
"react": "^19.2.8",
|
||||||
"react-dom": "^19.2.7",
|
"react-dom": "^19.2.8",
|
||||||
"react-resizable-panels": "^4.12.1",
|
"react-resizable-panels": "^4.12.2",
|
||||||
"shadcn": "^4.13.0",
|
"shadcn": "^4.15.0",
|
||||||
"sonner": "^2.0.7",
|
"sonner": "^2.0.7",
|
||||||
"tw-animate-css": "^1.4.0"
|
"tw-animate-css": "^1.4.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@reactive-resume/config": "workspace:*",
|
"@reactive-resume/config": "workspace:*",
|
||||||
"@tailwindcss/postcss": "^4.3.2",
|
"@tailwindcss/postcss": "^4.3.3",
|
||||||
"@tailwindcss/typography": "^0.5.20",
|
"@tailwindcss/typography": "^0.5.20",
|
||||||
"@types/react": "^19.2.17",
|
"@types/react": "^19.2.17",
|
||||||
"@types/react-dom": "^19.2.3",
|
"@types/react-dom": "^19.2.3",
|
||||||
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
||||||
"postcss": "^8.5.16",
|
"postcss": "^8.5.23",
|
||||||
"tailwindcss": "^4.3.2",
|
"tailwindcss": "^4.3.3",
|
||||||
"typescript": "^7.0.2"
|
"typescript": "^7.0.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,15 +14,13 @@ describe("Badge", () => {
|
|||||||
expect(screen.getByText("x")).toHaveClass("my-extra");
|
expect(screen.getByText("x")).toHaveClass("my-extra");
|
||||||
});
|
});
|
||||||
|
|
||||||
it.each([
|
it.each([["default"], ["secondary"], ["destructive"], ["outline"]] as const)(
|
||||||
["default"],
|
"renders variant=%s without throwing",
|
||||||
["secondary"],
|
(variant) => {
|
||||||
["destructive"],
|
render(<Badge variant={variant}>{variant}</Badge>);
|
||||||
["outline"],
|
expect(screen.getByText(variant)).toBeInTheDocument();
|
||||||
] as const)("renders variant=%s without throwing", (variant) => {
|
},
|
||||||
render(<Badge variant={variant}>{variant}</Badge>);
|
);
|
||||||
expect(screen.getByText(variant)).toBeInTheDocument();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("forwards aria attributes", () => {
|
it("forwards aria attributes", () => {
|
||||||
render(<Badge aria-label="status indicator">3</Badge>);
|
render(<Badge aria-label="status indicator">3</Badge>);
|
||||||
|
|||||||
@@ -52,31 +52,21 @@ describe("Button", () => {
|
|||||||
expect(screen.getByRole("button")).toBeDisabled();
|
expect(screen.getByRole("button")).toBeDisabled();
|
||||||
});
|
});
|
||||||
|
|
||||||
it.each([
|
it.each([["default"], ["outline"], ["secondary"], ["ghost"], ["destructive"], ["link"]] as const)(
|
||||||
["default"],
|
"renders variant=%s without throwing",
|
||||||
["outline"],
|
(variant) => {
|
||||||
["secondary"],
|
render(<Button variant={variant}>x</Button>);
|
||||||
["ghost"],
|
expect(screen.getByRole("button")).toBeInTheDocument();
|
||||||
["destructive"],
|
},
|
||||||
["link"],
|
);
|
||||||
] as const)("renders variant=%s without throwing", (variant) => {
|
|
||||||
render(<Button variant={variant}>x</Button>);
|
|
||||||
expect(screen.getByRole("button")).toBeInTheDocument();
|
|
||||||
});
|
|
||||||
|
|
||||||
it.each([
|
it.each([["default"], ["xs"], ["sm"], ["lg"], ["icon"], ["icon-xs"], ["icon-sm"], ["icon-lg"]] as const)(
|
||||||
["default"],
|
"renders size=%s without throwing",
|
||||||
["xs"],
|
(size) => {
|
||||||
["sm"],
|
render(<Button size={size}>x</Button>);
|
||||||
["lg"],
|
expect(screen.getByRole("button")).toBeInTheDocument();
|
||||||
["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", () => {
|
it("forwards aria-label", () => {
|
||||||
render(<Button aria-label="Close">×</Button>);
|
render(<Button aria-label="Close">×</Button>);
|
||||||
|
|||||||
Generated
+2387
-2050
File diff suppressed because it is too large
Load Diff
@@ -15,6 +15,6 @@
|
|||||||
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
||||||
"drizzle-orm": "1.0.0-rc.4",
|
"drizzle-orm": "1.0.0-rc.4",
|
||||||
"pg": "^8.22.0",
|
"pg": "^8.22.0",
|
||||||
"tsx": "^4.23.0"
|
"tsx": "^4.23.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://turbo.build/schema.json",
|
"$schema": "https://v2-10-7.turborepo.dev/schema.json",
|
||||||
"ui": "stream",
|
"ui": "stream",
|
||||||
"boundaries": {
|
"boundaries": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
Reference in New Issue
Block a user