agentsystems-sdk 0.5.9__tar.gz → 0.5.10__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 (65) hide show
  1. {agentsystems_sdk-0.5.9/agentsystems_sdk.egg-info → agentsystems_sdk-0.5.10}/PKG-INFO +12 -1
  2. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/README.md +11 -0
  3. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/cli.py +3 -3
  4. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/commands/__init__.py +2 -2
  5. agentsystems_sdk-0.5.9/agentsystems_sdk/commands/hub.py → agentsystems_sdk-0.5.10/agentsystems_sdk/commands/index.py +92 -79
  6. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/licenses/python/ATTRIBUTIONS.md +4 -4
  7. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/licenses/python/THIRD_PARTY_LICENSES.json +4 -4
  8. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/licenses/python/THIRD_PARTY_REQUIREMENTS.txt +1 -1
  9. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10/agentsystems_sdk.egg-info}/PKG-INFO +12 -1
  10. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk.egg-info/SOURCES.txt +1 -1
  11. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/pyproject.toml +1 -1
  12. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/LICENSE +0 -0
  13. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/MANIFEST.in +0 -0
  14. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/NOTICE +0 -0
  15. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/__init__.py +0 -0
  16. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/commands/artifacts.py +0 -0
  17. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/commands/clean.py +0 -0
  18. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/commands/down.py +0 -0
  19. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/commands/init.py +0 -0
  20. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/commands/logs.py +0 -0
  21. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/commands/restart.py +0 -0
  22. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/commands/run.py +0 -0
  23. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/commands/status.py +0 -0
  24. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/commands/up.py +0 -0
  25. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/commands/update.py +0 -0
  26. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/commands/version.py +0 -0
  27. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/config.py +0 -0
  28. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/deployments_scaffold/.env.example +0 -0
  29. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/deployments_scaffold/CONTRIBUTING.md +0 -0
  30. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/deployments_scaffold/LICENSE +0 -0
  31. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/deployments_scaffold/Makefile +0 -0
  32. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/deployments_scaffold/NOTICE +0 -0
  33. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/deployments_scaffold/README.md +0 -0
  34. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/deployments_scaffold/agentsystems-config.yml +0 -0
  35. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/deployments_scaffold/compose/langfuse/docker-compose.yml +0 -0
  36. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/deployments_scaffold/compose/local/db-backup/Dockerfile +0 -0
  37. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/deployments_scaffold/compose/local/db-backup/entrypoint.sh +0 -0
  38. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/deployments_scaffold/compose/local/docker-compose.yml +0 -0
  39. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/deployments_scaffold/compose/local/init-artifacts-volume.sh +0 -0
  40. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/deployments_scaffold/compose/local/postgres-init/audit.sql +0 -0
  41. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/deployments_scaffold/requirements-dev.txt +0 -0
  42. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/deployments_scaffold/schema/agentsystems-config.schema.json +0 -0
  43. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/progress_tracker.py +0 -0
  44. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk/utils.py +0 -0
  45. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk.egg-info/dependency_links.txt +0 -0
  46. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk.egg-info/entry_points.txt +0 -0
  47. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk.egg-info/requires.txt +0 -0
  48. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/agentsystems_sdk.egg-info/top_level.txt +0 -0
  49. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/setup.cfg +0 -0
  50. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/tests/test_cli.py +0 -0
  51. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/tests/test_cli_artifacts.py +0 -0
  52. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/tests/test_cli_clean.py +0 -0
  53. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/tests/test_cli_down.py +0 -0
  54. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/tests/test_cli_init.py +0 -0
  55. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/tests/test_cli_logs.py +0 -0
  56. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/tests/test_cli_main.py +0 -0
  57. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/tests/test_cli_restart.py +0 -0
  58. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/tests/test_cli_run.py +0 -0
  59. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/tests/test_cli_status.py +0 -0
  60. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/tests/test_cli_up.py +0 -0
  61. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/tests/test_config.py +0 -0
  62. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/tests/test_config_errors.py +0 -0
  63. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/tests/test_init.py +0 -0
  64. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/tests/test_progress.py +0 -0
  65. {agentsystems_sdk-0.5.9 → agentsystems_sdk-0.5.10}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentsystems-sdk
3
- Version: 0.5.9
3
+ Version: 0.5.10
4
4
  Summary: AgentSystems Python SDK and CLI
5
5
  Author-email: AgentSystems <support@agentsystems.ai>
