devin-cli 1.2.0__tar.gz → 1.2.2__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.
- {devin_cli-1.2.0 → devin_cli-1.2.2}/PKG-INFO +1 -1
- {devin_cli-1.2.0 → devin_cli-1.2.2}/pyproject.toml +1 -1
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v1/sessions.py +3 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/sessions.py +7 -1
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/cli.py +10 -1
- {devin_cli-1.2.0 → devin_cli-1.2.2}/.github/workflows/pypi-publish.yml +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/.gitignore +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/CHANGELOG.md +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/LICENSE +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/README.md +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/assets/logo.png +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/generate_facades.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/setup.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/__init__.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/__init__.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/attachments.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/client.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/consumption.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/knowledge.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/members.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/organizations.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/playbooks.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/repositories.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/schedules.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/secrets.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/sessions.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v1/__init__.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v1/attachments.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v1/knowledge.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v1/playbooks.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v1/secrets.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/__init__.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/attachments.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/consumption.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/knowledge.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/members.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/organizations.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/playbooks.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/repositories.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/schedules.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/secrets.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/config.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/__init__.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/conftest.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_api/test_attachments.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_api/test_knowledge.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_api/test_playbooks.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_api/test_repositories.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_api/test_schedules.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_api/test_secrets.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_api/test_sessions.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_cli.py +0 -0
- {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_config.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devin-cli
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.2
|
|
4
4
|
Summary: Unofficial CLI for Devin AI - The first AI Software Engineer
|
|
5
5
|
Project-URL: Homepage, https://github.com/revanthpobala/devin-cli
|
|
6
6
|
Project-URL: Repository, https://github.com/revanthpobala/devin-cli.git
|
|
@@ -24,6 +24,9 @@ def create_session(
|
|
|
24
24
|
session_links: Optional[List[str]] = None,
|
|
25
25
|
attachment_urls: Optional[List[str]] = None,
|
|
26
26
|
create_as_user_id: Optional[str] = None,
|
|
27
|
+
child_playbook_id: Optional[str] = None,
|
|
28
|
+
bypass_approval: bool = False,
|
|
29
|
+
structured_output_schema: Optional[str] = None,
|
|
27
30
|
):
|
|
28
31
|
data = {
|
|
29
32
|
"prompt": prompt,
|
|
@@ -15,6 +15,7 @@ def create_session(
|
|
|
15
15
|
knowledge_ids: Optional[List[str]] = None,
|
|
16
16
|
max_acu_limit: Optional[int] = None,
|
|
17
17
|
playbook_id: Optional[str] = None,
|
|
18
|
+
child_playbook_id: Optional[str] = None,
|
|
18
19
|
repos: Optional[List[str]] = None,
|
|
19
20
|
secret_ids: Optional[List[str]] = None,
|
|
20
21
|
session_links: Optional[List[str]] = None,
|
|
@@ -22,6 +23,7 @@ def create_session(
|
|
|
22
23
|
tags: Optional[List[str]] = None,
|
|
23
24
|
title: Optional[str] = None,
|
|
24
25
|
create_as_user_id: Optional[str] = None,
|
|
26
|
+
structured_output_schema: Optional[str] = None,
|
|
25
27
|
):
|
|
26
28
|
data = {
|
|
27
29
|
"prompt": prompt,
|
|
@@ -37,6 +39,8 @@ def create_session(
|
|
|
37
39
|
data["max_acu_limit"] = max_acu_limit
|
|
38
40
|
if playbook_id:
|
|
39
41
|
data["playbook_id"] = playbook_id
|
|
42
|
+
if child_playbook_id:
|
|
43
|
+
data["child_playbook_id"] = child_playbook_id
|
|
40
44
|
if repos:
|
|
41
45
|
data["repos"] = repos
|
|
42
46
|
if secret_ids:
|
|
@@ -51,7 +55,9 @@ def create_session(
|
|
|
51
55
|
data["title"] = title
|
|
52
56
|
if create_as_user_id:
|
|
53
57
|
data["create_as_user_id"] = create_as_user_id
|
|
54
|
-
|
|
58
|
+
if structured_output_schema:
|
|
59
|
+
data["structured_output_schema"] = structured_output_schema
|
|
60
|
+
|
|
55
61
|
return client.post("sessions", json=data)
|
|
56
62
|
|
|
57
63
|
def get_session(session_id: str):
|
|
@@ -155,8 +155,9 @@ def create_session_cmd(
|
|
|
155
155
|
title: Optional[str] = typer.Option(None, "--title", "-t", help="Custom session title"),
|
|
156
156
|
org: Optional[str] = typer.Option(None, "--org", help="Override organization ID"),
|
|
157
157
|
max_acu: Optional[int] = typer.Option(None, "--max-acu", help="Maximum ACU limit"),
|
|
158
|
-
advanced_mode: Optional[str] = typer.Option(None, "--advanced-mode", help="Advanced mode type:
|
|
158
|
+
advanced_mode: Optional[str] = typer.Option(None, "--advanced-mode", help="Advanced mode type: analyze | create_playbook | improve_playbook | batch | manage_knowledge"),
|
|
159
159
|
playbook_id: Optional[str] = typer.Option(None, "--playbook-id", help="Playbook ID to apply (v3 only)"),
|
|
160
|
+
child_playbook_id: Optional[str] = typer.Option(None, "--child-playbook-id", help="Playbook ID applied to each sub-session in batch mode (v3 only)"),
|
|
160
161
|
tags: Optional[List[str]] = typer.Option(None, "--tag", help="Session tags (repeatable)"),
|
|
161
162
|
repos: Optional[List[str]] = typer.Option(None, "--repo", help="Repository URLs to attach (v3 only, repeatable)"),
|
|
162
163
|
knowledge_ids: Optional[List[str]] = typer.Option(None, "--knowledge-id", help="Knowledge IDs to attach (repeatable)"),
|
|
@@ -164,6 +165,8 @@ def create_session_cmd(
|
|
|
164
165
|
session_links: Optional[List[str]] = typer.Option(None, "--session-link", help="Session URLs to link as context (v3 only, repeatable)"),
|
|
165
166
|
attachment_urls: Optional[List[str]] = typer.Option(None, "--attachment-url", help="Attachment URLs to attach (v3 only, repeatable)"),
|
|
166
167
|
create_as_user_id: Optional[str] = typer.Option(None, "--create-as-user-id", help="Enterprise: create session on behalf of this user ID (v3 only)"),
|
|
168
|
+
bypass_approval: bool = typer.Option(False, "--bypass-approval", help="Skip UI approval step — child sessions start immediately (v3 only)"),
|
|
169
|
+
structured_output_schema: Optional[str] = typer.Option(None, "--structured-output-schema", help="JSON schema string for structured response output (v3 only)"),
|
|
167
170
|
force: bool = typer.Option(False, "--force", help="Force creation even if duplicate prompt is detected"),
|
|
168
171
|
wait: bool = typer.Option(False, "--wait", "-w", help="Block until the session reaches a terminal status"),
|
|
169
172
|
interval: int = typer.Option(5, "--interval", help="Polling interval in seconds when --wait is used"),
|
|
@@ -177,11 +180,14 @@ def create_session_cmd(
|
|
|
177
180
|
v3_only_used = [x for x, v in [
|
|
178
181
|
("--advanced-mode", advanced_mode),
|
|
179
182
|
("--playbook-id", playbook_id),
|
|
183
|
+
("--child-playbook-id", child_playbook_id),
|
|
180
184
|
("--repos", repos),
|
|
181
185
|
("--secret-ids", secret_ids),
|
|
182
186
|
("--session-links", session_links),
|
|
183
187
|
("--attachment-urls", attachment_urls),
|
|
184
188
|
("--create-as-user-id", create_as_user_id),
|
|
189
|
+
("--bypass-approval", bypass_approval or None),
|
|
190
|
+
("--structured-output-schema", structured_output_schema),
|
|
185
191
|
] if v]
|
|
186
192
|
if api_ver == "v1" and v3_only_used:
|
|
187
193
|
console.print(f"[bold yellow]Warning:[/bold yellow] The following flags are v3-only and will be ignored on a v1 profile: {', '.join(v3_only_used)}")
|
|
@@ -212,6 +218,7 @@ def create_session_cmd(
|
|
|
212
218
|
max_acu_limit=max_acu,
|
|
213
219
|
advanced_mode=advanced_mode,
|
|
214
220
|
playbook_id=playbook_id,
|
|
221
|
+
child_playbook_id=child_playbook_id,
|
|
215
222
|
tags=tags or None,
|
|
216
223
|
repos=repos or None,
|
|
217
224
|
knowledge_ids=knowledge_ids or None,
|
|
@@ -219,6 +226,8 @@ def create_session_cmd(
|
|
|
219
226
|
session_links=session_links or None,
|
|
220
227
|
attachment_urls=attachment_urls or None,
|
|
221
228
|
create_as_user_id=create_as_user_id,
|
|
229
|
+
bypass_approval=bypass_approval,
|
|
230
|
+
structured_output_schema=structured_output_schema,
|
|
222
231
|
)
|
|
223
232
|
sid = resp.get("session_id")
|
|
224
233
|
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|