proxima-cli 1.2.1__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 (25) hide show
  1. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/PKG-INFO +1 -1
  2. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/pyproject.toml +1 -1
  3. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/__init__.py +1 -1
  4. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/cli.py +2 -1
  5. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/commands/catalog.py +11 -17
  6. proxima_cli-1.2.2/src/prox/commands/skill.py +76 -0
  7. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/.github/workflows/publish.yml +0 -0
  8. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/.gitignore +0 -0
  9. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/LICENSE +0 -0
  10. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/README.md +0 -0
  11. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/api.py +0 -0
  12. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/auth.py +0 -0
  13. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/commands/__init__.py +0 -0
  14. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/commands/agent.py +0 -0
  15. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/commands/governance.py +0 -0
  16. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/commands/knowledge.py +0 -0
  17. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/commands/model.py +0 -0
  18. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/commands/ontology.py +0 -0
  19. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/commands/platform.py +0 -0
  20. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/commands/routine.py +0 -0
  21. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/commands/secret.py +0 -0
  22. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/commands/team.py +0 -0
  23. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/commands/toolbox.py +0 -0
  24. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/commands/workflow.py +0 -0
  25. {proxima_cli-1.2.1 → proxima_cli-1.2.2}/src/prox/config.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: proxima-cli
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: Proxima AIP CLI — manage your Proxima Intelligence platform
5
5
  Project-URL: Homepage, https://proximaintel.com/aip
6
6
  Project-URL: Documentation, https://docs.proximaintel.com/cli
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "proxima-cli"
7
- version = "1.2.1"
7
+ version = "1.2.2"
8
8
  description = "Proxima AIP CLI — manage your Proxima Intelligence platform"
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -1,3 +1,3 @@
1
1
  """Proxima Intelligence Platform CLI."""
2
2
 
3
- __version__ = "1.2.1"
3
+ __version__ = "1.2.2"
@@ -4,7 +4,7 @@ import typer
4
4
  from rich.console import Console
5
5
 
6
6
  from . import __version__, auth, config
7
- from .commands import catalog, agent, toolbox, knowledge, secret, model, routine, workflow, governance, platform, ontology, team
7
+ from .commands import catalog, agent, toolbox, knowledge, secret, model, routine, workflow, governance, platform, ontology, team, skill
8
8
 
9
9
  def version_callback(value: bool):
10
10
  if value:
@@ -28,6 +28,7 @@ console = Console()
28
28
  app.add_typer(catalog.app, name="catalog")
29
29
  app.add_typer(agent.app, name="agent")
30
30
  app.add_typer(toolbox.app, name="toolbox")
31
+ app.add_typer(skill.app, name="skill")
31
32
  app.add_typer(knowledge.app, name="knowledge")
32
33
  app.add_typer(ontology.app, name="ontology")
33
34
  app.add_typer(secret.app, name="secret")
@@ -248,6 +248,7 @@ def deploy_from_catalog(
248
248
  version: str = typer.Option("latest", "--version", "-v", help="Version to deploy"),
249
249
  domain: str = typer.Option("", "--domain", "-d", help="Domain assignment (skips prompt)"),
250
250
  model: str = typer.Option("", "--model", "-m", help="LLM model (skips prompt)"),
251
+ data_source: str = typer.Option("", "--data-source", help="synthetic or configure-later (skips prompt)"),
251
252
  yes: bool = typer.Option(False, "--yes", "-y", help="Skip confirmation prompt"),
252
253
  ):
