Skip to content
Open
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
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
permissions:
contents: read
id-token: write
runs-on: ${{ github.repository == 'stainless-sdks/dedalus-ruby' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
runs-on: ${{ startsWith(github.repository, 'stainless-sdks/') && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: |-
github.repository == 'stainless-sdks/dedalus-ruby' &&
(github.event_name == 'push' || github.event.pull_request.head.repo.fork) && (github.event_name != 'push' || github.event.head_commit.message != 'codegen metadata')
Expand Down Expand Up @@ -56,7 +56,7 @@ jobs:
lint:
timeout-minutes: 10
name: lint
runs-on: ${{ github.repository == 'stainless-sdks/dedalus-ruby' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
runs-on: ${{ startsWith(github.repository, 'stainless-sdks/') && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork

steps:
Expand All @@ -73,7 +73,7 @@ jobs:
test:
timeout-minutes: 10
name: test
runs-on: ${{ github.repository == 'stainless-sdks/dedalus-ruby' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
runs-on: ${{ startsWith(github.repository, 'stainless-sdks/') && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Expand Down
31 changes: 31 additions & 0 deletions .github/workflows/publish-gem.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# This workflow is triggered when a GitHub release is created.
# It can also be run manually to re-publish to rubygems.org in case it failed for some reason.
# You can run this workflow by navigating to https://www.github.com/dedalus-labs/dedalus-ruby/actions/workflows/publish-gem.yml
name: Publish Gem
on:
workflow_dispatch:

release:
types: [published]

jobs:
publish:
name: publish
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Set up Ruby
uses: ruby/setup-ruby@c4e5b1316158f92e3d49443a9d58b31d25ac0f8f # v1.306.0
with:
bundler-cache: false
- run: |-
bundle install

- name: Publish to RubyGems.org
run: |
bash ./bin/publish-gem
env:
# `RUBYGEMS_HOST` is only required for private gem repositories, not https://rubygems.org
RUBYGEMS_HOST: ${{ secrets.DEDALUS_RUBYGEMS_HOST || secrets.RUBYGEMS_HOST }}
GEM_HOST_API_KEY: ${{ secrets.DEDALUS_GEM_HOST_API_KEY || secrets.GEM_HOST_API_KEY }}
3 changes: 3 additions & 0 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
".": "0.1.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 32
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/dedalus-labs/dedalus-8612890eae5e55f9236ad984991f4dc3712138acaa0005be3de43dabc6cd54d4.yml
openapi_spec_hash: ccb02923079d91569a17162c88da590b
config_hash: 8b2f74aaf8a9b5a01242e7c23f721082
configured_endpoints: 17
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/dedalus-labs/dedalus-c0e28b234478af75f61bcf42f5f32818d96ec93b1d8239fa0ff1c801c0e4b64f.yml
openapi_spec_hash: a70c391bb0957fc90c5dbf251de8afe4
config_hash: fa45a5bf161b7291cb5ea20c2da83cc0
27 changes: 27 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Changelog

## 0.1.0 (2026-09-01)

Full Changelog: [v0.0.1...v0.1.0](https://github.com/dedalus-labs/dedalus-ruby/compare/v0.0.1...v0.1.0)

### ⚠ BREAKING CHANGES

* **api:** regenerate SDKs from the current public DCS contract

### Features

* **api:** regenerate SDKs from the current public DCS contract ([0cdcfc6](https://github.com/dedalus-labs/dedalus-ruby/commit/0cdcfc6fa61874184627c1d965acfcd3d92552ff))
* **stlc:** configurable CI runner and private-production-repo support in workflow templates ([aa8797c](https://github.com/dedalus-labs/dedalus-ruby/commit/aa8797c4cd9df4af4a413907ca8db82bdf87e787))


### Bug Fixes

* **client:** send content-type header for requests with an omitted optional body ([d50a2d4](https://github.com/dedalus-labs/dedalus-ruby/commit/d50a2d49e802d1b408dad1db6f363a189b70566f))


### Chores

* configure new SDK language ([9f8fd1e](https://github.com/dedalus-labs/dedalus-ruby/commit/9f8fd1e8883edce6a808ef697f350be22f1af5b2))
* **internal:** allow the mock server port to be set with STAINLESS_MOCK_PORT ([df0ec2c](https://github.com/dedalus-labs/dedalus-ruby/commit/df0ec2c8751dbd78a197efeb31e6ef8c288f0a48))
* **internal:** bound formatter parallelism to CPU count ([7dd40b9](https://github.com/dedalus-labs/dedalus-ruby/commit/7dd40b9359fa15428cc1c009875a76e1a67e74ba))
* update SDK settings ([d5e3756](https://github.com/dedalus-labs/dedalus-ruby/commit/d5e3756283e2b3c690a66feb564a83908ff94348))
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,13 @@ If you’d like to use the repository from source, you can either install from g
To install via git in your `Gemfile`:

```ruby
gem "dedalus", git: "https://github.com/stainless-sdks/dedalus-ruby"
gem "dedalus", git: "https://github.com/dedalus-labs/dedalus-ruby"
```

Alternatively, reference local copy of the repo:

```bash
$ git clone -- 'https://github.com/stainless-sdks/dedalus-ruby' '<path-to-repo>'
$ git clone -- 'https://github.com/dedalus-labs/dedalus-ruby' '<path-to-repo>'
```

```ruby
Expand Down
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ GIT
PATH
remote: .
specs:
dedalus (0.0.1)
dedalus (0.1.0)
cgi
connection_pool

Expand Down
40 changes: 15 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Dedalus Ruby API library

The Dedalus Ruby library provides convenient access to the Dedalus REST API from any Ruby 3.2.0+ application. It ships with comprehensive types & docstrings in Yard, RBS, and RBI – [see below](https://github.com/stainless-sdks/dedalus-ruby#Sorbet) for usage with Sorbet. The standard library's `net/http` is used as the HTTP transport, with connection pooling via the `connection_pool` gem.
The Dedalus Ruby library provides convenient access to the Dedalus REST API from any Ruby 3.2.0+ application. It ships with comprehensive types & docstrings in Yard, RBS, and RBI – [see below](https://github.com/dedalus-labs/dedalus-ruby#Sorbet) for usage with Sorbet. The standard library's `net/http` is used as the HTTP transport, with connection pooling via the `connection_pool` gem.

It is generated with [Stainless](https://www.stainless.com/).

Expand All @@ -23,10 +23,14 @@ The REST API documentation can be found on [docs.dedaluslabs.ai](https://docs.de

To use this gem, install via Bundler by adding the following to your application's `Gemfile`:

<!-- x-release-please-start-version -->

```ruby
gem "dedalus", "~> 0.0.1"
gem "dedalus", "~> 0.1.0"
```

<!-- x-release-please-end -->

## Usage

```ruby
Expand All @@ -42,18 +46,6 @@ machine = dedalus.machines.create(memory_mib: 2048, storage_gib: 10, vcpu: 1)
puts(machine.machine_id)
```

### Streaming

We provide support for streaming responses using Server-Sent Events (SSE).

```ruby
stream = dedalus.machines.watch_streaming

stream.each do |machine|
puts(machine.machine_id)
end
```

### Pagination

List methods in the Dedalus API are paginated.
Expand Down Expand Up @@ -244,25 +236,23 @@ dedalus.machines.create(**params)
Since this library does not depend on `sorbet-runtime`, it cannot provide [`T::Enum`](https://sorbet.org/docs/tenum) instances. Instead, we provide "tagged symbols" instead, which is always a primitive at runtime:

```ruby
# :http
puts(Dedalus::Machines::PreviewCreateParams::Protocol::HTTP)
# :accepted
puts(Dedalus::LifecycleStatus::Phase::ACCEPTED)

# Revealed type: `T.all(Dedalus::Machines::PreviewCreateParams::Protocol, Symbol)`
T.reveal_type(Dedalus::Machines::PreviewCreateParams::Protocol::HTTP)
# Revealed type: `T.all(Dedalus::LifecycleStatus::Phase, Symbol)`
T.reveal_type(Dedalus::LifecycleStatus::Phase::ACCEPTED)
```

Enum parameters have a "relaxed" type, so you can either pass in enum constants or their literal value:

```ruby
# Using the enum constants preserves the tagged type information:
dedalus.machines.previews.create(
protocol: Dedalus::Machines::PreviewCreateParams::Protocol::HTTP,
Dedalus::LifecycleStatus.new(
phase: Dedalus::LifecycleStatus::Phase::ACCEPTED,
# …
)

# Literal values are also permissible:
dedalus.machines.previews.create(
protocol: :http,
Dedalus::LifecycleStatus.new(
phase: :accepted,
# …
)
```
Expand All @@ -279,4 +269,4 @@ Ruby 3.2.0 or higher.

## Contributing

See [the contributing documentation](https://github.com/stainless-sdks/dedalus-ruby/tree/main/CONTRIBUTING.md).
See [the contributing documentation](https://github.com/dedalus-labs/dedalus-ruby/tree/main/CONTRIBUTING.md).
7 changes: 6 additions & 1 deletion Rakefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# frozen_string_literal: true

require "etc"
require "pathname"
require "securerandom"
require "shellwords"
Expand Down Expand Up @@ -37,7 +38,11 @@ multitask(:test) do
ruby(*%w[-w -e], rb, verbose: false) { fail unless _1 }
end

xargs = %w[xargs --no-run-if-empty --null --max-procs=0 --max-args=300 --]
# Cap parallelism at the CPU count. `--max-procs=0` spawns one process per
# 300-file batch with no upper bound; on large SDKs (thousands of files) that
# oversubscribes CPUs and stacks up rubocop processes, exhausting memory and
# slowing CI to the point of timing out.
xargs = %W[xargs --no-run-if-empty --null --max-procs=#{Etc.nprocessors} --max-args=300 --]
ruby_opt = {"RUBYOPT" => [ENV["RUBYOPT"], "--encoding=UTF-8"].compact.join(" ")}

filtered = ->(ext, dirs) do
Expand Down
2 changes: 1 addition & 1 deletion dedalus.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Gem::Specification.new do |s|
s.email = "oss@dedaluslabs.ai"
s.homepage = "https://gemdocs.org/gems/dedalus"
s.metadata["homepage_uri"] = s.homepage
s.metadata["source_code_uri"] = "https://github.com/stainless-sdks/dedalus-ruby"
s.metadata["source_code_uri"] = "https://github.com/dedalus-labs/dedalus-ruby"
s.metadata["rubygems_mfa_required"] = false.to_s
s.required_ruby_version = ">= 3.2.0"

Expand Down
41 changes: 1 addition & 40 deletions lib/dedalus.rb
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@
require_relative "dedalus/internal/type/hash_of"
require_relative "dedalus/internal/type/base_model"
require_relative "dedalus/internal/type/base_page"
require_relative "dedalus/internal/type/base_stream"
require_relative "dedalus/internal/type/request_parameters"
require_relative "dedalus/internal"
require_relative "dedalus/request_options"
Expand All @@ -53,27 +52,20 @@
require_relative "dedalus/internal/transport/base_client"
require_relative "dedalus/internal/transport/pooled_net_requester"
require_relative "dedalus/client"
require_relative "dedalus/internal/stream"
require_relative "dedalus/internal/cursor_page"
require_relative "dedalus/models/create_params"
require_relative "dedalus/models/machines/ssh_session_create_params"
require_relative "dedalus/models/update_params"
require_relative "dedalus/models/lifecycle_status"
require_relative "dedalus/models/machine"
require_relative "dedalus/models/machine_compute_usage"
require_relative "dedalus/models/machine_compute_usage_row"
require_relative "dedalus/models/machine_create_params"
require_relative "dedalus/models/machine_delete_params"
require_relative "dedalus/models/machine_list"
require_relative "dedalus/models/machine_list_item"
require_relative "dedalus/models/machine_list_params"
require_relative "dedalus/models/machine_retrieve_params"
require_relative "dedalus/models/machines/artifact"
require_relative "dedalus/models/machines/artifact_delete_params"
require_relative "dedalus/models/machines/artifact_list"
require_relative "dedalus/models/machines/artifact_list_params"
require_relative "dedalus/models/machine_retrieve_response"
require_relative "dedalus/models/machines/artifact_ref"
require_relative "dedalus/models/machines/artifact_retrieve_params"
require_relative "dedalus/models/machines/execution"
require_relative "dedalus/models/machines/execution_create_params"
require_relative "dedalus/models/machines/execution_delete_params"
Expand All @@ -85,12 +77,6 @@
require_relative "dedalus/models/machines/execution_output"
require_relative "dedalus/models/machines/execution_output_params"
require_relative "dedalus/models/machines/execution_retrieve_params"
require_relative "dedalus/models/machines/preview"
require_relative "dedalus/models/machines/preview_create_params"
require_relative "dedalus/models/machines/preview_delete_params"
require_relative "dedalus/models/machines/preview_list"
require_relative "dedalus/models/machines/preview_list_params"
require_relative "dedalus/models/machines/preview_retrieve_params"
require_relative "dedalus/models/machines/ssh_connection"
require_relative "dedalus/models/machines/ssh_create_params"
require_relative "dedalus/models/machines/ssh_delete_params"
Expand All @@ -99,35 +85,10 @@
require_relative "dedalus/models/machines/ssh_retrieve_params"
require_relative "dedalus/models/machines/ssh_session"
require_relative "dedalus/models/machines/ssh_session_list"
require_relative "dedalus/models/machines/terminal"
require_relative "dedalus/models/machines/terminal_client_event"
require_relative "dedalus/models/machines/terminal_closed_event"
require_relative "dedalus/models/machines/terminal_connect_params"
require_relative "dedalus/models/machines/terminal_create_params"
require_relative "dedalus/models/machines/terminal_delete_params"
require_relative "dedalus/models/machines/terminal_error_event"
require_relative "dedalus/models/machines/terminal_input_event"
require_relative "dedalus/models/machines/terminal_list"
require_relative "dedalus/models/machines/terminal_list_params"
require_relative "dedalus/models/machines/terminal_output_event"
require_relative "dedalus/models/machines/terminal_resize_event"
require_relative "dedalus/models/machines/terminal_retrieve_params"
require_relative "dedalus/models/machines/terminal_server_event"
require_relative "dedalus/models/machine_sleep_params"
require_relative "dedalus/models/machine_storage_usage"
require_relative "dedalus/models/machine_storage_usage_row"
require_relative "dedalus/models/machine_update_params"
require_relative "dedalus/models/machine_wake_params"
require_relative "dedalus/models/machine_watch_params"
require_relative "dedalus/models/org_usage"
require_relative "dedalus/models/usage_machine_compute_params"
require_relative "dedalus/models/usage_machine_storage_params"
require_relative "dedalus/models/usage_retrieve_params"
require_relative "dedalus/models"
require_relative "dedalus/resources/machines"
require_relative "dedalus/resources/machines/artifacts"
require_relative "dedalus/resources/machines/executions"
require_relative "dedalus/resources/machines/previews"
require_relative "dedalus/resources/machines/ssh"
require_relative "dedalus/resources/machines/terminals"
require_relative "dedalus/resources/usage"
4 changes: 0 additions & 4 deletions lib/dedalus/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,6 @@ class Client < Dedalus::Internal::Transport::BaseClient
# @return [String, nil]
attr_reader :dedalus_org_id

# @return [Dedalus::Resources::Usage]
attr_reader :usage

# @return [Dedalus::Resources::Machines]
attr_reader :machines

Expand Down Expand Up @@ -118,7 +115,6 @@ def initialize(
idempotency_header: idempotency_header
)

@usage = Dedalus::Resources::Usage.new(client: self)
@machines = Dedalus::Resources::Machines.new(client: self)
end
end
Expand Down
51 changes: 0 additions & 51 deletions lib/dedalus/internal/stream.rb

This file was deleted.

Loading
Loading