· परिवर्तन लॉग

Cursor SDK के लिए कस्टम स्टोर्स, कस्टम उपकरण और ऑटो-रिव्यू

हमने TypeScript और Python SDKs में कई नई सुविधाएँ जारी की हैं। अब आप चुन सकते हैं कि एजेंट और रन मेटाडेटा कैसे सहेजा जाए, अपने फ़ंक्शंस को उपकरण के रूप में एजेंट के लिए उपलब्ध करा सकते हैं, स्थानीय टूल कॉल्स को ऑटो-रिव्यू के माध्यम से रूट कर सकते हैं, और उप-एजेंट को किसी भी गहराई तक नेस्ट कर सकते हैं। यह रिलीज़ विश्वसनीयता, प्रदर्शन और प्लेटफ़ॉर्म सुधारों का एक सेट भी लाती है, जो स्थानीय और क्लाउड SDK एजेंट्स को उत्पादन स्क्रिप्ट्स, CI और कस्टम इंटीग्रेशन में चलाना आसान बनाते हैं।

कस्टम उपकरण

अब आप local.customTools के ज़रिए, Agent.create() पर या हर send() के लिए फ़ंक्शन परिभाषाएँ पास करके लोकल एजेंट को अपने उपकरण दे सकते हैं। SDK उन्हें custom-user-tools नाम के बिल्ट-इन MCP सर्वर के ज़रिए एजेंट को उपलब्ध कराता है, ताकि मॉडल आपके कोड को किसी भी दूसरे MCP टूल की तरह उसी पाथ और उसी अनुमति जाँच के ज़रिए कॉल करे।

पहले, किसी कस्टम क्षमता को उपलब्ध कराने के लिए आपको अपना stdio या रिमोट HTTP MCP सर्वर सेट अप करके उसे एजेंट से जोड़ना पड़ता था। अब सिर्फ़ एक फ़ंक्शन परिभाषा काफ़ी है। कस्टम उपकरण किसी पैरेंट एजेंट के हर उप-एजेंट को भी दिखाई देते हैं, इसलिए जो टूल आप एक बार परिभाषित करते हैं, वह पूरे रन में उपलब्ध रहता है।

ऑटो-रिव्यू

डिफ़ॉल्ट रूप से, एक लोकल SDK एजेंट स्वीकृति माँगे बिना टूल कॉल्स चलाता है, क्योंकि हेडलेस रन में लूप में कोई मानव नहीं होता। इसके बजाय, उन कॉल्स को ऑटो-रिव्यू के माध्यम से भेजने के लिए local.autoReview सेट करें। समीक्षा को पूरी तरह बायपास करने के बजाय, एक क्लासिफ़ायर तय करता है कि कौन-सी कॉल स्वचालित रूप से चलेंगी और किन्हें रोककर रखा जाएगा।

आप permissions.json में प्राकृतिक भाषा के निर्देशों के ज़रिए उस क्लासिफ़ायर को नियंत्रित करते हैं। autoRun.allow_instructions फ़ील्ड उन कॉल पैटर्न का वर्णन करती है जिन्हें अनुमति देने की ओर प्राथमिकता दी जानी चाहिए, और autoRun.block_instructions उन कॉलों का वर्णन करती है जिन्हें समीक्षा के लिए रोके रखना चाहिए। उदाहरण के लिए, आप बिल्ड आर्टिफैक्ट्स की केवल-पढ़ने योग्य जाँचों की अनुमति दे सकते हैं, जबकि delete जैसी विनाशकारी कार्रवाइयों पर हमेशा रोक लगा सकते हैं।

{
  "autoRun": {
    "allow_instructions": [
      "Read-only inspections of build artifacts under ./dist are fine."
    ],
    "block_instructions": [
      "Always pause delete operations so I get a chance to review them."
    ]
  }
}

JSONL और कस्टम स्टोर्स

दोनों SDK एजेंट और रन मेटाडेटा को स्थायी रूप से सहेजते हैं, ताकि प्रक्रिया के पुनः आरंभ होने के बाद आप किसी एजेंट को फिर से शुरू कर सकें। अब तक यह स्टोर SQLite था। अब आप इसके बजाय JSONL स्टोर चुन सकते हैं, जो एक साधारण, append-only फ़ाइल लिखता है जिसे आप पढ़ सकते हैं, डिफ कर सकते हैं, और संस्करण नियंत्रण में चेक-इन कर सकते हैं। SqliteLocalAgentStore और JsonlLocalAgentStore दोनों सीधे एक्सपोर्ट किए जाते हैं।

अगर इनमें से कोई भी डिफ़ॉल्ट आपके सेटअप के अनुरूप नहीं है, तो सार्वजनिक LocalAgentStore इंटरफ़ेस को इम्प्लीमेंट करें और उसे local.store के ज़रिए पास करें। अस्थायी CI रन के लिए एक in-memory स्टोर बनाएँ, या जब आप चाहते हों कि एजेंट की स्थिति आपके बाकी ऐप्लिकेशन डेटा के साथ रहे, तब persistence के लिए Postgres का उपयोग करें। Python SDK ब्रिज के ज़रिए host, JSONL, और composed JSONL स्टोर्स उपलब्ध कराता है।

नेस्टेड उप-एजेंट

