Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .roe-main-release-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1-1-0
1-1-1
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
A Python SDK for the [Roe](https://www.roe-ai.com/) API.

<!-- ROE-SDK:RELEASE-BANNER:START -->
> **v1.1.15** - SDK operation coverage is synchronized across Python,
> **v1.1.16** - SDK operation coverage is synchronized across Python,
> TypeScript, and Go. See `SDK_EXAMPLES.md` for copy-ready examples and
> use cases.
<!-- ROE-SDK:RELEASE-BANNER:END -->
Expand Down
24 changes: 24 additions & 0 deletions openapi/openapi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -630,6 +630,10 @@ paths:
description: Number of results to return per page.
schema:
type: integer
- in: query
name: review_state
schema:
type: string
- in: query
name: search
schema:
Expand Down Expand Up @@ -5693,6 +5697,10 @@ components:
- $ref: '#/components/schemas/AgentJobFeedbackNested'
- type: 'null'
readOnly: true
review_state:
allOf:
- $ref: '#/components/schemas/ReviewStateEnum'
readOnly: true
creator:
oneOf:
- $ref: '#/components/schemas/UserInfo'
Expand All @@ -5707,6 +5715,7 @@ components:
- feedback_review
- id
- last_updated_at
- review_state
- status_code
- status_events
- ui_fields
Expand Down Expand Up @@ -6199,6 +6208,16 @@ components:
format: uuid
description: Send to only this webhook. Omit to send to every active webhook
on the agent.
ReviewStateEnum:
enum:
- unreviewed
- agreed
- disagreed
type: string
description: |-
* `unreviewed` - Unreviewed
* `agreed` - Agreed
* `disagreed` - Disagreed
ReviewStatusEnum:
enum:
- pending
Expand Down Expand Up @@ -6345,12 +6364,17 @@ components:
type: string
readOnly: true
description: building, succeeded, or failed.
error:
type: string
readOnly: true
description: Why the run failed, when it reported a reason.
started_at:
type: string
format: date-time
readOnly: true
description: When the run started — the UI shows elapsed time from this.
required:
- error
- id
- sse_endpoint
- started_at
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "roe-ai"
version = "1.1.15"
version = "1.1.16"
authors = [
{ name = "Roe", email = "founders@roe-ai.com" },
]
Expand Down
15 changes: 15 additions & 0 deletions src/roe/_generated/api/agents/agents_jobs_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ def _get_kwargs(
ordering: list[AgentsJobsListOrderingItem] | Unset = UNSET,
page: int | Unset = UNSET,
page_size: int | Unset = UNSET,
review_state: str | Unset = UNSET,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Public method lacks review filter

The new review_state filter is only available through the generated endpoint. Calling client.agents.jobs.list(agent_id, review_state="unreviewed") raises TypeError because AgentJobsAPI.list does not accept it. Users must switch to the generated API to use this filter.

Add the parameter to openapi/wrappers.yml, regenerate the public wrapper, and extend its filter test.

Knowledge Base Used: Generated API integration

Fix in Claude Code

search: str | Unset = UNSET,
semantic_string: str | Unset = UNSET,
status_code: str | Unset = UNSET,
Expand Down Expand Up @@ -81,6 +82,8 @@ def _get_kwargs(

params["page_size"] = page_size

params["review_state"] = review_state

params["search"] = search

params["semantic_string"] = semantic_string
Expand Down Expand Up @@ -169,6 +172,7 @@ def sync_detailed(
ordering: list[AgentsJobsListOrderingItem] | Unset = UNSET,
page: int | Unset = UNSET,
page_size: int | Unset = UNSET,
review_state: str | Unset = UNSET,
search: str | Unset = UNSET,
semantic_string: str | Unset = UNSET,
status_code: str | Unset = UNSET,
Expand All @@ -193,6 +197,7 @@ def sync_detailed(
ordering (list[AgentsJobsListOrderingItem] | Unset):
page (int | Unset):
page_size (int | Unset):
review_state (str | Unset):
search (str | Unset):
semantic_string (str | Unset):
status_code (str | Unset):
Expand Down Expand Up @@ -221,6 +226,7 @@ def sync_detailed(
ordering=ordering,
page=page,
page_size=page_size,
review_state=review_state,
search=search,
semantic_string=semantic_string,
status_code=status_code,
Expand Down Expand Up @@ -250,6 +256,7 @@ def sync(
ordering: list[AgentsJobsListOrderingItem] | Unset = UNSET,
page: int | Unset = UNSET,
page_size: int | Unset = UNSET,
review_state: str | Unset = UNSET,
search: str | Unset = UNSET,
semantic_string: str | Unset = UNSET,
status_code: str | Unset = UNSET,
Expand All @@ -274,6 +281,7 @@ def sync(
ordering (list[AgentsJobsListOrderingItem] | Unset):
page (int | Unset):
page_size (int | Unset):
review_state (str | Unset):
search (str | Unset):
semantic_string (str | Unset):
status_code (str | Unset):
Expand Down Expand Up @@ -303,6 +311,7 @@ def sync(
ordering=ordering,
page=page,
page_size=page_size,
review_state=review_state,
search=search,
semantic_string=semantic_string,
status_code=status_code,
Expand All @@ -326,6 +335,7 @@ async def asyncio_detailed(
ordering: list[AgentsJobsListOrderingItem] | Unset = UNSET,
page: int | Unset = UNSET,
page_size: int | Unset = UNSET,
review_state: str | Unset = UNSET,
search: str | Unset = UNSET,
semantic_string: str | Unset = UNSET,
status_code: str | Unset = UNSET,
Expand All @@ -350,6 +360,7 @@ async def asyncio_detailed(
ordering (list[AgentsJobsListOrderingItem] | Unset):
page (int | Unset):
page_size (int | Unset):
review_state (str | Unset):
search (str | Unset):
semantic_string (str | Unset):
status_code (str | Unset):
Expand Down Expand Up @@ -378,6 +389,7 @@ async def asyncio_detailed(
ordering=ordering,
page=page,
page_size=page_size,
review_state=review_state,
search=search,
semantic_string=semantic_string,
status_code=status_code,
Expand Down Expand Up @@ -407,6 +419,7 @@ async def asyncio(
ordering: list[AgentsJobsListOrderingItem] | Unset = UNSET,
page: int | Unset = UNSET,
page_size: int | Unset = UNSET,
review_state: str | Unset = UNSET,
search: str | Unset = UNSET,
semantic_string: str | Unset = UNSET,
status_code: str | Unset = UNSET,
Expand All @@ -431,6 +444,7 @@ async def asyncio(
ordering (list[AgentsJobsListOrderingItem] | Unset):
page (int | Unset):
page_size (int | Unset):
review_state (str | Unset):
search (str | Unset):
semantic_string (str | Unset):
status_code (str | Unset):
Expand Down Expand Up @@ -460,6 +474,7 @@ async def asyncio(
ordering=ordering,
page=page,
page_size=page_size,
review_state=review_state,
search=search,
semantic_string=semantic_string,
status_code=status_code,
Expand Down
2 changes: 2 additions & 0 deletions src/roe/_generated/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@
from .public_skill_set_generation import PublicSkillSetGeneration
from .qdrant_cleanup_error_response import QdrantCleanupErrorResponse
from .resend_agent_job_webhook_request import ResendAgentJobWebhookRequest
from .review_state_enum import ReviewStateEnum
from .review_status_enum import ReviewStatusEnum
from .skill_file import SkillFile
from .skill_file_request import SkillFileRequest
Expand Down Expand Up @@ -313,6 +314,7 @@
"PublicSkillSetGeneration",
"QdrantCleanupErrorResponse",
"ResendAgentJobWebhookRequest",
"ReviewStateEnum",
"ReviewStatusEnum",
"SkillFile",
"SkillFileRequest",
Expand Down
14 changes: 14 additions & 0 deletions src/roe/_generated/models/list_agent_job.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

from ..types import UNSET, Unset

from ..models.review_state_enum import ReviewStateEnum
from ..types import UNSET, Unset
from dateutil.parser import isoparse
from typing import cast
Expand Down Expand Up @@ -47,6 +48,9 @@ class ListAgentJob:
ui_fields (Any): Denormalized fields from agent output for list/metrics without loading S3
evaluation (AgentJobEvaluation | None):
feedback_review (AgentJobFeedbackNested | None):
review_state (ReviewStateEnum): * `unreviewed` - Unreviewed
* `agreed` - Agreed
* `disagreed` - Disagreed
creator (None | UserInfo):
job_inputs (list[JobInput] | Unset): List of input data provided to the agent job
metadata (ListAgentJobMetadata | Unset): Key-value pairs of metadata associated with the job
Expand All @@ -62,6 +66,7 @@ class ListAgentJob:
ui_fields: Any
evaluation: AgentJobEvaluation | None
feedback_review: AgentJobFeedbackNested | None
review_state: ReviewStateEnum
creator: None | UserInfo
job_inputs: list[JobInput] | Unset = UNSET
metadata: ListAgentJobMetadata | Unset = UNSET
Expand Down Expand Up @@ -113,6 +118,8 @@ def to_dict(self) -> dict[str, Any]:
else:
feedback_review = self.feedback_review

review_state = self.review_state.value

creator: dict[str, Any] | None
if isinstance(self.creator, UserInfo):
creator = self.creator.to_dict()
Expand Down Expand Up @@ -146,6 +153,7 @@ def to_dict(self) -> dict[str, Any]:
"ui_fields": ui_fields,
"evaluation": evaluation,
"feedback_review": feedback_review,
"review_state": review_state,
"creator": creator,
})
if job_inputs is not UNSET:
Expand Down Expand Up @@ -247,6 +255,11 @@ def _parse_feedback_review(data: object) -> AgentJobFeedbackNested | None:
feedback_review = _parse_feedback_review(d.pop("feedback_review"))


review_state = ReviewStateEnum(d.pop("review_state"))




def _parse_creator(data: object) -> None | UserInfo:
if data is None:
return data
Expand Down Expand Up @@ -298,6 +311,7 @@ def _parse_creator(data: object) -> None | UserInfo:
ui_fields=ui_fields,
evaluation=evaluation,
feedback_review=feedback_review,
review_state=review_state,
creator=creator,
job_inputs=job_inputs,
metadata=metadata,
Expand Down
9 changes: 9 additions & 0 deletions src/roe/_generated/models/review_state_enum.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from enum import Enum

class ReviewStateEnum(str, Enum):
AGREED = "agreed"
DISAGREED = "disagreed"
UNREVIEWED = "unreviewed"

def __str__(self) -> str:
return str(self.value)
8 changes: 8 additions & 0 deletions src/roe/_generated/models/skill_set_generation_run.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,15 @@ class SkillSetGenerationRun:
sse_endpoint (str): SSE endpoint URL for real-time status updates
id (UUID):
status (str): building, succeeded, or failed.
error (str): Why the run failed, when it reported a reason.
started_at (datetime.datetime): When the run started — the UI shows elapsed time from this.
"""

workflow_id: str
sse_endpoint: str
id: UUID
status: str
error: str
started_at: datetime.datetime
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)

Expand All @@ -54,6 +56,8 @@ def to_dict(self) -> dict[str, Any]:

status = self.status

error = self.error

started_at = self.started_at.isoformat()


Expand All @@ -64,6 +68,7 @@ def to_dict(self) -> dict[str, Any]:
"sse_endpoint": sse_endpoint,
"id": id,
"status": status,
"error": error,
"started_at": started_at,
})

Expand All @@ -85,6 +90,8 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:

status = d.pop("status")

error = d.pop("error")

started_at = isoparse(d.pop("started_at"))


Expand All @@ -95,6 +102,7 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
sse_endpoint=sse_endpoint,
id=id,
status=status,
error=error,
started_at=started_at,
)

Expand Down
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading