qbraid-cli 0.16.8__tar.gz → 0.16.9__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 (71) hide show
  1. {qbraid_cli-0.16.8/qbraid_cli.egg-info → qbraid_cli-0.16.9}/PKG-INFO +4 -4
  2. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/pyproject.toml +4 -4
  3. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/agents/app.py +61 -0
  4. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9/qbraid_cli.egg-info}/PKG-INFO +4 -4
  5. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli.egg-info/requires.txt +3 -3
  6. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/LICENSE +0 -0
  7. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/README.md +0 -0
  8. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/__init__.py +0 -0
  9. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/_build_info.py +0 -0
  10. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/_version.py +0 -0
  11. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/account/__init__.py +0 -0
  12. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/account/app.py +0 -0
  13. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/admin/__init__.py +0 -0
  14. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/admin/app.py +0 -0
  15. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/admin/headers.py +0 -0
  16. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/admin/validation.py +0 -0
  17. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/agents/__init__.py +0 -0
  18. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/agents/permission_response.py +0 -0
  19. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/ai/__init__.py +0 -0
  20. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/ai/app.py +0 -0
  21. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/ai/token.py +0 -0
  22. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/comms/__init__.py +0 -0
  23. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/comms/app.py +0 -0
  24. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/compute/__init__.py +0 -0
  25. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/compute/app.py +0 -0
  26. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/compute/instances.py +0 -0
  27. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/compute/profiles.py +0 -0
  28. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/compute/server.py +0 -0
  29. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/compute/ssh.py +0 -0
  30. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/configure/__init__.py +0 -0
  31. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/configure/actions.py +0 -0
  32. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/configure/app.py +0 -0
  33. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/devices/__init__.py +0 -0
  34. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/devices/app.py +0 -0
  35. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/devices/validation.py +0 -0
  36. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/envs/__init__.py +0 -0
  37. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/envs/activate.py +0 -0
  38. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/envs/app.py +0 -0
  39. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/envs/create.py +0 -0
  40. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/envs/data_handling.py +0 -0
  41. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/envs/groups.py +0 -0
  42. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/envs/publish.py +0 -0
  43. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/envs/registry.py +0 -0
  44. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/envs/share.py +0 -0
  45. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/exceptions.py +0 -0
  46. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/handlers.py +0 -0
  47. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/jobs/__init__.py +0 -0
  48. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/jobs/app.py +0 -0
  49. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/jobs/groups.py +0 -0
  50. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/kernels/__init__.py +0 -0
  51. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/kernels/app.py +0 -0
  52. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/lab/__init__.py +0 -0
  53. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/lab/app.py +0 -0
  54. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/main.py +0 -0
  55. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/pip/__init__.py +0 -0
  56. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/pip/app.py +0 -0
  57. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/pip/hooks.py +0 -0
  58. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/projects/__init__.py +0 -0
  59. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/projects/app.py +0 -0
  60. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/py.typed +0 -0
  61. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/skills/__init__.py +0 -0
  62. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/skills/app.py +0 -0
  63. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/troubleshoot/__init__.py +0 -0
  64. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli/troubleshoot/app.py +0 -0
  65. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli.egg-info/SOURCES.txt +0 -0
  66. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli.egg-info/dependency_links.txt +0 -0
  67. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli.egg-info/entry_points.txt +0 -0
  68. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/qbraid_cli.egg-info/top_level.txt +0 -0
  69. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/setup.cfg +0 -0
  70. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/tests/test_cli_e2e.py +0 -0
  71. {qbraid_cli-0.16.8 → qbraid_cli-0.16.9}/tests/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qbraid-cli
3
- Version: 0.16.8
3
+ Version: 0.16.9
4
4
  Summary: Command Line Interface for interacting with all parts of the qBraid platform.
5
5
  Author-email: qBraid Development Team <contact@qbraid.com>
6
6
  License-Expression: LicenseRef-Proprietary
