Skip to content

Commit 26a0bad

Browse files
committed
Version 0.1.0
1 parent 4be4572 commit 26a0bad

11 files changed

Lines changed: 67 additions & 36 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ See **[Testing Guide](docs/TESTING.md)** for detailed information.
401401

402402
```bash
403403
# Build image
404-
docker build -t perpendicularity:0.1.0 .
404+
docker buildx build --platform linux/amd64 -t perpendicularity:0.1.0 .
405405

406406
# Run with custom config
407407
docker run -d \
@@ -430,7 +430,7 @@ git clone https://github.com/t-neumann/perpendicularity.git
430430
cd perpendicularity
431431

432432
# 4. Build Docker image
433-
docker build -t perpendicularity:0.1.0 .
433+
docker buildx build --platform linux/amd64 -t perpendicularity:0.1.0 .
434434

435435
# 5. Run with host network (allows access to Ollama at localhost:11434)
436436
docker run -d --name perpendicularity --network host \

cli/main.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,7 @@ async def _list_tools(config_path, plain):
512512
# LIST-MODELS COMMAND
513513
# ============================================================================
514514

515+
515516
@cli.command()
516517
@click.option(
517518
"--config",
@@ -541,10 +542,12 @@ def list_models(config, plain):
541542
formatter.print_error(str(e))
542543
sys.exit(1)
543544

545+
544546
# ============================================================================
545547
# LIST-PROMPTS COMMAND
546548
# ============================================================================
547549

550+
548551
@cli.command()
549552
@click.option(
550553
"--config",
@@ -562,20 +565,21 @@ def list_prompts(config, plain):
562565
try:
563566
agent_config = AgentConfig(config)
564567
default_prompt = agent_config.config.get("agent", {}).get("system_prompt", "default")
565-
568+
566569
# Get all prompts from prompts.yaml
567570
prompts = agent_config.prompts
568-
571+
569572
if not prompts:
570573
formatter.print_error("No prompts found in prompts.yaml")
571574
return
572-
575+
573576
formatter.print_prompt_list(prompts, default_prompt)
574577

575578
except Exception as e:
576579
formatter.print_error(str(e))
577580
sys.exit(1)
578581

582+
579583
# ============================================================================
580584
# INFO COMMAND
581585
# ============================================================================

cli/output.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -189,43 +189,43 @@ def print_model_list(self, models: dict, default_model: str):
189189

190190
def print_prompt_list(self, prompts: dict, default_prompt: str):
191191
"""Print list of available prompts."""
192-
192+
193193
def extract_description(prompt_text: str, max_length: int = 60) -> str:
194194
"""Extract first line or sentence from prompt as description."""
195195
if not prompt_text:
196196
return "No description"
197-
197+
198198
# Get first line or first sentence
199-
lines = prompt_text.strip().split('\n')
199+
lines = prompt_text.strip().split("\n")
200200
first_line = lines[0].strip()
201-
201+
202202
# If first line is too long, take first sentence
203203
if len(first_line) > max_length:
204204
# Try to find first sentence
205-
for sep in ['. ', '! ', '? ']:
205+
for sep in [". ", "! ", "? "]:
206206
if sep in first_line:
207-
first_line = first_line.split(sep)[0] + '.'
207+
first_line = first_line.split(sep)[0] + "."
208208
break
209-
209+
210210
# Truncate if still too long
211211
if len(first_line) > max_length:
212-
first_line = first_line[:max_length-3] + "..."
213-
212+
first_line = first_line[: max_length - 3] + "..."
213+
214214
return first_line
215-
215+
216216
if self.use_rich:
217217
from rich.table import Table
218-
218+
219219
table = Table(title="Available System Prompts")
220220
table.add_column("Prompt Name", style="cyan")
221221
table.add_column("Description", style="white")
222222
table.add_column("Default", style="green")
223-
223+
224224
for name in sorted(prompts.keys()):
225225
desc = extract_description(prompts[name])
226226
default = "✓" if name == default_prompt else ""
227227
table.add_row(name, desc, default)
228-
228+
229229
self.console.print()
230230
self.console.print(table)
231231
self.console.print()

docs/CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Changelog
2+
3+
All notable changes to Perpendicularity will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
6+
7+
## [0.1.0] - 2025-02-23
8+
9+
### Added
10+
- Initial release of Perpendicularity
11+
- LangGraph and ReAct agent implementations
12+
- Support for Gemini, Claude, Ollama, HuggingFace Transformers
13+
- MCP integration (GenomicOps-MCP, TxGemma-MCP)
14+
- CLI with interactive and batch modes
15+
- FastAPI web server with React frontend
16+
- Docker deployment support
17+
- Comprehensive documentation (15 guides)
18+
- Test suite (82% coverage, 427+ tests)
19+
20+
### Features
21+
- Multi-model support (cloud and local)
22+
- Real-time SSE streaming
23+
- Rich terminal output
24+
- Production-ready deployment options
25+
- EC2 with Ollama setup guide
26+
27+
[0.1.0]: https://github.com/t-neumann/perpendicularity/releases/tag/v0.1.0

docs/DEPLOYMENT.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ The Dockerfile uses a **multi-stage build** to optimize image size and support o
5252

5353
```bash
5454
# Build image (no local models)
55-
docker build -t perpendicularity:0.1.0 .
55+
docker buildx build --platform linux/amd64 -t perpendicularity:0.1.0 .
5656

