Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
0e3f33d
docs(repo): Change PRD
pedronauck Oct 26, 2025
6867bdc
feat: complete _task_02.md
pedronauck Oct 26, 2025
240d323
feat: complete _task_03.md
pedronauck Oct 26, 2025
db9bc09
feat: complete _task_01.md
pedronauck Oct 26, 2025
09be857
feat: complete _task_04.md
pedronauck Oct 26, 2025
fd1eb2c
feat: complete _task_05.md
pedronauck Oct 26, 2025
cfdc0d3
feat: complete _task_07.md
pedronauck Oct 26, 2025
62efc86
feat: complete _task_08.md
pedronauck Oct 26, 2025
2ce9667
feat: complete _task_09.md
pedronauck Oct 26, 2025
eda6dcf
feat: complete _task_10.md
pedronauck Oct 26, 2025
0752106
feat: complete _task_11.md
pedronauck Oct 26, 2025
f2a528b
feat: complete _task_13.md
pedronauck Oct 26, 2025
c1ce1e8
feat: complete _task_14.md
pedronauck Oct 26, 2025
2c53836
feat: complete _task_15.md
pedronauck Oct 26, 2025
21a5d76
feat: complete _task_16.md
pedronauck Oct 26, 2025
23c20b7
feat: complete _task_17.md
pedronauck Oct 26, 2025
6209077
feat: complete _task_18.md
pedronauck Oct 26, 2025
9c4df47
feat: complete _task_19.md
pedronauck Oct 26, 2025
4f67e4e
feat: complete _task_12.md
pedronauck Oct 26, 2025
d87e3d4
feat: complete _task_20.md
pedronauck Oct 26, 2025
78888a2
savepoint
pedronauck Oct 26, 2025
a9afceb
feat: complete _task_21.md
pedronauck Oct 26, 2025
ce80c4b
docs(repo): adjust agents rules
pedronauck Oct 26, 2025
1573f1f
feat: complete _task_22.md
pedronauck Oct 26, 2025
e4b6d61
feat: complete _task_23.md
pedronauck Oct 26, 2025
8fe7295
feat: complete _task_24.md
pedronauck Oct 26, 2025
9317788
feat: complete _task_25.md
pedronauck Oct 27, 2025
7a82bae
feat: complete _task_26.md
pedronauck Oct 27, 2025
4ca9cc0
feat: complete _task_27.md
pedronauck Oct 27, 2025
541acaa
feat: complete _task_28.md
pedronauck Oct 27, 2025
4c18b29
feat: complete _task_29.md
pedronauck Oct 27, 2025
c0bf82d
feat: complete _task_30.md
pedronauck Oct 27, 2025
f269516
feat: complete _task_31.md
pedronauck Oct 27, 2025
9113053
feat: complete _task_32.md
pedronauck Oct 27, 2025
38ff56c
feat: complete _task_33.md
pedronauck Oct 27, 2025
4f55355
feat: complete _task_34.md
pedronauck Oct 27, 2025
89a4fa7
feat: complete _task_35.md
pedronauck Oct 27, 2025
38c6b7b
feat: complete _task_36.md
pedronauck Oct 27, 2025
0a949a1
docs(repo): Remove runtimes from PRD sdk
pedronauck Oct 27, 2025
98fb71e
feat: complete _task_37.md
pedronauck Oct 27, 2025
8dc5f7f
feat: complete _task_38.md
pedronauck Oct 27, 2025
2a9bef4
feat: complete _task_39.md
pedronauck Oct 27, 2025
f1aa79e
fix(repo): Check script
pedronauck Oct 27, 2025
2c337ac
feat: complete _task_40.md
pedronauck Oct 27, 2025
e54834a
feat: complete _task_41.md
pedronauck Oct 27, 2025
53710a2
feat: complete _task_43.md
pedronauck Oct 27, 2025
0d26c31
feat: complete _task_44.md
pedronauck Oct 27, 2025
18ac2c9
feat: complete _task_45.md
pedronauck Oct 27, 2025
cfca9eb
feat: complete _task_46.md
pedronauck Oct 27, 2025
056a4f4
feat: complete _task_47.md
pedronauck Oct 27, 2025
692b194
feat: complete _task_48.md
pedronauck Oct 27, 2025
0c637a9
feat: complete _task_49.md
pedronauck Oct 27, 2025
9e10f6c
feat: complete _task_50.md
pedronauck Oct 27, 2025
59a4a85
feat: complete _task_51.md
pedronauck Oct 27, 2025
e09a157
feat: complete _task_53.md
pedronauck Oct 27, 2025
8679bc9
feat: complete _task_54.md
pedronauck Oct 27, 2025
cf59ec0
feat: complete _task_55.md
pedronauck Oct 27, 2025
c070a80
feat: complete _task_56.md
pedronauck Oct 27, 2025
4fa4a5d
feat: complete _task_60.md
pedronauck Oct 27, 2025
51850ea
feat: complete _task_61.md
pedronauck Oct 27, 2025
c9adfcd
feat: complete _task_62.md
pedronauck Oct 27, 2025
056be71
savepoint
pedronauck Oct 27, 2025
d4bedd2
savepoint
pedronauck Oct 27, 2025
58d4bc6
savepoint
pedronauck Oct 27, 2025
010190a
savepoint
pedronauck Oct 27, 2025
38dc38d
savepoint
pedronauck Oct 27, 2025
50c97ce
feat: complete _task_1.md - migrate model package to functional options
pedronauck Oct 27, 2025
ecbd52a
feat: complete _task_2.md - migrate schedule package to functional op…
pedronauck Oct 27, 2025
8756699
feat: complete _task_3.md - migrate mcp package to functional options
pedronauck Oct 27, 2025
9f5092f
feat: complete _task_4.md - migrate runtime package to functional opt…
pedronauck Oct 27, 2025
7cd53f0
feat: complete _task_5.md - migrate memory package to functional options
pedronauck Oct 27, 2025
4b40dc5
feat: complete _task_6.md - migrate tool package to functional options
pedronauck Oct 27, 2025
84f6063
feat: complete _task_7.md - migrate schema package to hybrid approach
pedronauck Oct 27, 2025
b75da38
feat: complete _task_8.md - migrate workflow package to functional op…
pedronauck Oct 27, 2025
99ea2a9
feat: complete _task_11.md - migrate project package to functional op…
pedronauck Oct 27, 2025
e0f30a3
docs: update master checklist - tasks 10.0 and 11.0 completed
pedronauck Oct 27, 2025
1c8b35c
feat: complete _task_12.md - create consolidated SDK2 examples
pedronauck Oct 27, 2025
b54cb38
savepoint
pedronauck Oct 28, 2025
feecc8b
savepoint
pedronauck Oct 29, 2025
8211e9e
savepoint
pedronauck Oct 31, 2025
2c2b3dc
Merge branch 'main' of github.com:compozy/compozy into pn/sdk
pedronauck Oct 31, 2025
e5fea5d
feat: complete _task_1.md
pedronauck Oct 31, 2025
cdb2201
feat: complete _task_3.md
pedronauck Oct 31, 2025
1239826
feat: complete _task_4.md
pedronauck Oct 31, 2025
192bfb1
feat: complete _task_5.md
pedronauck Oct 31, 2025
43f880f
feat: complete _task_6.md
pedronauck Oct 31, 2025
7d8f7ce
savepoint
pedronauck Oct 31, 2025
eb85777
savepoint
pedronauck Nov 1, 2025
f9fc87f
fix: resolve PR #316 issues [batch]
pedronauck Nov 1, 2025
1570984
fix: resolve PR #316 issues [batch]
pedronauck Nov 1, 2025
314bbdd
fix: resolve PR #316 issues [batch]
pedronauck Nov 1, 2025
d3cdc77
fix: resolve PR #316 issues 31-40
pedronauck Nov 1, 2025
859ae5a
fix: resolve PR #316 issues [batch]
pedronauck Nov 1, 2025
9e18dd3
fix: resolve PR #316 issues [batch]
pedronauck Nov 1, 2025
cb6791a
fix: resolve PR #316 issues [batch]
pedronauck Nov 1, 2025
18655d6
fix: resolve PR #316 issues 8-14
pedronauck Nov 1, 2025
72f95b7
fix: resolve PR #316 issues [batch]
pedronauck Nov 1, 2025
e156bf7
fix: resolve PR #316 issues [batch]
pedronauck Nov 1, 2025
1a0aa83
fix: resolve PR #316 batch issues
pedronauck Nov 1, 2025
8b048fd
fix: resolve PR #316 issues [batch]
pedronauck Nov 1, 2025
8c5d22d
fix: resolve PR #316 batch 13-16
pedronauck Nov 1, 2025
732ee6a
savepoint
pedronauck Nov 1, 2025
2c6a344
ci(repo): Fix warnings
pedronauck Nov 1, 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
23 changes: 23 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ jobs:
filters: |
backend:
- '**/*.go'
- 'magefile.go'
- 'go.mod'
- 'go.sum'
- 'Makefile'
Expand Down Expand Up @@ -198,6 +199,11 @@ jobs:
- name: Setup git-cliff for release tests
uses: ./.github/actions/setup-git-cliff

- name: Install Mage
run: |
echo "Installing Mage..."
go install github.com/magefile/mage@latest

- name: Run linting
run: |
echo "Running Go code quality checks..."
Expand All @@ -222,6 +228,23 @@ jobs:
make test
continue-on-error: false

- name: Run SDK benchmarks
run: |
echo "Running SDK benchmarks with memory stats..."
go test -run=^$ -bench=. -benchmem github.com/compozy/compozy/sdk/agent \
github.com/compozy/compozy/sdk/project \
github.com/compozy/compozy/sdk/workflow \
github.com/compozy/compozy/sdk/task \
github.com/compozy/compozy/sdk/knowledge \
github.com/compozy/compozy/sdk/memory \
github.com/compozy/compozy/sdk/compozy | tee bench.out
continue-on-error: false

- name: Check benchmark regressions
run: |
go run ./tools/benchcheck --baseline sdk/docs/performance-benchmarks.json --results bench.out
continue-on-error: false

- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
Expand Down
22 changes: 21 additions & 1 deletion .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,30 @@ jobs:
run: |
make test-coverage

- name: Generate SDK coverage report
run: |
go work sync
cd sdk
packages=$(go list ./... 2>/dev/null | grep -v '/examples')
if [ -z "$packages" ]; then
echo "no SDK packages discovered"
exit 1
fi
go test -covermode=atomic -coverprofile=coverage.out $packages