@@ -30,11 +30,11 @@ Requires-Dist: typer>=0.12.1
30
30
  Requires-Dist: rich>=10.11.0
31
31
  Requires-Dist: click<=8.5.0
32
32
  Requires-Dist: questionary>=2.0.0
33
- Requires-Dist: qbraid-core>=0.6.19
33
+ Requires-Dist: qbraid-core>=0.6.21
34
34
  Provides-Extra: compute
35
- Requires-Dist: qbraid-core[compute]>=0.6.19; extra == "compute"
35
+ Requires-Dist: qbraid-core[compute]>=0.6.21; extra == "compute"
36
36
  Provides-Extra: envs
37
- Requires-Dist: qbraid-core[environments]>=0.6.19; extra == "envs"
37
+ Requires-Dist: qbraid-core[environments]>=0.6.21; extra == "envs"
38
38
  Provides-Extra: dev
39
39
  Requires-Dist: isort; extra == "dev"
40
40
  Requires-Dist: black; extra == "dev"
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "qbraid-cli"
7
- version = "0.16.8"
7
+ version = "0.16.9"
8
8
  description = "Command Line Interface for interacting with all parts of the qBraid platform."
9
9
  readme = "README.md"
10
10
  authors = [{ name = "qBraid Development Team", email = "contact@qbraid.com" }]
@@ -32,7 +32,7 @@ dependencies = [
32
32
  "rich>=10.11.0",
33
33
  "click<=8.5.0",
34
34
  "questionary>=2.0.0",
35
- "qbraid-core>=0.6.19",
35
+ "qbraid-core>=0.6.21",
36
36
  ]
37
37
  requires-python = ">= 3.10"
38
38
 
@@ -43,8 +43,8 @@ Documentation = "https://docs.qbraid.com/v2/cli/api-reference/qbraid"
43
43
  Discord = "https://discord.gg/KugF6Cnncm"
44
44
 
45
45
  [project.optional-dependencies]
46
- compute = ["qbraid-core[compute]>=0.6.19"]
47
- envs = ["qbraid-core[environments]>=0.6.19"]
46
+ compute = ["qbraid-core[compute]>=0.6.21"]
47
+ envs = ["qbraid-core[environments]>=0.6.21"]
48
48
  dev = ["isort", "black", "pytest", "pytest-cov", "pytest-asyncio"]
49
49
 
50
50
  [project.scripts]
@@ -1582,6 +1582,32 @@ def agents_settings(
1582
1582
  handle_error(error_type=type(error).__name__, message=str(error), include_traceback=False)
1583
1583
 
1584
1584
 
1585
+ def _prompt_answer_kwargs(method, trust_folder=None, accept_bypass_warning=False):
1586
+ """Answers to the agent's own startup prompts, given on the command line.
1587
+
1588
+ ``trust_folder`` answers "trust this folder?" (Claude, Codex); either
1589
+ explicit answer needs a Core that takes it, because an older Core trusts
1590
+ every Claude launch folder by itself, so a silently dropped "no" would be
1591
+ a yes. ``accept_bypass_warning`` skips Claude's bypass-permissions
1592
+ confirmation for this run.
1593
+ """
1594
+ from qbraid_core.services.agents import AgentLauncherError
1595
+
1596
+ params = inspect.signature(method).parameters
1597
+ open_kwargs = any(p.kind is inspect.Parameter.VAR_KEYWORD for p in params.values())
1598
+ kwargs = {}
1599
+ for key, value, flag in (
1600
+ ("trust_folder", trust_folder, "--trust-folder/--no-trust-folder"),
1601
+ ("accept_bypass_warning", accept_bypass_warning or None, "--skip-bypass-confirmation"),
1602
+ ):
1603
+ if value is None:
1604
+ continue
1605
+ if key not in params and not open_kwargs:
1606
+ raise AgentLauncherError(f"{flag} requires a newer qbraid-core on this machine.")
1607
+ kwargs[key] = value
1608
+ return kwargs
1609
+
1610
+
1585
1611
  def _hook_trust_kwargs(method, value):
1586
1612
  """Fail before launch when an explicit choice cannot be honored."""
1587
1613
  if value is None:
@@ -1673,6 +1699,21 @@ def agents_launch(
1673
1699
  "resume. Refused with --repo. Independent of --approval and --yolo."
1674
1700
  ),
1675
1701
  ),
