Skip to content

Releases: conduit-ui/connector

v1.1.0 — Rate limiting and intelligent retry

Choose a tag to compare

@jordanpartridge jordanpartridge released this 19 May 23:20
852e1ae

Adds opt-in GitHub API rate limiting with configurable retry and exponential backoff. Fully backward-compatible — no changes to existing consumers.

New public API

  • `ConduitUi\GitHubConnector\RateLimit\RateLimitConfig` — readonly value object configuring retry attempts, delay, exponential backoff, and throw behavior.
  • `ConduitUi\GitHubConnector\RateLimit\RateLimitState` — tracks GitHub rate limit headers (`X-RateLimit-Limit`, `Remaining`, `Reset`, `Used`) across every response.
  • `ConduitUi\GitHubConnector\RateLimit\HasRateLimiting` — trait providing retry logic integrated with Saloon's `HasTries`.
  • `Connector::withRateLimiting()` fluent enabler, plus an optional second constructor argument.

Behavior

  • State tracking is always on — `$connector->rateLimitState()` reflects the latest response headers regardless of whether retry is enabled.
  • Automatic retry is opt-in — pass a `RateLimitConfig` to the constructor or call `withRateLimiting()`.
  • Retries on rate-limit exhaustion (403 + `X-RateLimit-Remaining: 0`) and 5xx server errors.
  • Non-retryable errors (401, 404, 422, plain 403) throw immediately.

Usage

```php
use ConduitUi\GitHubConnector\Connector;
use ConduitUi\GitHubConnector\RateLimit\RateLimitConfig;

// Opt-in via constructor
$connector = new Connector($token, new RateLimitConfig(
retryAttempts: 3,
retryDelay: 1000,
useExponentialBackoff: true,
));

// Or fluently
$connector = (new Connector($token))->withRateLimiting();

// State is always available
$state = $connector->rateLimitState();
$state->getRemaining();
$state->isExceeded();
```

Downstream impact

Zero for existing consumers. `conduit-ui/pr` and other `^1.0` consumers automatically receive the new API but use none of it unless they call into it explicitly.

Closes #3.

v1.0.1 — Saloon 4 security upgrade

Choose a tag to compare

@jordanpartridge jordanpartridge released this 19 May 20:53
831ad4b

Security release. Upgrades Saloon to v4 and bumps two dev dependencies to clear all pending Composer audit advisories. No public API changes — drop-in upgrade from v1.0.0.

CVEs resolved

Package CVE Severity
saloonphp/saloon CVE-2026-33942 high — insecure deserialization in AccessTokenAuthenticator
saloonphp/saloon CVE-2026-33183 medium — fixture name path traversal
saloonphp/saloon CVE-2026-33182 medium — SSRF / credential leak via absolute URL overriding base URL
phpunit/phpunit (dev) CVE-2026-24765 unsafe deserialization in PHPT code coverage handling
symfony/process (dev) CVE-2026-24739 argument escaping under MSYS2/Git Bash

Changes

  • saloonphp/saloon ^3.10 → ^4.0
  • phpunit/phpunit 11.5.33 → 11.5.50 (transitive via Pest)
  • symfony/process v7.4.0 → v7.4.11 (transitive)

Downstream impact

Zero. The connector does not leak any Saloon type whose shape changed in v4. Consumers (e.g. `conduit-ui/pr`) using the `^1.0` constraint receive this update automatically via `composer update` and require no code changes.

Closes #28.

v1.0.0 - Connector: Foundation for Agent Operations

Choose a tag to compare

@jordanpartridge jordanpartridge released this 11 Dec 04:48

Connector v1.0.0 - Foundation for Deterministic Agent Operations

Overview

The Connector package is the foundational HTTP transport layer for the Conduit ecosystem. It provides bare-metal GitHub API operations that agents need to work deterministically with repositories, issues, and pull requests.

Why Connector Exists

Agents need predictable, testable GitHub operations - not fancy wrappers or opinionated abstractions. Connector is deliberately minimal:

  • Pure transport: HTTP + authentication, nothing more
  • No business logic: Domain operations live in higher-level packages (issues, prs, repos)
  • Deterministic: Same input → same output, always
  • Testable: 24 tests, 54 assertions, all passing

Architecture Position

```
┌─────────────────────────────────────────────┐
│ Agent Swarms (Docker) │
│ architect | implementer | tester | reviewer│
└─────────────────┬───────────────────────────┘
│
┌─────────────────▼───────────────────────────┐
│ Domain Packages │
│ conduit-ui/issues │
│ conduit-ui/prs │
│ conduit-ui/repos │
└─────────────────┬───────────────────────────┘
│
┌─────────────────▼───────────────────────────┐
│ conduit-ui/connector │
│ HTTP transport + GitHub auth │
│ Exception mapping + rate limiting │
└─────────────────┬───────────────────────────┘
│
▼
GitHub API v3
```

Changes from github-connector

This release completes the rename from `github-connector` to `connector`:

