openrouter_client 0.1.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 +7 -0
- data/.env.example +1 -0
- data/.rubocop.yml +68 -0
- data/.ruby-version +2 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +124 -0
- data/LICENSE +22 -0
- data/README.md +378 -0
- data/Rakefile +16 -0
- data/lib/openrouter/api_key.rb +136 -0
- data/lib/openrouter/client.rb +157 -0
- data/lib/openrouter/completion.rb +293 -0
- data/lib/openrouter/credit.rb +71 -0
- data/lib/openrouter/generation.rb +107 -0
- data/lib/openrouter/model.rb +164 -0
- data/lib/openrouter/stream.rb +105 -0
- data/lib/openrouter/version.rb +5 -0
- data/lib/openrouter.rb +119 -0
- data/openrouter_client.gemspec +33 -0
- data/rbi/openrouter/api_key.rbi +85 -0
- data/rbi/openrouter/client.rbi +56 -0
- data/rbi/openrouter/completion.rbi +152 -0
- data/rbi/openrouter/credit.rbi +42 -0
- data/rbi/openrouter/generation.rbi +69 -0
- data/rbi/openrouter/model.rbi +92 -0
- data/rbi/openrouter/openrouter.rbi +77 -0
- data/rbi/openrouter/stream.rbi +39 -0
- data/rbi/openrouter/version.rbi +6 -0
- data/sorbet/config +2 -0
- data/sorbet/rbi/.gitignore +2 -0
- metadata +89 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# typed: strict
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module OpenRouter
|
|
5
|
+
class Completion
|
|
6
|
+
COMPLETIONS_PATH = T.let(T.unsafe(nil), String)
|
|
7
|
+
|
|
8
|
+
module Role
|
|
9
|
+
SYSTEM = T.let(T.unsafe(nil), String)
|
|
10
|
+
USER = T.let(T.unsafe(nil), String)
|
|
11
|
+
ASSISTANT = T.let(T.unsafe(nil), String)
|
|
12
|
+
TOOL = T.let(T.unsafe(nil), String)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
module FinishReason
|
|
16
|
+
STOP = T.let(T.unsafe(nil), String)
|
|
17
|
+
LENGTH = T.let(T.unsafe(nil), String)
|
|
18
|
+
TOOL_CALLS = T.let(T.unsafe(nil), String)
|
|
19
|
+
CONTENT_FILTER = T.let(T.unsafe(nil), String)
|
|
20
|
+
ERROR = T.let(T.unsafe(nil), String)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
sig { returns(String) }
|
|
24
|
+
def id; end
|
|
25
|
+
|
|
26
|
+
sig { returns(String) }
|
|
27
|
+
def model; end
|
|
28
|
+
|
|
29
|
+
sig { returns(Integer) }
|
|
30
|
+
def created; end
|
|
31
|
+
|
|
32
|
+
sig { returns(String) }
|
|
33
|
+
def object; end
|
|
34
|
+
|
|
35
|
+
sig { returns(T::Array[T::Hash[T.untyped, T.untyped]]) }
|
|
36
|
+
def choices; end
|
|
37
|
+
|
|
38
|
+
sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
|
|
39
|
+
def usage; end
|
|
40
|
+
|
|
41
|
+
sig { returns(T.nilable(String)) }
|
|
42
|
+
def system_fingerprint; end
|
|
43
|
+
|
|
44
|
+
sig { params(attributes: T.untyped, client: OpenRouter::Client).void }
|
|
45
|
+
def initialize(attributes, client: OpenRouter.client); end
|
|
46
|
+
|
|
47
|
+
class << self
|
|
48
|
+
sig do
|
|
49
|
+
params(
|
|
50
|
+
messages: T::Array[T::Hash[T.untyped, T.untyped]],
|
|
51
|
+
model: T.nilable(String),
|
|
52
|
+
temperature: T.nilable(Float),
|
|
53
|
+
max_tokens: T.nilable(Integer),
|
|
54
|
+
top_p: T.nilable(Float),
|
|
55
|
+
top_k: T.nilable(Integer),
|
|
56
|
+
frequency_penalty: T.nilable(Float),
|
|
57
|
+
presence_penalty: T.nilable(Float),
|
|
58
|
+
repetition_penalty: T.nilable(Float),
|
|
59
|
+
stop: T.nilable(T.any(String, T::Array[String])),
|
|
60
|
+
seed: T.nilable(Integer),
|
|
61
|
+
tools: T.nilable(T::Array[T::Hash[T.untyped, T.untyped]]),
|
|
62
|
+
tool_choice: T.nilable(T.any(String, T::Hash[T.untyped, T.untyped])),
|
|
63
|
+
response_format: T.nilable(T::Hash[T.untyped, T.untyped]),
|
|
64
|
+
transforms: T.nilable(T::Array[String]),
|
|
65
|
+
models: T.nilable(T::Array[String]),
|
|
66
|
+
route: T.nilable(String),
|
|
67
|
+
provider: T.nilable(T::Hash[T.untyped, T.untyped]),
|
|
68
|
+
client: OpenRouter::Client,
|
|
69
|
+
options: T.untyped
|
|
70
|
+
).returns(OpenRouter::Completion)
|
|
71
|
+
end
|
|
72
|
+
def create!(messages:, model: nil, temperature: nil, max_tokens: nil, top_p: nil,
|
|
73
|
+
top_k: nil, frequency_penalty: nil, presence_penalty: nil, repetition_penalty: nil,
|
|
74
|
+
stop: nil, seed: nil, tools: nil, tool_choice: nil, response_format: nil,
|
|
75
|
+
transforms: nil, models: nil, route: nil, provider: nil, client: OpenRouter.client, **options); end
|
|
76
|
+
|
|
77
|
+
sig do
|
|
78
|
+
params(
|
|
79
|
+
messages: T::Array[T::Hash[T.untyped, T.untyped]],
|
|
80
|
+
model: T.nilable(String),
|
|
81
|
+
temperature: T.nilable(Float),
|
|
82
|
+
max_tokens: T.nilable(Integer),
|
|
83
|
+
top_p: T.nilable(Float),
|
|
84
|
+
top_k: T.nilable(Integer),
|
|
85
|
+
frequency_penalty: T.nilable(Float),
|
|
86
|
+
presence_penalty: T.nilable(Float),
|
|
87
|
+
repetition_penalty: T.nilable(Float),
|
|
88
|
+
stop: T.nilable(T.any(String, T::Array[String])),
|
|
89
|
+
seed: T.nilable(Integer),
|
|
90
|
+
tools: T.nilable(T::Array[T::Hash[T.untyped, T.untyped]]),
|
|
91
|
+
tool_choice: T.nilable(T.any(String, T::Hash[T.untyped, T.untyped])),
|
|
92
|
+
response_format: T.nilable(T::Hash[T.untyped, T.untyped]),
|
|
93
|
+
transforms: T.nilable(T::Array[String]),
|
|
94
|
+
models: T.nilable(T::Array[String]),
|
|
95
|
+
route: T.nilable(String),
|
|
96
|
+
provider: T.nilable(T::Hash[T.untyped, T.untyped]),
|
|
97
|
+
client: OpenRouter::Client,
|
|
98
|
+
options: T.untyped,
|
|
99
|
+
block: T.nilable(T.proc.params(arg0: T::Hash[T.untyped, T.untyped]).void)
|
|
100
|
+
).returns(OpenRouter::Completion)
|
|
101
|
+
end
|
|
102
|
+
def stream!(messages:, model: nil, temperature: nil, max_tokens: nil, top_p: nil,
|
|
103
|
+
top_k: nil, frequency_penalty: nil, presence_penalty: nil, repetition_penalty: nil,
|
|
104
|
+
stop: nil, seed: nil, tools: nil, tool_choice: nil, response_format: nil,
|
|
105
|
+
transforms: nil, models: nil, route: nil, provider: nil, client: OpenRouter.client, **options, &block); end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
sig { returns(T.nilable(String)) }
|
|
109
|
+
def content; end
|
|
110
|
+
|
|
111
|
+
sig { returns(T.nilable(String)) }
|
|
112
|
+
def role; end
|
|
113
|
+
|
|
114
|
+
sig { returns(T.nilable(String)) }
|
|
115
|
+
def finish_reason; end
|
|
116
|
+
|
|
117
|
+
sig { returns(T.nilable(T::Array[T::Hash[T.untyped, T.untyped]])) }
|
|
118
|
+
def tool_calls; end
|
|
119
|
+
|
|
120
|
+
sig { returns(T.nilable(T::Array[T::Hash[T.untyped, T.untyped]])) }
|
|
121
|
+
def images; end
|
|
122
|
+
|
|
123
|
+
sig { returns(T::Boolean) }
|
|
124
|
+
def images?; end
|
|
125
|
+
|
|
126
|
+
sig { returns(T.nilable(Integer)) }
|
|
127
|
+
def prompt_tokens; end
|
|
128
|
+
|
|
129
|
+
sig { returns(T.nilable(Integer)) }
|
|
130
|
+
def completion_tokens; end
|
|
131
|
+
|
|
132
|
+
sig { returns(T.nilable(Integer)) }
|
|
133
|
+
def total_tokens; end
|
|
134
|
+
|
|
135
|
+
sig { returns(T::Boolean) }
|
|
136
|
+
def stopped?; end
|
|
137
|
+
|
|
138
|
+
sig { returns(T::Boolean) }
|
|
139
|
+
def truncated?; end
|
|
140
|
+
|
|
141
|
+
sig { returns(T::Boolean) }
|
|
142
|
+
def tool_calls?; end
|
|
143
|
+
|
|
144
|
+
sig { returns(T::Boolean) }
|
|
145
|
+
def has_tool_calls?; end
|
|
146
|
+
|
|
147
|
+
private
|
|
148
|
+
|
|
149
|
+
sig { params(attributes: T.untyped).void }
|
|
150
|
+
def reset_attributes(attributes); end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# typed: strict
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module OpenRouter
|
|
5
|
+
class Credit
|
|
6
|
+
CREDITS_PATH = T.let(T.unsafe(nil), String)
|
|
7
|
+
|
|
8
|
+
sig { returns(T.nilable(Float)) }
|
|
9
|
+
def total_credits; end
|
|
10
|
+
|
|
11
|
+
sig { returns(Float) }
|
|
12
|
+
def total_usage; end
|
|
13
|
+
|
|
14
|
+
sig { returns(Float) }
|
|
15
|
+
def remaining; end
|
|
16
|
+
|
|
17
|
+
sig { params(attributes: T.untyped, client: OpenRouter::Client).void }
|
|
18
|
+
def initialize(attributes, client: OpenRouter.client); end
|
|
19
|
+
|
|
20
|
+
class << self
|
|
21
|
+
sig { params(client: OpenRouter::Client).returns(OpenRouter::Credit) }
|
|
22
|
+
def fetch(client: OpenRouter.client); end
|
|
23
|
+
|
|
24
|
+
sig { params(client: OpenRouter::Client).returns(Float) }
|
|
25
|
+
def remaining(client: OpenRouter.client); end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
sig { returns(T::Boolean) }
|
|
29
|
+
def low?; end
|
|
30
|
+
|
|
31
|
+
sig { returns(T::Boolean) }
|
|
32
|
+
def exhausted?; end
|
|
33
|
+
|
|
34
|
+
sig { returns(T.nilable(Float)) }
|
|
35
|
+
def usage_percentage; end
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
|
|
39
|
+
sig { params(attributes: T.untyped).void }
|
|
40
|
+
def reset_attributes(attributes); end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# typed: strict
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module OpenRouter
|
|
5
|
+
class Generation
|
|
6
|
+
GENERATION_PATH = T.let(T.unsafe(nil), String)
|
|
7
|
+
|
|
8
|
+
sig { returns(String) }
|
|
9
|
+
def id; end
|
|
10
|
+
|
|
11
|
+
sig { returns(T.nilable(String)) }
|
|
12
|
+
def model; end
|
|
13
|
+
|
|
14
|
+
sig { returns(T.nilable(Integer)) }
|
|
15
|
+
def total_time; end
|
|
16
|
+
|
|
17
|
+
sig { returns(T.nilable(Integer)) }
|
|
18
|
+
def time_to_first_token; end
|
|
19
|
+
|
|
20
|
+
sig { returns(T.nilable(Integer)) }
|
|
21
|
+
def native_prompt_tokens; end
|
|
22
|
+
|
|
23
|
+
sig { returns(T.nilable(Integer)) }
|
|
24
|
+
def native_completion_tokens; end
|
|
25
|
+
|
|
26
|
+
sig { returns(T.nilable(Integer)) }
|
|
27
|
+
def native_total_tokens; end
|
|
28
|
+
|
|
29
|
+
sig { returns(T.nilable(Float)) }
|
|
30
|
+
def total_cost; end
|
|
31
|
+
|
|
32
|
+
sig { returns(T.nilable(String)) }
|
|
33
|
+
def provider; end
|
|
34
|
+
|
|
35
|
+
sig { returns(T.nilable(String)) }
|
|
36
|
+
def status; end
|
|
37
|
+
|
|
38
|
+
sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
|
|
39
|
+
def raw; end
|
|
40
|
+
|
|
41
|
+
sig { params(attributes: T.untyped, client: OpenRouter::Client).void }
|
|
42
|
+
def initialize(attributes, client: OpenRouter.client); end
|
|
43
|
+
|
|
44
|
+
class << self
|
|
45
|
+
sig { params(id: String, client: OpenRouter::Client).returns(T.nilable(OpenRouter::Generation)) }
|
|
46
|
+
def find_by(id:, client: OpenRouter.client); end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
sig { returns(T.nilable(Float)) }
|
|
50
|
+
def prompt_cost; end
|
|
51
|
+
|
|
52
|
+
sig { returns(T.nilable(Float)) }
|
|
53
|
+
def completion_cost; end
|
|
54
|
+
|
|
55
|
+
sig { returns(T.nilable(Float)) }
|
|
56
|
+
def tokens_per_second; end
|
|
57
|
+
|
|
58
|
+
sig { returns(T::Boolean) }
|
|
59
|
+
def complete?; end
|
|
60
|
+
|
|
61
|
+
sig { returns(T::Boolean) }
|
|
62
|
+
def failed?; end
|
|
63
|
+
|
|
64
|
+
private
|
|
65
|
+
|
|
66
|
+
sig { params(attributes: T.untyped).void }
|
|
67
|
+
def reset_attributes(attributes); end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# typed: strict
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module OpenRouter
|
|
5
|
+
class Model
|
|
6
|
+
MODELS_PATH = T.let(T.unsafe(nil), String)
|
|
7
|
+
|
|
8
|
+
sig { returns(String) }
|
|
9
|
+
def id; end
|
|
10
|
+
|
|
11
|
+
sig { returns(T.nilable(String)) }
|
|
12
|
+
def name; end
|
|
13
|
+
|
|
14
|
+
sig { returns(T.nilable(String)) }
|
|
15
|
+
def description; end
|
|
16
|
+
|
|
17
|
+
sig { returns(T.nilable(Integer)) }
|
|
18
|
+
def context_length; end
|
|
19
|
+
|
|
20
|
+
sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
|
|
21
|
+
def pricing; end
|
|
22
|
+
|
|
23
|
+
sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
|
|
24
|
+
def top_provider; end
|
|
25
|
+
|
|
26
|
+
sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
|
|
27
|
+
def architecture; end
|
|
28
|
+
|
|
29
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
30
|
+
def supported_parameters; end
|
|
31
|
+
|
|
32
|
+
sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
|
|
33
|
+
def per_request_limits; end
|
|
34
|
+
|
|
35
|
+
sig { returns(T.nilable(String)) }
|
|
36
|
+
def created; end
|
|
37
|
+
|
|
38
|
+
sig { params(attributes: T.untyped, client: OpenRouter::Client).void }
|
|
39
|
+
def initialize(attributes, client: OpenRouter.client); end
|
|
40
|
+
|
|
41
|
+
sig { returns(T.nilable(Float)) }
|
|
42
|
+
def input_price; end
|
|
43
|
+
|
|
44
|
+
sig { returns(T.nilable(Float)) }
|
|
45
|
+
def output_price; end
|
|
46
|
+
|
|
47
|
+
sig { returns(T.nilable(Float)) }
|
|
48
|
+
def image_price; end
|
|
49
|
+
|
|
50
|
+
sig { returns(T::Boolean) }
|
|
51
|
+
def free?; end
|
|
52
|
+
|
|
53
|
+
sig { params(messages: T::Array[T::Hash[T.untyped, T.untyped]], options: T.untyped).returns(OpenRouter::Completion) }
|
|
54
|
+
def complete(messages:, **options); end
|
|
55
|
+
|
|
56
|
+
class << self
|
|
57
|
+
sig { params(id: String, client: OpenRouter::Client).returns(OpenRouter::Model) }
|
|
58
|
+
def find(id, client: OpenRouter.client); end
|
|
59
|
+
|
|
60
|
+
sig { params(id: String, client: OpenRouter::Client).returns(T.nilable(OpenRouter::Model)) }
|
|
61
|
+
def find_by(id:, client: OpenRouter.client); end
|
|
62
|
+
|
|
63
|
+
sig { params(id: String, client: OpenRouter::Client).returns(OpenRouter::Model) }
|
|
64
|
+
def find_by!(id:, client: OpenRouter.client); end
|
|
65
|
+
|
|
66
|
+
sig do
|
|
67
|
+
params(
|
|
68
|
+
client: OpenRouter::Client,
|
|
69
|
+
block: T.proc.params(arg0: OpenRouter::Model).void
|
|
70
|
+
).void
|
|
71
|
+
end
|
|
72
|
+
def each(client: OpenRouter.client, &block); end
|
|
73
|
+
|
|
74
|
+
sig { params(client: OpenRouter::Client).returns(T::Array[OpenRouter::Model]) }
|
|
75
|
+
def all(client: OpenRouter.client); end
|
|
76
|
+
|
|
77
|
+
sig { params(query: String, client: OpenRouter::Client).returns(T::Array[OpenRouter::Model]) }
|
|
78
|
+
def search(query:, client: OpenRouter.client); end
|
|
79
|
+
|
|
80
|
+
sig { params(provider: String, client: OpenRouter::Client).returns(T::Array[OpenRouter::Model]) }
|
|
81
|
+
def by_provider(provider:, client: OpenRouter.client); end
|
|
82
|
+
|
|
83
|
+
sig { params(client: OpenRouter::Client).returns(T::Array[OpenRouter::Model]) }
|
|
84
|
+
def free(client: OpenRouter.client); end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
private
|
|
88
|
+
|
|
89
|
+
sig { params(attributes: T.untyped).void }
|
|
90
|
+
def reset_attributes(attributes); end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# typed: strict
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module OpenRouter
|
|
5
|
+
class Error < StandardError; end
|
|
6
|
+
class UnauthorizedError < Error; end
|
|
7
|
+
class NotFoundError < Error; end
|
|
8
|
+
class ServerError < Error; end
|
|
9
|
+
class ConfigurationError < Error; end
|
|
10
|
+
class ForbiddenError < Error; end
|
|
11
|
+
class RateLimitError < Error; end
|
|
12
|
+
class BadRequestError < Error; end
|
|
13
|
+
class PaymentRequiredError < Error; end
|
|
14
|
+
|
|
15
|
+
class Configuration
|
|
16
|
+
DEFAULT_API_BASE = T.let(T.unsafe(nil), String)
|
|
17
|
+
DEFAULT_REQUEST_TIMEOUT = T.let(T.unsafe(nil), Integer)
|
|
18
|
+
|
|
19
|
+
# api_key
|
|
20
|
+
sig { returns(T.nilable(String)) }
|
|
21
|
+
def api_key; end
|
|
22
|
+
|
|
23
|
+
sig { params(value: T.nilable(String)).returns(T.nilable(String)) }
|
|
24
|
+
def api_key=(value); end
|
|
25
|
+
|
|
26
|
+
# api_base
|
|
27
|
+
sig { returns(String) }
|
|
28
|
+
def api_base; end
|
|
29
|
+
|
|
30
|
+
sig { params(value: String).returns(String) }
|
|
31
|
+
def api_base=(value); end
|
|
32
|
+
|
|
33
|
+
# request_timeout
|
|
34
|
+
sig { returns(Integer) }
|
|
35
|
+
def request_timeout; end
|
|
36
|
+
|
|
37
|
+
sig { params(value: Integer).returns(Integer) }
|
|
38
|
+
def request_timeout=(value); end
|
|
39
|
+
|
|
40
|
+
# site_url
|
|
41
|
+
sig { returns(T.nilable(String)) }
|
|
42
|
+
def site_url; end
|
|
43
|
+
|
|
44
|
+
sig { params(value: T.nilable(String)).returns(T.nilable(String)) }
|
|
45
|
+
def site_url=(value); end
|
|
46
|
+
|
|
47
|
+
# site_name
|
|
48
|
+
sig { returns(T.nilable(String)) }
|
|
49
|
+
def site_name; end
|
|
50
|
+
|
|
51
|
+
sig { params(value: T.nilable(String)).returns(T.nilable(String)) }
|
|
52
|
+
def site_name=(value); end
|
|
53
|
+
|
|
54
|
+
sig { void }
|
|
55
|
+
def initialize; end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
class << self
|
|
59
|
+
sig { returns(OpenRouter::Configuration) }
|
|
60
|
+
def configuration; end
|
|
61
|
+
|
|
62
|
+
sig { params(value: OpenRouter::Configuration).returns(OpenRouter::Configuration) }
|
|
63
|
+
def configuration=(value); end
|
|
64
|
+
|
|
65
|
+
sig { params(block: T.proc.params(arg0: OpenRouter::Configuration).void).void }
|
|
66
|
+
def configure(&block); end
|
|
67
|
+
|
|
68
|
+
sig { returns(OpenRouter::Client) }
|
|
69
|
+
def client; end
|
|
70
|
+
|
|
71
|
+
sig { void }
|
|
72
|
+
def reset_client!; end
|
|
73
|
+
|
|
74
|
+
sig { params(object: T.untyped).returns(T.untyped) }
|
|
75
|
+
def deep_symbolize_keys(object); end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# typed: strict
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module OpenRouter
|
|
5
|
+
class Stream
|
|
6
|
+
sig { returns(String) }
|
|
7
|
+
def path; end
|
|
8
|
+
|
|
9
|
+
sig do
|
|
10
|
+
params(
|
|
11
|
+
path: String,
|
|
12
|
+
input: T.untyped,
|
|
13
|
+
client: OpenRouter::Client
|
|
14
|
+
).void
|
|
15
|
+
end
|
|
16
|
+
def initialize(path:, input:, client: OpenRouter.client); end
|
|
17
|
+
|
|
18
|
+
sig do
|
|
19
|
+
params(block: T.proc.params(arg0: T::Hash[T.untyped, T.untyped]).void).void
|
|
20
|
+
end
|
|
21
|
+
def each(&block); end
|
|
22
|
+
|
|
23
|
+
class SSEDecoder
|
|
24
|
+
sig { void }
|
|
25
|
+
def initialize; end
|
|
26
|
+
|
|
27
|
+
sig { params(line: String).returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
|
|
28
|
+
def decode(line); end
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
|
|
33
|
+
def flush_event; end
|
|
34
|
+
|
|
35
|
+
sig { returns(NilClass) }
|
|
36
|
+
def reset_state; end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
data/sorbet/config
ADDED
metadata
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: openrouter_client
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Dylan Player
|
|
8
|
+
bindir: exe
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 2026-01-06 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: faraday
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '1'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '1'
|
|
26
|
+
description: A comprehensive Ruby client for the OpenRouter API, providing access
|
|
27
|
+
to hundreds of AI models through a unified interface.
|
|
28
|
+
email:
|
|
29
|
+
- dylan@851.sh
|
|
30
|
+
executables: []
|
|
31
|
+
extensions: []
|
|
32
|
+
extra_rdoc_files: []
|
|
33
|
+
files:
|
|
34
|
+
- ".env.example"
|
|
35
|
+
- ".rubocop.yml"
|
|
36
|
+
- ".ruby-version"
|
|
37
|
+
- Gemfile
|
|
38
|
+
- Gemfile.lock
|
|
39
|
+
- LICENSE
|
|
40
|
+
- README.md
|
|
41
|
+
- Rakefile
|
|
42
|
+
- lib/openrouter.rb
|
|
43
|
+
- lib/openrouter/api_key.rb
|
|
44
|
+
- lib/openrouter/client.rb
|
|
45
|
+
- lib/openrouter/completion.rb
|
|
46
|
+
- lib/openrouter/credit.rb
|
|
47
|
+
- lib/openrouter/generation.rb
|
|
48
|
+
- lib/openrouter/model.rb
|
|
49
|
+
- lib/openrouter/stream.rb
|
|
50
|
+
- lib/openrouter/version.rb
|
|
51
|
+
- openrouter_client.gemspec
|
|
52
|
+
- rbi/openrouter/api_key.rbi
|
|
53
|
+
- rbi/openrouter/client.rbi
|
|
54
|
+
- rbi/openrouter/completion.rbi
|
|
55
|
+
- rbi/openrouter/credit.rbi
|
|
56
|
+
- rbi/openrouter/generation.rbi
|
|
57
|
+
- rbi/openrouter/model.rbi
|
|
58
|
+
- rbi/openrouter/openrouter.rbi
|
|
59
|
+
- rbi/openrouter/stream.rbi
|
|
60
|
+
- rbi/openrouter/version.rbi
|
|
61
|
+
- sorbet/config
|
|
62
|
+
- sorbet/rbi/.gitignore
|
|
63
|
+
homepage: https://github.com/851-labs/openrouter_client
|
|
64
|
+
licenses:
|
|
65
|
+
- MIT
|
|
66
|
+
metadata:
|
|
67
|
+
allowed_push_host: https://rubygems.org
|
|
68
|
+
homepage_uri: https://github.com/851-labs/openrouter_client
|
|
69
|
+
source_code_uri: https://github.com/851-labs/openrouter_client
|
|
70
|
+
changelog_uri: https://github.com/851-labs/openrouter_client/blob/main/CHANGELOG.md
|
|
71
|
+
rubygems_mfa_required: 'true'
|
|
72
|
+
rdoc_options: []
|
|
73
|
+
require_paths:
|
|
74
|
+
- lib
|
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
76
|
+
requirements:
|
|
77
|
+
- - ">="
|
|
78
|
+
- !ruby/object:Gem::Version
|
|
79
|
+
version: 3.3.0
|
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
|
+
requirements:
|
|
82
|
+
- - ">="
|
|
83
|
+
- !ruby/object:Gem::Version
|
|
84
|
+
version: '0'
|
|
85
|
+
requirements: []
|
|
86
|
+
rubygems_version: 3.6.2
|
|
87
|
+
specification_version: 4
|
|
88
|
+
summary: Ruby client for OpenRouter API.
|
|
89
|
+
test_files: []
|