Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @moonyue-w
35 changes: 35 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
## Summary

<!-- What changed? -->

## Why

<!-- Why is this change needed? -->

## Verification

- [ ] `make lint`
- [ ] `make build`
- [ ] `make test`
- [ ] `make docs-check`
- [ ] `go build ./examples/...`
- [ ] Account-backed integration tests run, or not required

Commands and results:

```text

```

## Impact

- [ ] Public API or behavior changed
- [ ] Generated API documentation updated
- [ ] Forward/Managed contract fixtures updated
- [ ] Python and TypeScript parity considered
- [ ] Migration notes added for a breaking change
- [ ] No credentials, `.env.live`, logs, or generated test output committed

Additional context:

<!-- Link related issues/PRs and explain any unchecked item. -->
57 changes: 57 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Contributing

Thank you for contributing to the Qoder Cloud Agents Go SDK.

## Development workflow

1. Create a focused branch from the latest `main`.
2. Keep each pull request limited to one independently reviewable change.
3. Use Conventional Commits, for example `fix(forward): preserve request id`.
4. Open a pull request and wait for all required checks before merging.

GitHub `main` is the source of truth. Do not develop against or copy changes from the internal CI mirror.

## Setup and checks

Use Go 1.23 or newer.

```bash
go mod download
make lint
make build
make test
make docs-check
go build ./examples/...
```

`make test` runs the offline unit and contract suites. It must not require network access or credentials.

## Test layers

- **Unit tests** cover transport, errors, pagination, streaming, serialization, credentials, and helpers. Run `make test-unit`.
- **Contract tests** verify HTTP methods, paths, headers, request bodies, and response decoding with local transports. Run `make test-contract`.
- **Integration tests** exercise account-backed resource lifecycles. Copy `.env.live.example` to `.env.live`, use a dedicated test account, then run `make test-live-all`.
- **E2E tests** execute real models and tools. They additionally require the documented model and execution gates, then run with `make test-e2e`.
- **Examples** are runnable documentation. Tests must not import helpers from `examples/`; verify examples with `go build ./examples/...`.

Never commit `.env.live`, tokens, credentials, generated logs, or test output. Live tests must register cleanup immediately after creating a resource.

## API and contract changes

When adding or changing an endpoint:

1. Update the relevant `forward/` or `managed/` implementation and public types.
2. Update the applicable fixtures under `forward/testdata/` or `managed/testdata/`.
3. Add focused unit and contract coverage, including failure behavior.
4. Regenerate API documentation with `make docs` and verify it with `make docs-check`.
5. Call out the corresponding Python and TypeScript work in the pull request, or explain why the change is language-specific.

The fixtures are maintained manually. A passing fixture test proves consistency with this repository, not automatically with service routes or the other SDKs.

## Compatibility conventions

The SDK intentionally keeps Qoder-branded `X-Qoder-*` metadata headers and resumable session-event streams. Preserve those extensions unless the change explicitly revises the public contract. Breaking public API changes require a minor-version release while the SDK remains pre-1.0 and must include migration notes.

## Pull requests

Complete the pull request template, include exact verification commands and results, and identify public API, documentation, integration-test, and cross-SDK effects. Do not combine unrelated refactors with behavior changes.
Loading