daytona 0.169.0 → 0.171.0.rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 28e1fc1ed1de12c3b6b75ea5139f017a47a05ac1eccfeafe12bf83ca05630dce
4
- data.tar.gz: 3c90d34114f7d88886805c4d930598f80e1383f41944665854cf7b2f28b15a6b
3
+ metadata.gz: 5471eba0ff200757c6372f92f80f5369c48a17cddb2dcf46f1c75f802a5e4519
4
+ data.tar.gz: d3ce842087c3ce1a84ee083d510650e2cd64ff3c516ab0240a967e9a59047810
5
5
  SHA512:
6
- metadata.gz: b909a3cffec0bcafee0ad2014f599451ea7ca4b24ca06594c0089b588f9df402d6d8bbcd2f7c8509d2932386b59f387b42551d91226f92b8ee97d9ae19ab69ee
7
- data.tar.gz: 0decb6b358697e64700b7c6f192644b59fd939fa9393f4fa906464c17d75c0c4dd6e0273231202a4e38fdb650eb89d30aeafb0eb0c5ccc1dbf666eb2a34c161d
6
+ metadata.gz: 15fa69f937b6c13f5ae96509ae0ab2e31be713075f7247fd3d3a71c1078771aa775f762a00ab9c6e84cd78688ac7cda9973ca0c12bced64894d758100758f5bc
7
+ data.tar.gz: b5cccda24d664d4ecc74a01fe891e12310a51d20152dfbae8be15255da5ed4244c23cd7e77250cbb8405ba98871e25e40125a0f1538615124d2e3f9a3e599710
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  require 'json'
@@ -100,15 +103,11 @@ module Daytona
100
103
  'Accept' => 'application/json'
101
104
  )
102
105
 
103
- # Use queue for synchronization
104
106
  completion_queue = Queue.new
105
- interpreter = self # Capture self for use in blocks
106
- last_message_time = Time.now
107
- message_mutex = Mutex.new
107
+ interpreter = self
108
108
 
109
109
  puts "[DEBUG] Connecting to WebSocket: #{ws_url}" if ENV['DEBUG']
110
110
 
111
- # Connect to WebSocket and execute
112
111
  ws = WebSocket::Client::Simple.connect(ws_url, headers:)
113
112
 
114
113
  ws.on :open do
@@ -117,8 +116,6 @@ module Daytona
117
116
  end
118
117
 
119
118
  ws.on :message do |msg|
120
- message_mutex.synchronize { last_message_time = Time.now }
121
-
122
119
  puts "[DEBUG] Received message (length=#{msg.data.length}): #{msg.data.inspect[0..200]}" if ENV['DEBUG']
123
120
 
124
121
  interpreter.send(:handle_message, msg.data, result, on_stdout, on_stderr, on_error, completion_queue)
@@ -143,72 +140,59 @@ module Daytona
143
140
  end
144
141
  end
145
142
 
146
- # Wait for completion signal with idle timeout
147
- # If timeout is specified, wait longer to detect actual timeout errors
148
- # Otherwise use short idle timeout for normal completion
149
- idle_timeout = timeout ? (timeout + 2.0) : 1.0
150
- max_wait = (timeout || 300) + 3 # Add buffer to configured timeout
143
+ no_timeout = timeout.is_a?(Numeric) && timeout <= 0
144
+ max_wait = no_timeout ? nil : (timeout || 600) + 3
151
145
  start_time = Time.now
152
146
  completion_reason = nil
153
147
 
154
- # Wait for completion or close event
155
148
  loop do
156
- begin
157
- completion = completion_queue.pop(true) # non-blocking
158
- puts "[DEBUG] Got completion signal: #{completion[:type]}" if ENV['DEBUG']
159
-
160
- # Control message (completed/interrupted) = normal completion
161
- if completion[:type] == :completed
162
- completion_reason = :completed
163
- break
164
- # If it's an error from close event (like timeout), raise it
165
- elsif completion[:type] == :error_from_close
166
- error_msg = completion[:error]
167
- # Raise TimeoutError for timeout cases, regular Error for others
168
- if error_msg.include?('timed out') || error_msg.include?('Execution timed out')
169
- raise Sdk::TimeoutError, error_msg
170
- end
171
-
172
- raise Sdk::Error, error_msg
173
-
174
- # Close event during execution (before control message) = likely timeout or error
175
- elsif completion[:type] == :close
176
- elapsed = Time.now - start_time
177
- # If we got close near the timeout, it's likely a timeout
178
- if timeout && elapsed >= timeout && elapsed < (timeout + 2)
179
- raise Sdk::TimeoutError,
180
- 'Execution timed out: operation exceeded the configured `timeout`. Provide a larger value if needed.'
181
- end
182
- # Otherwise normal close
183
- completion_reason = :close
184
- break
185
- # WebSocket errors
186
- elsif completion[:type] == :error && !completion[:error].message.include?('stream closed')
187
- raise Sdk::Error, "WebSocket error: #{completion[:error].message}"
149
+ if max_wait
150
+ remaining = max_wait - (Time.now - start_time)
151
+ if remaining <= 0
152
+ ws.close
153
+ raise Sdk::TimeoutError,
154
+ 'Execution timed out: operation exceeded the configured `timeout`. Provide a larger value if needed.'
188
155
  end