- name: Enforce SDK coverage
run: |
cd sdk
go tool cover -func=coverage.out | tee coverage.txt
awk '/^total:/ {gsub(/%/, "", $3); cov=$3+0; if (cov < 100) {printf "Coverage is %.2f%%, must be 100%%\n", cov; exit 1}} END {if (NR == 0) {print "No coverage summary found"; exit 1}}' coverage.txt
echo "SDK coverage requirement satisfied"

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
with:
files: ./coverage.out
files: |
./coverage.out
./sdk/coverage.out
flags: unittests
name: codecov-umbrella
fail_ci_if_error: true
Expand Down
15 changes: 9 additions & 6 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
PR_RELEASE_MODULE: github.com/compozy/releasepr@v0.0.15
GOTMPDIR: ${{ runner.temp }}/go-tmp

permissions:
contents: write
Expand All @@ -61,15 +60,15 @@ jobs:
github.event.head_commit.author.name != 'github-actions[bot]') ||
(github.event_name == 'workflow_dispatch')
runs-on: ubuntu-latest
env:
GOTMPDIR: ${{ env.GOTMPDIR }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true

- name: Prepare Go temporary directory
env:
GOTMPDIR: ${{ runner.temp }}/go-tmp
run: mkdir -p "$GOTMPDIR"

- uses: ./.github/actions/setup-go
Expand All @@ -86,6 +85,7 @@ jobs:
GITHUB_REPOSITORY: ${{ github.repository }}
GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}
INITIAL_VERSION: ${{ env.INITIAL_VERSION }}
GOTMPDIR: ${{ runner.temp }}/go-tmp
run: |
go run "${{ env.PR_RELEASE_MODULE }}" pr-release --force --enable-rollback --ci-output

