daytona 0.149.0.alpha.2 → 0.149.0

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: 0c9abcf28500a42f47b2b00a80c2b5bba8cee32e555e75ba48d14bbfbdd30d89
4
- data.tar.gz: 0ecf156c45fa732a0b117f78e6d04ef9fff6a30a0ccf48cd6d771698fa838a03
3
+ metadata.gz: 9d79a65a95525e782c690ed5e6a5bd9242931dac768ef79d9f71c49bd19535b7
4
+ data.tar.gz: 2a07059c990ac31f366b643b17694d19e5bb55b97e8e017d41916a3caf0ace33
5
5
  SHA512:
6
- metadata.gz: 6321f21d8af76d0bf41109d6d197a1b3444c232d337eadd0254264ae0b6da505738c6e7320fe57e1fe96cb1581c3d5346a5a7144ff21c1b8d03d0492c98887e8
7
- data.tar.gz: 9ecc2e24bdf89341eb537aa346311b1a6691928f693d4eda56047c206dec4df67f3cae4e39d675072c8843c357fb5c3d6ae584052ed2e6a420818d5979618e27
6
+ metadata.gz: 83ea49c6d60910d33b567cbdfbb8b8477461c6716d236c9e5af3bc8549ac466b5e161862135556551ca3ddebd8dab7d418e7e6118982969715f52fd3c41eff1f
7
+ data.tar.gz: 5daa4e0d7a77eac373601a2a05e66c51ca8db5ee2889cbb12c8eaa57bee6166098e5031937cbb8675344bf9e6198eb0ffac60a13717da11a102d09558c952311
@@ -12,11 +12,8 @@ module Daytona
12
12
  argv = ''
13
13
  argv = params.argv.join(' ') if params&.argv && !params.argv.empty?
14
14
 
15
- # Pipe the base64-encoded code via stdin to avoid OS ARG_MAX limits on large payloads
16
- # Use /dev/stdin instead of -e "$(cat)" which would expand as a process arg and hit ARG_MAX
17
- # Capture the exit code before filtering to preserve node's exit status
18
- "_dtn_out=$(echo '#{base64_code}' | base64 -d | node /dev/stdin #{argv} 2>&1); _dtn_ec=$?; " \
19
- "printf '%s\\n' \"$_dtn_out\" | grep -v 'npm notice'; exit $_dtn_ec"
15
+ # Combine everything into the final command for JavaScript
16
+ " sh -c 'echo #{base64_code} | base64 --decode | node -e \"$(cat)\" #{argv} 2>&1 | grep -vE \"npm notice\"' "
20
17
  end
21
18
  end
22
19
  end
@@ -10,21 +10,22 @@ module Daytona
10
10
  # @param params [Daytona::CodeRunParams, nil] Optional parameters for code execution
11
11
  # @return [String] The command to run the Python code
12
12
  def get_run_command(code, params = nil)
13
- encoded_code = Base64.strict_encode64(code)
13
+ encoded_code = Base64.encode64(code)
14
14
 
15
15
  # Override plt.show() method if matplotlib is imported
16
16
  if matplotlib_imported?(code)
