diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..7d9abee --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +version: 2 +updates: + - package-ecosystem: "swift" + directory: "/" + schedule: + interval: "weekly" + + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0209b92..a88e696 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,7 +24,7 @@ jobs: persist-credentials: false - name: Install Mint run: brew install mint - - uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 + - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: ~/.mint key: mint-${{ hashFiles('Mintfile') }} @@ -43,7 +43,7 @@ jobs: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - - uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 + - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: .build key: macos-spm-${{ hashFiles('Package.resolved', 'Package.swift') }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..2f8cc0a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,54 @@ +# Contributing to AgentRunKit + +Thanks for your interest in contributing. + +## Setup + +```bash +# Install tools +make bootstrap + +# Verify everything works +make check +``` + +`make bootstrap` installs [Mint](https://github.com/yonaskolb/Mint) and the pinned versions of SwiftFormat and SwiftLint from the `Mintfile`. + +## Before Submitting a PR + +Run the full gate: + +```bash +make check +``` + +This runs `swiftformat`, `swiftlint --strict`, and `swift test`. CI runs the same checks — if `make check` passes locally, CI will pass. + +## Code Style + +- SwiftFormat and SwiftLint enforce the style. Don't fight the tools. +- No comments or docstrings unless explaining a non-obvious *why*. +- No backward-compatibility hacks. Prefer the most elegant solution. +- All public types must be `Sendable`. + +See `CLAUDE.md` for the full coding standards. + +## Commit Messages + +Format: `verb(scope): description` + +``` +add(gemini): google gemini client with streaming and tool calling +fix(auth): prevent token refresh race on concurrent requests +refactor(api): extract shared validation into middleware +``` + +Single sentence, lowercase, imperative mood, no trailing period. + +## Tests + +Every change needs tests. Test behavior, not implementation details. Run with: + +```bash +swift test --filter YourTestSuite +``` diff --git a/README.md b/README.md index 669218c..a18d4ab 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@