Skip to content
Closed
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
44 changes: 44 additions & 0 deletions openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -5507,6 +5507,19 @@
"session_request": {
"$ref": "#/components/schemas/SessionRequest",
"description": "Template used to create each scheduled session; re-resolved on every fire."
},
"repeats": {
"anyOf": [
{
"type": "integer",
"minimum": 1.0
},
{
"type": "null"
}
],
"title": "Repeats",
"description": "How many sessions to create before the schedule becomes inactive. Omit to run until paused or deleted."
}
},
"type": "object",
Expand Down Expand Up @@ -7354,6 +7367,23 @@
],
"title": "Pause Note"
},
"repeats": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Repeats",
"description": "How many sessions to create before the schedule becomes inactive. Null means it runs until paused or deleted."
},
"sessions_created": {
"type": "integer",
"title": "Sessions Created",
"description": "Automatic fires that created a session. Skipped fires, errors, and manual triggers are not counted. When this reaches repeats, the schedule is paused."
},
"next_run_times": {
"items": {
"type": "string",
Expand Down Expand Up @@ -7395,6 +7425,8 @@
"session_request",
"paused",
"pause_note",
"repeats",
"sessions_created",
"next_run_times",
"last_run_at",
"created_at",
Expand Down Expand Up @@ -8411,6 +8443,18 @@
"type": "null"
}
]
},
"repeats": {
"anyOf": [
{
"type": "integer",
"minimum": 1.0
},
{
"type": "null"
}
],
"title": "Repeats"
}
},
"type": "object",
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "hatchling.build"

[project]
name = "hai-agents"
version = "1.2.3"
version = "1.2.4"
description = "Python SDK for H Company's Agents API: autonomous agents powered by Holo."
requires-python = ">=3.10"
readme = "README.md"
Expand Down
4 changes: 2 additions & 2 deletions src/hai_agents/core/client_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ def get_headers(self) -> typing.Dict[str, str]:
import platform