1702
+ trust_folder: Optional[bool] = typer.Option(
1703
+ None,
1704
+ "--trust-folder/--no-trust-folder",
1705
+ help=(
1706
+ "Answer the agent's 'trust this folder?' prompt now (Claude, Codex), so a detached "
1707
+ "agent does not stop at it. The answer is remembered for later launches and "
1708
+ "resumes. Trusting a folder lets its own settings, hooks and MCP servers run. "
1709
+ "Default: Claude trusts the folder, except a fresh --repo clone; Codex asks."
1710
+ ),
1711
+ ),
1712
+ skip_bypass_confirmation: bool = typer.Option(
1713
+ False,
1714
+ "--skip-bypass-confirmation",
1715
+ help="Claude with --yolo: skip its bypass-permissions confirmation, for this launch only.",
1716
+ ),
1676
1717
  yolo: bool = typer.Option(
1677
1718
  False, "--yolo", help="Claude: skip permissions. Codex: bypass approvals and its sandbox."
1678
1719
  ),
@@ -1729,6 +1770,12 @@ def agents_launch(
1729
1770
  if not compute or str(uuid.UUID(request_id)) != request_id:
1730
1771
  raise AgentLauncherError("--request-id requires --compute and a canonical UUID.")
1731
1772
 
1773
+ if compute and (trust_folder is not None or skip_bypass_confirmation):
1774
+ raise AgentLauncherError(
1775
+ "--trust-folder and --skip-bypass-confirmation are not yet supported for remote "
1776
+ "launches; answer the prompts in the agent's terminal."
1777
+ )
1778
+
1732
1779
  if compute and backend != TerminalBackend.AUTO:
1733
1780
  raise AgentLauncherError("Remote launches select the backend on the destination; omit --backend.")
1734
1781
  launcher = _backend_launcher(backend)
@@ -1766,6 +1813,7 @@ def agents_launch(
1766
1813
  tags=tag,
1767
1814
  **_approval_kwargs(launcher.launch, approval.value if approval else None),
1768
1815
  **_hook_trust_kwargs(launcher.launch, True if trust_hooks else None),
1816
+ **_prompt_answer_kwargs(launcher.launch, trust_folder, skip_bypass_confirmation),
1769
1817
  **_execution_kwargs(launcher.launch, execution_mode.value if execution_mode else None),
1770
1818
  progress_callback=_clone_progress if repo else None,
1771
1819
  )
@@ -1911,6 +1959,14 @@ def agents_resume(
1911
1959
  "for this resume only. Hooks are reviewed again on every run that omits it."
1912
1960
  ),
1913
1961
  ),
1962
+ trust_folder: Optional[bool] = typer.Option(
1963
+ None,
1964
+ "--trust-folder/--no-trust-folder",
1965
+ help=(
1966
+ "Answer 'trust this folder?' for the folder it resumes in (remembered). "
1967
+ "Default: keep the answer given at launch."
1968
+ ),
1969
+ ),
1914
1970
  compute: Optional[str] = typer.Option(None, "--compute", "-c", help="SSH alias for remote compute"),
1915
1971
  ):
