Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
a65d3f8
πŸš€ Week 1 Foundation: Environment Schema & Types Package (#33)
VAIBHAVSING Sep 30, 2025
3f23f55
feat(agent): Go Backend Environment Manager with Azure ACI Integratio…
VAIBHAVSING Oct 4, 2025
a1ae9c4
feat(types): Comprehensive Environment Types Package (#13) (#38)
VAIBHAVSING Oct 5, 2025
b5d7e9d
feat(db): enhance schema with templates and resource tracking (#37)
VAIBHAVSING Oct 6, 2025
cd229ec
🐳 VS Code Server Docker Images with DevCopilot Agent (#39)
VAIBHAVSING Oct 14, 2025
907170a
Add comprehensive Go tests for agent and supervisor (#49)
VAIBHAVSING Oct 16, 2025
a889c86
Add Comprehensive API Documentation for Agent and Supervisor (#52)
VAIBHAVSING Oct 24, 2025
1ff4759
feat: implement 4-layer Docker architecture with VS Code Server and A…
VAIBHAVSING Oct 24, 2025
5202a95
fix(ci): update Docker workflow for new 4-layer architecture
VAIBHAVSING Oct 24, 2025
538ddd0
fix(ci): update base image test (gh CLI is in ai-tools layer)
VAIBHAVSING Oct 24, 2025
66e810e
feat: add persistent workspaces support with docker-compose
VAIBHAVSING Oct 24, 2025
beefbcb
docker: disable password by default, consolidate docs, add ACI deploy…
VAIBHAVSING Oct 24, 2025
cc973a4
feat: Add comprehensive CI/CD pipelines for Docker images
VAIBHAVSING Oct 24, 2025
fc9d95a
docs: Add Azure Container Registry setup guide
VAIBHAVSING Oct 24, 2025
f89ba3b
feat : fix docker images yml
VAIBHAVSING Oct 25, 2025
aca7161
Update CD pipeline to use Docker Hub
VAIBHAVSING Oct 25, 2025
b9b3968
feat : optimize language to not include in volume
VAIBHAVSING Oct 25, 2025
06ef0a8
feat : added docker optimized support for volume
VAIBHAVSING Oct 25, 2025
4add342
Remove Azure Container Registry and use Docker Hub exclusively
Copilot Oct 25, 2025
8f79def
Task 1.1: Remove Database Dependency (Stateless Agent) (#57)
VAIBHAVSING Oct 26, 2025
e8b0c92
feat(db): Complete database schema rewrite with IDE, Agent, SSH, Secr…
VAIBHAVSING Oct 26, 2025
47cae64
hotfix: Add ENVIRONMENT_ID for workspace-supervisor test (#60)
VAIBHAVSING Oct 26, 2025
7b39a1b
feat: Docker Hub workspace deployment with dynamic configuration (#61)
VAIBHAVSING Oct 27, 2025
4ed4265
Update agent (#63)
VAIBHAVSING Oct 28, 2025
b93c5b7
Consolidate Azure volumes from 2 to 1 unified volume (#65)
VAIBHAVSING Oct 30, 2025
a69abf5
Add @repo/agent-client package with singleton pattern (#66)
VAIBHAVSING Oct 30, 2025
a3f3052
fix: remove obsolete test functions and update respondWithError call …
VAIBHAVSING Oct 31, 2025
6b04523
feat: Add Azure Container Apps (ACA) support for hybrid deployment (#68)
VAIBHAVSING Nov 14, 2025
3100223
feat(devcontainer): add supervisor feature (#69)
VAIBHAVSING Nov 16, 2025
6c208e8
feat: Production-grade agent with observability and security (#74)
VAIBHAVSING Nov 17, 2025
9cfa2b8
Initial plan
Copilot Nov 19, 2025
b69a60b
Merge main branch to integrate production agent with workspace APIs
Copilot Nov 19, 2025
18eeab6
Successfully merged main branch with production agent code
Copilot Nov 19, 2025
f198787
Add workspace management API routes and integrate with agent
Copilot Nov 19, 2025
0245872
Add workspace manager UI component to dashboard
Copilot Nov 19, 2025
d0688ec
Add integration documentation and update turbo.json with AGENT_BASE_URL
Copilot Nov 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
462 changes: 462 additions & 0 deletions .github/workflows/README.md

Large diffs are not rendered by default.

237 changes: 237 additions & 0 deletions .github/workflows/build-supervisor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,237 @@
name: Build Supervisor Binary

on:
push:
branches:
- main
paths:
- "apps/supervisor/**"
- ".github/workflows/build-supervisor.yml"
pull_request:
paths:
- "apps/supervisor/**"
workflow_dispatch:

permissions:
contents: write

jobs:
build:
name: Build Supervisor
runs-on: ubuntu-latest
# Only build on PRs for validation, actual release happens on main
if: github.event_name == 'pull_request' || github.ref == 'refs/heads/main'
strategy:
matrix:
include:
- os: linux
arch: amd64
goos: linux
goarch: amd64
- os: linux
arch: arm64
goos: linux
goarch: arm64

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.22"
cache-dependency-path: apps/supervisor/go.sum

- name: Get version
id: version
run: |
if [ "${{ github.ref }}" = "refs/heads/main" ]; then
VERSION="${{ github.sha }}"
SHORT_SHA=$(echo $VERSION | cut -c1-7)
echo "version=$SHORT_SHA" >> $GITHUB_OUTPUT
echo "full_version=$VERSION" >> $GITHUB_OUTPUT
echo "is_release=true" >> $GITHUB_OUTPUT
else
VERSION="pr-${{ github.event.pull_request.number }}"
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "full_version=$VERSION" >> $GITHUB_OUTPUT
echo "is_release=false" >> $GITHUB_OUTPUT
fi
echo "Building version: $VERSION"

- name: Install dependencies
working-directory: apps/supervisor
run: go mod download

- name: Run tests
working-directory: apps/supervisor
run: go test -v ./...

- name: Build binary
working-directory: apps/supervisor
env:
GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }}
CGO_ENABLED: 0
run: |
cd cmd/supervisor
go build \
-ldflags="-s -w -X main.version=${{ steps.version.outputs.full_version }}" \
-o supervisor-${{ matrix.os }}-${{ matrix.arch }} \
.

# Verify the binary
file supervisor-${{ matrix.os }}-${{ matrix.arch }}
ls -lh supervisor-${{ matrix.os }}-${{ matrix.arch }}

- name: Create release directory
run: |
mkdir -p release
cp apps/supervisor/cmd/supervisor/supervisor-${{ matrix.os }}-${{ matrix.arch }} \
release/supervisor-${{ matrix.os }}-${{ matrix.arch }}

# Create checksum
cd release
sha256sum supervisor-${{ matrix.os }}-${{ matrix.arch }} > supervisor-${{ matrix.os }}-${{ matrix.arch }}.sha256
cat supervisor-${{ matrix.os }}-${{ matrix.arch }}.sha256

- name: Upload build artifacts (for release job)
uses: actions/upload-artifact@v4
with:
name: supervisor-${{ matrix.os }}-${{ matrix.arch }}
path: release/*
retention-days: 1
if-no-files-found: error

release:
name: Create/Update Release
needs: build
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Get version info
id: version
run: |
VERSION="${{ github.sha }}"
SHORT_SHA=$(echo $VERSION | cut -c1-7)
BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ)
echo "version=$SHORT_SHA" >> $GITHUB_OUTPUT
echo "full_version=$VERSION" >> $GITHUB_OUTPUT
echo "build_date=$BUILD_DATE" >> $GITHUB_OUTPUT

- name: Download all build artifacts
uses: actions/download-artifact@v4
with:
path: artifacts

- name: Prepare release assets
run: |
mkdir -p release-assets

# Copy all binaries and checksums
find artifacts -type f -name "supervisor-*" -exec cp {} release-assets/ \;

# List what we have
ls -lh release-assets/

# Create a manifest
cat > release-assets/manifest.json << EOF
{
"version": "${{ steps.version.outputs.full_version }}",
"short_version": "${{ steps.version.outputs.version }}",
"build_date": "${{ steps.version.outputs.build_date }}",
"commit": "${{ github.sha }}",
"repository": "${{ github.repository }}",
"binaries": {
"linux-amd64": {
"filename": "supervisor-linux-amd64",
"download_url": "https://github.com/${{ github.repository }}/releases/download/supervisor-latest/supervisor-linux-amd64",
"checksum_url": "https://github.com/${{ github.repository }}/releases/download/supervisor-latest/supervisor-linux-amd64.sha256"
},
"linux-arm64": {
"filename": "supervisor-linux-arm64",
"download_url": "https://github.com/${{ github.repository }}/releases/download/supervisor-latest/supervisor-linux-arm64",
"checksum_url": "https://github.com/${{ github.repository }}/releases/download/supervisor-latest/supervisor-linux-arm64.sha256"
}
}
}
EOF

cat release-assets/manifest.json

- name: Delete existing release if exists
continue-on-error: true
run: |
gh release delete supervisor-latest --yes --cleanup-tag || true
env:
GH_TOKEN: ${{ github.token }}

- name: Create new release
run: |
gh release create supervisor-latest \
--title "Supervisor Binary (Latest)" \
--notes "**Dev8 Workspace Supervisor - Internal Build**

This is an automatically updated release containing the latest supervisor binaries.

**Build Information:**
- Commit: \`${{ steps.version.outputs.full_version }}\`
- Short Version: \`${{ steps.version.outputs.version }}\`
- Build Date: ${{ steps.version.outputs.build_date }}
- Branch: main

**Available Binaries:**
- \`supervisor-linux-amd64\` - Linux x86_64
- \`supervisor-linux-arm64\` - Linux ARM64

**Consistent Download URLs:**
- AMD64: https://github.com/${{ github.repository }}/releases/download/supervisor-latest/supervisor-linux-amd64
- ARM64: https://github.com/${{ github.repository }}/releases/download/supervisor-latest/supervisor-linux-arm64

**Usage:**
These binaries are used internally by the DevContainer feature installation.
The URLs remain consistent across builds - only the binary content is updated.

**Note:** This is an internal tool and not intended for external distribution." \
release-assets/*
env:
GH_TOKEN: ${{ github.token }}

summary:
name: Build Summary
needs: [build, release]
runs-on: ubuntu-latest
if: always()

steps:
- name: Create summary
run: |
echo "# Supervisor Build Complete βœ“" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

if [ "${{ github.ref }}" = "refs/heads/main" ]; then
echo "**Release Updated:** supervisor-latest" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Consistent Download URLs:**" >> $GITHUB_STEP_SUMMARY
echo "- AMD64: \`https://github.com/${{ github.repository }}/releases/download/supervisor-latest/supervisor-linux-amd64\`" >> $GITHUB_STEP_SUMMARY
echo "- ARM64: \`https://github.com/${{ github.repository }}/releases/download/supervisor-latest/supervisor-linux-arm64\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "These URLs never change - perfect for DevContainer features!" >> $GITHUB_STEP_SUMMARY
else
echo "**PR Build:** Validation complete, binaries not released" >> $GITHUB_STEP_SUMMARY
fi

echo "" >> $GITHUB_STEP_SUMMARY
echo "**Build Information:**" >> $GITHUB_STEP_SUMMARY
echo "- Commit: \`${{ github.sha }}\`" >> $GITHUB_STEP_SUMMARY
echo "- Branch: \`${{ github.ref_name }}\`" >> $GITHUB_STEP_SUMMARY
echo "- Workflow: [${{ github.run_id }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Built Platforms:**" >> $GITHUB_STEP_SUMMARY
echo "- Linux AMD64 βœ“" >> $GITHUB_STEP_SUMMARY
echo "- Linux ARM64 βœ“" >> $GITHUB_STEP_SUMMARY
42 changes: 21 additions & 21 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,32 +16,32 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
node-version: "18"

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9.0.0

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Lint
run: pnpm lint

- name: Type check
run: pnpm check-types

- name: Test
run: pnpm test

- name: Generate Prisma Client
run: pnpm --filter=web db:generate

- name: Build
run: pnpm build
env:
Expand All @@ -57,22 +57,22 @@ jobs:
working-directory: ./apps/agent
steps:
- uses: actions/checkout@v4

- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.24'
go-version: "1.24"

- name: Install tools
run: |
go install honnef.co/go/tools/cmd/staticcheck@latest
go install golang.org/x/tools/cmd/goimports@latest

- name: Lint
run: |
go vet ./...
staticcheck ./...

- name: Format check
run: |
if [ -n "$(gofmt -s -l .)" ]; then
Expand All @@ -85,10 +85,10 @@ jobs:
goimports -d .
exit 1
fi

- name: Test
run: go test -v -race ./...

- name: Build
run: go build -o bin/agent .

Expand All @@ -103,13 +103,13 @@ jobs:
- name: Run Trivy scanner
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
scan-ref: '.'
format: 'sarif'
output: 'trivy-results.sarif'
scan-type: "fs"
scan-ref: "."
format: "sarif"
output: "trivy-results.sarif"

- name: Upload scan results
uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: 'trivy-results.sarif'
sarif_file: "trivy-results.sarif"
10 changes: 5 additions & 5 deletions .github/workflows/dependencies.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Dependencies

on:
schedule:
- cron: '0 9 * * 1' # Weekly on Monday
- cron: "0 9 * * 1" # Weekly on Monday
workflow_dispatch:
push:
branches: [main]
Expand All @@ -22,7 +22,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
node-version: "18"

- name: Setup pnpm
uses: pnpm/action-setup@v4
Expand All @@ -32,7 +32,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.24'
go-version: "1.24"

- name: Update dependencies
run: |
Expand All @@ -54,7 +54,7 @@ jobs:
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
title: 'chore: update dependencies'
title: "chore: update dependencies"
body: |
Automated dependency updates for Dev8.dev

Expand All @@ -66,7 +66,7 @@ jobs:
Changes made by automated dependency update workflow.
branch: deps-update
base: main
commit-message: 'chore: update dependencies'
commit-message: "chore: update dependencies"
author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
committer: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
delete-branch: true
Expand Down
Loading