189
- rescue ThreadError
190
- # Queue is empty, check idle timeout
191
156
  end
192
157
 
193
- # Check idle timeout (no messages for N seconds = completion)
194
- time_since_last_message = message_mutex.synchronize { Time.now - last_message_time }
195
- if time_since_last_message > idle_timeout
196
- puts "[DEBUG] Idle timeout reached (#{idle_timeout}s), assuming completion" if ENV['DEBUG']
197
- completion_reason = :idle_complete
198
- break
199
- end
158
+ completion = completion_queue.pop(timeout: max_wait ? remaining : nil)
200
159
 
201
- # Check for absolute timeout (safety net)
202
- if Time.now - start_time > max_wait
160
+ if completion.nil?
203
161
  ws.close
204
162
  raise Sdk::TimeoutError,
205
163
  'Execution timed out: operation exceeded the configured `timeout`. Provide a larger value if needed.'
206
164
  end
207
165
 
208
- sleep 0.05 # Check every 50ms
166
+ puts "[DEBUG] Got completion signal: #{completion[:type]}" if ENV['DEBUG']
167
+
168
+ if completion[:type] == :completed
169
+ completion_reason = :completed
170
+ break
171
+ elsif completion[:type] == :error_from_close
172
+ error_msg = completion[:error]
173
+ if error_msg.include?('timed out') || error_msg.include?('Execution timed out')
174
+ raise Sdk::TimeoutError, error_msg
175
+ end
176
+
177
+ raise Sdk::Error, error_msg
178
+ elsif completion[:type] == :close
179
+ elapsed = Time.now - start_time
180
+ if timeout && timeout > 0 && elapsed >= timeout && elapsed < (timeout + 2)
181
+ raise Sdk::TimeoutError,
182
+ 'Execution timed out: operation exceeded the configured `timeout`. Provide a larger value if needed.'
183
+ end
184
+ completion_reason = :close
185
+ break
186
+ elsif completion[:type] == :error
187
+ unless completion[:error].message.include?('stream closed')
188
+ raise Sdk::Error, "WebSocket error: #{completion[:error].message}"
189
+ end
190
+
191
+ completion_reason = :close
192
+ break
193
+ end
209
194
  end
210
195
 
211
- # Close WebSocket if not already closed
212
196
  ws.close if completion_reason != :close
213
197
  sleep 0.05
214
198
 
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
@@ -43,6 +46,12 @@ module Daytona
43
46
  # @return [Boolean, nil] Whether the Sandbox should be ephemeral
44
47
  attr_accessor :ephemeral
45
48
 
49
+ # @return [String, nil] ID or name of an existing Sandbox to link the new Sandbox to. The new
50
+ # Sandbox will be scheduled on the same runner as the linked Sandbox so a local network can be
51
+ # established between them. Only supported for android-class snapshots. Linked Sandboxes must be
52
+ # ephemeral (auto_delete_interval=0) and cannot themselves be linked to another Sandbox.
53
+ attr_accessor :linked_sandbox
54
+
46
55
  # Initialize CreateSandboxBaseParams
47
56
  #
48
57
  # @param language [Symbol, nil] Programming language for the Sandbox
@@ -58,6 +67,7 @@ module Daytona
58
67
  # @param network_block_all [Boolean, nil] Whether to block all network access for the Sandbox
59
68
  # @param network_allow_list [String, nil] Comma-separated list of allowed CIDR network addresses for the Sandbox
60
69
  # @param ephemeral [Boolean, nil] Whether the Sandbox should be ephemeral
70
+ # @param linked_sandbox [String, nil] ID or name of an existing Sandbox to link the new Sandbox to
61
71
  def initialize( # rubocop:disable Metrics/MethodLength, Metrics/ParameterLists
62
72
  language: nil,
63
73
  os_user: nil,
@@ -71,7 +81,8 @@ module Daytona
71
81
  volumes: nil,
72
82
  network_block_all: nil,
73
83
  network_allow_list: nil,
74
- ephemeral: nil
84
+ ephemeral: nil,
85
+ linked_sandbox: nil
75
86
  )
76
87
  @language = language
77
88
  @os_user = os_user
