feat(office): autonomous agent management layer (#914)
This commit is contained in:
@@ -32,7 +32,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
@@ -57,8 +57,9 @@ jobs:
|
||||
- name: Build
|
||||
run: go build -v ./cmd/kandev
|
||||
|
||||
- name: Check gofmt
|
||||
- name: Resolve base SHA
|
||||
shell: bash
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
@@ -72,6 +73,14 @@ jobs:
|
||||
BASE_SHA="$(git rev-list --max-parents=0 HEAD)"
|
||||
fi
|
||||
|
||||
echo "BASE_SHA=${BASE_SHA}" >> "$GITHUB_ENV"
|
||||
echo "Base SHA: ${BASE_SHA}"
|
||||
|
||||
- name: Check gofmt
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
CHANGED_GO_FILES="$(
|
||||
git diff --name-only --diff-filter=ACMRT "${BASE_SHA}"..."${{ github.sha }}" -- apps/backend \
|
||||
| grep -E '^apps/backend/.*\.go$' \
|
||||
@@ -94,9 +103,8 @@ jobs:
|
||||
uses: golangci/golangci-lint-action@v9
|
||||
with:
|
||||
version: v2.9
|
||||
args: ./...
|
||||
args: ./... --new-from-rev=${{ env.BASE_SHA }}
|
||||
working-directory: apps/backend
|
||||
only-new-issues: true
|
||||
|
||||
- name: Run tests
|
||||
run: |
|
||||
@@ -110,7 +118,7 @@ jobs:
|
||||
fromJSONFile: apps/backend/test-results.json
|
||||
|
||||
- name: Upload test artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
if: always()
|
||||
with:
|
||||
name: test-results
|
||||
@@ -134,7 +142,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v6
|
||||
@@ -158,4 +166,4 @@ jobs:
|
||||
# a self-hosting Go helper (see testmain_test.go) so they run on
|
||||
# every platform.
|
||||
- name: Test windows-sensitive packages
|
||||
run: go test -race -v ./internal/agentctl/server/process/... ./internal/agentctl/client/launcher/...
|
||||
run: go test -race -v ./internal/agentctl/server/process/... ./internal/agent/runtime/agentctl/launcher/...
|
||||
|
||||
@@ -38,16 +38,16 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version-file: apps/backend/go.mod
|
||||
cache-dependency-path: apps/backend/go.sum
|
||||
|
||||
- name: Set up pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
uses: pnpm/action-setup@v5
|
||||
with:
|
||||
version: "9.15.9"
|
||||
|
||||
@@ -70,7 +70,7 @@ jobs:
|
||||
run: make build-backend-linux-helpers
|
||||
|
||||
- name: Upload backend build
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: e2e-backend-build
|
||||
path: apps/backend/bin/
|
||||
@@ -82,7 +82,7 @@ jobs:
|
||||
run: tar -cf apps/web/next-build.tar -C apps/web .next
|
||||
|
||||
- name: Upload web build
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: e2e-web-build
|
||||
path: apps/web/next-build.tar
|
||||
@@ -100,10 +100,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Set up pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
uses: pnpm/action-setup@v5
|
||||
with:
|
||||
version: "9.15.9"
|
||||
|
||||
@@ -121,7 +121,7 @@ jobs:
|
||||
run: npx playwright install chromium --with-deps
|
||||
|
||||
- name: Download backend build
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v5
|
||||
with:
|
||||
name: e2e-backend-build
|
||||
path: apps/backend/bin/
|
||||
@@ -130,7 +130,7 @@ jobs:
|
||||
run: chmod +x apps/backend/bin/*
|
||||
|
||||
- name: Download web build
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v5
|
||||
with:
|
||||
name: e2e-web-build
|
||||
path: apps/web/
|
||||
@@ -149,7 +149,7 @@ jobs:
|
||||
|
||||
- name: Upload blob report
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: blob-report-${{ matrix.shard }}
|
||||
path: apps/web/e2e/blob-report/
|
||||
@@ -157,32 +157,37 @@ jobs:
|
||||
|
||||
- name: Upload test results
|
||||
if: failure()
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: test-results-${{ matrix.shard }}
|
||||
path: apps/web/e2e/test-results/
|
||||
retention-days: 7
|
||||
|
||||
# Real-Docker E2E: exercises the local_docker executor end-to-end. ubuntu-latest
|
||||
# ships with Docker preinstalled, so no service container is required. The
|
||||
# spec count is small (currently 1 active + 2 fixme) so we don't shard.
|
||||
# Real-Docker E2E: exercises the local_docker executor end-to-end.
|
||||
# ubuntu-latest ships with Docker preinstalled, so no service container is
|
||||
# required. Container-bound tests are slow (~2 min each), so we shard across
|
||||
# 6 runners — Playwright's --shard splits the project's tests into N groups.
|
||||
# Cleans up any leftover kandev-managed containers at the end so a leaky
|
||||
# process doesn't poison the next run on the same self-hosted runner.
|
||||
e2e-docker:
|
||||
name: E2E Docker
|
||||
name: E2E Docker Shard ${{ matrix.shard }}/6
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 15
|
||||
timeout-minutes: 10
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
shard: [1, 2, 3, 4, 5, 6]
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Verify Docker is available
|
||||
run: docker info
|
||||
|
||||
- name: Set up pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
uses: pnpm/action-setup@v5
|
||||
with:
|
||||
version: "9.15.9"
|
||||
|
||||
@@ -200,7 +205,7 @@ jobs:
|
||||
run: npx playwright install chromium --with-deps
|
||||
|
||||
- name: Download backend build
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v5
|
||||
with:
|
||||
name: e2e-backend-build
|
||||
path: apps/backend/bin/
|
||||
@@ -209,7 +214,7 @@ jobs:
|
||||
run: chmod +x apps/backend/bin/*
|
||||
|
||||
- name: Download web build
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v5
|
||||
with:
|
||||
name: e2e-web-build
|
||||
path: apps/web/
|
||||
@@ -218,11 +223,11 @@ jobs:
|
||||
working-directory: apps/web
|
||||
run: tar -xf next-build.tar && rm next-build.tar
|
||||
|
||||
- name: Run Docker E2E tests
|
||||
- name: Run Docker E2E tests (shard ${{ matrix.shard }}/6)
|
||||
working-directory: apps/web
|
||||
env:
|
||||
KANDEV_E2E_DOCKER: "1"
|
||||
run: npx playwright test --config e2e/playwright.config.ts --project=docker
|
||||
run: npx playwright test --config e2e/playwright.config.ts --project=docker --shard=${{ matrix.shard }}/6
|
||||
|
||||
- name: Cleanup leftover kandev containers
|
||||
if: always()
|
||||
@@ -233,17 +238,17 @@ jobs:
|
||||
# sharded chromium/mobile-chrome runs.
|
||||
- name: Upload Docker blob report
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: blob-report-docker
|
||||
name: blob-report-docker-${{ matrix.shard }}
|
||||
path: apps/web/e2e/blob-report/
|
||||
retention-days: 3
|
||||
|
||||
- name: Upload Docker E2E results
|
||||
if: failure()
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: docker-e2e-test-results
|
||||
name: docker-e2e-test-results-${{ matrix.shard }}
|
||||
path: apps/web/e2e/test-results/
|
||||
retention-days: 7
|
||||
|
||||
@@ -256,10 +261,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Set up pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
uses: pnpm/action-setup@v5
|
||||
with:
|
||||
version: "9.15.9"
|
||||
|
||||
@@ -273,7 +278,7 @@ jobs:
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Download blob reports
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v5
|
||||
with:
|
||||
path: apps/web/e2e/blob-reports
|
||||
pattern: blob-report-*
|
||||
@@ -284,7 +289,7 @@ jobs:
|
||||
run: npx playwright merge-reports --reporter=html ./e2e/blob-reports
|
||||
|
||||
- name: Upload merged report
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: playwright-report
|
||||
path: apps/web/playwright-report/
|
||||
|
||||
@@ -44,12 +44,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
uses: pnpm/action-setup@v5
|
||||
with:
|
||||
version: "9.15.9"
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ jobs:
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
go-version-file: apps/backend/go.mod
|
||||
cache-dependency-path: apps/backend/go.sum
|
||||
|
||||
- uses: pnpm/action-setup@v4
|
||||
- uses: pnpm/action-setup@v5
|
||||
with:
|
||||
version: "9.15.9"
|
||||
|
||||
@@ -77,7 +77,7 @@ jobs:
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
# pull_request_target checks out base by default; explicitly use PR head.
|
||||
# Safe: the preview CLI only reads files to build artifacts and posts comments.
|
||||
@@ -92,7 +92,7 @@ jobs:
|
||||
go-version-file: apps/backend/go.mod
|
||||
cache-dependency-path: apps/backend/go.sum
|
||||
|
||||
- uses: pnpm/action-setup@v4
|
||||
- uses: pnpm/action-setup@v5
|
||||
with:
|
||||
version: "9.15.9"
|
||||
|
||||
@@ -156,7 +156,7 @@ jobs:
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- uses: actions/setup-go@v6
|
||||
with:
|
||||
|
||||
@@ -53,12 +53,12 @@ jobs:
|
||||
version: ${{ steps.compute.outputs.version }}
|
||||
tag: ${{ steps.compute.outputs.tag }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- uses: pnpm/action-setup@v4
|
||||
- uses: pnpm/action-setup@v5
|
||||
with:
|
||||
version: "9.15.9"
|
||||
|
||||
@@ -246,10 +246,10 @@ jobs:
|
||||
if: ${{ !inputs.dry_run }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ needs.prepare.outputs.tag }}
|
||||
- uses: pnpm/action-setup@v4
|
||||
- uses: pnpm/action-setup@v5
|
||||
with:
|
||||
version: "9.15.9"
|
||||
- uses: actions/setup-node@v6
|
||||
@@ -263,7 +263,7 @@ jobs:
|
||||
run: pnpm -C apps --filter @kandev/web build
|
||||
- name: Package web bundle
|
||||
run: bash scripts/release/package-web.sh
|
||||
- uses: actions/upload-artifact@v4
|
||||
- uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: web-bundle
|
||||
path: dist/web
|
||||
@@ -275,10 +275,10 @@ jobs:
|
||||
if: ${{ !inputs.dry_run }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ needs.prepare.outputs.tag }}
|
||||
- uses: pnpm/action-setup@v4
|
||||
- uses: pnpm/action-setup@v5
|
||||
with:
|
||||
version: "9.15.9"
|
||||
- uses: actions/setup-node@v6
|
||||
@@ -288,7 +288,7 @@ jobs:
|
||||
run: pnpm -C apps install --frozen-lockfile
|
||||
- name: Build and bundle CLI
|
||||
run: bash scripts/release/package-cli.sh
|
||||
- uses: actions/upload-artifact@v4
|
||||
- uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: cli-bundle
|
||||
path: dist/kandev/cli
|
||||
@@ -328,18 +328,18 @@ jobs:
|
||||
GOOS: ${{ matrix.goos }}
|
||||
GOARCH: ${{ matrix.goarch }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ needs.prepare.outputs.tag }}
|
||||
- uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version-file: apps/backend/go.mod
|
||||
cache-dependency-path: apps/backend/go.sum
|
||||
- uses: actions/download-artifact@v4
|
||||
- uses: actions/download-artifact@v5
|
||||
with:
|
||||
name: web-bundle
|
||||
path: dist/web
|
||||
- uses: actions/download-artifact@v4
|
||||
- uses: actions/download-artifact@v5
|
||||
with:
|
||||
name: cli-bundle
|
||||
path: dist/kandev/cli
|
||||
@@ -391,7 +391,7 @@ jobs:
|
||||
tar -czf "kandev-${{ matrix.platform }}.tar.gz" kandev
|
||||
shasum -a 256 "kandev-${{ matrix.platform }}.tar.gz" > "kandev-${{ matrix.platform }}.tar.gz.sha256"
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
- uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: bundle-${{ matrix.platform }}
|
||||
path: |
|
||||
@@ -407,7 +407,7 @@ jobs:
|
||||
contents: read
|
||||
packages: write # push to GHCR
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ needs.prepare.outputs.tag }}
|
||||
|
||||
@@ -467,7 +467,7 @@ jobs:
|
||||
env:
|
||||
STAGING_IMAGE: ghcr.io/kdlbs/kandev:universal-staging-${{ needs.prepare.outputs.tag }}-${{ github.run_id }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ needs.prepare.outputs.tag }}
|
||||
|
||||
@@ -553,7 +553,7 @@ jobs:
|
||||
permissions:
|
||||
contents: write # softprops/action-gh-release creates the release
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ needs.prepare.outputs.tag }}
|
||||
fetch-depth: 0
|
||||
@@ -566,7 +566,7 @@ jobs:
|
||||
env:
|
||||
OUTPUT: RELEASE_NOTES.md
|
||||
|
||||
- uses: actions/download-artifact@v4
|
||||
- uses: actions/download-artifact@v5
|
||||
with:
|
||||
pattern: bundle-*
|
||||
path: dist/release-assets
|
||||
@@ -609,11 +609,11 @@ jobs:
|
||||
id-token: write # Required for OIDC trusted publishing
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ needs.prepare.outputs.tag }}
|
||||
|
||||
- uses: pnpm/action-setup@v4
|
||||
- uses: pnpm/action-setup@v5
|
||||
with:
|
||||
version: "9.15.9"
|
||||
|
||||
@@ -639,7 +639,7 @@ jobs:
|
||||
if: ${{ !inputs.dry_run }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ needs.prepare.outputs.tag }}
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ jobs:
|
||||
env:
|
||||
STAGING_IMAGE: ghcr.io/kdlbs/kandev:universal-staging-weekly-${{ github.run_id }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Compute date tag
|
||||
id: date
|
||||
|
||||
Reference in New Issue
Block a user