mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-08-25 07:42:20 +10:00
feat(agent): adopt AI SDK v7 — crash safety, context pruning, HITL approvals (#3362)
* 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
This commit is contained in:
+103
-3
@@ -543,6 +543,14 @@ msgstr "आवेदन किया"
|
||||
msgid "Applied on"
|
||||
msgstr "आवेदन की तारीख"
|
||||
|
||||
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||
msgid "Approve"
|
||||
msgstr "स्वीकृत करें"
|
||||
|
||||
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||
msgid "Approved — waiting for the agent…"
|
||||
msgstr "स्वीकृत — एजेंट की प्रतीक्षा में…"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "अरबी"
|
||||
@@ -1462,6 +1470,14 @@ msgstr "आपकी API कुंजी हटाई जा रही है...
|
||||
msgid "Deleting your resume..."
|
||||
msgstr "आपका रेज़्यूमे हटाया जा रहा है..."
|
||||
|
||||
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||
msgid "Denied — waiting for the agent…"
|
||||
msgstr "अस्वीकृत — एजेंट की प्रतीक्षा में…"
|
||||
|
||||
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||
msgid "Deny"
|
||||
msgstr "अस्वीकार करें"
|
||||
|
||||
#: src/libs/resume/ats.ts
|
||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||
msgstr "वर्णन करें कि आपने क्या किया ताकि प्रविष्टि मिलान के लिए कीवर्ड का योगदान दे सके।"
|
||||
@@ -1530,6 +1546,10 @@ msgstr "दान करें"
|
||||
msgid "Donate to Reactive Resume"
|
||||
msgstr "रिएक्टिव रेज़्यूमे के लिए दान करें"
|
||||
|
||||
#: src/routes/agent/-components/tool-part-card.tsx
|
||||
msgid "Done"
|
||||
msgstr "पूर्ण"
|
||||
|
||||
#. Action button to download two-factor backup codes as a text file
|
||||
#. Primary action in the builder header to open resume download options
|
||||
#: src/dialogs/auth/enable-two-factor.tsx
|
||||
@@ -1642,6 +1662,10 @@ msgstr "पूर्ण स्क्रीन मोड में सामग
|
||||
msgid "Edit date"
|
||||
msgstr "तारीख संपादित करें"
|
||||
|
||||
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||
msgid "Edit declined"
|
||||
msgstr "संपादन अस्वीकृत"
|
||||
|
||||
#. Resume card context menu action to edit resume metadata
|
||||
#. Resume card dropdown action to edit resume metadata
|
||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||
@@ -1837,6 +1861,10 @@ msgstr "बिना किसी प्रतीक्षा या देर
|
||||
msgid "Exported pipeline-flow.png"
|
||||
msgstr "pipeline-flow.png निर्यात किया गया"
|
||||
|
||||
#: src/routes/agent/-components/tool-part-card.tsx
|
||||
msgid "Failed"
|
||||
msgstr "विफल"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||
msgid "Failed to analyze resume."
|
||||
msgstr "रिज़्यूमे का विश्लेषण करने में असफल।"
|
||||
@@ -1967,6 +1995,10 @@ msgstr "प्रदाता को अनलिंक करने में
|
||||
msgid "Failed to update provider."
|
||||
msgstr "प्रदाता को अपडेट करने में विफल।"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Failed to update thread settings."
|
||||
msgstr "थ्रेड सेटिंग्स अपडेट नहीं हो सकीं।"
|
||||
|
||||
#. Fallback toast when changing account password fails
|
||||
#: src/dialogs/auth/change-password.tsx
|
||||
msgid "Failed to update your password. Please try again."
|
||||
@@ -3153,6 +3185,14 @@ msgstr "ओपनराउटर"
|
||||
msgid "opens in new tab"
|
||||
msgstr "नए टैब में खुलता है"
|
||||
|
||||
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||
msgid "Optional note for the agent"
|
||||
msgstr "एजेंट के लिए वैकल्पिक नोट"
|
||||
|
||||
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||
msgid "Optional note for the agent…"
|
||||
msgstr "एजेंट के लिए वैकल्पिक नोट…"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||
msgstr "वैकल्पिक रूप से, एक पासवर्ड सेट करें ताकि केवल पासवर्ड वाले लोग ही लिंक के माध्यम से आपका रेज़्यूमे देख सकें।"
|
||||
@@ -3499,6 +3539,10 @@ msgstr "प्रकाशन"
|
||||
msgid "Publisher"
|
||||
msgstr "प्रकाशक"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Raw JSON"
|
||||
msgstr "रॉ JSON"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Re-score"
|
||||
msgstr "फिर से स्कोर करें"
|
||||
@@ -3546,10 +3590,18 @@ msgstr "रिएक्टिव रिज्यूम v<0>{__APP_VERSION__}</0>
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "प्रतिक्रियाशील रिज़्यूमे v4 (JSON)"
|
||||
|
||||
#: src/routes/agent/-components/tool-part-card.tsx
|
||||
msgid "Read an attachment"
|
||||
msgstr "अटैचमेंट पढ़ा"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr "कस्टम स्टाइल लागू करने संबंधी गाइड पढ़ें।"
|
||||
|
||||
#: src/routes/agent/-components/tool-part-card.tsx
|
||||
msgid "Read the resume"
|
||||
msgstr "रेज़्यूमे पढ़ा"
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading the posting…"
|
||||
msgstr "पोस्टिंग पढ़ी जा रही है…"
|
||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
||||
msgstr "पुनर्स्थापित करना"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
||||
msgstr "क्या हम रिज्यूम को इस पैच से पहले की स्थिति में रीस्टोर करना चाहते हैं? इससे यह पैच और इसके बाद लागू किए गए सभी पैच वापस ले लिए जाएंगे।"
|
||||
msgid "Restore the resume to before this patch?"
|
||||
msgstr "रेज़्यूमे को इस पैच से पहले की स्थिति में पुनर्स्थापित करें?"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||
msgid "Restore this version?"
|
||||
@@ -3726,6 +3778,10 @@ msgstr "रिज़्यूमे विश्लेषण पूरा हो
|
||||
msgid "Resume content"
|
||||
msgstr "रिज्यूमे की सामग्री"
|
||||
|
||||
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||
msgid "Resume edit"
|
||||
msgstr "रेज़्यूमे संपादन"
|
||||
|
||||
#: src/features/applications/components/application-detail-sheet.tsx
|
||||
msgid "Resume file"
|
||||
msgstr "रेज़्यूमे फ़ाइल"
|
||||
@@ -3754,10 +3810,18 @@ msgstr "रेज़्यूमे"
|
||||
msgid "Retry"
|
||||
msgstr "पुन: प्रयास करें"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Review edits"
|
||||
msgstr "संपादनों की समीक्षा करें"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||
msgstr "नौकरी के विवरण के आधार पर रिज्यूमे की समीक्षा करें और अनिश्चित अनुभागों में बदलाव करने से पहले मुझसे प्रश्न पूछें।"
|
||||
|
||||
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||
msgid "Review this edit"
|
||||
msgstr "इस संपादन की समीक्षा करें"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||
msgstr "सारांश को इस तरह से संशोधित करें कि यह एक वरिष्ठ इंजीनियरिंग प्रबंधक की भूमिका को लक्षित करे, लेकिन सामान्य न लगे।"
|
||||
@@ -3798,6 +3862,10 @@ msgstr "रोटेशन"
|
||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||
msgstr "अपना पहला विश्लेषण चलाएँ ताकि आपको एक स्कोरकार्ड, ताकतें और प्राथमिकता-आधारित सुझाव मिल सकें।"
|
||||
|
||||
#: src/routes/agent/-components/tool-part-card.tsx
|
||||
msgid "Running…"
|
||||
msgstr "चल रहा है…"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Russian"
|
||||
msgstr "रूसी"
|
||||
@@ -4253,6 +4321,15 @@ msgstr "स्रोत"
|
||||
msgid "Source Code"
|
||||
msgstr "स्रोत कोड"
|
||||
|
||||
#. placeholder {0}: operation.from
|
||||
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||
msgid "Source: {0}"
|
||||
msgstr "स्रोत: {0}"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Sources"
|
||||
msgstr "स्रोत"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||
msgid "Spacing (Horizontal)"
|
||||
msgstr "स्पेसिंग (क्षैतिज)"
|
||||
@@ -4604,6 +4681,10 @@ msgstr "इस सहायक को खोला नहीं जा सका
|
||||
msgid "This date will not be read correctly."
|
||||
msgstr "यह तारीख सही से नहीं पढ़ी जाएगी."
|
||||
|
||||
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||
msgid "This edit request can no longer be answered."
|
||||
msgstr "इस संपादन अनुरोध का अब उत्तर नहीं दिया जा सकता।"
|
||||
|
||||
#: src/libs/resume/ats.ts
|
||||
msgid "This email address will not be recognized."
|
||||
msgstr "यह ईमेल पता पहचाना नहीं जाएगा."
|
||||
@@ -4712,6 +4793,10 @@ msgstr "यदि आप कई पासकी रखने की योजन
|
||||
msgid "This will remove all items from this section."
|
||||
msgstr "यह इस अनुभाग से सभी आइटम हटा देगा।"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "This will roll back this patch and any patches applied after it."
|
||||
msgstr "इससे यह पैच और इसके बाद लागू किए गए सभी पैच वापस हो जाएँगे।"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||
msgid "Thread actions"
|
||||
@@ -4794,6 +4879,18 @@ msgstr "दाएँ साइडबार टॉगल करें"
|
||||
msgid "Toggle threads"
|
||||
msgstr "टॉगल थ्रेड्स"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Tokens: {threadTokenTotal}"
|
||||
msgstr "टोकन: {threadTokenTotal}"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Tokens: {total}"
|
||||
msgstr "टोकन: {total}"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Tokens: {total} ({cached} cached)"
|
||||
msgstr "टोकन: {total} ({cached} कैश किए गए)"
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Track a job you're applying to and link the resume you sent."
|
||||
msgstr "जिस नौकरी के लिए आप आवेदन कर रहे हैं उसे ट्रैक करें और भेजा गया रेज़्यूमे लिंक करें।"
|
||||
@@ -5213,6 +5310,10 @@ msgstr "हम प्रारूप का स्वचालित रूप
|
||||
msgid "We couldn't find that page"
|
||||
msgstr "हमें वह पेज नहीं मिला"
|
||||
|
||||
#: src/routes/agent/-components/tool-part-card.tsx
|
||||
msgid "Web search"
|
||||
msgstr "वेब खोज"
|
||||
|
||||
#: src/dialogs/resume/sections/award.tsx
|
||||
#: src/dialogs/resume/sections/certification.tsx
|
||||
#: src/dialogs/resume/sections/education.tsx
|
||||
@@ -5445,4 +5546,3 @@ msgstr "ज़ूम आउट"
|
||||
#: src/libs/locale.ts
|
||||
msgid "Zulu"
|
||||
msgstr "ज़ुलु"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user