@@ -86,6 +97,7 @@ module Daytona
86
97
  @network_block_all = network_block_all
87
98
  @network_allow_list = network_allow_list
88
99
  @ephemeral = ephemeral
100
+ @linked_sandbox = linked_sandbox
89
101
 
90
102
  # Handle ephemeral and auto_delete_interval conflict
91
103
  handle_ephemeral_auto_delete_conflict
@@ -108,7 +120,8 @@ module Daytona
108
120
  volumes:,
109
121
  network_block_all:,
110
122
  network_allow_list:,
111
- ephemeral:
123
+ ephemeral:,
124
+ linked_sandbox:
112
125
  }.compact
113
126
  end
114
127
 
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  require 'digest'
@@ -261,8 +264,9 @@ module Daytona
261
264
  raise Sdk::Error, "Context directory #{context_dir} does not exist" unless Dir.exist?(context_dir)
262
265
  end
263
266
 
264
- # Extract copy sources from dockerfile commands
265
- extract_copy_sources(dockerfile_commands.join("\n"), context_dir || '').each do |context_path, original_path|
267
+ # Extract copy sources from dockerfile commands (class-level helper)
268
+ self.class.send(:extract_copy_sources, dockerfile_commands.join("\n"),
269
+ context_dir || '').each do |context_path, original_path|
266
270
  archive_base_path = context_path
267
271
  if context_dir && !original_path.start_with?(context_dir)
268
272
  archive_base_path = context_path.delete_prefix(context_dir)
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  require 'json'
@@ -299,7 +302,7 @@ module Daytona
299
302
  module WebSocketControlStatus
300
303
  ALL = [
301
304
  CONNECTED = 'connected',
302
- ERORR = 'error'
305
+ ERROR = 'error'
303
306
  ].freeze
304
307
  end
305
308
  end
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
@@ -88,7 +91,7 @@ module Daytona
88
91
  #
89
92
  # @example
90
93
  # result = sandbox.computer_use.mouse.drag(start_x: 50, start_y: 50, end_x: 150, end_y: 150)
91
- # puts "Dragged from #{result.from_x},#{result.from_y} to #{result.to_x},#{result.to_y}"
94
+ # puts "Drag ended at #{result.x}, #{result.y}"
92
95
  def drag(start_x:, start_y:, end_x:, end_y:, button: 'left')
93
96
  request = DaytonaToolboxApiClient::MouseDragRequest.new(start_x:, start_y:, end_x:, end_y:, button:)
94
97
  toolbox_api.drag(request)
@@ -167,14 +170,14 @@ module Daytona
167
170
 
168
171
  # Presses a key with optional modifiers.
169
172
  #
170
- # @param key [String] The key to press (e.g., 'Enter', 'Escape', 'Tab', 'a', 'A')
171
- # @param modifiers [Array<String>, nil] Modifier keys ('ctrl', 'alt', 'meta', 'shift')
173
+ # @param key [String] The key to press. Canonical names include 'enter', 'escape', 'tab', letters, digits, unshifted punctuation, function keys, and grammar-safe numpad names such as 'num_plus'. Named keys are case-insensitive, and common aliases such as 'Return' and 'Escape' are normalized.
174
+ # @param modifiers [Array<String>, nil] Canonical modifier names are 'ctrl', 'alt', 'shift', and 'cmd'. Common aliases such as 'control', 'option', 'meta', and 'win' are normalized.
172
175
  # @return [void]
173
176
  # @raise [Daytona::Sdk::Error] If the operation fails
174
177
  #
175
178
  # @example
176
179
  # # Press Enter
177
- # sandbox.computer_use.keyboard.press("Return")
180
+ # sandbox.computer_use.keyboard.press("enter")
178
181
  #
179
182
  # # Press Ctrl+C
180
183
  # sandbox.computer_use.keyboard.press("c", modifiers: ["ctrl"])
@@ -190,7 +193,7 @@ module Daytona
190
193
 
191
194
  # Presses a hotkey combination.
192
195
  #
193
- # @param keys [String] The hotkey combination (e.g., 'ctrl+c', 'alt+tab', 'cmd+shift+t')
196
+ # @param keys [String] A single atomic hotkey chord (e.g., 'ctrl+c', 'alt+tab', 'cmd+shift+t', 'ctrl + c', 'shift'). Uses the same normalized key contract as #press.
194
197
  # @return [void]
195
198
  # @raise [Daytona::Sdk::Error] If the operation fails
196
199
  #
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  require 'dotenv'
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  require 'json'
@@ -166,7 +169,8 @@ module Daytona
166
169
  auto_delete_interval: params.auto_delete_interval,
167
170
  volumes: params.volumes,
168
171
  network_block_all: params.network_block_all,