17
- encoded_code = Base64.strict_encode64(
17
+ encoded_code = Base64.encode64(
18
18
  Base64.decode64(PYTHON_CODE_WRAPPER).gsub('{encoded_code}', encoded_code)
19
19
  )
20
20
  end
21
21
 
22
22
  argv = params&.argv&.join(' ') || ''
23
23
 
24
- # Pipe the base64-encoded code via stdin to avoid OS ARG_MAX limits on large payloads
25
- # echo is a shell builtin so the base64 string doesn't hit ARG_MAX
24
+ # Execute the bootstrapper code directly
26
25
  # Use -u flag to ensure unbuffered output for real-time error reporting
27
- "echo '#{encoded_code}' | base64 -d | python3 -u - #{argv}"
26
+
27
+ " sh -c 'python3 -u -c \"exec(__import__(\\\"base64\\\").b64decode(\\\"\\\"\\\"#{encoded_code}\\\"\\\"\\\")" \
28
+ ".decode())\" #{argv}' "
28
29
  end
29
30
 
30
31
  private
@@ -10,15 +10,14 @@ module Daytona
10
10
  # @param params [Daytona::CodeRunParams, nil] Optional parameters for code execution
11
11
  # @return [String] The command to run the TypeScript code
12
12
  def get_run_command(code, params = nil)
13
- encoded_code = Base64.strict_encode64(code)
13
+ encoded_code = Base64.encode64(code)
14
14
 
15
15
  argv = params&.argv&.join(' ') || ''
16
16
 
17
- # Pipe the base64-encoded code via stdin to avoid OS ARG_MAX limits on large payloads
18
- # Use /dev/stdin instead of -e "$(cat)" which would expand as a process arg and hit ARG_MAX
19
- # Capture the exit code before filtering to preserve ts-node's exit status
20
- "_dtn_out=$(echo '#{encoded_code}' | base64 -d | npx ts-node -O '{\"module\":\"CommonJS\"}' /dev/stdin #{argv} 2>&1); _dtn_ec=$?; " \
21
- "printf '%s\\n' \"$_dtn_out\" | grep -v 'npm notice'; exit $_dtn_ec"
17
+ # Execute TypeScript code using ts-node with ESM support
18
+ " sh -c 'echo #{encoded_code} | base64 --decode | npx ts-node -O " \
19
+ "\"{\\\"module\\\":\\\"CommonJS\\\"}\" -e \"$(cat)\" x #{argv} 2>&1 | grep -vE " \
20
+ "\"npm notice\"' "
22
21
  end
23
22
  end
24
23
  end
@@ -54,20 +54,18 @@ module Daytona
54
54
  #
55
55
  # # Command with timeout
56
56
  # result = sandbox.process.exec("sleep 10", timeout: 5)
57
- def exec(command:, cwd: nil, env: nil, timeout: nil) # rubocop:disable Metrics/MethodLength
57
+ def exec(command:, cwd: nil, env: nil, timeout: nil) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
58
+ command = "echo '#{Base64.encode64(command)}' | base64 -d | sh"
59
+
58
60
  if env && !env.empty?
59
- env.each_key do |key|
60
- unless key.match?(/\A[A-Za-z_][A-Za-z0-9_]*\z/)
61
- raise ArgumentError,
62
- "Invalid environment variable name: '#{key}'"
63
- end
64
- end
65
61
  safe_env_exports = env.map do |key, value|
66
- "export #{key}=\"$(echo '#{Base64.strict_encode64(value)}' | base64 -d)\""
67
- end.join('; ')
62
+ "export #{key}=$(echo '#{Base64.encode64(value)}' | base64 -d)"
63
+ end.join(';')
68
64
  command = "#{safe_env_exports}; #{command}"
69
65
  end
70
66
 
67
+ command = "sh -c \"#{command}\""
68
+
71
69
  response = toolbox_api.execute_command(DaytonaToolboxApiClient::ExecuteRequest.new(command:, cwd:, timeout:))
72
70
  # Post-process the output to extract ExecutionArtifacts
73
71
  artifacts = parse_output(response.result.split("\n"))
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Daytona
4
4
  module Sdk
5
- VERSION = '0.149.0.alpha.2'
5
+ VERSION = '0.149.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daytona
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.149.0.alpha.2
4
+ version: 0.149.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daytona Platforms Inc.
8
+ autorequire:
8
9
  bindir: exe
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-03-05 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: opentelemetry-exporter-otlp
@@ -85,28 +86,28 @@ dependencies:
85
86
  requirements:
86
87
  - - '='
87
88
  - !ruby/object:Gem::Version
88
- version: 0.149.0.alpha.2
89
+ version: 0.149.0
89
90
  type: :runtime
90
91
  prerelease: false
91
92
  version_requirements: !ruby/object:Gem::Requirement
92
93
  requirements:
93
94
  - - '='
94
95
  - !ruby/object:Gem::Version
95
- version: 0.149.0.alpha.2
96
+ version: 0.149.0
96
97
  - !ruby/object:Gem::Dependency
97
98
  name: daytona_toolbox_api_client
98
99
  requirement: !ruby/object:Gem::Requirement
99
100
  requirements:
100
101
  - - '='
101
102
  - !ruby/object:Gem::Version
102
- version: 0.149.0.alpha.2
103
+ version: 0.149.0
103
104
  type: :runtime
104
105
  prerelease: false
105
106
  version_requirements: !ruby/object:Gem::Requirement
106
107
  requirements:
107
108
  - - '='
108
109
  - !ruby/object:Gem::Version
109
- version: 0.149.0.alpha.2
110
+ version: 0.149.0
110
111
  - !ruby/object:Gem::Dependency
111
112
  name: dotenv
112
113
  requirement: !ruby/object:Gem::Requirement
@@ -206,6 +207,7 @@ metadata:
206
207
  source_code_uri: https://github.com/daytonaio/daytona
207
208
  changelog_uri: https://github.com/daytonaio/daytona/releases
208
209
  rubygems_mfa_required: 'true'
210
+ post_install_message:
209
211
  rdoc_options: []
210
212
  require_paths:
211
213
  - lib
@@ -220,7 +222,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
220
222
  - !ruby/object:Gem::Version
221
223
  version: '0'
222
224
  requirements: []
223
- rubygems_version: 3.6.9
225
+ rubygems_version: 3.4.19
226
+ signing_key:
224
227
  specification_version: 4
225
228
  summary: Ruby SDK for Daytona
226
229
  test_files: []