Two distinct fixes: 1. Database terminology: Make it crystal clear that generated projects use CockroachDB in production and PostgreSQL for local dev, while the rdev platform itself uses PostgreSQL. Updated 15 files across skeleton agents, component templates, cookbook trees, and platform docs. 2. Video storage: VideoHandler was ignoring vid.Data bytes (already downloaded by the Gemini adapter with auth) and re-downloading from the provider URL with a plain GET — which fails because Gemini URLs require API key auth. Now uses vid.Data first, falls back to downloadURL only for public URLs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
127 lines
3.8 KiB
YAML
127 lines
3.8 KiB
YAML
name: aeries-1-genesis
|
|
description: "Aeries Phase 1: The Monolith. Creates the Core API and React App for Agent Creation."
|
|
version: 1
|
|
|
|
vars:
|
|
project_name: ""
|
|
service_name: "core-api"
|
|
app_name: "creator-ui"
|
|
feature_slug: "agent-crud"
|
|
|
|
steps:
|
|
# --- Infrastructure ---
|
|
create-project:
|
|
action: api
|
|
method: POST
|
|
endpoint: /project
|
|
body:
|
|
name: "{{ .vars.project_name }}"
|
|
description: "Aeries Genesis: The God Game"
|
|
outputs:
|
|
- project_id: .data.name
|
|
- domain: .data.domain
|
|
|
|
add-db:
|
|
description: Add CockroachDB
|
|
depends_on: [create-project]
|
|
action: api
|
|
method: POST
|
|
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
|
|
body: { type: postgres, name: "core-db" }
|
|
|
|
add-core:
|
|
description: Add Core Monolith Service
|
|
depends_on: [add-db]
|
|
action: api
|
|
method: POST
|
|
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
|
|
body: { type: service, name: "{{ .vars.service_name }}" }
|
|
|
|
add-web:
|
|
description: Add React Frontend
|
|
depends_on: [add-core]
|
|
action: api
|
|
method: POST
|
|
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
|
|
body: { type: app-react, name: "{{ .vars.app_name }}" }
|
|
|
|
wait-infra:
|
|
action: wait_pipeline
|
|
project_id: "{{ .outputs.create-project.project_id }}"
|
|
|
|
# --- Feature: Agent Creation ---
|
|
create-feature:
|
|
action: api
|
|
method: POST
|
|
endpoint: "/projects/{{ .outputs.create-project.project_id }}/sdlc/features"
|
|
body:
|
|
slug: "{{ .vars.feature_slug }}"
|
|
title: "Agent Creation Flow"
|
|
|
|
spec-feature:
|
|
description: "Define Agent Data Model (Name, Bio, Stats)"
|
|
depends_on: [create-feature]
|
|
action: api
|
|
method: POST
|
|
endpoint: "/projects/{{ .outputs.create-project.project_id }}/builds"
|
|
body:
|
|
prompt: "/spec-feature {{ .vars.feature_slug }}"
|
|
auto_commit: true
|
|
auto_push: true
|
|
git_clone_url: "https://git.threesix.ai/jordan/{{ .outputs.create-project.project_id }}.git"
|
|
outputs:
|
|
- build_id: .data.task_id
|
|
|
|
wait-spec:
|
|
description: Wait for spec generation
|
|
depends_on: [spec-feature]
|
|
action: wait_build
|
|
build_id: "{{ .outputs.spec-feature.build_id }}"
|
|
max_attempts: 120
|
|
poll_interval: 5
|
|
|
|
implement-backend:
|
|
description: "Implement GET/POST /agents in Core API"
|
|
depends_on: [wait-spec]
|
|
action: api
|
|
method: POST
|
|
endpoint: "/projects/{{ .outputs.create-project.project_id }}/builds"
|
|
body:
|
|
prompt: "/implement-feature {{ .vars.feature_slug }} --scope backend --requirements 'Use pkg/api. DB Table: agents. Fields: id, name, personality_prompt, created_at.'"
|
|
auto_commit: true
|
|
auto_push: true
|
|
git_clone_url: "https://git.threesix.ai/jordan/{{ .outputs.create-project.project_id }}.git"
|
|
outputs:
|
|
- build_id: .data.task_id
|
|
|
|
wait-backend:
|
|
description: Wait for backend implementation
|
|
depends_on: [implement-backend]
|
|
action: wait_build
|
|
build_id: "{{ .outputs.implement-backend.build_id }}"
|
|
max_attempts: 120
|
|
poll_interval: 5
|
|
|
|
wait-deploy:
|
|
action: wait_pipeline
|
|
project_id: "{{ .outputs.create-project.project_id }}"
|
|
|
|
# --- Verification ---
|
|
verify-api:
|
|
description: "Test Agent Creation via API"
|
|
depends_on: [wait-deploy]
|
|
action: shell
|
|
command: |
|
|
DOMAIN="{{ .outputs.create-project.domain }}"
|
|
echo "Creating Agent..."
|
|
ID=$(curl -s -X POST "https://$DOMAIN/api/agents" -d '{"name":"Hal","personality":"Helpful"}' -H "Content-Type: application/json" | jq -r .id)
|
|
|
|
echo "Verifying..."
|
|
RESP=$(curl -s "https://$DOMAIN/api/agents/$ID")
|
|
if echo "$RESP" | grep -q "Hal"; then exit 0; else exit 1; fi
|
|
|
|
teardown:
|
|
- action: api
|
|
method: DELETE
|
|
endpoint: "/project/{{ .outputs.create-project.project_id }}"
|