Skip to content

Commit 604c7fd

Browse files
committed
feat: initial dev-agent repository setup
- Set up monorepo structure with core, cli, subagents, and integrations packages - Define package interfaces and placeholder implementations - Create documentation structure - Implement project following PLAN.md
0 parents  commit 604c7fd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+5042
-0
lines changed

.changeset/config.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"$schema": "https://unpkg.com/@changesets/[email protected]/schema.json",
3+
"changelog": "@changesets/cli/changelog",
4+
"commit": false,
5+
"fixed": [],
6+
"linked": [],
7+
"access": "public",
8+
"baseBranch": "main",
9+
"updateInternalDependencies": "patch",
10+
"ignore": []
11+
}

.github/renovate-automerge.json5

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
{
2+
// Automerge configuration for Renovate
3+
"packageRules": [
4+
// Automerge for non-major devDependencies
5+
{
6+
"description": "Automatically merge minor and patch updates for dev dependencies",
7+
"matchDepTypes": ["devDependencies"],
8+
"matchUpdateTypes": ["minor", "patch"],
9+
"automerge": true,
10+
"platformAutomerge": true
11+
},
12+
13+
// Automerge for patch-only production dependencies
14+
{
15+
"description": "Automatically merge patch updates for production dependencies",
16+
"matchDepTypes": ["dependencies"],
17+
"matchUpdateTypes": ["patch"],
18+
"automerge": true,
19+
"platformAutomerge": true,
20+
"prCreation": "immediate"
21+
},
22+
23+
// Automerge GitHub Action updates
24+
{
25+
"description": "Automatically merge GitHub Actions",
26+
"matchManagers": ["github-actions"],
27+
"matchUpdateTypes": ["minor", "patch"],
28+
"automerge": true,
29+
"platformAutomerge": true
30+
},
31+
32+
// Skip certain dependency types or packages from automerge
33+
{
34+
"description": "Don't automerge major dependency updates",
35+
"matchUpdateTypes": ["major"],
36+
"automerge": false
37+
},
38+
39+
// Handle peer dependencies correctly
40+
{
41+
"description": "Widen ranges for peer dependencies",
42+
"matchDepTypes": ["peerDependencies"],
43+
"rangeStrategy": "widen"
44+
}
45+
],
46+
47+
// Avoid weekend PRs for major changes
48+
"major": {
49+
"schedule": ["after 10pm and before 5am every weekday"]
50+
},
51+
52+
// Additional automerge settings
53+
"transitiveRemediation": true,
54+
"minimumReleaseAge": "3 days"
55+
}

.github/renovate-groups.json5

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
{
2+
// Package grouping configuration for Renovate
3+
"packageRules": [
4+
// Group all non-major dependencies
5+
{
6+
"description": "Group all non-major dependencies together",
7+
"matchPackagePatterns": ["*"],
8+
"matchUpdateTypes": ["minor", "patch"],
9+
"groupName": "all non-major dependencies",
10+
"groupSlug": "all-minor-patch"
11+
},
12+
13+
// Group TypeScript ecosystem
14+
{
15+
"description": "Group TypeScript and related tooling",
16+
"matchPackagePatterns": [
17+
"^@tsconfig/",
18+
"^typescript",
19+
"^ts-",
20+
"^@types/"
21+
],
22+
"groupName": "typescript ecosystem",
23+
"groupSlug": "typescript"
24+
},
25+
26+
// Group formatting and linting tools
27+
{
28+
"description": "Group formatting and linting tools",
29+
"matchPackagePatterns": [
30+
"^@biomejs/",
31+
"^eslint",
32+
"^@eslint",
33+
"^prettier"
34+
],
35+
"groupName": "linting and formatting",
36+
"groupSlug": "linting-formatting"
37+
},
38+
39+
// Group testing tools
40+
{
41+
"description": "Group testing dependencies",
42+
"matchPackagePatterns": [
43+
"^vitest",
44+
"^@vitest/",
45+
"^jest",
46+
"^@jest/"
47+
],
48+
"groupName": "testing dependencies",
49+
"groupSlug": "testing"
50+
},
51+
52+
// Group monorepo tooling
53+
{
54+
"description": "Group monorepo tooling",
55+
"matchPackagePatterns": [
56+
"^@changesets/",
57+
"^turbo",
58+
"^lerna",
59+
"^nx"
60+
],
61+
"groupName": "monorepo tooling",
62+
"groupSlug": "monorepo-tools"
63+
},
64+
65+
// Group GitHub Actions
66+
{
67+
"description": "Group GitHub Actions",
68+
"matchManagers": ["github-actions"],
69+
"groupName": "GitHub Actions",
70+
"groupSlug": "github-actions"
71+
},
72+
73+
// Group internal workspace packages
74+
{
75+
"description": "Group internal workspace packages",
76+
"matchPackagePatterns": [
77+
"^@monorepo/"
78+
],
79+
"matchUpdateTypes": ["major", "minor", "patch"],
80+
"groupName": "internal packages",
81+
"groupSlug": "internal-deps"
82+
}
83+
]
84+
}

