skip_cache=Trueparameter onclient.agents.run(...),run_many(...),run_sync(...),run_version(...), andrun_version_sync(...). Sends theX-Skip-Cache: trueheader so the backend bypasses the job-result cache and forces a fresh run (the fresh result still refreshes the cache). Note:skip_cacheis now a reserved parameter name on these methods (likemetadataandidempotency_key); an agent input literally namedskip_cachecan no longer be passed via**inputs— userun_many's dict-based inputs for such agents.
Version synchronization across roe-ai (Python), roe-typescript,
and roe-golang. The public SDK packages now share a single 1.0.x patch counter,
driven by the SDK OpenAPI spec via the roe-main release pipeline (see
roe-main/roe-sdk/targets.yml).
- Generated friendly wrapper support via
openapi/wrappers.ymlandscripts/generate-sdk. client.discovery.list_agent_engine_types().client.discovery.list_supported_models(capability=...).client.tables.upload(...).- Public SDK wrappers now route common 404 cases through
RoeAPIExceptioninstead of generated error-body parsers. client.agents.run(..., idempotency_key=...)andclient.agents.run_version(..., idempotency_key=...).
Generated-client migration. The hand-written API surface
(AgentsAPI, PoliciesAPI, and friends) is now a thin facade over the
generated roe._generated raw OpenAPI client. The custom HTTP layer that
duplicated retry, multipart, and error-mapping behavior has been deleted.
Codegen is driven by roe-ai/roe-main PR #3111.
RoeHTTPClientandRoeClient.http_client. The sharedhttpx.Clientis now an internalRoeClient._httpx_client.- Hand-written response data classes —
Agent,BaseAgent,AgentVersion,AgentInputDefinition,Policy,PolicyVersion,AgentDatum,AgentJobResult,AgentJobStatus,Reference,JobDataDeleteResponse,PaginatedResponse[T],UserInfo,ErrorResponse. Use the equivalents underroe._generated.modelsgoing forward. roe.models.{agent,policy,responses,user}modules.http_clientconstructor parameter on internalAgentsAPI/PoliciesAPI.
Job.wait()now returns the generatedAgentJobResultResponse. Field names line up 1:1 with the previous hand-written model in most cases; failed jobs whose result-fetch fails get a synthesized response with terminalstatusanderror_messagestuffed intoadditional_properties.JobBatch.wait()now returnslist[AgentJobResultItem | None].client.policies.update()andclient.agents.update()(and the version variants) now use PATCH instead of PUT — the generated PUT requires a fully-populated request body, while these wrappers accept partial updates.client.policies.versions.list()is paginated (was a flat list).client.raw(the generatedAuthenticatedClient) now inherits the same retry budget and typed exception classes that SDK calls use, since both share the underlyinghttpx.ClientwithRoeRetryTransport.
RoeClient,RoeConfig,RoeAuth.client.agents.*,client.policies.*method names + signatures.Job,JobBatch,JobStatus.FileUpload.- All six exception classes (
RoeAPIException,BadRequestError,AuthenticationError,InsufficientCreditsError,ForbiddenError,NotFoundError,ServerError) and their constructor signatures. client.raw/roe._generated.
# Before
from roe.models.agent import BaseAgent
from roe.models.responses import JobStatus, AgentJobResult, Reference
# After
from roe._generated.models import BaseAgent
from roe import JobStatus # JobStatus enum re-exported at the top level
from roe._generated.models import AgentJobResultResponse, Reference# `update` is now PATCH-shaped — pass only the fields you want to change.
client.policies.update("policy-uuid", name="Renamed Policy") # unchanged signature# `client.policies.versions.list()` is now paginated:
result = client.policies.versions.list("policy-uuid")
for version in result.results:
print(version.id, version.version_name)