Breaking Changes

  • Package: `conduit-ui/github-connector` → `conduit-ui/connector`
  • Class: `GithubConnector` → `Connector`
  • Interface: `GithubConnectorInterface` → `ConnectorInterface`
  • Namespace: `ConduitUI\GithubConnector` → `ConduitUi\GitHubConnector`

Migration

```php
// Before
use ConduitUI\GithubConnector\GithubConnector;
$connector = new GithubConnector($token);

// After
use ConduitUi\GitHubConnector\Connector;
$connector = new Connector($token);
```

Features

  • Saloon v3 Integration: Modern HTTP client with excellent DX
  • GitHub Authentication: Token-based auth with proper headers
  • Exception Hierarchy:
    • `AuthenticationException` (401)
    • `ValidationException` (422)
    • `ResourceNotFoundException` (404)
    • `RateLimitException` (403 with rate limit headers)
    • `ForbiddenException` (403 without rate limit)
    • `ServerException` (5xx)
  • Rate Limit Detection: Automatic detection from response headers
  • PSR-12 Compliant: Clean, consistent code style
  • PHPStan Max Level: Zero static analysis errors

Requirements

  • PHP 8.2, 8.3, or 8.4
  • Saloon ^3.10

Installation

```bash
composer require conduit-ui/connector
```

Usage

```php
use ConduitUi\GitHubConnector\Connector;

$connector = new Connector(env('GITHUB_TOKEN'));

// GET request
$response = $connector->send(
$connector->get('/repos/owner/repo')
);

// POST request
$response = $connector->send(
$connector->post('/repos/owner/repo/issues', [
'title' => 'New issue',
'body' => 'Issue description'
])
);
```

Conduit Strategy

The Vision

Conduit is a developer liberation platform - escape corporate tool tyranny with component-based, AI-orchestrated workflows. The ecosystem consists of:

  1. connector (this package) - HTTP transport foundation
  2. issues/prs/repos - Domain operations built on connector
  3. the-shit/agents - Laravel Zero CLI for agent deployment
  4. the-shit/chat - Human orchestration layer

Agent Architecture (Joe Justice Principles)

  • Swarm methodology: Multiple agents attack problems in parallel
  • Mob programming for AI: Architect designs, implementer builds, tester validates, reviewer approves
  • Humans as orchestrators: Strategic guidance, not line-by-line coding
  • Bad PR > No PR: Ship fast, iterate faster

Musk's Algorithm Applied

  1. Question the requirement: Do we need this abstraction?
  2. Delete: Remove unnecessary complexity (github-zero → gh CLI)
  3. Simplify: Single-word package names, minimal APIs
  4. Accelerate: Parallel agent execution
  5. Automate: Event-driven orchestration

Test Results

```
PASS Tests\Unit\ConnectorTest (7 tests)
PASS Tests\Unit\ConnectorExceptionMappingTest (7 tests)
PASS Tests\Unit\ConnectorRateLimitHeaderTest (5 tests)
PASS Tests\Unit\Exceptions\GitHubExceptionTest (5 tests)

Tests: 24 passed (54 assertions)
Duration: 0.19s
```

What's Next

  • v1.1.0: GraphQL support for complex queries
  • v1.2.0: Webhook signature verification
  • v2.0.0: Multi-provider support (GitLab, Bitbucket)

Contributing

Issues and PRs welcome at conduit-ui/connector


Part of the Conduit ecosystem - Your personal developer API gateway

🚀 Alpha Release v1.0.0-alpha.1

Pre-release

Choose a tag to compare

@jordanpartridge jordanpartridge released this 27 Jun 07:41
d015f20

🚀 First Alpha Release

ConduitUi GitHub Connector - A professional GitHub API connector built with Saloon HTTP client.

✨ Features

  • 🔐 Token Authentication: Secure GitHub personal access token support
  • 🌐 Full HTTP Methods: Complete support for GET, POST, PUT, PATCH, DELETE
  • ⚡ Saloon Integration: Built on the powerful Saloon HTTP client
  • 🧪 Comprehensive Tests: 11 Pest tests with 100% pass rate
  • 🔄 CI/CD Pipeline: Automated testing on PHP 8.2, 8.3, 8.4
  • 📊 Static Analysis: PHPStan level 4 validation
  • 🎨 Code Quality: Laravel Pint formatting
  • 📚 Documentation: Professional docstrings throughout

📦 Installation

composer require conduit-ui/github-connector:^1.0.0-alpha.1

🚀 Usage

use ConduitUi\GitHubConnector\GithubConnector;

$connector = new GithubConnector('your-github-token');

// Make API requests
$repos = $connector->get('/user/repos');
$newRepo = $connector->post('/user/repos', ['name' => 'my-repo']);

⚠️ Alpha Notice

This is an alpha release for early testing and feedback. The API is stable but may change before the 1.0 release.

🤝 Contributing

Found an issue? Have feedback? Please open an issue or submit a PR!