Expand All @@ -97,15 +97,15 @@ jobs:
(startsWith(github.event.pull_request.title, 'ci(release): Release ') ||
startsWith(github.base_ref, 'release/v'))
runs-on: ubuntu-latest
env:
GOTMPDIR: ${{ env.GOTMPDIR }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true

- name: Prepare Go temporary directory
env:
GOTMPDIR: ${{ runner.temp }}/go-tmp
run: mkdir -p "$GOTMPDIR"

- uses: ./.github/actions/setup-go
Expand All @@ -130,6 +130,7 @@ jobs:
GITHUB_HEAD_REF: ${{ github.head_ref }}
GITHUB_ISSUE_NUMBER: ${{ github.event.pull_request.number }}
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
GOTMPDIR: ${{ runner.temp }}/go-tmp
run: go run "${{ env.PR_RELEASE_MODULE }}" dry-run --ci-output

# Job 3: Production release on merge
Expand All @@ -143,14 +144,15 @@ jobs:
timeout-minutes: 120
env:
DOCKER_CLI_EXPERIMENTAL: enabled
GOTMPDIR: ${{ env.GOTMPDIR }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true

- name: Prepare Go temporary directory
env:
GOTMPDIR: ${{ runner.temp }}/go-tmp
run: mkdir -p "$GOTMPDIR"

- name: Set up Go with caching
Expand Down Expand Up @@ -212,6 +214,7 @@ jobs:
AUR_KEY: ${{ secrets.AUR_KEY }}
COSIGN_EXPERIMENTAL: 1
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
GOTMPDIR: ${{ runner.temp }}/go-tmp

- name: Publish NPM Packages
env:
Expand Down
179 changes: 179 additions & 0 deletions .github/workflows/test-sdk.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
name: SDK Tests

on:
push:
branches:
- main
paths:
- "sdk/**"
- "go.work"
- ".github/workflows/test-sdk.yml"
pull_request:
branches:
- main
paths:
- "sdk/**"
- "go.work"
- ".github/workflows/test-sdk.yml"
workflow_dispatch:

env:
GO_VERSION: "1.25.2"

jobs:
unit:
name: SDK Unit Tests
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Go with caching
uses: ./.github/actions/setup-go
with:
go-version: ${{ env.GO_VERSION }}
install-tools: "false"

- name: Initialize Go workspace
run: |
rm -f go.work
go work init . ./sdk
go work sync

- name: Download SDK dependencies
run: |
cd sdk
go mod download
go mod verify

- name: Run unit tests with race detector and coverage
run: |
cd sdk
packages=$(go list ./... 2>/dev/null | grep -v '/examples')
if [ -z "$packages" ]; then
echo "no SDK packages discovered"
exit 1
fi
go test -race -covermode=atomic -coverprofile=coverage.out $packages

- name: Enforce 100% coverage
run: |
cd sdk
go tool cover -func=coverage.out | tee coverage.txt
awk '/^total:/ {gsub(/%/, "", $3); cov=$3+0; if (cov < 100) {printf "Coverage is %.2f%%, must be 100%%\n", cov; exit 1}} END {if (NR == 0) {print "No coverage summary found"; exit 1}}' coverage.txt
echo "Coverage requirement satisfied"

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
files: sdk/coverage.out
flags: sdk-unit
name: sdk-unit
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
override_branch: ${{ github.head_ref || github.ref_name }}
override_commit: ${{ github.event.pull_request.head.sha || github.sha }}

integration:
name: SDK Integration Tests
runs-on: ubuntu-latest
timeout-minutes: 40
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Go with caching
uses: ./.github/actions/setup-go
with:
go-version: ${{ env.GO_VERSION }}
install-tools: "false"

- name: Initialize Go workspace
run: |
rm -f go.work
go work init . ./sdk
go work sync

- name: Run integration tests
run: |
cd sdk
packages=$(go list ./... 2>/dev/null | grep -v '/examples')
if [ -z "$packages" ]; then
echo "no SDK packages discovered"
exit 0
fi
go test -count=1 -tags=integration $packages
env:
TESTCONTAINERS_RYUK_DISABLED: "false"
TESTCONTAINERS_CLEANUP_TIMEOUT: "120s"

benchmarks:
name: SDK Benchmarks
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Go with caching
uses: ./.github/actions/setup-go
with:
go-version: ${{ env.GO_VERSION }}
install-tools: "false"

- name: Initialize Go workspace
run: |
rm -f go.work
go work init . ./sdk
go work sync

- name: Run benchmarks
run: |
cd sdk
packages=$(go list ./... 2>/dev/null | grep -v '/examples')
if [ -z "$packages" ]; then
echo "no SDK packages discovered"
exit 0
fi
go test -run=^$ -bench=. -benchmem $packages | tee bench.out

- name: Detect benchmark regressions
run: |
go run ./tools/benchcheck --baseline sdk/docs/performance-benchmarks.json --results sdk/bench.out

- name: Upload benchmark results
uses: actions/upload-artifact@v4
with:
name: sdk-benchmarks
path: sdk/bench.out
retention-days: 7

lint:
name: SDK Lint
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Go with caching
uses: ./.github/actions/setup-go
with:
go-version: ${{ env.GO_VERSION }}
install-tools: "false"

- name: Initialize Go workspace
run: |
rm -f go.work
go work init . ./sdk
go work sync

- name: Run golangci-lint
uses: golangci/golangci-lint-action@v8
with:
version: latest
working-directory: sdk
args: --timeout=5m
3 changes: 3 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ linters:
- lll
- unparam
path: _test\.go
- linters:
- funlen
path: sdk/examples
- linters:
- dupl
path: pkg/pb
Expand Down
4 changes: 4 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ cat .cursor/rules/{go-coding-standards,architecture,test-standards,backwards-com
- **Linting:** `golangci-lint run --fix --allow-parallel-runners <scope>` (e.g., `./engine/agent/...`)
- **IF YOUR SCOPE** is `.../.` then you need to run `make test` and `make lint`

### When writting code

- **YOU MUST STRICTLY** follow the .cursor/rules/no-linebreaks.mdc or your code will be invalidate

**Enforcement:** Violating these standards results in immediate task rejection.
</critical>

Expand Down
4 changes: 4 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ cat .cursor/rules/{go-coding-standards,architecture,test-standards,backwards-com
- **Linting:** `golangci-lint run --fix --allow-parallel-runners <scope>` (e.g., `./engine/agent/...`)
- **IF YOUR SCOPE** is `.../.` then you need to run `make test` and `make lint`

### When writting code

- **YOU MUST STRICTLY** follow the .cursor/rules/no-linebreaks.mdc or your code will be invalidate

**Enforcement:** Violating these standards results in immediate task rejection.
</critical>

Expand Down
4 changes: 4 additions & 0 deletions GEMINI.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ cat .cursor/rules/{go-coding-standards,architecture,test-standards,backwards-com
- **Linting:** `golangci-lint run --fix --allow-parallel-runners <scope>` (e.g., `./engine/agent/...`)
- **IF YOUR SCOPE** is `.../.` then you need to run `make test` and `make lint`

### When writting code

- **YOU MUST STRICTLY** follow the .cursor/rules/no-linebreaks.mdc or your code will be invalidate

**Enforcement:** Violating these standards results in immediate task rejection.
</critical>

Expand Down
Loading
Loading