6
6
  License-Expression: Apache-2.0
@@ -101,6 +101,17 @@ All commands are available through `agentsystems` (or the shorter alias `agntsys
101
101
  | `agentsystems run AGENT PAYLOAD` | Invoke an agent with JSON payload and optional file uploads, stream progress, and return results. |
102
102
  | `agentsystems update [PROJECT_DIR]` | Update core platform images (agent-control-plane, agentsystems-ui) to latest versions. Faster than re-running `up` when you only need to update platform components. |
103
103
 
104
+ ### Index Commands
105
+
106
+ | Command | Description |
107
+ |---------|-------------|
108
+ | `agentsystems index login` | Login to AgentSystems Index - opens browser for authentication and stores API key locally. |
109
+ | `agentsystems index logout` | Logout from AgentSystems Index - removes stored API key from local machine. |
110
+ | `agentsystems index list` | List all your published agents on the index. |
111
+ | `agentsystems index publish [PATH]` | Publish agent to the index. Use `--listed` for public agents. Agents are unlisted (private) by default. |
112
+ | `agentsystems index delete DEVELOPER/AGENT` | Permanently remove an agent from the index. |
113
+ | `agentsystems index allow-listed --enable\|--disable` | Enable or disable listed (public) agents. When disabling, use `--preserve` to keep existing agents or `--cascade` to unlist all. |
114
+
104
115
  ### `up` options
105
116
 
106
117
  ```
@@ -83,6 +83,17 @@ All commands are available through `agentsystems` (or the shorter alias `agntsys
83
83
  | `agentsystems run AGENT PAYLOAD` | Invoke an agent with JSON payload and optional file uploads, stream progress, and return results. |
84
84
  | `agentsystems update [PROJECT_DIR]` | Update core platform images (agent-control-plane, agentsystems-ui) to latest versions. Faster than re-running `up` when you only need to update platform components. |
85
85
 
86
+ ### Index Commands
87
+
88
+ | Command | Description |
89
+ |---------|-------------|
90
+ | `agentsystems index login` | Login to AgentSystems Index - opens browser for authentication and stores API key locally. |
91
+ | `agentsystems index logout` | Logout from AgentSystems Index - removes stored API key from local machine. |
92
+ | `agentsystems index list` | List all your published agents on the index. |
93
+ | `agentsystems index publish [PATH]` | Publish agent to the index. Use `--listed` for public agents. Agents are unlisted (private) by default. |
94
+ | `agentsystems index delete DEVELOPER/AGENT` | Permanently remove an agent from the index. |
95
+ | `agentsystems index allow-listed --enable\|--disable` | Enable or disable listed (public) agents. When disabling, use `--preserve` to keep existing agents or `--cascade` to unlist all. |
96
+
86
97
  ### `up` options
87
98
 
88
99
  ```
@@ -26,7 +26,7 @@ from agentsystems_sdk.commands import (
26
26
  update_command,
27
27
  version_command,
28
28
  versions_command,
29
- hub_commands,
29
+ index_commands,
30
30
  )
31
31
 
32
32
  # Load .env before Typer parses env-var options
@@ -93,8 +93,8 @@ app.command(name="update")(update_command)
93
93
  app.command(name="version")(version_command)
94
94
  app.command(name="versions")(versions_command)
95
95
 
96
- # Register hub sub-commands
97
- app.add_typer(hub_commands)
96
+ # Register index sub-commands
97
+ app.add_typer(index_commands)
98
98
 
99
99
 
100
100
  if __name__ == "__main__":
@@ -11,7 +11,7 @@ from .artifacts import artifacts_path_command
11
11
  from .clean import clean_command
12
12
  from .update import update_command
13
13
  from .version import version_command, versions_command
14
- from .hub import hub_commands
14
+ from .index import index_commands
15
15
 
16
16
  __all__ = [
17
17
  "init_command",
@@ -26,5 +26,5 @@ __all__ = [
26
26
  "update_command",
27
27
  "version_command",
28
28
  "versions_command",
29
- "hub_commands",
29
+ "index_commands",
30
30
  ]
@@ -1,4 +1,4 @@
1
- """Hub commands for publishing and managing agents in the AgentSystems Hub."""
1
+ """Index commands for publishing and managing agents in the AgentSystems Index."""
2
2
 
3
3
  from __future__ import annotations
4
4
 
@@ -14,77 +14,80 @@ from rich.table import Table
14
14
 
15
15
  console = Console()
16
16
 
17
- # Create hub sub-app
18
- hub_commands = typer.Typer(
19
- name="hub",
20
- help="Publish and manage agents in the AgentSystems Hub",
17
+ # Create index sub-app
18
+ index_commands = typer.Typer(
19
+ name="index",
20
+ help="Publish and manage agents in the AgentSystems Index",
21
21
  no_args_is_help=True,
22
22
  )
23
23
 
24
24
  # Config file for storing API key
25
25
  CONFIG_DIR = pathlib.Path.home() / ".agentsystems"
26
- HUB_CONFIG_FILE = CONFIG_DIR / "hub-config.yml"
27
- DEFAULT_HUB_URL = "https://hub-api.agentsystems.ai"
26
+ INDEX_CONFIG_FILE = CONFIG_DIR / "index-config.yml"
27
+ DEFAULT_INDEX_URL = "https://index-api.agentsystems.ai"
28
28
 
29
29
 
30
- def get_hub_config() -> dict:
31
- """Load hub configuration from file."""
32
- if not HUB_CONFIG_FILE.exists():
30
+ def get_index_config() -> dict:
31
+ """Load index configuration from file."""
32
+ if not INDEX_CONFIG_FILE.exists():
33
33
  return {}
34
- with HUB_CONFIG_FILE.open("r") as f:
34
+ with INDEX_CONFIG_FILE.open("r") as f:
35
35
  return yaml.safe_load(f) or {}
36
36
 
37
37
 
38
- def save_hub_config(config: dict) -> None:
39
- """Save hub configuration to file."""
38
+ def save_index_config(config: dict) -> None:
39
+ """Save index configuration to file."""
40
40
  CONFIG_DIR.mkdir(parents=True, exist_ok=True)
41
- with HUB_CONFIG_FILE.open("w") as f:
41
+ with INDEX_CONFIG_FILE.open("w") as f:
42
42
  yaml.safe_dump(config, f)
43
43
 
44
44
 
45
45
  def get_api_key() -> Optional[str]:
46
46
  """Get API key from config or environment."""
47
47
  # Check environment first
48
- api_key = os.getenv("AGENTSYSTEMS_HUB_API_KEY")
48
+ api_key = os.getenv("AGENTSYSTEMS_INDEX_API_KEY")
49
49
  if api_key:
50
50
  return api_key
51
51
 
52
52
  # Check config file
53
- config = get_hub_config()
53
+ config = get_index_config()
54
54
  return config.get("api_key")
55
55
 
56
56
 
57
- def get_hub_url() -> str:
58
- """Get hub URL from config or environment."""
57
+ def get_index_url() -> str:
58
+ """Get index URL from config or environment."""
59
59
  # Check environment first
60
- hub_url = os.getenv("AGENTSYSTEMS_HUB_URL")
61
- if hub_url:
62
- return hub_url
60
+ index_url = os.getenv("AGENTSYSTEMS_INDEX_URL")
61
+ if index_url:
62
+ return index_url
63
63
 
64
64
  # Check config file
65
- config = get_hub_config()
66
- return config.get("hub_url", DEFAULT_HUB_URL)
65
+ config = get_index_config()
66
+ return config.get("index_url", DEFAULT_INDEX_URL)
67
67
 
68
68
 
69
69
  def get_developer_name() -> Optional[str]:
70
70
  """Get cached developer name from config."""
71
- config = get_hub_config()
71
+ config = get_index_config()
72
72
  return config.get("developer_name")
73
73
 
74
74
 
75
- @hub_commands.command(name="login")
75
+ @index_commands.command(name="login")
76
76
  def login_command(
77
77
  api_key: str = typer.Option(
78
- ..., prompt="Hub API key", hide_input=True, help="Your AgentSystems Hub API key"
78
+ ...,
79
+ prompt="Index API key",
80
+ hide_input=True,
81
+ help="Your AgentSystems Index API key",
79
82
  ),
80
- hub_url: str = typer.Option(DEFAULT_HUB_URL, help="Hub API URL"),
83
+ index_url: str = typer.Option(DEFAULT_INDEX_URL, help="Index API URL"),
81
84
  ) -> None:
82
- """Store your AgentSystems Hub API key for publishing agents."""
85
+ """Store your AgentSystems Index API key for publishing agents."""
83
86
 
84
87
  # Verify the API key works
85
88
  try:
86
89
  response = requests.get(
87
- f"{hub_url}/auth/verify",
90
+ f"{index_url}/auth/verify",
88
91
  headers={"Authorization": f"Bearer {api_key}"},
89
92
  timeout=10.0,
90
93
  )
@@ -97,16 +100,16 @@ def login_command(
97
100
  console.print(f"[green]✓[/green] Developer name: {data.get('developer_name')}")
98
101
 
99
102
  # Save to config
100
- config = get_hub_config()
103
+ config = get_index_config()
101
104
  config["api_key"] = api_key
102
- config["hub_url"] = hub_url
105
+ config["index_url"] = index_url
103
106
  config["user_uid"] = data.get("user_uid")
104
107
  config["developer_name"] = data.get("developer_name")
105
108
  config["email"] = data.get("email")
106
109
  config["api_key_label"] = data.get("api_key_label")
107
- save_hub_config(config)
110
+ save_index_config(config)
108
111
 
109
- console.print(f"\n[green]✓[/green] API key saved to {HUB_CONFIG_FILE}")
112
+ console.print(f"\n[green]✓[/green] API key saved to {INDEX_CONFIG_FILE}")
110
113
 
111
114
  except requests.HTTPError as e:
112
115
  if e.response.status_code == 401:
@@ -119,35 +122,37 @@ def login_command(
119
122
  raise typer.Exit(1)
120
123
 
121
124
 
122
- @hub_commands.command(name="logout")
125
+ @index_commands.command(name="logout")
123
126
  def logout_command() -> None:
124
127
  """Remove stored API key and credentials."""
125
- if not HUB_CONFIG_FILE.exists():
128
+ if not INDEX_CONFIG_FILE.exists():
126
129
  console.print("[yellow]Not logged in.[/yellow]")
127
130
  return
128
131
 
129
132
  try:
130
- HUB_CONFIG_FILE.unlink()
133
+ INDEX_CONFIG_FILE.unlink()
131
134
  console.print("[green]✓[/green] Logged out successfully")
132
- console.print(f"[green]✓[/green] Removed {HUB_CONFIG_FILE}")
135
+ console.print(f"[green]✓[/green] Removed {INDEX_CONFIG_FILE}")
133
136
  except Exception as e:
134
137
  console.print(f"[red]✗[/red] Error removing config: {e}")
135
138
  raise typer.Exit(1)
136
139
 
137
140
 
138
- @hub_commands.command(name="whoami")
141
+ @index_commands.command(name="whoami")
139
142
  def whoami_command() -> None:
140
143
  """Show current logged-in developer identity."""
141
144
  api_key = get_api_key()
142
145
  if not api_key:
143
- console.print("[red]✗[/red] Not logged in. Run 'agentsystems hub login' first.")
146
+ console.print(
147
+ "[red]✗[/red] Not logged in. Run 'agentsystems index login' first."
148
+ )
144
149
  raise typer.Exit(1)
145
150
 
146
- hub_url = get_hub_url()
151
+ index_url = get_index_url()
147
152
 
148
153
  try:
149
154
  response = requests.get(
150
- f"{hub_url}/auth/verify",
155
+ f"{index_url}/auth/verify",
151
156
  headers={"Authorization": f"Bearer {api_key}"},
152
157
  timeout=10.0,
153
158
  )
@@ -159,13 +164,13 @@ def whoami_command() -> None:
159
164
  console.print(f" Email: {data.get('email')}")
160
165
  if data.get("api_key_label"):
161
166
  console.print(f" API Key: {data.get('api_key_label')}")
162
- console.print(f" Hub URL: {hub_url}")
167
+ console.print(f" Index URL: {index_url}")
163
168
  console.print()
164
169
 
165
170
  except requests.HTTPError as e:
166
171
  if e.response.status_code == 401:
167
172
  console.print(
168
- "[red]✗[/red] Invalid or expired API key. Run 'agentsystems hub login' again."
173
+ "[red]✗[/red] Invalid or expired API key. Run 'agentsystems index login' again."
169
174
  )
170
175
  else:
171
176
  console.print(f"[red]✗[/red] HTTP error: {e.response.status_code}")
@@ -175,7 +180,7 @@ def whoami_command() -> None:
175
180
  raise typer.Exit(1)
176
181
 
177
182
 
178
- @hub_commands.command(name="validate")
183
+ @index_commands.command(name="validate")
179
184
  def validate_command() -> None:
180
185
  """Validate agent.yaml without publishing."""
181
186
  # Look for agent.yaml in current directory
@@ -231,10 +236,10 @@ def validate_command() -> None:
231
236
  # Check developer name against authenticated user
232
237
  api_key = get_api_key()
233
238
  if api_key:
234
- hub_url = get_hub_url()
239
+ index_url = get_index_url()
235
240
  try:
236
241
  response = requests.get(
237
- f"{hub_url}/auth/verify",
242
+ f"{index_url}/auth/verify",
238
243
  headers={"Authorization": f"Bearer {api_key}"},
239
244
  timeout=10.0,
240
245
  )
@@ -272,19 +277,21 @@ def validate_command() -> None:
272
277
  console.print("[green]✓[/green] Validation passed")
273
278
 
274
279
 
275
- @hub_commands.command(name="list")
280
+ @index_commands.command(name="list")
276
281
  def list_command() -> None:
277
- """List all your agents in the hub."""
282
+ """List all your agents in the index."""
278
283
  api_key = get_api_key()
279
284
  if not api_key:
280
- console.print("[red]✗[/red] Not logged in. Run 'agentsystems hub login' first.")
285
+ console.print(
286
+ "[red]✗[/red] Not logged in. Run 'agentsystems index login' first."
287
+ )
281
288
  raise typer.Exit(1)
282
289
 
283
- hub_url = get_hub_url()
290
+ index_url = get_index_url()
284
291
 
285
292
  try:
286
293
  response = requests.get(
287
- f"{hub_url}/agents/me",
294
+ f"{index_url}/agents/me",
288
295
  headers={"Authorization": f"Bearer {api_key}"},
289
296
  timeout=10.0,
290
297
  )
@@ -297,7 +304,7 @@ def list_command() -> None:
297
304
  if not agents:
298
305
  console.print("\n[yellow]No agents found.[/yellow]")
299
306
  console.print(
300
- "Publish your first agent with: [cyan]agentsystems hub publish[/cyan]"
307
+ "Publish your first agent with: [cyan]agentsystems index publish[/cyan]"
301
308
  )
302
309
  return
303
310
 
@@ -336,7 +343,7 @@ def list_command() -> None:
336
343
  except requests.HTTPError as e:
337
344
  if e.response.status_code == 401:
338
345
  console.print(
339
- "[red]✗[/red] Invalid or expired API key. Run 'agentsystems hub login' again."
346
+ "[red]✗[/red] Invalid or expired API key. Run 'agentsystems index login' again."
340
347
  )
341
348
  else:
342
349
  console.print(f"[red]✗[/red] HTTP error: {e.response.status_code}")
@@ -346,15 +353,17 @@ def list_command() -> None:
346
353
  raise typer.Exit(1)
347
354
 
348
355
 
349
- @hub_commands.command(name="publish")
356
+ @index_commands.command(name="publish")
350
357
  def publish_command() -> None:
351
- """Publish or update an agent in the hub from agent.yaml."""
358
+ """Publish or update an agent in the index from agent.yaml."""
352
359
  api_key = get_api_key()
353
360
  if not api_key:
354
- console.print("[red]✗[/red] Not logged in. Run 'agentsystems hub login' first.")
361
+ console.print(
362
+ "[red]✗[/red] Not logged in. Run 'agentsystems index login' first."
363
+ )
355
364
  raise typer.Exit(1)
356
365
 
357
- hub_url = get_hub_url()
366
+ index_url = get_index_url()
358
367
 
359
368
  # Look for agent.yaml in current directory
360
369
  agent_yaml_path = pathlib.Path.cwd() / "agent.yaml"
@@ -381,7 +390,7 @@ def publish_command() -> None:
381
390
  # Verify API key and get authenticated developer name (don't trust cached config)
382
391
  try:
383
392
  verify_response = requests.get(
384
- f"{hub_url}/auth/verify",
393
+ f"{index_url}/auth/verify",
385
394
  headers={"Authorization": f"Bearer {api_key}"},
386
395
  timeout=10.0,
387
396
  )
@@ -395,7 +404,7 @@ def publish_command() -> None:
395
404
  except requests.HTTPError as e:
396
405
  if e.response.status_code == 401:
397
406
  console.print(
398
- "[red]✗[/red] Invalid or expired API key. Run 'agentsystems hub login' again."
407
+ "[red]✗[/red] Invalid or expired API key. Run 'agentsystems index login' again."
399
408
  )
400
409
  else:
401
410
  console.print(f"[red]✗[/red] Verification failed: {e}")
@@ -441,7 +450,7 @@ def publish_command() -> None:
441
450
  console.print()
442
451
 
443
452
  # Ask for confirmation
444
- confirm = typer.confirm("Publish this agent to the hub?")
453
+ confirm = typer.confirm("Publish this agent to the index?")
445
454
  if not confirm:
446
455
  console.print("[yellow]Publish cancelled.[/yellow]")
447
456
  raise typer.Exit(0)
@@ -449,7 +458,7 @@ def publish_command() -> None:
449
458
  try:
450
459
  # Try to create first
451
460
  response = requests.post(
452
- f"{hub_url}/agents",
461
+ f"{index_url}/agents",
453
462
  headers={"Authorization": f"Bearer {api_key}"},
454
463
  json=payload,
455
464
  timeout=10.0,
@@ -462,7 +471,7 @@ def publish_command() -> None:
462
471
  # Fetch current agent settings
463
472
  try:
464
473
  current_response = requests.get(
465
- f"{hub_url}/agents/{authenticated_developer}/{name}",
474
+ f"{index_url}/agents/{authenticated_developer}/{name}",
466
475
  headers={"Authorization": f"Bearer {api_key}"},
467
476
  timeout=10.0,
468
477
  )
@@ -494,7 +503,7 @@ def publish_command() -> None:
494
503
 
495
504
  if changes:
496
505
  console.print(
497
- "\n[yellow]Warning: Publishing will overwrite the following hub settings:[/yellow]"
506
+ "\n[yellow]Warning: Publishing will overwrite the following index settings:[/yellow]"
498
507
  )
499
508
  for change in changes:
500
509
  console.print(
@@ -518,7 +527,7 @@ def publish_command() -> None:
518
527
 
519
528
  # Update agent
520
529
  response = requests.put(
521
- f"{hub_url}/agents/{authenticated_developer}/{name}",
530
+ f"{index_url}/agents/{authenticated_developer}/{name}",
522
531
  headers={"Authorization": f"Bearer {api_key}"},
523
532
  json=payload,
524
533
  timeout=10.0,
@@ -543,7 +552,7 @@ def publish_command() -> None:
543
552
  except requests.HTTPError as e:
544
553
  if e.response.status_code == 401:
545
554
  console.print(
546
- "[red]✗[/red] Invalid or expired API key. Run 'agentsystems hub login' again."
555
+ "[red]✗[/red] Invalid or expired API key. Run 'agentsystems index login' again."
547
556
  )
548
557
  else:
549
558
  error_detail = e.response.json().get("detail", str(e))
@@ -554,7 +563,7 @@ def publish_command() -> None:
554
563
  "[red]✗[/red] Error: Listed agents disabled for this developer"
555
564
  )
556
565
  console.print(
557
- "To publish as listed, run: [cyan]agentsystems hub allow-listed --enable[/cyan]"
566
+ "To publish as listed, run: [cyan]agentsystems index allow-listed --enable[/cyan]"
558
567
  )
559
568
  else:
560
569
  console.print(f"[red]✗[/red] Error: {error_detail}")
@@ -564,18 +573,20 @@ def publish_command() -> None:
564
573
  raise typer.Exit(1)
565
574
 
566
575
 
567
- @hub_commands.command(name="delete")
576
+ @index_commands.command(name="delete")
568
577
  def delete_command(
569
578
  name: str = typer.Argument(..., help="Agent name to delete"),
570
579
  force: bool = typer.Option(False, "--force", "-f", help="Skip confirmation"),
571
580
  ) -> None:
572
- """Delete an agent from the hub."""
581
+ """Delete an agent from the index."""
573
582
  api_key = get_api_key()
574
583
  if not api_key:
575
- console.print("[red]✗[/red] Not logged in. Run 'agentsystems hub login' first.")
584
+ console.print(
585
+ "[red]✗[/red] Not logged in. Run 'agentsystems index login' first."
586
+ )
576
587
  raise typer.Exit(1)
577
588
 
578
- hub_url = get_hub_url()
589
+ index_url = get_index_url()
579
590
 
580
591
  if not force:
581
592
  confirm = typer.confirm(f"Are you sure you want to delete '{name}'?")
@@ -588,13 +599,13 @@ def delete_command(
588
599
  developer_name = get_developer_name()
589
600
  if not developer_name:
590
601
  console.print(
591
- "[red]✗[/red] Developer name not found. Run 'agentsystems hub login' again."
602
+ "[red]✗[/red] Developer name not found. Run 'agentsystems index login' again."
592
603
  )
593
604
  raise typer.Exit(1)
594
605
 
595
606
  # Delete agent
596
607
  response = requests.delete(
597
- f"{hub_url}/agents/{developer_name}/{name}",
608
+ f"{index_url}/agents/{developer_name}/{name}",
598
609
  headers={"Authorization": f"Bearer {api_key}"},
599
610
  timeout=10.0,
600
611
  )
@@ -607,7 +618,7 @@ def delete_command(
607
618
  except requests.HTTPError as e:
608
619
  if e.response.status_code == 401:
609
620
  console.print(
610
- "[red]✗[/red] Invalid or expired API key. Run 'agentsystems hub login' again."
621
+ "[red]✗[/red] Invalid or expired API key. Run 'agentsystems index login' again."
611
622
  )
612
623
  elif e.response.status_code == 404:
613
624
  console.print(f"[red]✗[/red] Agent '{name}' not found")
@@ -620,7 +631,7 @@ def delete_command(
620
631
  raise typer.Exit(1)
621
632
 
622
633
 
623
- @hub_commands.command(name="allow-listed")
634
+ @index_commands.command(name="allow-listed")
624
635
  def allow_listed_command(
625
636
  enable: bool = typer.Option(False, "--enable", help="Enable listed agents"),
626
637
  disable: bool = typer.Option(False, "--disable", help="Disable listed agents"),
@@ -634,10 +645,12 @@ def allow_listed_command(
634
645
  """Enable or disable listed agents for your developer account."""
635
646
  api_key = get_api_key()
636
647
  if not api_key:
637
- console.print("[red]✗[/red] Not logged in. Run 'agentsystems hub login' first.")
648
+ console.print(
649
+ "[red]✗[/red] Not logged in. Run 'agentsystems index login' first."
650
+ )
638
651
  raise typer.Exit(1)
639
652
 
640
- hub_url = get_hub_url()
653
+ index_url = get_index_url()
641
654
 
642
655
  # Validate flags
643
656
  if enable and disable:
@@ -665,7 +678,7 @@ def allow_listed_command(
665
678
  try:
666
679
  # Update developer settings
667
680
  response = requests.patch(
668
- f"{hub_url}/developers/me",
681
+ f"{index_url}/developers/me",
669
682
  headers={"Authorization": f"Bearer {api_key}"},
670
683
  json={"allow_listed_agents": enable},
671
684
  timeout=10.0,
@@ -679,7 +692,7 @@ def allow_listed_command(
679
692
  if cascade:
680
693
  # Unlist all existing agents
681
694
  unlist_response = requests.post(
682
- f"{hub_url}/developers/me/unlist-all",
695
+ f"{index_url}/developers/me/unlist-all",
683
696
  headers={"Authorization": f"Bearer {api_key}"},
684
697
  timeout=10.0,
685
698
  )
@@ -697,7 +710,7 @@ def allow_listed_command(
697
710
  except requests.HTTPError as e:
698
711
  if e.response.status_code == 401:
699
712
  console.print(
700
- "[red]✗[/red] Invalid or expired API key. Run 'agentsystems hub login' again."
713
+ "[red]✗[/red] Invalid or expired API key. Run 'agentsystems index login' again."
701
714
  )
702
715
  else:
703
716
  error_detail = e.response.json().get("detail", str(e))
@@ -2,7 +2,7 @@
2
2
 
3
3
  This package relies on the third-party Python packages listed below.
4
4
 
5
- ## agentsystems-sdk 0.5.9
5
+ ## agentsystems-sdk 0.5.10
6
6
  - License: UNKNOWN
7
7
  - URL: UNKNOWN
8
8
  - Author: AgentSystems <support@agentsystems.ai>
@@ -1594,8 +1594,8 @@ THE SOFTWARE.
1594
1594
  ```
1595
1595
  </details>
1596
1596
 
1597
- ## idna 3.10
1598
- - License: BSD License
1597
+ ## idna 3.11
1598
+ - License: UNKNOWN
1599
1599
  - URL: https://github.com/kjd/idna
1600
1600
  - Author: Kim Davies <kim+pypi@gumleaf.org>
1601
1601
 
@@ -1604,7 +1604,7 @@ THE SOFTWARE.
1604
1604
  ```
1605
1605
  BSD 3-Clause License
1606
1606
 
1607
- Copyright (c) 2013-2024, Kim Davies and contributors.
1607
+ Copyright (c) 2013-2025, Kim Davies and contributors.
1608
1608
  All rights reserved.
1609
1609
 
1610
1610
  Redistribution and use in source and binary forms, with or without
@@ -29,7 +29,7 @@
29
29
  "LicenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n",
30
30
  "Name": "agentsystems-sdk",
31
31
  "URL": "UNKNOWN",
32
- "Version": "0.5.9"
32
+ "Version": "0.5.10"
33
33
  },
34
34
  {
35
35
  "Author": "\"Jason R. Coombs\" <jaraco@jaraco.com>",
@@ -153,11 +153,11 @@
153
153
  },
154
154
  {
155
155
  "Author": "Kim Davies <kim+pypi@gumleaf.org>",
156
- "License": "BSD License",
157
- "LicenseText": "BSD 3-Clause License\n\nCopyright (c) 2013-2024, Kim Davies and contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n",
156
+ "License": "UNKNOWN",
157
+ "LicenseText": "BSD 3-Clause License\n\nCopyright (c) 2013-2025, Kim Davies and contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n",
158
158
  "Name": "idna",
159
159
  "URL": "https://github.com/kjd/idna",
160
- "Version": "3.10"
160
+ "Version": "3.11"
161
161
  },
162
162
  {
163
163
  "Author": "\"Jason R. Coombs\" <jaraco@jaraco.com>",
@@ -13,7 +13,7 @@ docutils==0.22.2
13
13
  filelock==3.20.0
14
14
  id==1.5.0
15
15
  identify==2.6.15
16
- idna==3.10
16
+ idna==3.11
17
17
  importlib_metadata==8.7.0
18
18
  iniconfig==2.1.0
19
19
  jaraco.classes==3.4.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentsystems-sdk
3
- Version: 0.5.9
3
+ Version: 0.5.10
4
4
  Summary: AgentSystems Python SDK and CLI
5
5
  Author-email: AgentSystems <support@agentsystems.ai>
6
6
  License-Expression: Apache-2.0
@@ -101,6 +101,17 @@ All commands are available through `agentsystems` (or the shorter alias `agntsys
101
101
  | `agentsystems run AGENT PAYLOAD` | Invoke an agent with JSON payload and optional file uploads, stream progress, and return results. |
102
102
  | `agentsystems update [PROJECT_DIR]` | Update core platform images (agent-control-plane, agentsystems-ui) to latest versions. Faster than re-running `up` when you only need to update platform components. |
103
103
 
104
+ ### Index Commands
105
+
106
+ | Command | Description |
107
+ |---------|-------------|
108
+ | `agentsystems index login` | Login to AgentSystems Index - opens browser for authentication and stores API key locally. |
109
+ | `agentsystems index logout` | Logout from AgentSystems Index - removes stored API key from local machine. |
110
+ | `agentsystems index list` | List all your published agents on the index. |
111
+ | `agentsystems index publish [PATH]` | Publish agent to the index. Use `--listed` for public agents. Agents are unlisted (private) by default. |
112
+ | `agentsystems index delete DEVELOPER/AGENT` | Permanently remove an agent from the index. |
113
+ | `agentsystems index allow-listed --enable\|--disable` | Enable or disable listed (public) agents. When disabling, use `--preserve` to keep existing agents or `--cascade` to unlist all. |
114
+
104
115
  ### `up` options
105
116
 
106
117
  ```
@@ -18,7 +18,7 @@ agentsystems_sdk/commands/__init__.py
18
18
  agentsystems_sdk/commands/artifacts.py
19
19
  agentsystems_sdk/commands/clean.py
20
20
  agentsystems_sdk/commands/down.py
21
- agentsystems_sdk/commands/hub.py
21
+ agentsystems_sdk/commands/index.py
22
22
  agentsystems_sdk/commands/init.py
23
23
  agentsystems_sdk/commands/logs.py
24
24
  agentsystems_sdk/commands/restart.py
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "agentsystems-sdk"
3
- version = "0.5.9"
3
+ version = "0.5.10"
4
4
  description = "AgentSystems Python SDK and CLI"
5
5
  readme = "README.md"
6
6
  authors = [ { name = "AgentSystems", email = "support@agentsystems.ai" } ]