Files
kandev/docs/GETTING_STARTED.md
T
jcfs 7551235267 Implement ACP permission handling and E2E test
- Add proper JSON-RPC message type discrimination in readLoop():
  - Response: id + (result|error), no method
  - Request: id + method (e.g., session/request_permission)
  - Notification: method, no id

- Add permission request types to types.go:
  - RequestPermissionParams, PermissionOption
  - RequestPermissionResult, PermissionOutcome

- Implement handleRequestPermission in session manager:
  - Auto-approves by selecting first 'allow' option
  - Handles workspace indexing and tool permissions

- Add augment_provider.go for session credential injection

- Add repository_url field to task model for workspace mounting

- Create scripts/e2e-test.sh for automated testing

- Update documentation with ACP protocol details
2026-01-10 12:16:02 +00:00

299 lines
5.9 KiB
Markdown

# Getting Started with Kandev Backend Development
> **Note:** This guide reflects the current unified binary implementation.
> The original microservices architecture is documented in IMPLEMENTATION_PLAN.md for future reference.
## Prerequisites
### Required Software
1. **Go 1.21 or higher**
```bash
# Check version
go version
# Install from https://go.dev/dl/
```
2. **Docker**
```bash
# Check version
docker --version
# Install from https://docs.docker.com/get-docker/
```
3. **Augment CLI Credentials**
```bash
# Verify Augment session exists
cat ~/.augment/session.json
```
4. **Git with SSH Keys Configured** (for repository access)
```bash
git --version
# Verify SSH keys exist
ls -la ~/.ssh/
```
---
## Quick Start
### Step 1: Build the Backend
```bash
cd backend
# Build the binary
make build
# This creates ./bin/kandev
```
### Step 2: Run the Server
```bash
# Run with default settings (creates kandev.db in current directory)
./bin/kandev
# Or specify a custom database path
KANDEV_DB_PATH=/path/to/kandev.db ./bin/kandev
```
The server starts on port 8080 by default.
### Step 3: Verify It's Running
```bash
# Health check
curl http://localhost:8080/health
# Should return: {"status":"ok"}
```
---
## Basic Usage
### Create a Board
```bash
curl -X POST http://localhost:8080/api/v1/boards \
-H "Content-Type: application/json" \
-d '{"name": "My Project", "description": "Project tasks"}'
```
### Create a Column
```bash
curl -X POST http://localhost:8080/api/v1/boards/{board_id}/columns \
-H "Content-Type: application/json" \
-d '{"name": "To Do"}'
```
### Create a Task
```bash
curl -X POST http://localhost:8080/api/v1/boards/{board_id}/columns/{column_id}/tasks \
-H "Content-Type: application/json" \
-d '{"title": "Fix login bug", "description": "Users cannot login"}'
```
### Create a Task with Agent
```bash
# Create a task that will be executed by an AI agent
curl -X POST http://localhost:8080/api/v1/tasks \
-H "Content-Type: application/json" \
-d '{
"title": "Analyze codebase",
"description": "Provide an overview of the project structure",
"board_id": "{board_id}",
"column_id": "{column_id}",
"agent_type": "augment-agent",
"repository_url": "/path/to/your/project"
}'
```
### Start Task via Orchestrator
```bash
# Start the task - this launches the agent container
curl -X POST http://localhost:8080/api/v1/orchestrator/tasks/{task_id}/start \
-H "Content-Type: application/json"
```
### Check Agent Status
```bash
curl http://localhost:8080/api/v1/agents/{agent_id}/status
# List all agents
curl http://localhost:8080/api/v1/agents
```
---
## Running the End-to-End Test
The project includes a comprehensive E2E test script:
```bash
# Build the agent Docker image first
cd backend/dockerfiles/augment-agent
docker build -t kandev/augment-agent:latest .
# Run the E2E test
cd /path/to/kandev
./scripts/e2e-test.sh
```
The E2E test:
1. Starts the server with a fresh database
2. Creates a board, column, and task
3. Starts the task via the orchestrator
4. Verifies the agent container starts
5. Checks that ACP session is created
6. Verifies permission requests are handled
7. Waits for agent to complete
---
## Configuration
| Environment Variable | Default | Description |
|---------------------|---------|-------------|
| `KANDEV_DB_PATH` | `./kandev.db` | SQLite database file path |
| `PORT` | `8080` | HTTP server port |
---
## Development Workflow
### Build
```bash
cd backend
make build
```
### Run Tests
```bash
cd backend
make test
# Or with verbose output
go test -v ./...
```
### Code Formatting
```bash
go fmt ./...
go vet ./...
```
### View Database
```bash
# SQLite CLI
sqlite3 backend/kandev.db
# List tables
.tables
# View boards
SELECT * FROM boards;
# View tasks
SELECT * FROM tasks;
```
---
## Project Structure
```
backend/
├── cmd/kandev/ # Main entry point
│ └── main.go
├── internal/
│ ├── agent/ # Agent management
│ │ ├── acp/ # ACP session management
│ │ ├── api/ # Agent HTTP handlers
│ │ ├── credentials/ # Credential providers
│ │ ├── docker/ # Docker client
│ │ ├── lifecycle/ # Container lifecycle
│ │ └── registry/ # Agent type registry
│ ├── task/ # Task management
│ │ ├── api/ # Task HTTP handlers
│ │ ├── models/ # Data models
│ │ ├── repository/ # SQLite/Memory storage
│ │ └── service/ # Business logic
│ ├── orchestrator/ # Orchestration logic
│ ├── events/ # In-memory event bus
│ └── common/ # Shared utilities
│ └── logger/ # Zap logger
├── pkg/acp/ # ACP protocol types
│ └── jsonrpc/ # JSON-RPC 2.0 client
├── dockerfiles/ # Agent Dockerfiles
│ └── augment-agent/
├── bin/ # Built binaries (gitignored)
├── Makefile
└── NEXT_STEPS.md # Development roadmap
scripts/
└── e2e-test.sh # End-to-end test script
```
---
## Troubleshooting
### Docker Permission Issues
```bash
# Add user to docker group (Linux)
sudo usermod -aG docker $USER
newgrp docker
```
### Port Already in Use
```bash
# Find process using port 8080
lsof -i :8080
# Kill it
kill -9 <PID>
```
### Database Issues
```bash
# Delete and recreate database
rm backend/kandev.db
./bin/kandev # Will create fresh database
```
### Agent Container Issues
```bash
# List running containers
docker ps -a --filter "label=kandev.managed=true"
# View container logs
docker logs <container_id>
# Clean up old containers
docker rm $(docker ps -a -q --filter "label=kandev.managed=true")
```
---
## Next Steps
See [NEXT_STEPS.md](../backend/NEXT_STEPS.md) for the development roadmap and immediate next steps.