5757
# Image size: ~1.5GB
5858
```
@@ -78,7 +78,7 @@ docker build -t perpendicularity:0.1.0 .
7878

7979
```bash
8080
# Build with local models support
81-
docker build \
81+
docker buildx build --platform linux/amd64 \
8282
--build-arg INSTALL_LOCAL_MODELS=true \
8383
-t perpendicularity:0.1.0-gpu .
8484

@@ -245,15 +245,15 @@ docker exec perpendicularity nvidia-smi
245245

246246
```bash
247247
# Use BuildKit for faster builds
248-
DOCKER_BUILDKIT=1 docker build -t perpendicularity:0.1.0 .
248+
DOCKER_BUILDKIT=1 docker buildx build --platform linux/amd64 -t perpendicularity:0.1.0 .
249249

250250
# Multi-platform build (for deployment on different architectures)
251251
docker buildx build \
252252
--platform linux/amd64,linux/arm64 \
253253
-t perpendicularity:0.1.0 .
254254

255255
# Build with specific Python version
256-
docker build \
256+
docker buildx build --platform linux/amd64 \
257257
--build-arg PYTHON_VERSION=3.11 \
258258
-t perpendicularity:0.1.0 .
259259
```
@@ -264,10 +264,10 @@ docker build \
264264

265265
```bash
266266
# Build with no cache
267-
docker build --no-cache -t perpendicularity:0.1.0 .
267+
docker buildx build --platform linux/amd64 --no-cache -t perpendicularity:0.1.0 .
268268

269269
# Use BuildKit cache
270-
docker build \
270+
docker buildx build --platform linux/amd64 \
271271
--cache-from perpendicularity:latest \
272272
-t perpendicularity:0.1.0 .
273273
```
@@ -326,7 +326,7 @@ ollama pull qwen2.5:14b-instruct
326326
# 3. Deploy Perpendicularity
327327
git clone https://github.com/t-neumann/perpendicularity.git
328328
cd perpendicularity
329-
docker build -t perpendicularity:0.1.0 .
329+
docker buildx build --platform linux/amd64 -t perpendicularity:0.1.0 .
330330
docker run -d --network host \
331331
-v $(pwd)/config/agent_config.yaml:/app/config/agent_config.yaml:ro \
332332
perpendicularity:0.1.0
@@ -534,7 +534,7 @@ perpendicularity api --reload
534534

535535
```bash
536536
# Build and run in Docker
537-
docker build -t perpendicularity:0.1.0 .
537+
docker buildx build --platform linux/amd64 -t perpendicularity:0.1.0 .
538538
docker run -d \
539539
--name perpendicularity \
540540
--restart unless-stopped \
@@ -554,7 +554,7 @@ ollama pull qwen2.5:14b-instruct
554554

555555
git clone https://github.com/t-neumann/perpendicularity.git
556556
cd perpendicularity
557-
docker build -t perpendicularity:0.1.0 .
557+
docker buildx build --platform linux/amd64 -t perpendicularity:0.1.0 .
558558
docker run -d --network host perpendicularity:0.1.0
559559
```
560560

docs/EC2_SETUP.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ cd perpendicularity
8888
nano config/agent_config.yaml
8989

9090
# 8. Build and run
91-
docker build -t perpendicularity:0.1.0 .
91+
docker buildx build --platform linux/amd64 -t perpendicularity:0.1.0 .
9292
docker run -d --name perpendicularity --network host \
9393
-v $(pwd)/config/agent_config.yaml:/app/config/agent_config.yaml:ro \
9494
perpendicularity:0.1.0 \
@@ -540,7 +540,7 @@ cd perpendicularity
540540
git pull
541541

542542
# Rebuild Docker image
543-
docker build -t perpendicularity:0.1.0 .
543+
docker buildx build --platform linux/amd64 -t perpendicularity:0.1.0 .
544544

545545
# Stop old container
546546
docker stop perpendicularity

docs/GETTING_STARTED.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ git clone https://github.com/t-neumann/perpendicularity.git
6767
cd perpendicularity
6868

6969
# Build Docker image
70-
docker build -t perpendicularity:0.1.0 .
70+
docker buildx build --platform linux/amd64 -t perpendicularity:0.1.0 .
7171

7272
# Run (see Deployment section for full options)
7373
docker run -p 8000:8000 perpendicularity:0.1.0

docs/TROUBLESHOOTING.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -532,14 +532,14 @@ ls Dockerfile
532532
# Docker Desktop → Settings → Resources → Memory → 8GB+
533533

534534
# 3. Build with verbose output
535-
docker build -t perpendicularity:0.1.0 . --progress=plain
535+
docker buildx build --platform linux/amd64 -t perpendicularity:0.1.0 . --progress=plain
536536

537537
# 4. Clear Docker cache
538538
docker builder prune -a
539539

540540
# 5. Build stages separately
541-
docker build --target frontend-builder -t perp-frontend .
542-
docker build -t perpendicularity:0.1.0 .
541+
docker buildx build --platform linux/amd64 --target frontend-builder -t perp-frontend .
542+
docker buildx build --platform linux/amd64 -t perpendicularity:0.1.0 .
543543
```
544544

545545
---

frontend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "perpendicularity-frontend",
33
"private": true,
4-
"version": "0.3.0",
4+
"version": "0.1.0",
55
"type": "module",
66
"scripts": {
77
"predev": "mkdir -p public && cp ../assets/logo.png public/logo.png",

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "Perpendicularity"
3-
version = "0.3.0" # Updated to match CLI version
3+
version = "0.1.0"
44
description = "Perpendicularity therapeutics drug discovery agent to unite the realms of genomics and therapeutics using AI synthesis"
55
readme = "README.md"
66
requires-python = ">=3.11"

0 commit comments

Comments
 (0)