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.
Files changed (53) hide show
  1. {devin_cli-1.2.0 → devin_cli-1.2.2}/PKG-INFO +1 -1
  2. {devin_cli-1.2.0 → devin_cli-1.2.2}/pyproject.toml +1 -1
  3. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v1/sessions.py +3 -0
  4. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/sessions.py +7 -1
  5. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/cli.py +10 -1
  6. {devin_cli-1.2.0 → devin_cli-1.2.2}/.github/workflows/pypi-publish.yml +0 -0
  7. {devin_cli-1.2.0 → devin_cli-1.2.2}/.gitignore +0 -0
  8. {devin_cli-1.2.0 → devin_cli-1.2.2}/CHANGELOG.md +0 -0
  9. {devin_cli-1.2.0 → devin_cli-1.2.2}/LICENSE +0 -0
  10. {devin_cli-1.2.0 → devin_cli-1.2.2}/README.md +0 -0
  11. {devin_cli-1.2.0 → devin_cli-1.2.2}/assets/logo.png +0 -0
  12. {devin_cli-1.2.0 → devin_cli-1.2.2}/generate_facades.py +0 -0
  13. {devin_cli-1.2.0 → devin_cli-1.2.2}/setup.py +0 -0
  14. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/__init__.py +0 -0
  15. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/__init__.py +0 -0
  16. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/attachments.py +0 -0
  17. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/client.py +0 -0
  18. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/consumption.py +0 -0
  19. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/knowledge.py +0 -0
  20. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/members.py +0 -0
  21. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/organizations.py +0 -0
  22. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/playbooks.py +0 -0
  23. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/repositories.py +0 -0
  24. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/schedules.py +0 -0
  25. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/secrets.py +0 -0
  26. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/sessions.py +0 -0
  27. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v1/__init__.py +0 -0
  28. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v1/attachments.py +0 -0
  29. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v1/knowledge.py +0 -0
  30. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v1/playbooks.py +0 -0
  31. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v1/secrets.py +0 -0
  32. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/__init__.py +0 -0
  33. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/attachments.py +0 -0
  34. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/consumption.py +0 -0
  35. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/knowledge.py +0 -0
  36. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/members.py +0 -0
  37. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/organizations.py +0 -0
  38. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/playbooks.py +0 -0
  39. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/repositories.py +0 -0
  40. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/schedules.py +0 -0
  41. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/api/v3/secrets.py +0 -0
  42. {devin_cli-1.2.0 → devin_cli-1.2.2}/src/devin_cli/config.py +0 -0
  43. {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/__init__.py +0 -0
  44. {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/conftest.py +0 -0
  45. {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_api/test_attachments.py +0 -0
  46. {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_api/test_knowledge.py +0 -0
  47. {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_api/test_playbooks.py +0 -0
  48. {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_api/test_repositories.py +0 -0
  49. {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_api/test_schedules.py +0 -0
  50. {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_api/test_secrets.py +0 -0
  51. {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_api/test_sessions.py +0 -0
  52. {devin_cli-1.2.0 → devin_cli-1.2.2}/tests/test_cli.py +0 -0
  53. {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.0
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "devin-cli"
3
- version = "1.2.0"
3
+ version = "1.2.2"
4
4
  description = "Unofficial CLI for Devin AI - The first AI Software Engineer"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -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: 'cli' or 'browser' (v3 only)"),
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