exa-ai 0.3.1 → 0.4.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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +58 -17
  3. data/exe/exa-ai +111 -6
  4. data/exe/exa-ai-enrichment-cancel +107 -0
  5. data/exe/exa-ai-enrichment-create +235 -0
  6. data/exe/exa-ai-enrichment-delete +121 -0
  7. data/exe/exa-ai-enrichment-get +103 -0
  8. data/exe/exa-ai-enrichment-list +98 -0
  9. data/exe/exa-ai-enrichment-update +170 -0
  10. data/exe/exa-ai-find-similar +240 -0
  11. data/exe/exa-ai-webset-cancel +96 -0
  12. data/exe/exa-ai-webset-create +192 -0
  13. data/exe/exa-ai-webset-delete +110 -0
  14. data/exe/exa-ai-webset-get +92 -0
  15. data/exe/exa-ai-webset-item-delete +111 -0
  16. data/exe/exa-ai-webset-item-get +104 -0
  17. data/exe/exa-ai-webset-item-list +93 -0
  18. data/exe/exa-ai-webset-list +90 -0
  19. data/exe/exa-ai-webset-search-cancel +103 -0
  20. data/exe/exa-ai-webset-search-create +233 -0
  21. data/exe/exa-ai-webset-search-get +104 -0
  22. data/exe/exa-ai-webset-update +139 -0
  23. data/lib/exa/cli/formatters/enrichment_formatter.rb +69 -0
  24. data/lib/exa/cli/formatters/webset_formatter.rb +68 -0
  25. data/lib/exa/cli/formatters/webset_item_formatter.rb +69 -0
  26. data/lib/exa/client.rb +171 -0
  27. data/lib/exa/resources/webset.rb +74 -0
  28. data/lib/exa/resources/webset_collection.rb +33 -0
  29. data/lib/exa/resources/webset_enrichment.rb +71 -0
  30. data/lib/exa/resources/webset_enrichment_collection.rb +28 -0
  31. data/lib/exa/resources/webset_search.rb +112 -0
  32. data/lib/exa/services/parameter_converter.rb +1 -0
  33. data/lib/exa/services/websets/cancel.rb +36 -0
  34. data/lib/exa/services/websets/cancel_enrichment.rb +35 -0
  35. data/lib/exa/services/websets/cancel_search.rb +44 -0
  36. data/lib/exa/services/websets/create.rb +45 -0
  37. data/lib/exa/services/websets/create_enrichment.rb +35 -0
  38. data/lib/exa/services/websets/create_search.rb +48 -0
  39. data/lib/exa/services/websets/create_search_validator.rb +128 -0
  40. data/lib/exa/services/websets/create_validator.rb +189 -0
  41. data/lib/exa/services/websets/delete.rb +36 -0
  42. data/lib/exa/services/websets/delete_enrichment.rb +35 -0
  43. data/lib/exa/services/websets/delete_item.rb +20 -0
  44. data/lib/exa/services/websets/get_item.rb +20 -0
  45. data/lib/exa/services/websets/get_search.rb +43 -0
  46. data/lib/exa/services/websets/list.rb +25 -0
  47. data/lib/exa/services/websets/list_items.rb +20 -0
  48. data/lib/exa/services/websets/retrieve.rb +47 -0
  49. data/lib/exa/services/websets/retrieve_enrichment.rb +35 -0
  50. data/lib/exa/services/websets/update.rb +37 -0
  51. data/lib/exa/services/websets/update_enrichment.rb +36 -0
  52. data/lib/exa/services/websets_parameter_converter.rb +45 -0
  53. data/lib/exa/version.rb +1 -1
  54. data/lib/exa.rb +25 -0
  55. metadata +64 -3
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Exa
4
+ module Services
5
+ module Websets
6
+ class Update
7
+ def initialize(connection, id:, **params)
8
+ @connection = connection
9
+ @id = id
10
+ @params = params
11
+ end
12
+
13
+ def call
14
+ response = @connection.post("/websets/v0/websets/#{@id}", @params)
15
+ body = response.body
16
+
17
+ Resources::Webset.new(
18
+ id: body["id"],
19
+ object: body["object"],
20
+ status: body["status"],
21
+ external_id: body["externalId"],
22
+ title: body["title"],
23
+ searches: body["searches"],
24
+ imports: body["imports"],
25
+ enrichments: body["enrichments"],
26
+ monitors: body["monitors"],
27
+ excludes: body["excludes"],
28
+ metadata: body["metadata"],
29
+ created_at: body["createdAt"],
30
+ updated_at: body["updatedAt"],
31
+ items: body["items"]
32
+ )
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Exa
4
+ module Services
5
+ module Websets
6
+ class UpdateEnrichment
7
+ def initialize(connection, webset_id:, id:, **params)
8
+ @connection = connection
9
+ @webset_id = webset_id
10
+ @id = id
11
+ @params = params
12
+ end
13
+
14
+ def call
15
+ response = @connection.patch("/websets/v0/websets/#{@webset_id}/enrichments/#{@id}", @params)
16
+ body = response.body
17
+
18
+ Resources::WebsetEnrichment.new(
19
+ id: body["id"],
20
+ object: body["object"],
21
+ status: body["status"],
22
+ webset_id: body["websetId"],
23
+ title: body["title"],
24
+ description: body["description"],
25
+ format: body["format"],
26
+ options: body["options"],
27
+ instructions: body["instructions"],
28
+ metadata: body["metadata"],
29
+ created_at: body["createdAt"],
30
+ updated_at: body["updatedAt"]
31
+ )
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Exa
4
+ module Services
5
+ # Converts Ruby parameter names (snake_case) to API format (camelCase) for Websets API
6
+ class WebsetsParameterConverter
7
+ def self.convert(params)
8
+ new.convert(params)
9
+ end
10
+
11
+ def convert(params)
12
+ converted = {}
13
+
14
+ params.each do |key, value|
15
+ converted_key = convert_key(key)
16
+ converted_value = convert_value(key, value)
17
+ converted[converted_key] = converted_value
18
+ end
19
+
20
+ converted
21
+ end
22
+
23
+ private
24
+
25
+ def convert_key(key)
26
+ case key
27
+ when :external_id then :externalId
28
+ else
29
+ key
30
+ end
31
+ end
32
+
33
+ def convert_value(key, value)
34
+ # Recursively convert nested hashes
35
+ if value.is_a?(Hash)
36
+ convert(value)
37
+ elsif value.is_a?(Array)
38
+ value.map { |item| item.is_a?(Hash) ? convert(item) : item }
39
+ else
40
+ value
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
data/lib/exa/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Exa
4
- VERSION = "0.3.1"
4
+ VERSION = "0.4.1"
5
5
  end
