agentstack-cli 0.6.0rc3__py3-none-macosx_12_0_arm64.whl → 0.6.1rc1__py3-none-macosx_12_0_arm64.whl

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.
@@ -0,0 +1,40 @@
1
+ # Copyright 2025 © BeeAI a Series of LF Projects, LLC
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ import sys
5
+
6
+ from InquirerPy import inquirer
7
+
8
+ from agentstack_cli.configuration import Configuration
9
+ from agentstack_cli.console import console
10
+
11
+
12
+ def require_active_server() -> str:
13
+ """Return the active server URL or exit if none is selected."""
14
+ if url := Configuration().auth_manager.active_server:
15
+ return url
16
+ console.error("No server selected.")
17
+ console.hint(
18
+ "Run [green]agentstack platform start[/green] to start a local server, or [green]agentstack server login[/green] to connect to a remote one."
19
+ )
20
+ sys.exit(1)
21
+
22
+
23
+ def announce_server_action(message: str, url: str | None = None) -> str:
24
+ """Log an info message that includes the active server URL and return it."""
25
+ url = url or require_active_server()
26
+ console.info(f"{message} [cyan]{url}[/cyan]")
27
+ return url
28
+
29
+
30
+ async def confirm_server_action(message: str, url: str | None = None, *, yes: bool = False) -> None:
31
+ """Ask for confirmation before continuing with an action on the active server."""
32
+ if yes:
33
+ return
34
+ url = url or require_active_server()
35
+ confirmed = await inquirer.confirm( # type: ignore
36
+ message=f"{message} {url}?", default=False
37
+ ).execute_async()
38
+ if not confirmed:
39
+ console.info("Action cancelled.")
40
+ sys.exit(1)
agentstack_cli/utils.py CHANGED
@@ -23,7 +23,6 @@ import typer
23
23
  import yaml
24
24
  from anyio import create_task_group
25
25
  from anyio.abc import ByteReceiveStream, TaskGroup
26
- from InquirerPy import inquirer
27
26
  from jsf import JSF
28
27
  from prompt_toolkit import PromptSession
29
28
  from prompt_toolkit.shortcuts import CompleteStyle
@@ -31,7 +30,6 @@ from pydantic import BaseModel
31
30
  from rich.console import Capture, Console
32
31
  from rich.text import Text
33
32
 
34
- from agentstack_cli.configuration import Configuration
35
33
  from agentstack_cli.console import console, err_console
36
34
 
37
35
  if TYPE_CHECKING:
@@ -119,37 +117,6 @@ def remove_nullable(schema: dict[str, Any]) -> dict[str, Any]:
119
117
  prompt_session = None
120
118
 
121
119
 
