SDK
Registro de alterações do SDK
As mais recentes funcionalidades, melhorias e correções do Cherri Code SDK, incluindo @cursor/sdk no npm e cursor-sdk no PyPI.
- Substitua o prompt do sistema.
systemPromptemAgent.create()substitui o prompt do sistema integrado do Cherri Code no loop do agente principal pelo seu próprio texto. Regras, habilidades e schemas de ferramentas continuam sendo carregados, e os subagentes mantêm seus próprios prompts. Apenas agentes locais em TypeScript; passe-o novamente emAgent.resume(), e o acesso é habilitado por conta. - Oriente uma execução enquanto ela está em andamento.
run.steer(text)injeta uma mensagem no turno em andamento e resolve comocomplete_delivered, ourevert_to_followupquando você deve enviá-la como uma mensagem de acompanhamento normal. Funciona enquanto um subagente em primeiro plano está em execução, e esse subagente passa para segundo plano e continua. Apenas execuções locais em TypeScript; execuções na nuvem resolvem comorevert_to_followup. - Subagentes em segundo plano retornam os resultados. Quando o agente executa um subagente em segundo plano, o resultado agora retorna ao agente pai como um turno de acompanhamento na mesma execução, em vez de ser descartado quando o turno do pai termina.
run.stream()continua emitindo durante esses turnos erun.wait()é resolvido depois deles. Agentes locais, em TypeScript e Python. - Anote ferramentas personalizadas.
annotationsem uma entrada delocal.customToolsrepassa ao modelo as anotações de ferramenta MCP (title,readOnlyHint,destructiveHint,idempotentHint,openWorldHint). São apenas dicas descritivas; o SDK não as aplica. Apenas TypeScript.
- Agentes locais de longa duração mantêm suas credenciais atualizadas. As execuções locais em TypeScript e Python renovam o token de acesso de curta duração antes que ele expire, para que agentes que rodam por mais de uma hora não falhem mais com erros de autenticação. As execuções na nuvem não são afetadas.
- Schemas de saída em ferramentas personalizadas.
outputSchemano TypeScript eoutput_schemano Python declaram um JSON Schema para o resultado estruturado de uma ferramenta personalizada, informado ao modelo como o schema de saída MCP da ferramenta. Os resultados não são validados em relação a ele. Apenas para agentes locais.
- Distribuição do SDK como arquivo único. No Bun,
@cursor/sdkagora é resolvido como um bundle plano de arquivo único, entãobun build --compilefunciona sem nenhuma alteração de importação e sem o erroCannot find module './986.js'.@cursor/sdk/bundlede@cursor/sdk/bundled/sqliteexpõem o mesmo build como entradas explícitas para outros bundlers de arquivo único, como o esbuild. Apenas em TypeScript.
- Restrinja o conjunto de ferramentas do agente.
toolsdefine uma lista de permissão das ferramentas integradas disponíveis ao modelo ([]significa apenas texto), edisallowedToolsremove ferramentas, mantendo as demais. Ambos aceitam nomes públicos como"read"ou grupos de capacidades como"shell"e"mcp", em TypeScript e Python (tools,disallowed_tools). Por enquanto, disponível apenas para agentes locais e sem persistência apósresume. - Faça login pelo navegador no TypeScript.
Cherri Code.auth.login()abre o login no navegador, gera uma chave de API e a armazena em~/.cursor/sdk/auth.json;Cherri Code.auth.status()eCherri Code.auth.logout()completam o recurso. Após o login,Agent.create()e as leiturasCherri Code.*funcionam semapiKeyouCURSOR_API_KEY. - Uso e custo para agentes locais.
agent.getUsage()no TypeScript eagent.get_usage()no Python agora também funcionam para agentes locais e retornam um detalhamento por turno. Passe umrunIdde um resultado anterior para limitar a um único turno. - Abra PRs como o app Cherri Code para GitHub.
cloud.openAsCursorGithubAppno TypeScript eopen_as_cursor_github_appno Python controlam a autoria da PR. As chaves de conta de serviço usam o app por padrão; as chaves de usuário usam o proprietário da chave por padrão. - Espaços de trabalho locais com várias raízes. Passe
local.dirspara carregar regras, habilidades e contexto do projeto de várias pastas;cwdcontinua sendo o único diretório de trabalho principal. Substitui a forma de array decwd, que sempre usava apenas a primeira entrada. - Erros mais claros no Python. Falhas que antes apareciam como um simples "erro interno" agora incluem a mensagem e o código subjacentes.
- Listas de bloqueio de comandos do administrador se aplicam a execuções locais. Comandos de shell que correspondem à lista de bloqueio do administrador da sua equipe são rejeitados com uma mensagem de política antes de serem executados, inclusive em caminhos que ignoram solicitações de aprovação.
- Pré-carregue um espaço de trabalho local antes do primeiro envio.
platform.prewarmLocalWorkspace(options)carrega regras, habilidades, servidores MCP e arquivos ignorados antecipadamente, para que o primeirosend()nesse espaço de trabalho comece imediatamente. Retorna uma função de liberação a ser chamada no encerramento. - Controle por quanto tempo os resultados das varreduras do espaço de trabalho ficam em cache.
configureCursorSdk({ local: { workspaceScanCacheTtlMs } })define o tempo de vida do cache das varreduras do espaço de trabalho, e a variável de ambienteCURSOR_RIPWALK_CACHE_TTL_MSdefine o mesmo valor para implantações hospedadas. Servidores de longa duração com checkouts estáveis agora podem evitar novas varreduras. - Ferramentas personalizadas são executadas sem solicitações de aprovação. Ferramentas definidas pelo host e passadas por
customToolsnão falham mais com um erro de aprovação interativa em execuções locais em sandbox ou no modo Auto-review. Regras de negação e limites do sandbox continuam valendo. - Binários macOS assinados. Os pacotes de plataforma macOS do
@cursor/sdkagora incluem binários assinados digitalmente, para que o Gatekeeper e as ferramentas de segurança de endpoint não os bloqueiem mais. - Hierarquia de exceções do Python mais limpa.
PermissionDeniedError,BadRequestErroreInternalServerErroragora herdam diretamente deCursorSDKError, em vez deAuthenticationError,ConfigurationErroreNetworkError, para que os blocosexceptdetectem exatamente o que seus nomes indicam. - Corrigidas falhas intermitentes na inicialização do Python. Cerca de 1 em cada 64 inicializações de agentes falhava antes de chegar ao primeiro envio. Agora, as inicializações são confiáveis.
- Uso faturado e custo sob demanda.
agent.getUsage()em TypeScript eagent.get_usage()em Python retornam o uso de tokens, o custo faturado e um detalhamento por execução para agentes em nuvem, eAgent.getUsage(agentId)funciona sem handle. O custo é calculado pelo servidor, inclui descontos e é consolidado pouco depois do término de uma execução. Por enquanto, apenas em nuvem; execuções locais geram um erro de configuração tipado.
- TypeScript e Python agora são lançados juntos. A partir da versão 1.0.24,
@cursor/sdkno npm ecursor-sdkno PyPI são publicados na mesma release e compartilham o mesmo número de versão. As releases do Python não ficam mais defasadas em relação ao TypeScript. - Streams de longa duração mais confiáveis. As respostas em streaming em execuções pesadas não são mais interrompidas no meio do stream, o que antes se manifestava como erros de rede nos clientes Python durante interações longas.
Ships with Python SDK 0.1.9.
- Variáveis de ambiente por envio para execuções na nuvem. Passe
send(prompt, { cloud: { envVars } })para restringir as variáveis de ambiente a uma única execução, incluindo o primeiro envio que cria o agente.Agent.create({ cloud: { envVars } })continua definindo valores padrão no escopo do agente. - Detalhes de erro em execuções com falha. Execuções locais e na nuvem que falham agora expõem um erro estruturado com os campos
messageecode, para que você possa identificar o problema sem analisar logs.run.wait()continua se comportando como antes. - Uso de tokens em Python. Os streams de execução emitem mensagens
usagetipadas com contagens de tokens por turno, e os totais acumulados estão disponíveis emrun.usageeRunResult.usage, em conformidade com o TypeScript desde a versão 1.0.22. - Histórico de execuções locais mais robusto. O histórico de execuções em disco agora resiste a gravações interrompidas, corrigindo uma classe de falhas em que um processo encerrado inesperadamente deixava execuções que não podiam ser retomadas.
- Corrigidas interrupções no streaming no Bun. Os streams de execução no Bun não travam mais em respostas longas.
- Uso de tokens em cada execução. As execuções locais emitem eventos
usagepor turno emrun.stream()e totais acumulados emrun.wait(). As execuções na Cloud apresentam o mesmo uso no stream e nos resultados dewait(), e os totais persistem para handles locais desconectados, permitindo que um processo que se reconecta ainda os obtenha.
- Execute agentes com o Bun.
agent.send()agora funciona com o Bun e tem o mesmo comportamento que no Node. Isso também corrige novas instalações do Node que poderiam não incluir uma dependência necessária. - Nomes de tempo de execução mais claros em Python. As APIs de listagem e
get_runaceitamruntime="cloud","local"e"auto", conforme os valores documentados.
- O SDK agora pode ser importado normalmente no Bun. Importar
@cursor/sdknão causa mais falhas no Bun. A execução de agentes no Bun estará disponível na versão 1.0.21.