data/lib/exa.rb CHANGED
@@ -11,6 +11,11 @@ require_relative "exa/resources/research_task"
11
11
  require_relative "exa/resources/research_list"
12
12
  require_relative "exa/resources/answer"
13
13
  require_relative "exa/resources/context_result"
14
+ require_relative "exa/resources/webset_collection"
15
+ require_relative "exa/resources/webset"
16
+ require_relative "exa/resources/webset_search"
17
+ require_relative "exa/resources/webset_enrichment"
18
+ require_relative "exa/resources/webset_enrichment_collection"
14
19
  require_relative "exa/services/search"
15
20
  require_relative "exa/services/find_similar"
16
21
  require_relative "exa/services/get_contents"
@@ -20,6 +25,23 @@ require_relative "exa/services/research_list"
20
25
  require_relative "exa/services/answer"
21
26
  require_relative "exa/services/answer_stream"
22
27
  require_relative "exa/services/context"
28
+ require_relative "exa/services/websets/list"
29
+ require_relative "exa/services/websets/retrieve"
30
+ require_relative "exa/services/websets/delete"
31
+ require_relative "exa/services/websets/cancel"
32
+ require_relative "exa/services/websets/update"
33
+ require_relative "exa/services/websets/create"
34
+ require_relative "exa/services/websets/create_search"
35
+ require_relative "exa/services/websets/get_search"
36
+ require_relative "exa/services/websets/cancel_search"
37
+ require_relative "exa/services/websets/create_enrichment"
38
+ require_relative "exa/services/websets/retrieve_enrichment"
39
+ require_relative "exa/services/websets/update_enrichment"
40
+ require_relative "exa/services/websets/delete_enrichment"
41
+ require_relative "exa/services/websets/cancel_enrichment"
42
+ require_relative "exa/services/websets/get_item"
43
+ require_relative "exa/services/websets/delete_item"
44
+ require_relative "exa/services/websets/list_items"
23
45
  require_relative "exa/client"
24
46
  require_relative "exa/cli/base"
25
47
  require_relative "exa/cli/polling"
@@ -29,6 +51,9 @@ require_relative "exa/cli/formatters/context_formatter"
29
51
  require_relative "exa/cli/formatters/contents_formatter"
30
52
  require_relative "exa/cli/formatters/research_formatter"
31
53
  require_relative "exa/cli/formatters/answer_formatter"
54
+ require_relative "exa/cli/formatters/webset_formatter"
55
+ require_relative "exa/cli/formatters/webset_item_formatter"
56
+ require_relative "exa/cli/formatters/enrichment_formatter"
32
57
 
33
58
  module Exa
34
59
  # Module-level configuration
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exa-ai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Jackson
@@ -51,6 +51,20 @@ dependencies:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
53
  version: '5.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: minitest-fail-fast
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '0.1'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '0.1'
54
68
  - !ruby/object:Gem::Dependency
55
69
  name: rake
56
70
  requirement: !ruby/object:Gem::Requirement
@@ -109,7 +123,7 @@ dependencies:
109
123
  version: '0.9'
110
124
  description: A Ruby gem for interacting with the Exa.ai search and discovery API
111
125
  email:
112
- - ben@exa.ai
126
+ - ben@hearmeout.co
113
127
  executables:
