sinatra-dev 0.1.5__tar.gz → 0.1.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/PKG-INFO +1 -1
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/pyproject.toml +1 -1
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/tasks/tasks_create.py +20 -16
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/create_task_request.py +22 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/error.py +1 -1
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/.gitignore +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/LICENSE +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/README.md +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/__init__.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_client.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_errors.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/__init__.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/__init__.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/me/__init__.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/me/me_get.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/me/me_revoke_token.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/messages/__init__.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/messages/messages_create.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/messages/messages_list.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/tasks/__init__.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/tasks/tasks_get.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/tasks/tasks_list.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/tasks/tasks_stop.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/tickets/__init__.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/tickets/tickets_delegate.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/tickets/tickets_search.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/client.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/errors.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/__init__.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/create_message_request.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/create_message_response.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/create_task_response.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/delegate_github_ticket.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/delegate_linear_ticket.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/delegate_ticket_response.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/me.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/me_user.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/message.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/message_list.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/pull_request.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/stop_task_response.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/task.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/task_list.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/ticket.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/ticket_search_result.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/ticket_search_result_github.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/ticket_search_result_linear.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/workspace.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/types.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_retry.py +0 -0
- {sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sinatra-dev
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.6
|
|
4
4
|
Summary: Official Python client for sinatra.dev, the AI coding agent that turns Linear and GitHub issues into pull requests: start, follow and stop tasks, and delegate issues.
|
|
5
5
|
Project-URL: Homepage, https://www.sinatra.dev
|
|
6
6
|
Project-URL: Documentation, https://docs.sinatra.dev/docs/api-reference
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sinatra-dev"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.6"
|
|
4
4
|
description = "Official Python client for sinatra.dev, the AI coding agent that turns Linear and GitHub issues into pull requests: start, follow and stop tasks, and delegate issues."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "MIT"
|
{sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/tasks/tasks_create.py
RENAMED
|
@@ -120,7 +120,8 @@ def sync_detailed(
|
|
|
120
120
|
any other: it gets a sandbox, can open a pull request, and shows up in the dashboard.
|
|
121
121
|
|
|
122
122
|
Only `prompt` is required. `title` defaults to the prompt's first line, up to 80 characters. `repo`
|
|
123
|
-
is optional: omit it to let the agent choose a repository.
|
|
123
|
+
is optional: omit it to let the agent choose a repository. `model` is optional: omit it to use the
|
|
124
|
+
repository's or workspace's model. See [Models](https://docs.sinatra.dev/docs/configuration/models).
|
|
124
125
|
|
|
125
126
|
Before it makes the task, Sinatra checks that the workspace is connected to GitHub when the start
|
|
126
127
|
names a repository (without GitHub a task that names none can still answer, research or plan), that
|
|
@@ -128,9 +129,9 @@ def sync_detailed(
|
|
|
128
129
|
a retry with the same key of a start that already made its task is never refused.
|
|
129
130
|
|
|
130
131
|
Send an `Idempotency-Key` so a retry is safe. A start retried with the same key returns the same
|
|
131
|
-
task and never starts a second one. The same key with a different prompt, or a different repository
|
|
132
|
-
or
|
|
133
|
-
The key becomes the first message's `messageId`.
|
|
132
|
+
task and never starts a second one. The same key with a different prompt, or a different repository,
|
|
133
|
+
title or model if you send them, is `409 idempotency_conflict`. Keys belong to the person who sent
|
|
134
|
+
them. The key becomes the first message's `messageId`.
|
|
134
135
|
|
|
135
136
|
If Sinatra saves your request but can't hand it to the agent yet, it answers `503 unavailable` with
|
|
136
137
|
the new `taskId` and `messageId`. Retry with the same key, or send a message on that task, which
|
|
@@ -181,7 +182,8 @@ def sync(
|
|
|
181
182
|
any other: it gets a sandbox, can open a pull request, and shows up in the dashboard.
|
|
182
183
|
|
|
183
184
|
Only `prompt` is required. `title` defaults to the prompt's first line, up to 80 characters. `repo`
|
|
184
|
-
is optional: omit it to let the agent choose a repository.
|
|
185
|
+
is optional: omit it to let the agent choose a repository. `model` is optional: omit it to use the
|
|
186
|
+
repository's or workspace's model. See [Models](https://docs.sinatra.dev/docs/configuration/models).
|
|
185
187
|
|
|
186
188
|
Before it makes the task, Sinatra checks that the workspace is connected to GitHub when the start
|
|
187
189
|
names a repository (without GitHub a task that names none can still answer, research or plan), that
|
|
@@ -189,9 +191,9 @@ def sync(
|
|
|
189
191
|
a retry with the same key of a start that already made its task is never refused.
|
|
190
192
|
|
|
191
193
|
Send an `Idempotency-Key` so a retry is safe. A start retried with the same key returns the same
|
|
192
|
-
task and never starts a second one. The same key with a different prompt, or a different repository
|
|
193
|
-
or
|
|
194
|
-
The key becomes the first message's `messageId`.
|
|
194
|
+
task and never starts a second one. The same key with a different prompt, or a different repository,
|
|
195
|
+
title or model if you send them, is `409 idempotency_conflict`. Keys belong to the person who sent
|
|
196
|
+
them. The key becomes the first message's `messageId`.
|
|
195
197
|
|
|
196
198
|
If Sinatra saves your request but can't hand it to the agent yet, it answers `503 unavailable` with
|
|
197
199
|
the new `taskId` and `messageId`. Retry with the same key, or send a message on that task, which
|
|
@@ -237,7 +239,8 @@ async def asyncio_detailed(
|
|
|
237
239
|
any other: it gets a sandbox, can open a pull request, and shows up in the dashboard.
|
|
238
240
|
|
|
239
241
|
Only `prompt` is required. `title` defaults to the prompt's first line, up to 80 characters. `repo`
|
|
240
|
-
is optional: omit it to let the agent choose a repository.
|
|
242
|
+
is optional: omit it to let the agent choose a repository. `model` is optional: omit it to use the
|
|
243
|
+
repository's or workspace's model. See [Models](https://docs.sinatra.dev/docs/configuration/models).
|
|
241
244
|
|
|
242
245
|
Before it makes the task, Sinatra checks that the workspace is connected to GitHub when the start
|
|
243
246
|
names a repository (without GitHub a task that names none can still answer, research or plan), that
|
|
@@ -245,9 +248,9 @@ async def asyncio_detailed(
|
|
|
245
248
|
a retry with the same key of a start that already made its task is never refused.
|
|
246
249
|
|
|
247
250
|
Send an `Idempotency-Key` so a retry is safe. A start retried with the same key returns the same
|
|
248
|
-
task and never starts a second one. The same key with a different prompt, or a different repository
|
|
249
|
-
or
|
|
250
|
-
The key becomes the first message's `messageId`.
|
|
251
|
+
task and never starts a second one. The same key with a different prompt, or a different repository,
|
|
252
|
+
title or model if you send them, is `409 idempotency_conflict`. Keys belong to the person who sent
|
|
253
|
+
them. The key becomes the first message's `messageId`.
|
|
251
254
|
|
|
252
255
|
If Sinatra saves your request but can't hand it to the agent yet, it answers `503 unavailable` with
|
|
253
256
|
the new `taskId` and `messageId`. Retry with the same key, or send a message on that task, which
|
|
@@ -296,7 +299,8 @@ async def asyncio(
|
|
|
296
299
|
any other: it gets a sandbox, can open a pull request, and shows up in the dashboard.
|
|
297
300
|
|
|
298
301
|
Only `prompt` is required. `title` defaults to the prompt's first line, up to 80 characters. `repo`
|
|
299
|
-
is optional: omit it to let the agent choose a repository.
|
|
302
|
+
is optional: omit it to let the agent choose a repository. `model` is optional: omit it to use the
|
|
303
|
+
repository's or workspace's model. See [Models](https://docs.sinatra.dev/docs/configuration/models).
|
|
300
304
|
|
|
301
305
|
Before it makes the task, Sinatra checks that the workspace is connected to GitHub when the start
|
|
302
306
|
names a repository (without GitHub a task that names none can still answer, research or plan), that
|
|
@@ -304,9 +308,9 @@ async def asyncio(
|
|
|
304
308
|
a retry with the same key of a start that already made its task is never refused.
|
|
305
309
|
|
|
306
310
|
Send an `Idempotency-Key` so a retry is safe. A start retried with the same key returns the same
|
|
307
|
-
task and never starts a second one. The same key with a different prompt, or a different repository
|
|
308
|
-
or
|
|
309
|
-
The key becomes the first message's `messageId`.
|
|
311
|
+
task and never starts a second one. The same key with a different prompt, or a different repository,
|
|
312
|
+
title or model if you send them, is `409 idempotency_conflict`. Keys belong to the person who sent
|
|
313
|
+
them. The key becomes the first message's `messageId`.
|
|
310
314
|
|
|
311
315
|
If Sinatra saves your request but can't hand it to the agent yet, it answers `503 unavailable` with
|
|
312
316
|
the new `taskId` and `messageId`. Retry with the same key, or send a message on that task, which
|
{sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/create_task_request.py
RENAMED
|
@@ -21,11 +21,15 @@ class CreateTaskRequest:
|
|
|
21
21
|
80 characters.
|
|
22
22
|
repo (None | str | Unset): `owner/name` of a repository connected to the workspace. Omit it to let the agent
|
|
23
23
|
choose.
|
|
24
|
+
model (None | str | Unset): A model from Sinatra's catalog, such as `anthropic/claude-opus-5-5` or `openai-
|
|
25
|
+
codex/gpt-6.1-sol`, that every turn of the task runs on. The model picks its engine. Omit it to use the
|
|
26
|
+
repository's or workspace's model.
|
|
24
27
|
"""
|
|
25
28
|
|
|
26
29
|
prompt: str
|
|
27
30
|
title: None | str | Unset = UNSET
|
|
28
31
|
repo: None | str | Unset = UNSET
|
|
32
|
+
model: None | str | Unset = UNSET
|
|
29
33
|
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
30
34
|
|
|
31
35
|
def to_dict(self) -> dict[str, Any]:
|
|
@@ -43,6 +47,12 @@ class CreateTaskRequest:
|
|
|
43
47
|
else:
|
|
44
48
|
repo = self.repo
|
|
45
49
|
|
|
50
|
+
model: None | str | Unset
|
|
51
|
+
if isinstance(self.model, Unset):
|
|
52
|
+
model = UNSET
|
|
53
|
+
else:
|
|
54
|
+
model = self.model
|
|
55
|
+
|
|
46
56
|
field_dict: dict[str, Any] = {}
|
|
47
57
|
field_dict.update(self.additional_properties)
|
|
48
58
|
field_dict.update(
|
|
@@ -54,6 +64,8 @@ class CreateTaskRequest:
|
|
|
54
64
|
field_dict["title"] = title
|
|
55
65
|
if repo is not UNSET:
|
|
56
66
|
field_dict["repo"] = repo
|
|
67
|
+
if model is not UNSET:
|
|
68
|
+
field_dict["model"] = model
|
|
57
69
|
|
|
58
70
|
return field_dict
|
|
59
71
|
|
|
@@ -80,10 +92,20 @@ class CreateTaskRequest:
|
|
|
80
92
|
|
|
81
93
|
repo = _parse_repo(d.pop("repo", UNSET))
|
|
82
94
|
|
|
95
|
+
def _parse_model(data: object) -> None | str | Unset:
|
|
96
|
+
if data is None:
|
|
97
|
+
return data
|
|
98
|
+
if isinstance(data, Unset):
|
|
99
|
+
return data
|
|
100
|
+
return cast(None | str | Unset, data)
|
|
101
|
+
|
|
102
|
+
model = _parse_model(d.pop("model", UNSET))
|
|
103
|
+
|
|
83
104
|
create_task_request = cls(
|
|
84
105
|
prompt=prompt,
|
|
85
106
|
title=title,
|
|
86
107
|
repo=repo,
|
|
108
|
+
model=model,
|
|
87
109
|
)
|
|
88
110
|
|
|
89
111
|
create_task_request.additional_properties = d
|
|
@@ -19,7 +19,7 @@ class Error:
|
|
|
19
19
|
error (str): A machine-readable code, such as `invalid_prompt`. Branch on this, not on `reason`. New codes can
|
|
20
20
|
appear. Known codes: `assigned_to_other`, `bad_request`, `capacity_full`, `github_identity_required`,
|
|
21
21
|
`github_not_connected`, `github_rate_limited`, `idempotency_conflict`, `internal_error`, `invalid_body`,
|
|
22
|
-
`invalid_cursor`, `invalid_idempotency_key`, `invalid_limit`, `invalid_prompt`, `invalid_repo`,
|
|
22
|
+
`invalid_cursor`, `invalid_idempotency_key`, `invalid_limit`, `invalid_model`, `invalid_prompt`, `invalid_repo`,
|
|
23
23
|
`invalid_status`, `invalid_title`, `invalid_token`, `issue_closed`, `issue_not_found`,
|
|
24
24
|
`linear_app_user_missing`, `linear_identity_conflict`, `linear_identity_unlinked`, `linear_not_connected`,
|
|
25
25
|
`linear_reconnect_required`, `not_an_api_task`, `not_an_issue`, `not_found`, `not_running`, `payment_required`,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/me/me_revoke_token.py
RENAMED
|
File without changes
|
|
File without changes
|
{sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/messages/messages_create.py
RENAMED
|
File without changes
|
{sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/messages/messages_list.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/tickets/tickets_delegate.py
RENAMED
|
File without changes
|
{sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/api/tickets/tickets_search.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/create_message_request.py
RENAMED
|
File without changes
|
{sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/create_message_response.py
RENAMED
|
File without changes
|
{sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/create_task_response.py
RENAMED
|
File without changes
|
{sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/delegate_github_ticket.py
RENAMED
|
File without changes
|
{sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/delegate_linear_ticket.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/stop_task_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinatra_dev-0.1.5 → sinatra_dev-0.1.6}/src/sinatra_dev/_generated/models/ticket_search_result.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|