.github/workflows/ci.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
13+
strategy:
14+
matrix:
15+
node-version: [22.x]
16+
17+
steps:
18+
- uses: actions/checkout@v4
19+
20+
- name: Setup pnpm
21+
uses: pnpm/action-setup@v3
22+
with:
23+
version: 8
24+
25+
- name: Use Node.js ${{ matrix.node-version }}
26+
uses: actions/setup-node@v4
27+
with:
28+
node-version: ${{ matrix.node-version }}
29+
cache: 'pnpm'
30+
31+
- name: Install dependencies
32+
run: pnpm install
33+
34+
- name: Lint
35+
run: pnpm lint
36+
37+
- name: Build
38+
run: pnpm build
39+
40+
- name: Type check
41+
run: pnpm typecheck
42+
43+
- name: Test
44+
run: pnpm test

.github/workflows/release.yml

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: Release
2+
3+
# This workflow runs after CI succeeds on the main branch.
4+
# By default, all packages are private and won't be published to npm.
5+
# To enable publishing: set "private": false in package.json and add NPM_TOKEN secret.
6+
# See README.md for detailed setup instructions.
7+
8+
on:
9+
workflow_run:
10+
workflows: ["CI"]
11+
types:
12+
- completed
13+
branches:
14+
- main
15+
workflow_dispatch:
16+
inputs:
17+
force_publish:
18+
description: 'Force publish all packages'
19+
type: boolean
20+
default: false
21+
22+
concurrency: ${{ github.workflow }}-${{ github.ref }}
23+
24+
jobs:
25+
release:
26+
name: Release
27+
runs-on: ubuntu-latest
28+
# Only run if CI workflow succeeded
29+
if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }}
30+
steps:
31+
- name: Checkout Repo
32+
uses: actions/checkout@v4
33+
with:
34+
# This makes Actions fetch all Git history so that Changesets can generate changelogs
35+
fetch-depth: 0
36+
37+
- name: Setup pnpm
38+
uses: pnpm/action-setup@v3
39+
with:
40+
version: 8
41+
42+
- name: Setup Node.js
43+
uses: actions/setup-node@v4
44+
with:
45+
node-version: 22
46+
cache: 'pnpm'
47+
registry-url: 'https://registry.npmjs.org'
48+
49+
- name: Install Dependencies
50+
run: pnpm install
51+
52+
- name: Build Packages
53+
run: pnpm build
54+
55+
- name: Create Release Pull Request or Publish to npm
56+
id: changesets
57+
uses: changesets/action@v1
58+
with:
59+
version: pnpm changeset version
60+
publish: pnpm changeset publish
61+
commit: 'chore(release): version packages'
62+
title: 'chore(release): version packages'
63+
env:
64+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
65+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
66+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

.github/workflows/renovate.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: Renovate
2+
3+
on:
4+
# Schedule: run every day at 2am
5+
schedule:
6+
- cron: '0 2 * * *'
7+
8+
# Run on demand via workflow_dispatch
9+
workflow_dispatch:
10+
inputs:
11+
logLevel:
12+
description: 'Renovate log level'
13+
required: true
14+
default: 'info'
15+
type: choice
16+
options:
17+
- debug
18+
- info
19+
- warn
20+
- error
21+
dryRun:
22+
description: 'Dry run'
23+
type: boolean
24+
default: false
25+
26+
# Prevent multiple Renovate runs from happening simultaneously
27+
concurrency:
28+
group: renovate
29+
cancel-in-progress: false
30+
31+
jobs:
32+
renovate:
33+
name: Renovate
34+
runs-on: ubuntu-latest
35+
36+
# Allow renovate to create PRs
37+
permissions:
38+
contents: write
39+
pull-requests: write
40+
issues: write
41+
42+
steps:
43+
- name: Checkout
44+
uses: actions/checkout@v4
45+
46+
# Use custom docker-based renovate to run self-hosted
47+
- name: Self-hosted Renovate
48+
uses: renovatebot/[email protected]
49+
with:
50+
configurationFile: renovate.json5
51+
token: ${{ secrets.GITHUB_TOKEN }}
52+
env:
53+
LOG_LEVEL: ${{ inputs.logLevel || 'info' }}
54+
DRY_RUN: ${{ inputs.dryRun == true && 'full' || '' }}
55+
RENOVATE_BASE_BRANCHES: 'main'
56+
RENOVATE_EXTENDS: 'config:recommended,group:allNonMajor'
57+
# Include local configuration files
58+
RENOVATE_CONFIG_FILE: 'renovate.json5'
59+
RENOVATE_EXTENDS_FROM: |
60+
.github/renovate-automerge.json5
61+
.github/renovate-groups.json5

.gitignore

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Dependencies
2+
node_modules
3+
.pnp
4+
.pnp.js
5+
6+
# Build outputs
7+
dist
8+
build
9+
out
10+
.next
11+
.turbo
12+
13+
# TypeScript
14+
*.tsbuildinfo
15+
16+
# Testing
17+
coverage
18+
19+
# Debug
20+
npm-debug.log*
21+
yarn-debug.log*
22+
yarn-error.log*
23+
pnpm-debug.log*
24+
25+
# Environment
26+
.env
27+
.env.local
28+
.env.development.local
29+
.env.test.local
30+
.env.production.local
31+
32+
# Cache
33+
.eslintcache
34+
.cache
35+
36+
# Editor directories and files
37+
.idea
38+
.vscode/*
39+
!.vscode/extensions.json
40+
!.vscode/settings.json
41+
!.vscode/tasks.json
42+
!.vscode/launch.json
43+
*.suo
44+
*.ntvs*
45+
*.njsproj
46+
*.sln
47+
*.sw?
48+
49+
# OS
50+
.DS_Store
51+
Thumbs.db

.husky/commit-msg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pnpm exec commitlint --edit "$1"

0 commit comments

Comments
 (0)