114
128
  - exa-ai
115
129
  - exa-ai-answer
@@ -127,11 +141,30 @@ files:
127
141
  - exe/exa-ai
128
142
  - exe/exa-ai-answer
129
143
  - exe/exa-ai-context
144
+ - exe/exa-ai-enrichment-cancel
145
+ - exe/exa-ai-enrichment-create
146
+ - exe/exa-ai-enrichment-delete
147
+ - exe/exa-ai-enrichment-get
148
+ - exe/exa-ai-enrichment-list
149
+ - exe/exa-ai-enrichment-update
150
+ - exe/exa-ai-find-similar
130
151
  - exe/exa-ai-get-contents
131
152
  - exe/exa-ai-research-get
132
153
  - exe/exa-ai-research-list
133
154
  - exe/exa-ai-research-start
134
155
  - exe/exa-ai-search
156
+ - exe/exa-ai-webset-cancel
157
+ - exe/exa-ai-webset-create
158
+ - exe/exa-ai-webset-delete
159
+ - exe/exa-ai-webset-get
160
+ - exe/exa-ai-webset-item-delete
161
+ - exe/exa-ai-webset-item-get
162
+ - exe/exa-ai-webset-item-list
163
+ - exe/exa-ai-webset-list
164
+ - exe/exa-ai-webset-search-cancel
165
+ - exe/exa-ai-webset-search-create
166
+ - exe/exa-ai-webset-search-get
167
+ - exe/exa-ai-webset-update
135
168
  - lib/exa-ai.rb
136
169
  - lib/exa.rb
137
170
  - lib/exa/cli/base.rb
@@ -139,8 +172,11 @@ files:
139
172
  - lib/exa/cli/formatters/answer_formatter.rb
140
173
  - lib/exa/cli/formatters/contents_formatter.rb
141
174
  - lib/exa/cli/formatters/context_formatter.rb
175
+ - lib/exa/cli/formatters/enrichment_formatter.rb
142
176
  - lib/exa/cli/formatters/research_formatter.rb
143
177
  - lib/exa/cli/formatters/search_formatter.rb
178
+ - lib/exa/cli/formatters/webset_formatter.rb
179
+ - lib/exa/cli/formatters/webset_item_formatter.rb
144
180
  - lib/exa/cli/polling.rb
145
181
  - lib/exa/client.rb
146
182
  - lib/exa/connection.rb
@@ -153,6 +189,11 @@ files:
153
189
  - lib/exa/resources/research_list.rb
154
190
  - lib/exa/resources/research_task.rb
155
191
  - lib/exa/resources/search_result.rb
192
+ - lib/exa/resources/webset.rb
193
+ - lib/exa/resources/webset_collection.rb
194
+ - lib/exa/resources/webset_enrichment.rb
195
+ - lib/exa/resources/webset_enrichment_collection.rb
196
+ - lib/exa/resources/webset_search.rb
156
197
  - lib/exa/services/answer.rb
157
198
  - lib/exa/services/answer_stream.rb
158
199
  - lib/exa/services/context.rb
@@ -163,6 +204,26 @@ files:
163
204
  - lib/exa/services/research_list.rb
164
205
  - lib/exa/services/research_start.rb
165
206
  - lib/exa/services/search.rb
207
+ - lib/exa/services/websets/cancel.rb
208
+ - lib/exa/services/websets/cancel_enrichment.rb
209
+ - lib/exa/services/websets/cancel_search.rb
210
+ - lib/exa/services/websets/create.rb
211
+ - lib/exa/services/websets/create_enrichment.rb
212
+ - lib/exa/services/websets/create_search.rb
213
+ - lib/exa/services/websets/create_search_validator.rb
214
+ - lib/exa/services/websets/create_validator.rb
215
+ - lib/exa/services/websets/delete.rb
216
+ - lib/exa/services/websets/delete_enrichment.rb
217
+ - lib/exa/services/websets/delete_item.rb
218
+ - lib/exa/services/websets/get_item.rb
219
+ - lib/exa/services/websets/get_search.rb
220
+ - lib/exa/services/websets/list.rb
221
+ - lib/exa/services/websets/list_items.rb
222
+ - lib/exa/services/websets/retrieve.rb
223
+ - lib/exa/services/websets/retrieve_enrichment.rb
224
+ - lib/exa/services/websets/update.rb
225
+ - lib/exa/services/websets/update_enrichment.rb
226
+ - lib/exa/services/websets_parameter_converter.rb
166
227
  - lib/exa/version.rb
167
228
  homepage: https://github.com/benjaminjackson/exa-ruby
168
229
  licenses:
@@ -185,7 +246,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
246
  - !ruby/object:Gem::Version
186
247
  version: '0'
187
248
  requirements: []
188
- rubygems_version: 3.7.1
249
+ rubygems_version: 3.7.2
189
250
  specification_version: 4
190
251
  summary: Ruby client for the Exa.ai API
191
252
  test_files: []