उप-एजेंट अब अपने स्वयं के उप-एजेंट भी स्पॉन कर सकते हैं, और यह क्रम आगे भी चलता रहता है। एक समीक्षक उप-एजेंट किसी परीक्षण-लेखक को काम सौंप सकता है, और वह आगे किसी अन्य को सौंप सकता है, जिसमें हर स्तर अपना प्रॉम्प्ट और मॉडल बनाए रखता है। इसे चालू करने के लिए कुछ भी नहीं है; एक उप-एजेंट सत्र उस निष्पादक को पंजीकृत करता है जिसकी उसे Task को कॉल करने के लिए आवश्यकता होती है, इसलिए नेस्टिंग किसी भी ऐसे एजेंट के लिए स्वचालित रूप से काम करती है जो उप-एजेंट परिभाषित करता है।

विश्वसनीयता, प्रदर्शन और प्लेटफ़ॉर्म सुधार

इस रिलीज़ में दोनों SDKs के लिए उपयोगिता से जुड़े कई सुधार भी शामिल हैं।

  • रन सहसंबंध: हर send() के साथ अब प्लेटफ़ॉर्म द्वारा जनरेट किया गया requestId आता है, जो Run और RunResult पर उपलब्ध होता है और in-memory, SQLite, और JSONL स्टोर्स में स्थायी रूप से सहेजा जाता है। अब आप किसी स्क्रिप्ट या CI रन को agentId से अनुमान लगाए बिना backend logs, analytics, और support threads से जोड़ सकते हैं।
  • लोकल runs पर विश्वसनीय wait(): अब लोकल runs में wait() टर्मिनल परिणाम लिखे जाने से पहले resolve नहीं होता। Hydration रन के अंतिम स्थिति में पहुँचने तक refresh होती रहती है, ताकि स्वचालन को पूरा परिणाम मिल सके।
  • dispose पर सुरक्षित checkpoints: अब किसी लोकल एजेंट को dispose करने पर checkpoint data नहीं हटता, भले ही root reference गायब हो लेकिन checkpoint blobs अभी भी मौजूद हों। एजेंट डायरेक्टरी केवल तभी साफ़ की जाती है, जब सचमुच बचाकर रखने के लिए कुछ न हो।
  • HTTP/1.1 पर क्लाउड स्ट्रीमिंग: क्लाउड एजेंट सत्र अब कुछ proxies, पुराने Node fetch stacks, और कुछ CI images में इस्तेमाल होने वाले HTTP/1.1 transports पर सही तरीके से stream होते हैं। HTTP/2 का व्यवहार अपरिवर्तित है।

  • हल्का import: @cursor/sdk को import करने पर अब पूरा लोकल एजेंट स्टैक eager तरीके से load नहीं होता। केवल-क्लाउड और केवल-type consumers पहली लोकल call तक लोकल runtime की लागत से बच जाते हैं, और API में कोई बदलाव नहीं होता। पहली लोकल call पर एक बार import cost लगती है, उसके बाद यह cache में बना रहता है।
  • स्व-समाहित TypeScript types: प्रकाशित .d.ts files अब unpublished कार्यस्थान packages को reference नहीं करतीं। इससे skipLibCheck: false के तहत आने वाली TS2305 और TS2307 errors, और TurnEndedUpdate जैसे stream types पर चुपचाप any हो जाने की समस्या ठीक होती है।
  • Bundled ripgrep: लोकल shell runs अब आपके global PATH को बदले बिना bundled platform rg binary का उपयोग करते हैं। Windows पर ripgrep को prepend करने से अब Path variable overwrite नहीं होता।

  • Composer 2 को Composer 2.5 पर route किया जाता है: जो SDK clients अभी भी retired composer-2 slugs को pin किए हुए हैं, उन्हें स्वचालित रूप से Composer 2.5 पर route कर दिया जाता है। इससे fast variants वैसे ही बने रहते हैं, इसलिए पुरानी scripts चलती रहती हैं।

  • कार्यस्थान-स्कोप्ड list_runs: Client, AsyncClient, और Agent.list_runs अब एक वैकल्पिक cwd लेते हैं, और bridge fallback के रूप में अपने launch कार्यस्थान का उपयोग करता है। इससे bridge के subprocess के रूप में चलने पर आने वाले अनावश्यक "agent not found" results ठीक होते हैं।
  • ज़्यादा स्पष्ट not-found errors: ऐसे एजेंट को lookup करने पर जो resolved कार्यस्थान में मौजूद नहीं है, अब अस्पष्ट internal error के बजाय साफ़ not-found error मिलता है।
  • 0.1.6 release और analytics: cursor-sdk 0.1.6 में Buildkite release path का दस्तावेज़ीकरण किया गया है, और अधिक स्पष्ट analytics के लिए SDK usage को sdk-python- के रूप में label किया गया है।

अपग्रेड करने के लिए npm install @cursor/sdk या pip install cursor-sdk चलाएँ। composer-2 को pin करने वाली scripts अपने-आप Composer 2.5 पर चली जाती हैं, और requestId आपके रन metadata schema में सुरक्षित रूप से जोड़ा जा सकता है। पूरी जानकारी के लिए TypeScript और Python दस्तावेज़ देखें।