122
- def require_active_server() -> str:
123
- """Return the active server URL or exit if none is selected."""
124
- if url := Configuration().auth_manager.active_server:
125
- return url
126
- console.error("No server selected.")
127
- console.hint(
128
- "Run [green]agentstack platform start[/green] to start a local server, or [green]agentstack server login[/green] to connect to a remote one."
129
- )
130
- sys.exit(1)
131
-
132
-
133
- def announce_server_action(message: str, url: str | None = None) -> str:
134
- """Log an info message that includes the active server URL and return it."""
135
- url = url or require_active_server()
136
- console.info(f"{message} [cyan]{url}[/cyan]")
137
- return url
138
-
139
-
140
- async def confirm_server_action(message: str, url: str | None = None, *, yes: bool = False) -> None:
141
- """Ask for confirmation before continuing with an action on the active server."""
142
- if yes:
143
- return
144
- url = url or require_active_server()
145
- confirmed = await inquirer.confirm( # type: ignore
146
- message=f"{message} {url}?", default=False
147
- ).execute_async()
148
- if not confirmed:
149
- console.info("Action cancelled.")
150
- raise typer.Exit(1)
151
-
152
-
153
120
  def prompt_user(
154
121
  prompt: str | None = None,
155
122
  completer: "Completer | None" = None,
@@ -343,9 +310,26 @@ def is_github_url(url: str) -> bool:
343
310
  return bool(re.match(pattern, url, re.VERBOSE))
344
311
 
345
312
 
346
- # Inspired by: https://github.com/clarketm/mergedeep/blob/master/mergedeep/mergedeep.py
313
+ def get_httpx_response_error_details(response: httpx.Response | None) -> tuple[str, str] | None:
314
+ if response:
315
+ try:
316
+ error_json = response.json()
317
+ return (
318
+ f"error: {error_json.get('error', 'unknown')}",
319
+ f"error description: {error_json.get('error_description', 'No description')}",
320
+ )
321
+ except Exception:
322
+ pass
347
323
 
348
324
 
325
+ def print_httpx_response_error_details(resp: httpx.Response | None) -> None:
326
+ error_details = get_httpx_response_error_details(resp)
327
+ if error_details:
328
+ for line in error_details:
329
+ console.error(line)
330
+
331
+
332
+ # Inspired by: https://github.com/clarketm/mergedeep/blob/master/mergedeep/mergedeep.py
349
333
  def _is_recursive_merge(a: Any, b: Any) -> bool:
350
334
  both_mapping = isinstance(a, Mapping) and isinstance(b, Mapping)
351
335
  both_counter = isinstance(a, Counter) and isinstance(b, Counter)
@@ -1,51 +1,51 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: agentstack-cli
3
- Version: 0.6.0rc3
3
+ Version: 0.6.1rc1
4
4
  Summary: Agent Stack CLI
5
5
  Author: IBM Corp.
6
- Requires-Dist: agentstack-sdk==0.6.0rc3
6
+ Requires-Dist: agentstack-sdk==0.6.1rc1
7
7
  Requires-Dist: a2a-sdk==0.3.21
8
8
  Requires-Dist: annotated-doc==0.0.4
9
9
  Requires-Dist: annotated-types==0.7.0
10
- Requires-Dist: anyio==4.10.0
10
+ Requires-Dist: anyio==4.12.1
11
11
  Requires-Dist: asgiref==3.11.0
12
- Requires-Dist: async-lru==2.0.5
12
+ Requires-Dist: async-lru==2.1.0
13
13
  Requires-Dist: asyncclick==8.3.0.7
14
14
  Requires-Dist: attrs==25.4.0
15
15
  Requires-Dist: authlib==1.6.6
16
- Requires-Dist: cachetools==6.2.3
17
- Requires-Dist: certifi==2025.11.12
16
+ Requires-Dist: cachetools==6.2.6
17
+ Requires-Dist: certifi==2026.1.4
18
18
  Requires-Dist: cffi==2.0.0 ; platform_python_implementation != 'PyPy'
19
19
  Requires-Dist: charset-normalizer==3.4.4
20
- Requires-Dist: click==8.2.1
20
+ Requires-Dist: click==8.3.1
21
21
  Requires-Dist: colorama==0.4.6 ; sys_platform == 'win32'
22
- Requires-Dist: cryptography==46.0.3
22
+ Requires-Dist: cryptography==46.0.4
23
23
  Requires-Dist: distro==1.9.0
24
- Requires-Dist: faker==38.2.0
25
- Requires-Dist: fastapi==0.124.4
26
- Requires-Dist: gnureadline==8.2.13 ; sys_platform != 'win32'
27
- Requires-Dist: google-api-core==2.28.1
28
- Requires-Dist: google-auth==2.43.0
24
+ Requires-Dist: faker==40.1.2
25
+ Requires-Dist: fastapi==0.128.0
26
+ Requires-Dist: gnureadline==8.3.3 ; sys_platform != 'win32'
27
+ Requires-Dist: google-api-core==2.29.0
28
+ Requires-Dist: google-auth==2.48.0
29
29
  Requires-Dist: googleapis-common-protos==1.72.0
30
30
  Requires-Dist: h11==0.16.0
31
31
  Requires-Dist: httpcore==1.0.9
32
32
  Requires-Dist: httpx==0.28.1
33
33
  Requires-Dist: httpx-sse==0.4.3
34
34
  Requires-Dist: idna==3.11
35
- Requires-Dist: importlib-metadata==8.7.0
35
+ Requires-Dist: importlib-metadata==8.7.1
36
36
  Requires-Dist: iniconfig==2.3.0
37
37
  Requires-Dist: inquirerpy==0.3.4
38
38
  Requires-Dist: janus==2.0.0
39
39
  Requires-Dist: jiter==0.12.0
40
40
  Requires-Dist: jsf==0.11.2
41
- Requires-Dist: jsonschema==4.25.1
41
+ Requires-Dist: jsonschema==4.26.0
42
42
  Requires-Dist: jsonschema-specifications==2025.9.1
43
43
  Requires-Dist: markdown-it-py==4.0.0
44
- Requires-Dist: mcp==1.24.0
44
+ Requires-Dist: mcp==1.26.0
45
45
  Requires-Dist: mdurl==0.1.2
46
- Requires-Dist: nodeenv==1.9.1
46
+ Requires-Dist: nodeenv==1.10.0
47
47
  Requires-Dist: objprint==0.3.0
48
- Requires-Dist: openai==1.107.3
48
+ Requires-Dist: openai==2.16.0
49
49
  Requires-Dist: opentelemetry-api==1.39.1
50
50
  Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.39.1
51
51
  Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.39.1
@@ -56,49 +56,49 @@ Requires-Dist: opentelemetry-proto==1.39.1
56
56
  Requires-Dist: opentelemetry-sdk==1.39.1
57
57
  Requires-Dist: opentelemetry-semantic-conventions==0.60b1
58
58
  Requires-Dist: opentelemetry-util-http==0.60b1
59
- Requires-Dist: packaging==25.0
59
+ Requires-Dist: packaging==26.0
60
60
  Requires-Dist: pfzy==0.3.4
61
61
  Requires-Dist: pluggy==1.6.0
62
62
  Requires-Dist: prompt-toolkit==3.0.52
63
- Requires-Dist: proto-plus==1.26.1
64
- Requires-Dist: protobuf==6.33.2
65
- Requires-Dist: psutil==7.0.0
66
- Requires-Dist: pyasn1==0.6.1
63
+ Requires-Dist: proto-plus==1.27.0
64
+ Requires-Dist: protobuf==6.33.5
65
+ Requires-Dist: psutil==7.2.2
66
+ Requires-Dist: pyasn1==0.6.2
67
67
  Requires-Dist: pyasn1-modules==0.4.2
68
- Requires-Dist: pycparser==2.23 ; implementation_name != 'PyPy' and platform_python_implementation != 'PyPy'
69
- Requires-Dist: pydantic==2.11.10
70
- Requires-Dist: pydantic-core==2.33.2
71
- Requires-Dist: pydantic-settings==2.10.1
68
+ Requires-Dist: pycparser==3.0 ; implementation_name != 'PyPy' and platform_python_implementation != 'PyPy'
69
+ Requires-Dist: pydantic==2.12.5
70
+ Requires-Dist: pydantic-core==2.41.5
71
+ Requires-Dist: pydantic-settings==2.12.0
72
72
  Requires-Dist: pygments==2.19.2
73
73
  Requires-Dist: pyjwt==2.10.1
74
74
  Requires-Dist: pyright==1.1.407
75
75
  Requires-Dist: pytest==9.0.2
76
76
  Requires-Dist: python-dotenv==1.2.1
77
- Requires-Dist: python-multipart==0.0.20
77
+ Requires-Dist: python-multipart==0.0.22
78
78
  Requires-Dist: pywin32==311 ; sys_platform == 'win32'
79
79
  Requires-Dist: pyyaml==6.0.3
80
80
  Requires-Dist: referencing==0.37.0
81
81
  Requires-Dist: requests==2.32.5
82
- Requires-Dist: rich==14.2.0
82
+ Requires-Dist: rich==14.3.1
83
83
  Requires-Dist: rpds-py==0.30.0
84
84
  Requires-Dist: rsa==4.9.1
85
85
  Requires-Dist: rstr==3.2.2
86
- Requires-Dist: ruff==0.14.9
86
+ Requires-Dist: ruff==0.14.14
87
87
  Requires-Dist: shellingham==1.5.4
88
88
  Requires-Dist: smart-open==7.5.0
89
89
  Requires-Dist: sniffio==1.3.1
90
- Requires-Dist: sse-starlette==3.0.4
90
+ Requires-Dist: sse-starlette==3.2.0
91
91
  Requires-Dist: starlette==0.50.0
92
92
  Requires-Dist: tenacity==9.1.2
93
93
  Requires-Dist: tqdm==4.67.1
94
- Requires-Dist: typer==0.17.5
94
+ Requires-Dist: typer==0.21.1
95
95
  Requires-Dist: typing-extensions==4.15.0
96
96
  Requires-Dist: typing-inspection==0.4.2
97
- Requires-Dist: tzdata==2025.3
98
- Requires-Dist: urllib3==2.6.2
99
- Requires-Dist: uvicorn==0.38.0
100
- Requires-Dist: wcwidth==0.2.14
101
- Requires-Dist: wheel==0.45.1
97
+ Requires-Dist: tzdata==2025.3 ; sys_platform == 'win32'
98
+ Requires-Dist: urllib3==2.6.3
99
+ Requires-Dist: uvicorn==0.40.0
100
+ Requires-Dist: wcwidth==0.5.2
101
+ Requires-Dist: wheel==0.46.3
102
102
  Requires-Dist: wrapt==1.17.3
103
103
  Requires-Dist: zipp==3.23.0
104
104
  Requires-Python: >=3.13, <3.14
@@ -0,0 +1,28 @@
1
+ agentstack_cli/__init__.py,sha256=VML7VgV0JvGJ4xDnQ-zPulWQKXZWe56Qd19Hp7moq-8,7019
2
+ agentstack_cli/api.py,sha256=3bjdlSp2vaEWv94Aa5z_s0nW1euFP_etQ2bWZ4G7Gdg,5619
3
+ agentstack_cli/async_typer.py,sha256=mTc1B6fMd4EAT60nj5KuJMuIKEfRGRbPHMFo_7fcVt0,4354
4
+ agentstack_cli/auth_manager.py,sha256=oRSU0KGNtWnPvM385kKEi9IMZ13pdXzUj-mIBJ9qDHo,11928
5
+ agentstack_cli/configuration.py,sha256=CqQZYgm0FYDZh8piQcSBJWqvZThZn_Nq4WNs_nqCyZ0,3518
6
+ agentstack_cli/console.py,sha256=x7YdbrUtc6gnFMViI8gEVLjF2ns7EKNybanW3h8Q1qU,710
7
+ agentstack_cli/server_utils.py,sha256=xii1OQp0jXH11U6oXhgrZ7tcBz6SbocVC3mdCVhSfnc,1383
8
+ agentstack_cli/utils.py,sha256=x4gpGIFjSFal-gGs5ab6mPCJQLpc8XPr3uK-JGbVwBw,13578
9
+ agentstack_cli/commands/__init__.py,sha256=jr8otByt8HFY9OWptuWdpq4WHE7A1srCSRXZV066FrI,94
10
+ agentstack_cli/commands/agent.py,sha256=jA_55lykXbnAVWoCrL2tm6mzyiNsbhsJNIoYZY7zyBw,59452
11
+ agentstack_cli/commands/build.py,sha256=e_jYle8ixZuh0LiQ9lAbKfcIjq_1-a-MYgOEwnPOlrA,9033
12
+ agentstack_cli/commands/connector.py,sha256=FyebcnoDqg2AUH6C9aCCGGSg9vlZZMvsorR42GbZe_E,12476
13
+ agentstack_cli/commands/model.py,sha256=NYZTSyDAQfdY_GAei5UcB7rsXWOeWbZWSfxY8y1ADpo,30734
14
+ agentstack_cli/commands/self.py,sha256=aqe4K1498jPO2vlmJL7fCStEXSc2IfEsHwPSXIbPQd8,9327
15
+ agentstack_cli/commands/server.py,sha256=bdqXPDZbDKQGhKzZFJ-YGSIlWO5sInDXJd9qyi7vGkI,14146
16
+ agentstack_cli/commands/user.py,sha256=tjobcXKpem8sfoKDjk2oEuCf0Px4h45oXI1mL6OuSBo,2900
17
+ agentstack_cli/commands/platform/__init__.py,sha256=oR72y9fLv-zUDOpWFMu6KlIPoF-Lv4b7PljmkmfWQm4,8924
18
+ agentstack_cli/commands/platform/base_driver.py,sha256=CRjXTSq9Wds7d9t5x3R8IVcVTjLa23M-HiIqa7kBUbM,10073
19
+ agentstack_cli/commands/platform/lima_driver.py,sha256=LQasxcX2vUM4TX-N7BxYVkic9N-pzOCixfP3rXFStwg,11060
20
+ agentstack_cli/commands/platform/wsl_driver.py,sha256=LGIlR-rKITBKEu9iP0BjPLDwdN5KdZqYpFbMgGrL9us,9387
21
+ agentstack_cli/data/.gitignore,sha256=W0urBl_DVtzJyKHGXo53wMVzMPJseiK9RMn46No6i70,14
22
+ agentstack_cli/data/helm-chart.tgz,sha256=gjrfxD0XIeOfrV7N_f2ByHBsIpnYsefWwA9gclnhP7U,255642
23
+ agentstack_cli/data/lima-guestagent.Linux-aarch64.gz,sha256=zOnOo5K6Fen6LqJZqmK1K3X4V_0WeAyR6A3h8vpU-HI,12623630
24
+ agentstack_cli/data/limactl,sha256=mYgOil6jcQohk6uvz_GRl1gh-KyFqZ_5gjhE7ARJRO4,29321824
25
+ agentstack_cli-0.6.1rc1.dist-info/METADATA,sha256=-4PTrOPUQy5RpcAxLQNu6gOziEyhx4OFmkzx46UKoyc,3787
26
+ agentstack_cli-0.6.1rc1.dist-info/WHEEL,sha256=CxMVjKANgQE-Hr-Lm4bVVs9hpUZ2GGkxSgsbLzgOW04,93
27
+ agentstack_cli-0.6.1rc1.dist-info/entry_points.txt,sha256=g3RAenJ90a0mLfx8x-ETzsr3uEdFnvuhTX3Amy1AUbA,87
28
+ agentstack_cli-0.6.1rc1.dist-info/RECORD,,
@@ -1,27 +0,0 @@
1
- agentstack_cli/__init__.py,sha256=VML7VgV0JvGJ4xDnQ-zPulWQKXZWe56Qd19Hp7moq-8,7019
2
- agentstack_cli/api.py,sha256=3bjdlSp2vaEWv94Aa5z_s0nW1euFP_etQ2bWZ4G7Gdg,5619
3
- agentstack_cli/async_typer.py,sha256=mTc1B6fMd4EAT60nj5KuJMuIKEfRGRbPHMFo_7fcVt0,4354
4
- agentstack_cli/auth_manager.py,sha256=kr4tIVGW-fUROU3oJT1l2B1bb1spRbL4iiSrh7u4ZIo,10076
5
- agentstack_cli/configuration.py,sha256=Na0lkoLw2RlfORb3x8QwHRfU8V3plPHlJF5NTTRj4mk,2734
6
- agentstack_cli/console.py,sha256=x7YdbrUtc6gnFMViI8gEVLjF2ns7EKNybanW3h8Q1qU,710
7
- agentstack_cli/utils.py,sha256=Cevvx7SAb-f07g_sfz8EXZoGnhodaLVUR20Tc4WHr0s,14187
8
- agentstack_cli/commands/__init__.py,sha256=jr8otByt8HFY9OWptuWdpq4WHE7A1srCSRXZV066FrI,94
9
- agentstack_cli/commands/agent.py,sha256=6wSPKvM3SYpJRkMpjl8iwpGaWCqtbRA8y-YaHVi_QZE,57685
10
- agentstack_cli/commands/build.py,sha256=7oRwd_2-vpUnKHvwykPHqqMBMyHGCZ99lIRdg1yDPVE,9002
11
- agentstack_cli/commands/connector.py,sha256=GnY0MeHnA53PlIti-iIibsIw6caOXyTgs8DVo1LZX6M,12497
12
- agentstack_cli/commands/model.py,sha256=9htp0J03u4Pg9qroxWAT-RF5ADPMpm264nzIhg13tso,30695
13
- agentstack_cli/commands/self.py,sha256=1zX9Qu0ma146LUiHWrNOXXIj32i44Cvi9O030PiGCXg,9363
14
- agentstack_cli/commands/server.py,sha256=IXjCWEKPqnwqQNVvEwBOFITEJ79WpcW1RSBp32sd88s,12157
15
- agentstack_cli/commands/user.py,sha256=6Hr_UIybDMJgM4QN73zM4J6mP_4BZnW_C2Neu0f2yPE,2893
16
- agentstack_cli/commands/platform/__init__.py,sha256=rzWgMds-aDA2wCxw3lEG4KywDpW1Wrb6AgLY8zYtM8M,8970
17
- agentstack_cli/commands/platform/base_driver.py,sha256=oyfqCjL5xsD9gzZ9QhF3U7MPF9RECDplg0CRIFUwjt8,7725
18
- agentstack_cli/commands/platform/lima_driver.py,sha256=a30flm1EEbsCPbzMugGHjShnljqS1kBu9aspJDY3SgY,11020
19
- agentstack_cli/commands/platform/wsl_driver.py,sha256=wbQaf9wyuVsXJfqTKddbcgB3KeRSZrO-kwSMi7DUyxE,9422
20
- agentstack_cli/data/.gitignore,sha256=W0urBl_DVtzJyKHGXo53wMVzMPJseiK9RMn46No6i70,14
21
- agentstack_cli/data/helm-chart.tgz,sha256=XYWL3kL3j4WyT2yrQ7n6iUAVqNqvrTb5P4_2lYn3AY8,312724
22
- agentstack_cli/data/lima-guestagent.Linux-aarch64.gz,sha256=zOnOo5K6Fen6LqJZqmK1K3X4V_0WeAyR6A3h8vpU-HI,12623630
23
- agentstack_cli/data/limactl,sha256=mYgOil6jcQohk6uvz_GRl1gh-KyFqZ_5gjhE7ARJRO4,29321824
24
- agentstack_cli-0.6.0rc3.dist-info/METADATA,sha256=G3YlhjgumVDCGl86gfpabfRUAGonIGhkvZW9MFdV4os,3766
25
- agentstack_cli-0.6.0rc3.dist-info/WHEEL,sha256=CxMVjKANgQE-Hr-Lm4bVVs9hpUZ2GGkxSgsbLzgOW04,93
26
- agentstack_cli-0.6.0rc3.dist-info/entry_points.txt,sha256=g3RAenJ90a0mLfx8x-ETzsr3uEdFnvuhTX3Amy1AUbA,87
27
- agentstack_cli-0.6.0rc3.dist-info/RECORD,,