amina-cli 0.2.3__tar.gz → 0.2.4__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.
- {amina_cli-0.2.3 → amina_cli-0.2.4}/PKG-INFO +1 -1
- {amina_cli-0.2.3 → amina_cli-0.2.4}/pyproject.toml +1 -1
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/__init__.py +1 -1
- amina_cli-0.2.4/src/amina_cli/commands/__init__.py +9 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/main.py +5 -6
- amina_cli-0.2.3/src/amina_cli/commands/__init__.py +0 -9
- amina_cli-0.2.3/src/amina_cli/commands/init_cmd.py +0 -96
- {amina_cli-0.2.3 → amina_cli-0.2.4}/.gitignore +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/LICENSE +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/README.md +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/auth.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/client.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/auth_cmd.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/jobs_cmd.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/run_cmd.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/__init__.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/analysis/__init__.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/analysis/hydrophobicity.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/analysis/mmseqs2_cluster.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/analysis/rmsd.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/analysis/sasa.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/analysis/simple_rmsd.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/analysis/surface_charge.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/analysis/usalign.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/design/__init__.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/design/esm_if1.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/design/protein_mc.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/design/proteinmpnn.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/design/rfdiffusion.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/display.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/folding/__init__.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/folding/boltz2.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/folding/esmfold.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/folding/openfold3.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/folding/protenix.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/interactions/__init__.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/interactions/autodock_vina.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/interactions/diffdock.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/interactions/dockq.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/interactions/emngly.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/interactions/glycosylation_ensemble.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/interactions/interface_identifier.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/interactions/isoglyp.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/interactions/lmngly.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/interactions/p2rank.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/interactions/pesto.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/properties/__init__.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/properties/aminosol.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/properties/esm1v.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/properties/esm2_embedding.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/__init__.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/activesite_verifier.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/chain_select.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/distance_calculator.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/maxit_convert.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/mol_size_calculator.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/obabel_convert.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/pdb_bfactor_overwrite.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/pdb_cleaner.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/pdb_quality_assessment.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/pdb_to_fasta.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/protein_relaxer.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools_cmd.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/registry.py +0 -0
- {amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/storage.py +0 -0
|
@@ -9,7 +9,7 @@ import typer
|
|
|
9
9
|
from rich.console import Console
|
|
10
10
|
|
|
11
11
|
from amina_cli import __version__
|
|
12
|
-
from amina_cli.commands import auth_cmd,
|
|
12
|
+
from amina_cli.commands import auth_cmd, jobs_cmd, run_cmd, tools_cmd
|
|
13
13
|
|
|
14
14
|
# Create the main application
|
|
15
15
|
app = typer.Typer(
|
|
@@ -26,10 +26,10 @@ app = typer.Typer(
|
|
|
26
26
|
|
|
27
27
|
[bold]Get an API key:[/bold] https://aminoanalytica.com
|
|
28
28
|
|
|
29
|
-
[bold]
|
|
30
|
-
|
|
29
|
+
[bold]AI agent integration:[/bold]
|
|
30
|
+
npx skills add AminoAnalytica/amina-skills --all
|
|
31
31
|
|
|
32
|
-
Then run [bold]/amina-init[/bold] in
|
|
32
|
+
Then run [bold]/amina-init[/bold] in your AI agent to get started.""",
|
|
33
33
|
no_args_is_help=True,
|
|
34
34
|
rich_markup_mode="rich",
|
|
35
35
|
)
|
|
@@ -39,7 +39,6 @@ console = Console()
|
|
|
39
39
|
|
|
40
40
|
# Register subcommands
|
|
41
41
|
app.add_typer(auth_cmd.app, name="auth", help="Manage API key authentication")
|
|
42
|
-
app.add_typer(init_cmd.app, name="init", help="Initialize project resources")
|
|
43
42
|
app.add_typer(jobs_cmd.app, name="jobs", help="Manage background jobs")
|
|
44
43
|
app.add_typer(run_cmd.app, name="run", help="Run computational biology tools")
|
|
45
44
|
app.add_typer(tools_cmd.app, name="tools", help="List tools and view their parameters")
|
|
@@ -67,7 +66,7 @@ def main(
|
|
|
67
66
|
|
|
68
67
|
Run computational biology tools from the command line with your AminoAnalytica API key.
|
|
69
68
|
|
|
70
|
-
|
|
69
|
+
AI agents: Run 'npx skills add AminoAnalytica/amina-skills --all' then '/amina-init' to get started.
|
|
71
70
|
"""
|
|
72
71
|
if version:
|
|
73
72
|
console.print(f"amina-cli version {__version__}")
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
"""Initialize Claude Code skills for Amina."""
|
|
2
|
-
|
|
3
|
-
import io
|
|
4
|
-
import zipfile
|
|
5
|
-
from pathlib import Path
|
|
6
|
-
|
|
7
|
-
import httpx
|
|
8
|
-
import typer
|
|
9
|
-
from rich.console import Console
|
|
10
|
-
from rich.panel import Panel
|
|
11
|
-
|
|
12
|
-
app = typer.Typer(no_args_is_help=True)
|
|
13
|
-
console = Console()
|
|
14
|
-
|
|
15
|
-
SKILLS_REPO = "AminoAnalytica/amina-skills"
|
|
16
|
-
SKILLS_BRANCH = "main"
|
|
17
|
-
GITHUB_ZIPBALL_URL = f"https://github.com/{SKILLS_REPO}/archive/refs/heads/{SKILLS_BRANCH}.zip"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
@app.command("claude-skills")
|
|
21
|
-
def init_claude_skills():
|
|
22
|
-
"""Download and install Claude Code skills for Amina.
|
|
23
|
-
|
|
24
|
-
Installs skills to .claude/skills/ in the current directory,
|
|
25
|
-
enabling Claude Code to assist with protein engineering tasks.
|
|
26
|
-
|
|
27
|
-
Always updates to the latest skills from the repository.
|
|
28
|
-
"""
|
|
29
|
-
skills_dir = Path.cwd() / ".claude" / "skills"
|
|
30
|
-
|
|
31
|
-
console.print("[bold]Downloading Amina skills for Claude Code...[/bold]\n")
|
|
32
|
-
|
|
33
|
-
try:
|
|
34
|
-
# Download zipball from GitHub
|
|
35
|
-
with console.status("[dim]Fetching from GitHub...[/dim]"):
|
|
36
|
-
response = httpx.get(GITHUB_ZIPBALL_URL, follow_redirects=True, timeout=60)
|
|
37
|
-
response.raise_for_status()
|
|
38
|
-
|
|
39
|
-
# Extract skills
|
|
40
|
-
with console.status("[dim]Extracting skills...[/dim]"):
|
|
41
|
-
skills_dir.mkdir(parents=True, exist_ok=True)
|
|
42
|
-
|
|
43
|
-
with zipfile.ZipFile(io.BytesIO(response.content)) as zf:
|
|
44
|
-
# Find the claude-skills/ directory in the archive
|
|
45
|
-
# Archive structure: amina-skills-main/claude-skills/...
|
|
46
|
-
prefix = None
|
|
47
|
-
for name in zf.namelist():
|
|
48
|
-
if "/claude-skills/" in name:
|
|
49
|
-
prefix = name.split("/claude-skills/")[0] + "/claude-skills/"
|
|
50
|
-
break
|
|
51
|
-
|
|
52
|
-
if not prefix:
|
|
53
|
-
console.print("[red]Error: Could not find skills in archive[/red]")
|
|
54
|
-
raise typer.Exit(1)
|
|
55
|
-
|
|
56
|
-
# Extract each skill
|
|
57
|
-
skill_names = set()
|
|
58
|
-
for name in zf.namelist():
|
|
59
|
-
if name.startswith(prefix) and name != prefix:
|
|
60
|
-
# Get relative path within skills/
|
|
61
|
-
rel_path = name[len(prefix) :]
|
|
62
|
-
if rel_path:
|
|
63
|
-
skill_name = rel_path.split("/")[0]
|
|
64
|
-
skill_names.add(skill_name)
|
|
65
|
-
|
|
66
|
-
# Extract file
|
|
67
|
-
target_path = skills_dir / rel_path
|
|
68
|
-
if name.endswith("/"):
|
|
69
|
-
target_path.mkdir(parents=True, exist_ok=True)
|
|
70
|
-
else:
|
|
71
|
-
target_path.parent.mkdir(parents=True, exist_ok=True)
|
|
72
|
-
target_path.write_bytes(zf.read(name))
|
|
73
|
-
|
|
74
|
-
# Print success
|
|
75
|
-
console.print("[green]Installed skills:[/green]")
|
|
76
|
-
for skill in sorted(skill_names):
|
|
77
|
-
if skill: # Skip empty strings
|
|
78
|
-
console.print(f" [dim]•[/dim] {skill}")
|
|
79
|
-
|
|
80
|
-
console.print(
|
|
81
|
-
Panel(
|
|
82
|
-
"Run [bold]claude[/bold] from this directory to use Amina skills.",
|
|
83
|
-
title="Done",
|
|
84
|
-
border_style="green",
|
|
85
|
-
)
|
|
86
|
-
)
|
|
87
|
-
|
|
88
|
-
except httpx.HTTPError as e:
|
|
89
|
-
console.print(
|
|
90
|
-
Panel(
|
|
91
|
-
f"[red]Failed to download skills:[/red] {e}\n\nCheck your internet connection and try again.",
|
|
92
|
-
title="Error",
|
|
93
|
-
border_style="red",
|
|
94
|
-
)
|
|
95
|
-
)
|
|
96
|
-
raise typer.Exit(1)
|
|
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
|
|
File without changes
|
{amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/analysis/mmseqs2_cluster.py
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/interactions/autodock_vina.py
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/properties/esm2_embedding.py
RENAMED
|
File without changes
|
|
File without changes
|
{amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/activesite_verifier.py
RENAMED
|
File without changes
|
|
File without changes
|
{amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/distance_calculator.py
RENAMED
|
File without changes
|
|
File without changes
|
{amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/mol_size_calculator.py
RENAMED
|
File without changes
|
{amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/obabel_convert.py
RENAMED
|
File without changes
|
{amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/pdb_bfactor_overwrite.py
RENAMED
|
File without changes
|
|
File without changes
|
{amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/pdb_quality_assessment.py
RENAMED
|
File without changes
|
|
File without changes
|
{amina_cli-0.2.3 → amina_cli-0.2.4}/src/amina_cli/commands/tools/utilities/protein_relaxer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|