Build and Push Docker Image / test (push) Successful in 59sDetails
Build and Push Docker Image / build (push) Successful in 1m12sDetails
The validation was too restrictive, only allowing alphanumeric usernames.
Now accepts both:
- Standard usernames (letters, numbers, underscores)
- Valid email addresses
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Build and Push Docker Image / test (push) Failing after 38sDetails
Build and Push Docker Image / build (push) Has been skippedDetails
- Change scenario name from 'nextcloud.initial_setup' to 'nextcloud_initial_setup' (underscore format)
- Move allowed_domains from inputs to options (required by PlaywrightExecutor)
- Update tests to match new payload structure
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Build and Push Docker Image / test (push) Successful in 44sDetails
Build and Push Docker Image / build (push) Successful in 58sDetails
- Add deploy.sh for automated registry login and deployment
- Update docker-compose-dev.yml to use same port binding as prod (127.0.0.1:8100)
- Add restart: unless-stopped to dev compose
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Build and Push Docker Image / test (push) Successful in 55sDetails
Build and Push Docker Image / build (push) Successful in 1m16sDetails
Add POST /api/v1/tenants/{tenant_id}/nextcloud/setup endpoint that:
- Creates a PLAYWRIGHT task for Nextcloud initial admin setup
- Validates tenant has domain configured
- Auto-resolves online agent for tenant
- Performs health check against Nextcloud before creating task
- Returns 409 if Nextcloud is unavailable
Changes:
- Add httpx for health checks
- Add build_nextcloud_initial_setup_step() and create_nextcloud_initial_setup_task()
- Add NextcloudInitialSetupRequest schema with username/password validation
- Add check_nextcloud_availability() helper for health checks
- Add comprehensive unit tests (42 tests total)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Build and Push Docker Image / test (push) Successful in 44sDetails
Build and Push Docker Image / build (push) Successful in 1m11sDetails
- docker-compose.yml now pulls from code.letsbe.solutions/letsbe/orchestrator:latest
- docker-compose.override.yml for local dev (build, volumes, hot-reload)
- Production: rename/remove override file to use registry image
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Build and Push Docker Image / test (push) Successful in 38sDetails
Build and Push Docker Image / build (push) Successful in 55sDetails
- Add agent_id parameter to legacy Bearer auth test (required by design)
- Add last_heartbeat to test_agent_with_secret fixture
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Build and Push Docker Image / test (push) Failing after 1m5sDetails
Build and Push Docker Image / build (push) Has been skippedDetails
- Add .gitea/workflows/build.yml for automated builds
- Run tests before building Docker image
- Push to code.letsbe.solutions/letsbe/orchestrator:latest
- Add middleware to normalize trailing slashes in URLs
- Standardize route definitions to use "" instead of "/"
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- GET /api/v1/agents/ - list all agents (with optional tenant_id filter)
- GET /api/v1/agents/{agent_id} - get specific agent
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Python's logging.LogRecord reserves 'message' as an attribute.
Using it in extra dict causes KeyError.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Includes commands for generating secure keys using Python or openssl.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Production: reads from environment variable
- Dev: hardcoded dev key for local testing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add tenant_id field to AgentRegisterRequest schema
- Validate tenant exists during agent registration (returns 404 if not found)
- Update /tasks/next to filter tasks by agent's tenant_id
- Tenant-specific agents only see their tenant's tasks
- Shared agents (no tenant_id) can still claim any task
- Add ROADMAP.md tracking project progress
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- docker-compose.yml: production config (localhost binding, no reload)
- docker-compose-dev.yml: development config (hot reload, debug mode)
- Remove docker-compose-production.yml (consolidated into main file)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add endpoint POST /tenants/{tenant_id}/nextcloud/set-domain that creates
a COMPOSITE task with two steps:
1. NEXTCLOUD_SET_DOMAIN - configures Nextcloud domain via occ commands
2. DOCKER_RELOAD - restarts the Nextcloud stack
Features:
- Auto-resolves first online agent for tenant
- Configurable pull flag for image updates
- Full test coverage (unit + integration tests)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>