cogbox 0.190.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.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +22 -0
  4. data/.ruby-version +1 -0
  5. data/CODE_OF_CONDUCT.md +132 -0
  6. data/LICENSE +190 -0
  7. data/README.md +184 -0
  8. data/Rakefile +12 -0
  9. data/lib/cogbox/code_interpreter.rb +360 -0
  10. data/lib/cogbox/cogbox.rb +337 -0
  11. data/lib/cogbox/common/charts.rb +125 -0
  12. data/lib/cogbox/common/code_interpreter.rb +57 -0
  13. data/lib/cogbox/common/code_language.rb +15 -0
  14. data/lib/cogbox/common/cogbox.rb +231 -0
  15. data/lib/cogbox/common/file_system.rb +27 -0
  16. data/lib/cogbox/common/git.rb +20 -0
  17. data/lib/cogbox/common/image.rb +501 -0
  18. data/lib/cogbox/common/process.rb +150 -0
  19. data/lib/cogbox/common/pty.rb +310 -0
  20. data/lib/cogbox/common/resources.rb +40 -0
  21. data/lib/cogbox/common/response.rb +84 -0
  22. data/lib/cogbox/common/snapshot.rb +125 -0
  23. data/lib/cogbox/computer_use.rb +920 -0
  24. data/lib/cogbox/config.rb +110 -0
  25. data/lib/cogbox/file_system.rb +452 -0
  26. data/lib/cogbox/file_transfer.rb +384 -0
  27. data/lib/cogbox/git.rb +335 -0
  28. data/lib/cogbox/lsp_server.rb +140 -0
  29. data/lib/cogbox/object_storage.rb +173 -0
  30. data/lib/cogbox/otel.rb +184 -0
  31. data/lib/cogbox/process.rb +551 -0
  32. data/lib/cogbox/sandbox.rb +752 -0
  33. data/lib/cogbox/sdk/version.rb +11 -0
  34. data/lib/cogbox/sdk.rb +57 -0
  35. data/lib/cogbox/snapshot_service.rb +239 -0
  36. data/lib/cogbox/util.rb +81 -0
  37. data/lib/cogbox/volume.rb +47 -0
  38. data/lib/cogbox/volume_service.rb +62 -0
  39. data/lib/cogbox.rb +11 -0
  40. data/project.json +100 -0
  41. data/scripts/generate-docs.rb +403 -0
  42. data/sig/cogbox/sdk.rbs +6 -0
  43. metadata +240 -0