1916
1972
  """Resume a previous agent session.
@@ -1943,6 +1999,8 @@ def agents_resume(
1943
1999
  flags += f" --approval {shlex.quote(approval.value)}"
1944
2000
  if trust_hooks:
1945
2001
  flags += " --trust-hooks"
2002
+ if trust_folder is not None:
2003
+ flags += " --trust-folder" if trust_folder else " --no-trust-folder"
1946
2004
  # markup=False -- see agents_status.
1947
2005
  console.print(
1948
2006
  _ssh_cmd(compute, f"qbraid agents resume {shlex.quote(session_id)}{flags}"),
@@ -1963,6 +2021,7 @@ def agents_resume(
1963
2021
  name=name,
1964
2022
  **(_approval_kwargs(launcher.resume, approval.value) if approval else {}),
1965
2023
  **_hook_trust_kwargs(launcher.resume, True if trust_hooks else None),
2024
+ **_prompt_answer_kwargs(launcher.resume, trust_folder),
1966
2025
  **_execution_kwargs(launcher.resume, execution_mode.value if execution_mode else None),
1967
2026
  )
1968
2027
  except AgentLauncherError as e:
@@ -2013,6 +2072,7 @@ def agents_resume(
2013
2072
  # --trust-hooks on this command bypasses hook review.
2014
2073
  True if trust_hooks else None,
2015
2074
  ),
2075
+ **_prompt_answer_kwargs(launcher.launch, trust_folder),
2016
2076
  # A fork of a detached agent must not quietly
2017
2077
  # become one that waits for a human.
2018
2078
  **_approval_kwargs(
@@ -2090,6 +2150,7 @@ def agents_resume(
2090
2150
  name=name,
2091
2151
  **(_approval_kwargs(launcher.resume, approval.value) if approval else {}),
2092
2152
  **_hook_trust_kwargs(launcher.resume, True if trust_hooks else None),
2153
+ **_prompt_answer_kwargs(launcher.resume, trust_folder),
2093
2154
  **_execution_kwargs(launcher.resume, execution_mode.value if execution_mode else None),
2094
2155
  )
2095
2156
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qbraid-cli
3
- Version: 0.16.8
3
+ Version: 0.16.9
4
4
  Summary: Command Line Interface for interacting with all parts of the qBraid platform.
5
5
  Author-email: qBraid Development Team <contact@qbraid.com>
6
6
  License-Expression: LicenseRef-Proprietary
@@ -30,11 +30,11 @@ Requires-Dist: typer>=0.12.1
30
30
  Requires-Dist: rich>=10.11.0
31
31
  Requires-Dist: click<=8.5.0
32
32
  Requires-Dist: questionary>=2.0.0
33
- Requires-Dist: qbraid-core>=0.6.19
33
+ Requires-Dist: qbraid-core>=0.6.21
34
34
  Provides-Extra: compute
35
- Requires-Dist: qbraid-core[compute]>=0.6.19; extra == "compute"
35
+ Requires-Dist: qbraid-core[compute]>=0.6.21; extra == "compute"
36
36
  Provides-Extra: envs
37
- Requires-Dist: qbraid-core[environments]>=0.6.19; extra == "envs"
37
+ Requires-Dist: qbraid-core[environments]>=0.6.21; extra == "envs"
38
38
  Provides-Extra: dev
39
39
  Requires-Dist: isort; extra == "dev"
40
40
  Requires-Dist: black; extra == "dev"
@@ -2,10 +2,10 @@ typer>=0.12.1
2
2
  rich>=10.11.0
3
3
  click<=8.5.0
4
4
  questionary>=2.0.0
5
- qbraid-core>=0.6.19
5
+ qbraid-core>=0.6.21
6
6
 
7
7
  [compute]
8
- qbraid-core[compute]>=0.6.19
8
+ qbraid-core[compute]>=0.6.21
9
9
 
10
10
  [dev]
11
11
  isort
@@ -15,4 +15,4 @@ pytest-cov
15
15
  pytest-asyncio
16
16
 
17
17
  [envs]
18
- qbraid-core[environments]>=0.6.19
18
+ qbraid-core[environments]>=0.6.21
File without changes
File without changes
File without changes