169
- network_allow_list: params.network_allow_list
172
+ network_allow_list: params.network_allow_list,
173
+ linked_sandbox: params.linked_sandbox
170
174
  )
171
175
 
172
176
  create_sandbox.snapshot = params.snapshot if params.respond_to?(:snapshot)
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  require 'tempfile'
data/lib/daytona/git.rb CHANGED
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
@@ -142,7 +145,7 @@ module Daytona
142
145
  response = toolbox_api.commit_changes(
143
146
  DaytonaToolboxApiClient::GitCommitRequest.new(path:, message:, author:, email:, allow_empty:)
144
147
  )
145
- GitCommitResponse.new(sha: response.hash)
148
+ GitCommitResponse.new(sha: response._hash)
146
149
  rescue StandardError => e
147
150
  raise Sdk::Error, "Failed to commit changes: #{e.message}"
148
151
  end
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  require 'digest'
data/lib/daytona/otel.rb CHANGED
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  require 'uri'
@@ -500,7 +503,10 @@ module Daytona
500
503
  # puts "PTY Session #{session.id}: #{session.cols}x#{session.rows}"
501
504
  # end
502
505
  def list_pty_sessions
503
- toolbox_api.list_pty_sessions
506
+ response = toolbox_api.list_pty_sessions
507
+ return [] if response.nil?
508
+
509
+ response.respond_to?(:sessions) ? (response.sessions || []) : response
504
510
  end
505
511
 
506
512
  # Gets detailed information about a specific PTY session
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  require 'timeout'
@@ -1,7 +1,10 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
4
7
  module Sdk
5
- VERSION = '0.169.0'
8
+ VERSION = '0.171.0.rc.1'
6
9
  end
7
10
  end
data/lib/daytona/sdk.rb CHANGED
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  require 'logger'
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  require 'uri'
data/lib/daytona/util.rb CHANGED
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  require 'net/http'
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  module Daytona
data/lib/daytona.rb CHANGED
@@ -1,3 +1,6 @@
1
+ # Copyright Daytona Platforms Inc.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
1
4
  # frozen_string_literal: true
2
5
 
3
6
  # Main entry point for the Daytona Ruby SDK
data/project.json CHANGED
@@ -41,6 +41,23 @@
41
41
  "command": "bundle exec rubocop"
42
42
  }
43
43
  },
44
+ "test": {
45
+ "executor": "nx:run-commands",
46
+ "cache": true,
47
+ "inputs": ["default", { "env": "DAYTONA_API_KEY" }, { "env": "DAYTONA_API_URL" }, { "env": "DAYTONA_JWT_TOKEN" }, { "env": "DAYTONA_ORGANIZATION_ID" }, { "env": "DAYTONA_TARGET" }],
48
+ "outputs": [],
49
+ "options": {
50
+ "cwd": "{projectRoot}",
51
+ "command": "bundle exec rspec --format documentation --tag '~e2e'"
52
+ }
53
+ },
54
+ "test:e2e": {
55
+ "executor": "nx:run-commands",
56
+ "options": {
57
+ "cwd": "{projectRoot}",
58
+ "command": "bundle exec rspec spec/e2e_spec.rb --format documentation"
59
+ }
60
+ },
44
61
  "format": {
45
62
  "executor": "nx:run-commands",
46
63
  "options": {
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # Copyright Daytona Platforms Inc.
3
+ # SPDX-License-Identifier: Apache-2.0
2
4
  # frozen_string_literal: true
3
5
 
4
6
  require 'fileutils'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daytona
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.169.0
4
+ version: 0.171.0.rc.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daytona Platforms Inc.
@@ -85,28 +85,28 @@ dependencies:
85
85
  requirements:
86
86
  - - '='
87
87
  - !ruby/object:Gem::Version
88
- version: 0.169.0
88
+ version: 0.171.0.rc.1
89
89
  type: :runtime
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - '='
94
94
  - !ruby/object:Gem::Version
95
- version: 0.169.0
95
+ version: 0.171.0.rc.1
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: daytona_toolbox_api_client
98
98
  requirement: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - '='
101
101
  - !ruby/object:Gem::Version
102
- version: 0.169.0
102
+ version: 0.171.0.rc.1
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - '='
108
108
  - !ruby/object:Gem::Version
109
- version: 0.169.0
109
+ version: 0.171.0.rc.1
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: dotenv
112
112
  requirement: !ruby/object:Gem::Requirement
@@ -171,6 +171,7 @@ executables: []
171
171
  extensions: []
172
172
  extra_rdoc_files: []
173
173
  files:
174
+ - ".rspec"
174
175
  - ".rubocop.yml"
175
176
  - ".ruby-version"
176
177
  - CODE_OF_CONDUCT.md