headers: typing.Dict[str, str] = {
"User-Agent": "hai_agents/1.2.3",
"User-Agent": "hai_agents/1.2.4",
"X-HCompany-Client-Name": "hai_agents",
"X-HCompany-Client-Version": "1.2.3",
"X-HCompany-Client-Version": "1.2.4",
"X-HCompany-Client-Type": "sdk",
"X-HCompany-Language": "Python",
"X-HCompany-Runtime": f"python/{platform.python_version()}",
Expand Down
18 changes: 18 additions & 0 deletions src/hai_agents/schedules/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ def create_schedule(
timing: CronTiming,
session_request: SessionRequest,
description: typing.Optional[str] = OMIT,
repeats: typing.Optional[int] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> ScheduleRecord:
"""
Expand All @@ -99,6 +100,9 @@ def create_schedule(

description : typing.Optional[str]

repeats : typing.Optional[int]
How many sessions to create before the schedule becomes inactive. Omit to run until paused or deleted.

request_options : typing.Optional[RequestOptions]
Request-specific configuration.

Expand Down Expand Up @@ -130,6 +134,7 @@ def create_schedule(
timing=timing,
session_request=session_request,
description=description,
repeats=repeats,
request_options=request_options,
)
return _response.data
Expand Down Expand Up @@ -203,6 +208,7 @@ def update_schedule(
description: typing.Optional[str] = OMIT,
timing: typing.Optional[CronTiming] = OMIT,
session_request: typing.Optional[SessionRequest] = OMIT,
repeats: typing.Optional[int] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> ScheduleRecord:
"""
Expand All @@ -220,6 +226,8 @@ def update_schedule(

session_request : typing.Optional[SessionRequest]

repeats : typing.Optional[int]

request_options : typing.Optional[RequestOptions]
Request-specific configuration.

Expand All @@ -245,6 +253,7 @@ def update_schedule(
description=description,
timing=timing,
session_request=session_request,
repeats=repeats,
request_options=request_options,
)
return _response.data
Expand Down Expand Up @@ -476,6 +485,7 @@ async def create_schedule(
timing: CronTiming,
session_request: SessionRequest,
description: typing.Optional[str] = OMIT,
repeats: typing.Optional[int] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> ScheduleRecord:
"""
Expand All @@ -492,6 +502,9 @@ async def create_schedule(

description : typing.Optional[str]

repeats : typing.Optional[int]
How many sessions to create before the schedule becomes inactive. Omit to run until paused or deleted.

request_options : typing.Optional[RequestOptions]
Request-specific configuration.

Expand Down Expand Up @@ -531,6 +544,7 @@ async def main() -> None:
timing=timing,
session_request=session_request,
description=description,
repeats=repeats,
request_options=request_options,
)
return _response.data
Expand Down Expand Up @@ -622,6 +636,7 @@ async def update_schedule(
description: typing.Optional[str] = OMIT,
timing: typing.Optional[CronTiming] = OMIT,
session_request: typing.Optional[SessionRequest] = OMIT,
repeats: typing.Optional[int] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> ScheduleRecord:
"""
Expand All @@ -639,6 +654,8 @@ async def update_schedule(

session_request : typing.Optional[SessionRequest]

repeats : typing.Optional[int]

request_options : typing.Optional[RequestOptions]
Request-specific configuration.

Expand Down Expand Up @@ -672,6 +689,7 @@ async def main() -> None:
description=description,
timing=timing,
session_request=session_request,
repeats=repeats,
request_options=request_options,
)
return _response.data
Expand Down
18 changes: 18 additions & 0 deletions src/hai_agents/schedules/raw_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ def create_schedule(
timing: CronTiming,
session_request: SessionRequest,
description: typing.Optional[str] = OMIT,
repeats: typing.Optional[int] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> HttpResponse[ScheduleRecord]:
"""
Expand All @@ -125,6 +126,9 @@ def create_schedule(

description : typing.Optional[str]

repeats : typing.Optional[int]
How many sessions to create before the schedule becomes inactive. Omit to run until paused or deleted.

request_options : typing.Optional[RequestOptions]
Request-specific configuration.

Expand All @@ -145,6 +149,7 @@ def create_schedule(
"session_request": convert_and_respect_annotation_metadata(
object_=session_request, annotation=SessionRequest, direction="write"
),
"repeats": repeats,
},
headers={
"content-type": "application/json",
Expand Down Expand Up @@ -288,6 +293,7 @@ def update_schedule(
description: typing.Optional[str] = OMIT,
timing: typing.Optional[CronTiming] = OMIT,
session_request: typing.Optional[SessionRequest] = OMIT,
repeats: typing.Optional[int] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> HttpResponse[ScheduleRecord]:
"""
Expand All @@ -305,6 +311,8 @@ def update_schedule(

session_request : typing.Optional[SessionRequest]

repeats : typing.Optional[int]

request_options : typing.Optional[RequestOptions]
Request-specific configuration.

Expand All @@ -325,6 +333,7 @@ def update_schedule(
"session_request": convert_and_respect_annotation_metadata(
object_=session_request, annotation=typing.Optional[SessionRequest], direction="write"
),
"repeats": repeats,
},
headers={
"content-type": "application/json",
Expand Down Expand Up @@ -689,6 +698,7 @@ async def create_schedule(
timing: CronTiming,
session_request: SessionRequest,
description: typing.Optional[str] = OMIT,
repeats: typing.Optional[int] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncHttpResponse[ScheduleRecord]:
"""
Expand All @@ -705,6 +715,9 @@ async def create_schedule(

description : typing.Optional[str]

repeats : typing.Optional[int]
How many sessions to create before the schedule becomes inactive. Omit to run until paused or deleted.

request_options : typing.Optional[RequestOptions]
Request-specific configuration.

Expand All @@ -725,6 +738,7 @@ async def create_schedule(
"session_request": convert_and_respect_annotation_metadata(
object_=session_request, annotation=SessionRequest, direction="write"
),
"repeats": repeats,
},
headers={
"content-type": "application/json",
Expand Down Expand Up @@ -868,6 +882,7 @@ async def update_schedule(
description: typing.Optional[str] = OMIT,
timing: typing.Optional[CronTiming] = OMIT,
session_request: typing.Optional[SessionRequest] = OMIT,
repeats: typing.Optional[int] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncHttpResponse[ScheduleRecord]:
"""
Expand All @@ -885,6 +900,8 @@ async def update_schedule(

session_request : typing.Optional[SessionRequest]

repeats : typing.Optional[int]

request_options : typing.Optional[RequestOptions]
Request-specific configuration.

Expand All @@ -905,6 +922,7 @@ async def update_schedule(
"session_request": convert_and_respect_annotation_metadata(
object_=session_request, annotation=typing.Optional[SessionRequest], direction="write"
),
"repeats": repeats,
},
headers={
"content-type": "application/json",
Expand Down
10 changes: 10 additions & 0 deletions src/hai_agents/types/schedule_record.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,16 @@ class ScheduleRecord(UniversalBaseModel):
session_request: SessionRequest
paused: bool
pause_note: typing.Optional[str] = None
repeats: typing.Optional[int] = pydantic.Field(default=None)
"""
How many sessions to create before the schedule becomes inactive. Null means it runs until paused or deleted.
"""

sessions_created: int = pydantic.Field()
"""
Automatic fires that created a session. Skipped fires, errors, and manual triggers are not counted. When this reaches repeats, the schedule is paused.
"""

next_run_times: typing.List[dt.datetime] = pydantic.Field()
"""
The next few fire times, empty while paused.
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