Skip to content

ci: add GitHub Actions CI for Linux/macOS/Windows#5

Merged
Sunrisepeak merged 31 commits intomainfrom
ci/github-actions
Mar 10, 2026
Merged

ci: add GitHub Actions CI for Linux/macOS/Windows#5
Sunrisepeak merged 31 commits intomainfrom
ci/github-actions

Conversation

@Sunrisepeak
Copy link
Member

Summary

  • Add GitHub Actions workflow with 3 platform jobs (ubuntu-latest, macos-latest, windows-latest)
  • Use xlings for one-command environment setup (xlings install configures xmake + toolchains)
  • Run all offline tests on each platform
  • Also includes: provider directory restructure, error types, updated examples, new tests

Test plan

  • CI passes on Linux (ubuntu-latest)
  • CI passes on macOS (macos-latest)
  • CI passes on Windows (windows-latest)
  • All 7 offline tests pass on each platform

🤖 Generated with Claude Code

Sunrisepeak and others added 30 commits March 10, 2026 01:47
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Guard connect() against re-entry on already-connected socket
- Add POLLERR/POLLHUP to poll_fd revents check
- Rename kInvalidSocket to INVALID_SOCKET_FD per mcpp style

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- URL parsing, HTTP/1.1 request building, response parsing
- Chunked transfer-encoding decoding
- Connection pool (map<host:port, TlsSocket>)
- Fix: check user headers before auto-adding Host/Content-Length/Connection
- Fix: TlsSocket::wait_readable checks mbedtls internal buffer first

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add send_stream() method that reads response body incrementally,
decodes chunked transfer-encoding on the fly, and feeds data through
SseParser to a user-provided callback. The callback returns false to
stop receiving events early.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add proxy module with URL parsing and CONNECT tunnel establishment.
Refactor TlsSocket with connect_over() to layer TLS on pre-connected
sockets. Integrate proxy into HttpClient send/send_stream paths.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…arams

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace the old libcurl-based OpenAI client with a new Provider-based
implementation using tinyhttps. Implements full message serialization,
payload construction, response parsing, streaming via SSE, and embeddings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Move provider.cppm, openai.cppm, anthropic.cppm into src/providers/
- Add ApiError and ConnectionError in src/errors.cppm
- Add live API tests (OpenAI, Anthropic), tool calling, structured output, embeddings tests
- Add integration test verifying concepts and type system
- Update examples to new Client<Provider> API
- Clean up xmake.lua (global c++23/modules policy)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Uses xlings for one-command environment setup (xmake + toolchains).
Runs offline tests on all three platforms.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Sunrisepeak Sunrisepeak merged commit 4ffd87a into main Mar 10, 2026
3 checks passed
@Sunrisepeak Sunrisepeak deleted the ci/github-actions branch March 10, 2026 09:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant