mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-08-23 23:02:17 +10:00
* docs(adr): propose agent AI SDK v7 adoption plan * fix(ai): bind analyzeResume through aiService in service test The test destructured analyzeResume as a named export that does not exist; main was red. * test(agent): keep pure ai helpers real via spread-actual mock factory * feat(agent): add run guards, patch version guard, run wall-clock timeout * feat(agent): validate UI messages at the send boundary * feat(agent): crash-safe draft-row persistence and server-side cancellation * feat(agent): reap stale run claims at boot, on send, and on thread open * feat(agent): fresh-document patch output and tiered context pruning * feat(ai): shared agent tool contracts and message metadata schema * feat(agent): add per-thread review-patches setting with update endpoint * feat(agent): gate resume patches behind hmac-signed tool approval * feat(agent): merge question answers and approval decisions before run claim * feat(agent): approval ui with composed auto-send and fixture-driven tests * feat(agent): usage metadata, tool activity cards, smoother streaming * feat(agent): tool-call repair, input examples, structured step logging * chore(i18n): translate new agent workspace strings across all locales * fix(agent): gate stale-run draft cancellation on winning the claim clear Snapshot streaming drafts before the conditional clear and skip the flip entirely when another reaper or a replacement run already cleared the claim. Also address review nits in eleven locale catalogs. * fix(agent): flip reaped drafts only when their snapshotted state is unchanged * fix(agent): address review findings across run lifecycle, context budget, and approval flow - bind patches to the revision the model read via signed baseUpdatedAt - claim the run before consuming a continuation; recorded-but-unexecuted approvals retry as pending continuations - keep run ownership on stop() until cancellation persists; preserve the claim for the reaper when final persistence fails - estimate tokens without serializing binary attachments (tokenx) and enforce the budget by dropping oldest whole turns - mark crash-recovered patch results as snapshot boundaries; strip /data prefixes at execution time - retry failed continuations without regenerate; mount a single AgentChat; disable response controls on read-only threads; freeze review toggle during runs (client+server) - accumulate usage across continuations and match the SDK's nested usage shape; label-form token strings; reorderable source label; accessible note field; state-neutral web-search label * chore(i18n): translate revised agent strings across all locales * fix(agent): harden baseUpdatedAt validation and address review follow-ups - bundle tokenx in the server runtime dependencies (e2e boot failure) - strict ISO schema for baseUpdatedAt plus loud executor rejection of unparseable values - it-IT source label consistency (Fonte) - prove penultimate-turn retention in the context pruning test * chore(deps): exempt tokenx from knip for the externalized server bundle
123 lines
4.1 KiB
JSON
123 lines
4.1 KiB
JSON
{
|
|
"name": "web",
|
|
"version": "0.0.0",
|
|
"type": "module",
|
|
"private": true,
|
|
"scripts": {
|
|
"build": "rimraf dist && vite build",
|
|
"dev": "vite dev",
|
|
"serve": "vite preview",
|
|
"start": "vite preview",
|
|
"typecheck": "tsgo --noEmit",
|
|
"test": "vitest run --passWithNoTests",
|
|
"test:coverage": "vitest run --coverage --passWithNoTests",
|
|
"test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests",
|
|
"test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests",
|
|
"lingui:extract": "lingui extract --clean --overwrite"
|
|
},
|
|
"dependencies": {
|
|
"@ai-sdk/react": "^4.0.69",
|
|
"@base-ui/react": "^1.7.0",
|
|
"@better-auth/api-key": "^1.6.29",
|
|
"@better-auth/infra": "^0.3.7",
|
|
"@better-auth/oauth-provider": "^1.6.29",
|
|
"@better-auth/passkey": "^1.6.29",
|
|
"@codemirror/autocomplete": "^6.20.3",
|
|
"@codemirror/commands": "^6.11.0",
|
|
"@codemirror/lang-css": "^6.3.1",
|
|
"@codemirror/language": "^6.12.4",
|
|
"@codemirror/lint": "^6.9.7",
|
|
"@codemirror/search": "^6.7.1",
|
|
"@codemirror/state": "^6.7.1",
|
|
"@codemirror/view": "^6.43.9",
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@lingui/core": "^6.6.0",
|
|
"@lingui/react": "^6.6.0",
|
|
"@orpc/client": "^1.15.0",
|
|
"@orpc/server": "^1.15.0",
|
|
"@orpc/tanstack-query": "^1.15.0",
|
|
"@phosphor-icons/react": "^2.1.10",
|
|
"@react-pdf/renderer": "^4.6.1",
|
|
"@reactive-resume/ai": "workspace:*",
|
|
"@reactive-resume/api": "workspace:*",
|
|
"@reactive-resume/auth": "workspace:*",
|
|
"@reactive-resume/docx": "workspace:*",
|
|
"@reactive-resume/fonts": "workspace:*",
|
|
"@reactive-resume/import": "workspace:*",
|
|
"@reactive-resume/pdf": "workspace:*",
|
|
"@reactive-resume/resume": "workspace:*",
|
|
"@reactive-resume/schema": "workspace:*",
|
|
"@reactive-resume/ui": "workspace:*",
|
|
"@reactive-resume/utils": "workspace:*",
|
|
"@tailwindcss/vite": "^4.3.3",
|
|
"@tanstack/react-form": "^1.33.5",
|
|
"@tanstack/react-hotkeys": "^0.10.0",
|
|
"@tanstack/react-query": "^5.101.4",
|
|
"@tanstack/react-router": "^1.170.29",
|
|
"@tiptap/extension-color": "^3.30.1",
|
|
"@tiptap/extension-highlight": "^3.30.1",
|
|
"@tiptap/extension-text-align": "^3.30.1",
|
|
"@tiptap/extension-text-style": "^3.30.1",
|
|
"@tiptap/pm": "^3.30.1",
|
|
"@tiptap/react": "^3.30.1",
|
|
"@tiptap/starter-kit": "^3.30.1",
|
|
"@types/js-cookie": "^3.0.6",
|
|
"@uiw/color-convert": "^2.10.3",
|
|
"@uiw/react-color-colorful": "^2.10.3",
|
|
"ai": "^7.0.66",
|
|
"better-auth": "1.6.29",
|
|
"buffer": "^6.0.3",
|
|
"cmdk": "^1.1.1",
|
|
"drizzle-orm": "1.0.0-rc.4",
|
|
"es-toolkit": "^1.51.0",
|
|
"fuse.js": "^7.5.0",
|
|
"immer": "^11.1.17",
|
|
"js-cookie": "^3.0.8",
|
|
"motion": "^13.1.0",
|
|
"pdfjs-dist": "6.2.108",
|
|
"pg": "^8.23.0",
|
|
"prettier": "^3.9.6",
|
|
"qrcode.react": "^4.2.0",
|
|
"react": "^19.2.8",
|
|
"react-dom": "^19.2.8",
|
|
"react-easy-crop": "^6.2.3",
|
|
"react-markdown": "^10.1.0",
|
|
"react-resizable-panels": "^4.12.3",
|
|
"react-window": "^2.3.0",
|
|
"react-zoom-pan-pinch": "^4.0.4",
|
|
"remark-gfm": "^4.0.1",
|
|
"ts-pattern": "^5.9.0",
|
|
"usehooks-ts": "^3.1.1",
|
|
"zod": "^4.4.3",
|
|
"zustand": "^5.0.15"
|
|
},
|
|
"devDependencies": {
|
|
"@babel/core": "^8.0.1",
|
|
"@lingui/babel-plugin-lingui-macro": "^6.6.0",
|
|
"@lingui/cli": "^6.6.0",
|
|
"@lingui/format-po": "^6.6.0",
|
|
"@lingui/vite-plugin": "^6.6.0",
|
|
"@reactive-resume/config": "workspace:*",
|
|
"@rolldown/plugin-babel": "^0.2.3",
|
|
"@shadcn/helpers": "^0.2.0",
|
|
"@tanstack/devtools-vite": "^0.8.3",
|
|
"@tanstack/react-devtools": "^0.10.10",
|
|
"@tanstack/react-query-devtools": "^5.101.4",
|
|
"@tanstack/react-router-devtools": "^1.167.1",
|
|
"@tanstack/router-plugin": "^1.168.32",
|
|
"@types/babel__core": "^7.20.5",
|
|
"@types/pg": "^8.23.0",
|
|
"@types/react": "^19.2.18",
|
|
"@types/react-dom": "^19.2.4",
|
|
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
|
"@vitejs/plugin-react": "^6.0.5",
|
|
"babel-plugin-macros": "^3.1.0",
|
|
"babel-plugin-react-compiler": "^1.0.0",
|
|
"rimraf": "^6.1.3",
|
|
"typescript": "^7.0.2",
|
|
"vite": "^8.2.1"
|
|
}
|
|
}
|