253
254
  """Deploy an agent from catalog to the platform.
@@ -275,7 +276,6 @@ def deploy_from_catalog(
275
276
 
276
277
  # --- Domain selection ---
277
278
  if not domain:
278
- # Fetch existing domains from platform
279
279
  existing_domains = []
280
280
  try:
281
281
  domains_res = gateway_get("/build/domains")
@@ -285,15 +285,12 @@ def deploy_from_catalog(
285
285
 
286
286
  if existing_domains:
287
287
  console.print(f" Existing domains: {', '.join(existing_domains)}")
288
+ console.print(f" [dim](New domains will be created automatically)[/dim]")
288
289
 
289
- domain = typer.prompt(
290
- f" Domain",
291
- default=suggested_domain,
292
- )
290
+ domain = typer.prompt(f" Domain", default=suggested_domain)
293
291
 
294
292
  # --- Model selection ---
295
293
  if not model:
296
- # Fetch available models from platform
297
294
  available_models = []
298
295
  try:
299
296
  models_res = gateway_get("/build/models")
@@ -304,17 +301,14 @@ def deploy_from_catalog(
304
301
  if available_models:
305
302
  console.print(f" Available models: {', '.join(available_models)}")
306
303
 
307
- model = typer.prompt(
308
- f" Model",
309
- default=agent_meta.get("model_requirement", "gpt-4.1-mini"),
310
- )
304
+ model = typer.prompt(f" Model", default=agent_meta.get("model_requirement", "gpt-4.1-mini"))
311
305
 
312
306
  # --- Data source mode ---
313
- data_source_mode = typer.prompt(
314
- f" Data sources",
315
- default="synthetic",
316
- type=typer.Choice(["synthetic", "configure-later"], case_sensitive=False),
317
- )
307
+ if not data_source:
308
+ data_source = typer.prompt(
309
+ f" Data sources (synthetic / configure-later)",
310
+ default="synthetic",
311
+ )
318
312
 
319
313
  # --- Confirmation ---
320
314
  console.print(f"\n [bold]Deployment summary:[/bold]")
@@ -322,7 +316,7 @@ def deploy_from_catalog(
322
316
  console.print(f" Version: {resolved_version}")
323
317
  console.print(f" Domain: {domain}")
324
318
  console.print(f" Model: {model}")
325
- console.print(f" Data: {data_source_mode}")
319
+ console.print(f" Data: {data_source}")
326
320
  console.print()
327
321
 
328
322
  if not yes:
@@ -338,7 +332,7 @@ def deploy_from_catalog(
338
332
  "version": version,
339
333
  "domain": domain,
340
334
  "model": model,
341
- "data_source_mode": data_source_mode,
335
+ "data_source_mode": data_source,
342
336
  })
343
337
  deployment_id = result.get("deployment_id")
344
338
  resolved_version = result.get("version", resolved_version)
@@ -0,0 +1,76 @@
1
+ """prox skill — manage skills (prompt templates)."""
2
+
3
+ import typer
4
+ from rich.console import Console
5
+ from rich.table import Table
6
+
7
+ from ..api import gateway_get, gateway_delete, APIError
8
+
9
+ app = typer.Typer(help="Manage skills.")
10
+ console = Console()
11
+
12
+
13
+ @app.command("list")
14
+ def list_skills():
15
+ """List all skills on the platform."""
16
+ try:
17
+ data = gateway_get("/build/skills")
18
+ except APIError as e:
19
+ console.print(f"[red]Error:[/red] {e.detail}")
20
+ raise typer.Exit(1)
21
+
22
+ skills = data.get("skills", [])
23
+ if not skills:
24
+ console.print("[dim]No skills registered.[/dim]")
25
+ return
26
+
27
+ table = Table(title=f"Skills ({len(skills)})")
28
+ table.add_column("ID", style="bold")
29
+ table.add_column("Version", justify="right")
30
+ table.add_column("Description")
31
+
32
+ for s in skills:
33
+ table.add_row(
34
+ s.get("id", s.get("name", "")),
35
+ str(s.get("version", "")),
36
+ s.get("description", "")[:60],
37
+ )
38
+
39
+ console.print(table)
40
+
41
+
42
+ @app.command("delete")
43
+ def delete_skill(
44
+ skill_id: str = typer.Argument(help="Skill ID to delete"),
45
+ confirm: bool = typer.Option(False, "--yes", "-y"),
46
+ ):
47
+ """Delete a skill."""
48
+ if not confirm:
49
+ typer.confirm(f"Delete skill '{skill_id}'?", abort=True)
50
+ try:
51
+ gateway_delete(f"/build/skills/{skill_id}")
52
+ console.print(f"[green]✓[/green] Deleted: {skill_id}")
53
+ except APIError as e:
54
+ console.print(f"[red]Error:[/red] {e.detail}")
55
+ raise typer.Exit(1)
56
+
57
+
58
+ @app.command("delete-all")
59
+ def delete_all_skills(
60
+ confirm: bool = typer.Option(False, "--yes", "-y"),
61
+ ):
62
+ """Delete all skills from the platform."""
63
+ if not confirm:
64
+ typer.confirm("Delete ALL skills?", abort=True)
65
+ try:
66
+ data = gateway_get("/build/skills")
67
+ skills = data.get("skills", [])
68
+ for s in skills:
69
+ sid = s.get("id", s.get("name", ""))
70
+ if sid:
71
+ gateway_delete(f"/build/skills/{sid}")
72
+ console.print(f" [green]✓[/green] {sid}")
73
+ console.print(f"\n[green]✓[/green] Deleted {len(skills)} skills")
74
+ except APIError as e:
75
+ console.print(f"[red]Error:[/red] {e.detail}")
76
+ raise typer.Exit(1)
File without changes
File without changes
File without changes
File without changes