@@ -0,0 +1,403 @@
1
+ #!/usr/bin/env ruby
2
+ # Copyright Daytona Platforms Inc.
3
+ # Copyright Cognifyi
4
+ # SPDX-License-Identifier: Apache-2.0
5
+ # frozen_string_literal: true
6
+
7
+ require 'fileutils'
8
+ require 'tmpdir'
9
+ require 'yard'
10
+
11
+ # Configuration
12
+ DOCS_OUTPUT_DIR = File.expand_path('../../../apps/docs/src/content/docs/en/ruby-sdk', __dir__)
13
+ LIB_DIR = File.expand_path('../lib/cogbox', __dir__)
14
+
15
+ # Classes to document: [file_path, output_filename, class_name]
16
+ CLASSES_TO_DOCUMENT = [
17
+ ['config.rb', 'config.mdx', 'Cogbox::Config'],
18
+ ['cogbox.rb', 'cogbox.mdx', 'Cogbox::Cogbox'],
19
+ ['sandbox.rb', 'sandbox.mdx', 'Cogbox::Sandbox'],
20
+ ['file_system.rb', 'file-system.mdx', 'Cogbox::FileSystem'],
21
+ ['git.rb', 'git.mdx', 'Cogbox::Git'],
22
+ ['process.rb', 'process.mdx', 'Cogbox::Process'],
23
+ ['lsp_server.rb', 'lsp-server.mdx', 'Cogbox::LspServer'],
24
+ ['volume.rb', 'volume.mdx', 'Cogbox::Volume'],
25
+ ['object_storage.rb', 'object-storage.mdx', 'Cogbox::ObjectStorage'],
26
+ ['computer_use.rb', 'computer-use.mdx', 'Cogbox::ComputerUse'],
27
+ ['computer_use.rb', 'computer-use.mdx', 'Cogbox::ComputerUse::Accessibility'],
28
+ ['snapshot_service.rb', 'snapshot.mdx', 'Cogbox::SnapshotService'],
29
+ ['volume_service.rb', 'volume-service.mdx', 'Cogbox::VolumeService'],
30
+ ['common/charts.rb', 'charts.mdx', 'Cogbox::Chart'],
31
+ ['common/image.rb', 'image.mdx', 'Cogbox::Image']
32
+ ]
33
+
34
+ def extract_class_name_from_path(class_name)
35
+ # Extract the simple class name from the full path
36
+ class_name.split('::').last
37
+ end
38
+
39
+ def add_frontmatter(content, class_name)
40
+ simple_name = extract_class_name_from_path(class_name)
41
+ frontmatter = <<~FRONTMATTER
42
+ ---
43
+ title: "#{simple_name}"
44
+ hideTitleOnPage: true
45
+ ---
46
+
47
+ FRONTMATTER
48
+
49
+ frontmatter + content
50
+ end
51
+
52
+ def format_type(types)
53
+ return 'Object' if types.nil? || types.empty?
54
+
55
+ # Join types and escape special characters that break MDX
56
+ type_str = types.join(', ')
57
+ # Escape special chars that break MDX parsing
58
+ # Replace :: with a single : to avoid MDX issues while keeping readability
59
+ type_str = type_str.gsub('::', ':')
60
+ # Escape angle brackets
61
+ type_str.gsub('<', '\\<').gsub('>', '\\>')
62
+ end
63
+
64
+ def clean_description(description)
65
+ return '' if description.nil? || description.empty?
66
+
67
+ # Remove rubocop directive lines
68
+ cleaned = description.to_s.lines.reject { |line| line.strip.start_with?('rubocop:') }.join
69
+ cleaned.strip
70
+ end
71
+
72
+ def extract_class_description(obj)
73
+ description = clean_description(obj.docstring)
74
+
75
+ # If no class-level description, try to get it from the first method or constructor
76
+ if description.empty? && obj.is_a?(YARD::CodeObjects::ClassObject)
77
+ # Try to find a description from the constructor or first documented method
78
+ constructor = obj.meths.find { |m| m.name == :initialize }
79
+ if constructor && constructor.docstring && !constructor.docstring.empty?
80
+ # Extract just the summary (first paragraph) from constructor docs
81
+ constructor_desc = clean_description(constructor.docstring)
82
+ first_paragraph = constructor_desc.split("\n\n").first
83
+ if first_paragraph && !first_paragraph.empty?
84
+ # Make it a class-level description
85
+ extract_class_name_from_path(obj.path)
86
+ description = first_paragraph.gsub(/^(Initializes|Creates a new)/, 'Main class for')
87
+ end
88
+ end
89
+
90
+ # If still empty, generate a basic description
91
+ if description.empty?
92
+ simple_name = extract_class_name_from_path(obj.path)
93
+ description = "#{simple_name} class for Cogbox SDK."
94
+ end
95
+ end
96
+
97
+ description
98
+ end
99
+
100
+ def extract_attributes(obj)
101
+ attributes = []
102
+
103
+ return attributes unless obj.is_a?(YARD::CodeObjects::ClassObject)
104
+
105
+ # Collect all attributes
106
+ read_attrs = obj.attributes[:read] || {}
107
+ write_attrs = obj.attributes[:write] || {}
108
+ all_attrs = (read_attrs.keys + write_attrs.keys).uniq
109
+
110
+ all_attrs.each do |name|
111
+ attr_obj = read_attrs[name] || write_attrs[name]
112
+ type = attr_obj.docstring.tag(:return)&.types
113
+ type_str = format_type(type)
114
+ desc = attr_obj.docstring.to_s.split("\n").first || ''
115
+
116
+ attributes << {
117
+ name: name,
118
+ type: type_str,
119
+ description: desc
120
+ }
121
+ end
122
+
123
+ attributes
124
+ end
125
+
126
+ def generate_markdown_for_object(obj)
127
+ content = []
128
+
129
+ # Add main heading
130
+ content << "## #{obj.name}"
131
+ content << ''
132
+
133
+ # Add class description
134
+ description = extract_class_description(obj)
135
+ unless description.empty?
136
+ content << description
137
+ content << ''
138
+ end
139
+
140
+ # Add attributes/properties section (matching Python/TypeScript format)
141
+ if obj.is_a?(YARD::CodeObjects::ClassObject)
142
+ attributes = extract_attributes(obj)
143
+
144
+ if attributes.any?
145
+ content << '**Attributes**:'
146
+ content << ''
147
+ attributes.each do |attr|
148
+ content << "- `#{attr[:name]}` _#{attr[:type]}_ - #{attr[:description]}"
149
+ end
150
+ content << ''
151
+ end
152
+ end
153
+
154
+ # Add class-level examples (before constructors, matching Python/TypeScript)
155
+ examples = obj.tags(:example)
156
+ if examples.any?
157
+ content << '**Examples:**'
158
+ content << ''
159
+ examples.each do |example|
160
+ content << '```ruby'
161
+ content << example.text.strip
162
+ content << '```'
163
+ content << ''
164
+ end
165
+ end
166
+
167
+ # Add constructors section
168
+ if obj.is_a?(YARD::CodeObjects::ClassObject)
169
+ constructor = obj.meths.find { |m| m.name == :initialize }
170
+ if constructor
171
+ content << '### Constructors'
172
+ content << ''
173
+ content << "#### new #{extract_class_name_from_path(obj.path)}()"
174
+ content << ''
175
+
176
+ # Method signature
177
+ content << '```ruby'
178
+ params_str = constructor.parameters.map { |p| p[0] }.join(', ')
179
+ content << "def initialize(#{params_str})"
180
+ content << '```'
181
+ content << ''
182
+
183
+ # Constructor description
184
+ if constructor.docstring && !constructor.docstring.empty?
185
+ desc = clean_description(constructor.docstring)
186
+ unless desc.empty?
187
+ content << desc
188
+ content << ''
189
+ end
190
+ end
191
+
192
+ # Parameters
193
+ params = constructor.tags(:param)
194
+ if params.any?
195
+ content << '**Parameters**:'
196
+ content << ''
197
+ params.each do |param|
198
+ types = format_type(param.types)
199
+ content << "- `#{param.name}` _#{types}_ - #{param.text}"
200
+ end
201
+ content << ''
202
+ end
203
+
204
+ # Returns
205
+ return_tag = constructor.tag(:return)
206
+ if return_tag
207
+ types = format_type(return_tag.types)
208
+ text = return_tag.text.to_s.strip
209
+ content << '**Returns**:'
210
+ content << ''
211
+ content << if text.empty?
212
+ "- `#{types}`"
213
+ else
214
+ "- `#{types}` - #{text}"
215
+ end
216
+ content << ''
217
+ end
218
+
219
+ # Raises
220
+ raises = constructor.tags(:raise)
221
+ if raises.any?
222
+ content << '**Raises**:'
223
+ content << ''
224
+ raises.each do |raise_tag|
225
+ types = format_type(raise_tag.types)
226
+ content << "- `#{types}` - #{raise_tag.text}"
227
+ end
228
+ content << ''
229
+ end
230
+ end
231
+ end
232
+
233
+ # Add methods section
234
+ if obj.is_a?(YARD::CodeObjects::ClassObject)
235
+ methods = obj.meths.select { |m| m.scope == :instance && m.visibility == :public && m.name != :initialize }
236
+
237
+ if methods.any?
238
+ content << '### Methods'
239
+ content << ''
240
+
241
+ methods.each do |method|
242
+ content << "#### #{method.name}()"
243
+ content << ''
244
+
245
+ # Method signature
246
+ content << '```ruby'
247
+ params_str = method.parameters.map { |p| p[0] }.join(', ')
248
+ content << "def #{method.name}(#{params_str})"
249
+ content << '```'
250
+ content << ''
251
+
252
+ # Method description
253
+ if method.docstring && !method.docstring.empty?
254
+ desc = clean_description(method.docstring)
255
+ unless desc.empty?
256
+ content << desc
257
+ content << ''
258
+ end
259
+ end
260
+
261
+ # Parameters
262
+ params = method.tags(:param)
263
+ if params.any?
264
+ content << '**Parameters**:'
265
+ content << ''
266
+ params.each do |param|
267
+ types = format_type(param.types)
268
+ content << "- `#{param.name}` _#{types}_ - #{param.text}"
269
+ end
270
+ content << ''
271
+ end
272
+
273
+ # Returns
274
+ return_tag = method.tag(:return)
275
+ if return_tag
276
+ types = format_type(return_tag.types)
277
+ text = return_tag.text.to_s.strip
278
+ content << '**Returns**:'
279
+ content << ''
280
+ # Only add description if it's meaningful and not just repeating the type
281
+ content << if text.empty? || text.start_with?('Array<') || text.start_with?('Hash<')
282
+ "- `#{types}`"
283
+ else
284
+ "- `#{types}` - #{text}"
285
+ end
286
+ content << ''
287
+ end
288
+
289
+ # Raises
290
+ raises = method.tags(:raise)
291
+ if raises.any?
292
+ content << '**Raises**:'
293
+ content << ''
294
+ raises.each do |raise_tag|
295
+ types = format_type(raise_tag.types)
296
+ content << "- `#{types}` - #{raise_tag.text}"
297
+ end
298
+ content << ''
299
+ end
300
+
301
+ # Method-level examples
302
+ examples = method.tags(:example)
303
+ next unless examples.any?
304
+
305
+ content << '**Examples:**'
306
+ content << ''
307
+ examples.each do |example|
308
+ content << '```ruby'
309
+ content << example.text.strip
310
+ content << '```'
311
+ content << ''
312
+ end
313
+ end
314
+ end
315
+ end
316
+
317
+ content.join("\n")
318
+ end
319
+
320
+ def post_process_markdown(content)
321
+ # Remove excessive blank lines (more than 2 consecutive)
322
+ content = content.gsub(/\n{3,}/, "\n\n")
323
+
324
+ # Remove blank lines inside code blocks
325
+ content = content.gsub("```ruby\n\n", "```ruby\n")
326
+ content = content.gsub("\n\n```", "\n```")
327
+
328
+ # Ensure consistent spacing around sections
329
+ content = content.gsub(/\n(\*\*[^*]+\*\*:)\n([^\n])/, "\n\\1\n\n\\2")
330
+
331
+ # Ensure code blocks have proper spacing
332
+ content = content.gsub(/([^\n])\n```/, "\\1\n\n```")
333
+ content = content.gsub(/```\n([^\n])/, "```\n\n\\1")
334
+
335
+ # Clean up trailing whitespace
336
+ content = content.lines.map(&:rstrip).join("\n")
337
+
338
+ # Ensure file ends with single newline
339
+ content.strip + "\n"
340
+ end
341
+
342
+ def generate_docs_for_class(file_path, output_filename, class_name)
343
+ full_path = File.join(LIB_DIR, file_path)
344
+
345
+ unless File.exist?(full_path)
346
+ puts "⚠️ File not found: #{full_path}"
347
+ return
348
+ end
349
+
350
+ puts "📝 Generating docs for #{class_name}..."
351
+
352
+ begin
353
+ # Clear and parse with YARD
354
+ YARD::Registry.clear
355
+ YARD::Parser::SourceParser.parse(full_path)
356
+
357
+ # Get the class object
358
+ obj = YARD::Registry.at(class_name)
359
+
360
+ unless obj
361
+ puts "⚠️ Class #{class_name} not found in registry"
362
+ return
363
+ end
364
+
365
+ # Generate markdown content
366
+ markdown_content = generate_markdown_for_object(obj)
367
+
368
+ # Post-process for consistency
369
+ markdown_content = post_process_markdown(markdown_content)
370
+
371
+ # Add frontmatter
372
+ final_content = add_frontmatter(markdown_content, class_name)
373
+
374
+ # Write to output file
375
+ output_path = File.join(DOCS_OUTPUT_DIR, output_filename)
376
+ if File.exist?(output_path)
377
+ File.write(output_path, "#{File.read(output_path).rstrip}\n\n#{markdown_content}")
378
+ else
379
+ File.write(output_path, final_content)
380
+ end
381
+
382
+ puts "✅ Generated: #{output_filename}"
383
+ rescue StandardError => e
384
+ puts "❌ Error generating docs for #{class_name}: #{e.message}"
385
+ puts e.backtrace.first(5).join("\n") if ENV['DEBUG']
386
+ end
387
+ end
388
+
389
+ # Main execution
390
+ puts '🚀 Starting documentation generation...'
391
+ puts "📂 Output directory: #{DOCS_OUTPUT_DIR}"
392
+ puts ''
393
+
394
+ # Ensure output directory exists
395
+ FileUtils.mkdir_p(DOCS_OUTPUT_DIR)
396
+
397
+ # Generate docs for each class
398
+ CLASSES_TO_DOCUMENT.each do |file_path, output_filename, class_name|
399
+ generate_docs_for_class(file_path, output_filename, class_name)
400
+ end
401
+
402
+ puts ''
403
+ puts '✨ Documentation generation complete!'
@@ -0,0 +1,6 @@
1
+ module Cogbox
2
+ module Sdk
3
+ VERSION: String
4
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
5
+ end
6
+ end
metadata ADDED
@@ -0,0 +1,240 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cogbox
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.190.1
5
+ platform: ruby
6
+ authors:
7
+ - Cogbox Platforms Inc.
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: opentelemetry-exporter-otlp
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '0.29'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '0.29'
26
+ - !ruby/object:Gem::Dependency
27
+ name: opentelemetry-exporter-otlp-metrics
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.1'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.1'
40
+ - !ruby/object:Gem::Dependency
41
+ name: opentelemetry-metrics-sdk
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.2'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '0.2'
54
+ - !ruby/object:Gem::Dependency
55
+ name: opentelemetry-sdk
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.4'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.4'
68
+ - !ruby/object:Gem::Dependency
69
+ name: aws-sdk-s3
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.0'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: cogbox_api_client
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - '='
87
+ - !ruby/object:Gem::Version
88
+ version: 0.190.1
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - '='
94
+ - !ruby/object:Gem::Version
95
+ version: 0.190.1
96
+ - !ruby/object:Gem::Dependency
97
+ name: cogbox_toolbox_api_client
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - '='
101
+ - !ruby/object:Gem::Version
102
+ version: 0.190.1
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - '='
108
+ - !ruby/object:Gem::Version
109
+ version: 0.190.1
110
+ - !ruby/object:Gem::Dependency
111
+ name: dotenv
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '2.0'
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '2.0'
124
+ - !ruby/object:Gem::Dependency
125
+ name: observer
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '0.1'
131
+ type: :runtime
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '0.1'
138
+ - !ruby/object:Gem::Dependency
139
+ name: toml
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '0.3'
145
+ type: :runtime
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '0.3'
152
+ - !ruby/object:Gem::Dependency
153
+ name: websocket-client-simple
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '0.6'
159
+ type: :runtime
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '0.6'
166
+ description: 'High-level Ruby SDK for Cogbox: sandboxes, git, filesystem, LSP, process,
167
+ and object storage.'
168
+ email:
169
+ - support@pazity.com
170
+ executables: []
171
+ extensions: []
172
+ extra_rdoc_files: []
173
+ files:
174
+ - ".rspec"
175
+ - ".rubocop.yml"
176
+ - ".ruby-version"
177
+ - CODE_OF_CONDUCT.md
178
+ - LICENSE
179
+ - README.md
180
+ - Rakefile
181
+ - lib/cogbox.rb
182
+ - lib/cogbox/code_interpreter.rb
183
+ - lib/cogbox/cogbox.rb
184
+ - lib/cogbox/common/charts.rb
185
+ - lib/cogbox/common/code_interpreter.rb
186
+ - lib/cogbox/common/code_language.rb
187
+ - lib/cogbox/common/cogbox.rb
188
+ - lib/cogbox/common/file_system.rb
189
+ - lib/cogbox/common/git.rb
190
+ - lib/cogbox/common/image.rb
191
+ - lib/cogbox/common/process.rb
192
+ - lib/cogbox/common/pty.rb
193
+ - lib/cogbox/common/resources.rb
194
+ - lib/cogbox/common/response.rb
195
+ - lib/cogbox/common/snapshot.rb
196
+ - lib/cogbox/computer_use.rb
197
+ - lib/cogbox/config.rb
198
+ - lib/cogbox/file_system.rb
199
+ - lib/cogbox/file_transfer.rb
200
+ - lib/cogbox/git.rb
201
+ - lib/cogbox/lsp_server.rb
202
+ - lib/cogbox/object_storage.rb
203
+ - lib/cogbox/otel.rb
204
+ - lib/cogbox/process.rb
205
+ - lib/cogbox/sandbox.rb
206
+ - lib/cogbox/sdk.rb
207
+ - lib/cogbox/sdk/version.rb
208
+ - lib/cogbox/snapshot_service.rb
209
+ - lib/cogbox/util.rb
210
+ - lib/cogbox/volume.rb
211
+ - lib/cogbox/volume_service.rb
212
+ - project.json
213
+ - scripts/generate-docs.rb
214
+ - sig/cogbox/sdk.rbs
215
+ homepage: https://github.com/cognifyi/cogbox
216
+ licenses: []
217
+ metadata:
218
+ allowed_push_host: https://rubygems.org
219
+ homepage_uri: https://github.com/cognifyi/cogbox
220
+ source_code_uri: https://github.com/cognifyi/cogbox
221
+ changelog_uri: https://github.com/cognifyi/cogbox/releases
222
+ rubygems_mfa_required: 'true'
223
+ rdoc_options: []
224
+ require_paths:
225
+ - lib
226
+ required_ruby_version: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: 3.2.0
231
+ required_rubygems_version: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: '0'
236
+ requirements: []
237
+ rubygems_version: 3.6.9
238
+ specification_version: 4
239
+ summary: Ruby SDK for Cogbox
240
+ test_files: []