payloop 0.2.0 → 0.4.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 +4 -4
- data/CHANGELOG.md +11 -0
- data/lib/payloop/api/invocation.rb +2 -4
- data/lib/payloop/attribution.rb +4 -2
- data/lib/payloop/client.rb +7 -0
- data/lib/payloop/config.rb +23 -2
- data/lib/payloop/errors.rb +3 -0
- data/lib/payloop/sentinel.rb +10 -1
- data/lib/payloop/version.rb +1 -1
- data/lib/payloop/wrappers/anthropic.rb +10 -3
- data/lib/payloop/wrappers/base.rb +31 -26
- data/lib/payloop/wrappers/constants.rb +1 -0
- data/lib/payloop/wrappers/geminiai.rb +22 -7
- data/lib/payloop/wrappers/google.rb +14 -5
- data/lib/payloop/wrappers/groq.rb +295 -0
- data/lib/payloop/wrappers/openai.rb +144 -6
- data/lib/payloop/wrappers/ruby_llm.rb +18 -4
- data/lib/payloop.rb +1 -0
- data/sig/payloop/api/base.rbs +24 -0
- data/sig/payloop/api/invocation.rbs +16 -0
- data/sig/payloop/api/sentinel.rbs +9 -0
- data/sig/payloop/api/workflow.rbs +15 -0
- data/sig/payloop/api/workflows.rbs +16 -0
- data/sig/payloop/attribution.rbs +17 -0
- data/sig/payloop/client.rbs +29 -0
- data/sig/payloop/collector.rbs +20 -0
- data/sig/payloop/config.rbs +33 -0
- data/sig/payloop/errors.rbs +28 -0
- data/sig/payloop/sentinel.rbs +17 -0
- data/sig/payloop/version.rbs +5 -0
- data/sig/payloop/wrappers/anthropic.rbs +18 -0
- data/sig/payloop/wrappers/base.rbs +21 -0
- data/sig/payloop/wrappers/constants.rbs +10 -0
- data/sig/payloop/wrappers/geminiai.rbs +19 -0
- data/sig/payloop/wrappers/google.rbs +19 -0
- data/sig/payloop/wrappers/groq.rbs +22 -0
- data/sig/payloop/wrappers/openai.rbs +19 -0
- data/sig/payloop/wrappers/ruby_llm.rbs +21 -0
- metadata +23 -2
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Starter signatures generated by typeprof + hand-refined; see CLAUDE.md
|
|
2
|
+
# "Code style: type signatures (RBS)" for the refinement convention.
|
|
3
|
+
module Payloop
|
|
4
|
+
class Client
|
|
5
|
+
@openai: Payloop::Wrappers::OpenAI
|
|
6
|
+
@anthropic: Payloop::Wrappers::Anthropic
|
|
7
|
+
@google: Payloop::Wrappers::Google
|
|
8
|
+
@geminiai: Payloop::Wrappers::GeminiAI
|
|
9
|
+
@ruby_llm: Payloop::Wrappers::RubyLLM
|
|
10
|
+
@groq: Payloop::Wrappers::Groq
|
|
11
|
+
@workflows: Payloop::API::Workflows
|
|
12
|
+
|
|
13
|
+
attr_reader config: Payloop::Config
|
|
14
|
+
attr_reader collector: Payloop::Collector
|
|
15
|
+
attr_reader sentinel: Payloop::Sentinel
|
|
16
|
+
|
|
17
|
+
def initialize: (?api_key: String?, ?collector_url: String?, ?api_url: String?, ?timeout: Numeric?) -> void
|
|
18
|
+
def openai: -> Payloop::Wrappers::OpenAI
|
|
19
|
+
def anthropic: -> Payloop::Wrappers::Anthropic
|
|
20
|
+
def google: -> Payloop::Wrappers::Google
|
|
21
|
+
def geminiai: -> Payloop::Wrappers::GeminiAI
|
|
22
|
+
def ruby_llm: -> Payloop::Wrappers::RubyLLM
|
|
23
|
+
def groq: -> Payloop::Wrappers::Groq
|
|
24
|
+
def attribution: (parent_id: String, ?parent_name: String?, ?subsidiary_id: String?, ?subsidiary_name: String?) -> self
|
|
25
|
+
def new_transaction: -> self
|
|
26
|
+
def workflows: -> Payloop::API::Workflows
|
|
27
|
+
def shutdown: -> void
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Starter signatures generated by typeprof + hand-refined; see CLAUDE.md
|
|
2
|
+
# "Code style: type signatures (RBS)" for the refinement convention.
|
|
3
|
+
module Payloop
|
|
4
|
+
class Collector
|
|
5
|
+
DEFAULT_MAX_RETRIES: Integer
|
|
6
|
+
RETRY_DELAY: Integer
|
|
7
|
+
@config: Payloop::Config
|
|
8
|
+
# Concurrent::ThreadPoolExecutor — no upstream signatures available.
|
|
9
|
+
@executor: untyped
|
|
10
|
+
|
|
11
|
+
def initialize: (Payloop::Config config) -> void
|
|
12
|
+
def submit_async: (Hash[Symbol, untyped] payload) -> void
|
|
13
|
+
def submit: (Hash[Symbol, untyped] payload) -> untyped
|
|
14
|
+
def shutdown: -> void
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
def submit_with_retry: (Hash[Symbol, untyped] payload, ?Integer attempt) -> untyped
|
|
18
|
+
def post_to_collector: (Hash[Symbol, untyped] payload) -> untyped
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Starter signatures generated by typeprof + hand-refined; see CLAUDE.md
|
|
2
|
+
# "Code style: type signatures (RBS)" for the refinement convention.
|
|
3
|
+
module Payloop
|
|
4
|
+
class Config
|
|
5
|
+
# Concurrent::AtomicReference[T] — no `concurrent-ruby` signatures for
|
|
6
|
+
# that class are shipped in the public rbs_collection, so falls back to
|
|
7
|
+
# `untyped`. Refine once we add a hand-rolled stub or upstream sig.
|
|
8
|
+
@attribution: untyped
|
|
9
|
+
@tx_uuid: untyped
|
|
10
|
+
@raise_if_irrelevant: untyped
|
|
11
|
+
@secs_irrelevant_request_timeout: untyped
|
|
12
|
+
|
|
13
|
+
attr_reader api_key: String
|
|
14
|
+
attr_reader collector_url: String
|
|
15
|
+
attr_reader api_url: String
|
|
16
|
+
attr_reader timeout: Numeric
|
|
17
|
+
attr_reader version: String
|
|
18
|
+
|
|
19
|
+
def initialize: (?api_key: String?, ?collector_url: String?, ?api_url: String?, ?timeout: Numeric?) -> void
|
|
20
|
+
def attribution: -> Payloop::Attribution?
|
|
21
|
+
def attribution=: (Payloop::Attribution? value) -> void
|
|
22
|
+
def tx_uuid: -> String
|
|
23
|
+
def tx_uuid=: (String value) -> void
|
|
24
|
+
def raise_if_irrelevant: -> bool
|
|
25
|
+
def raise_if_irrelevant=: (bool value) -> void
|
|
26
|
+
def secs_irrelevant_request_timeout: -> Numeric
|
|
27
|
+
def secs_irrelevant_request_timeout=: (Numeric value) -> void
|
|
28
|
+
def new_transaction: -> String
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
def nonempty_env: (String name) -> String?
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Starter signatures generated by typeprof + hand-refined; see CLAUDE.md
|
|
2
|
+
# "Code style: type signatures (RBS)" for the refinement convention.
|
|
3
|
+
module Payloop
|
|
4
|
+
class Error < StandardError
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
class MissingAPIKeyError < Error
|
|
8
|
+
def initialize: (?String msg) -> void
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class ValidationError < Error
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class RegistrationError < Error
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
class APIError < Error
|
|
18
|
+
attr_reader status_code: Integer?
|
|
19
|
+
attr_reader response_body: String?
|
|
20
|
+
def initialize: (String message, ?status_code: Integer?, ?response_body: String?) -> void
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
class PayloopRequestInterceptedError < Error
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
class StreamError < Error
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Starter signatures generated by typeprof + hand-refined; see CLAUDE.md
|
|
2
|
+
# "Code style: type signatures (RBS)" for the refinement convention.
|
|
3
|
+
module Payloop
|
|
4
|
+
class Sentinel
|
|
5
|
+
@config: Payloop::Config
|
|
6
|
+
|
|
7
|
+
def initialize: (Payloop::Config config) -> void
|
|
8
|
+
def raise_if_irrelevant: (?enabled: bool) -> self
|
|
9
|
+
def set_secs_irrelevant_request_timeout: (Numeric timeout) -> self
|
|
10
|
+
def raise_if_irrelevant!: (title: String?, request: Hash[Symbol, untyped], ?provider: String?, ?version: String?) -> void
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
def make_relevance_intercept_request: (title: String?, request: Hash[Symbol, untyped], ?provider: String?, ?version: String?) -> [bool, String?]
|
|
14
|
+
def normalize_request: (Hash[Symbol, untyped] request) -> untyped
|
|
15
|
+
def remove_procs: (untyped obj) -> untyped
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Starter signatures generated by typeprof + hand-refined; see CLAUDE.md
|
|
2
|
+
# "Code style: type signatures (RBS)" for the refinement convention.
|
|
3
|
+
module Payloop
|
|
4
|
+
module Wrappers
|
|
5
|
+
class Anthropic
|
|
6
|
+
@config: Payloop::Config
|
|
7
|
+
@collector: Payloop::Collector
|
|
8
|
+
@sentinel: Payloop::Sentinel?
|
|
9
|
+
|
|
10
|
+
def initialize: (Payloop::Config config, Payloop::Collector collector, ?Payloop::Sentinel? sentinel) -> void
|
|
11
|
+
def register: (untyped client) -> untyped
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
def validate_client!: (untyped client) -> void
|
|
15
|
+
def wrap_messages_method: (untyped client) -> void
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Starter signatures generated by typeprof + hand-refined; see CLAUDE.md
|
|
2
|
+
# "Code style: type signatures (RBS)" for the refinement convention.
|
|
3
|
+
module Payloop
|
|
4
|
+
module Wrappers
|
|
5
|
+
module Base
|
|
6
|
+
def payloop_wrap_method: (Symbol method_name, String _provider_name) -> void
|
|
7
|
+
def payloop_submit_analytics: (method: Symbol, args: Array[untyped], kwargs: Hash[Symbol, untyped], response: untyped, start_time: Time, end_time: Time, ?provider: String?, ?title: String?, ?version: String?, ?status: String, ?exception: String?) -> void
|
|
8
|
+
def payloop_submit_error_analytics: (method: Symbol, args: Array[untyped], kwargs: Hash[Symbol, untyped], error: StandardError, start_time: Time, end_time: Time, ?provider: String?, ?title: String?, ?version: String?, ?response: untyped) -> void
|
|
9
|
+
def payloop_merge_streaming_chunk: (Hash[String | Symbol, untyped] accumulated, Hash[String | Symbol, untyped] chunk) -> Hash[String | Symbol, untyped]
|
|
10
|
+
def payloop_normalize_openai_chunk: (untyped chunk) -> untyped
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
def extract_query: (Symbol _method, Array[untyped] _args, Hash[Symbol, untyped] kwargs) -> Hash[Symbol, untyped]
|
|
14
|
+
def extract_response: (untyped response) -> untyped
|
|
15
|
+
def extract_instance_variables: (untyped obj) -> Hash[Symbol, untyped]
|
|
16
|
+
def serialize_value: (untyped value) -> untyped
|
|
17
|
+
def deep_copy: (untyped obj) -> untyped
|
|
18
|
+
def build_payload: (query: Hash[Symbol, untyped], response: untyped, start_time: Time, end_time: Time, config: Payloop::Config, status: String, ?provider: String?, ?title: String?, ?version: String?, ?exception: String?) -> Hash[Symbol, untyped]
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Starter signatures generated by typeprof + hand-refined; see CLAUDE.md
|
|
2
|
+
# "Code style: type signatures (RBS)" for the refinement convention.
|
|
3
|
+
module Payloop
|
|
4
|
+
module Wrappers
|
|
5
|
+
class GeminiAI
|
|
6
|
+
@config: Payloop::Config
|
|
7
|
+
@collector: Payloop::Collector
|
|
8
|
+
@sentinel: Payloop::Sentinel?
|
|
9
|
+
|
|
10
|
+
def initialize: (Payloop::Config config, Payloop::Collector collector, ?Payloop::Sentinel? sentinel) -> void
|
|
11
|
+
def register: (untyped client) -> untyped
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
def validate_client!: (untyped client) -> void
|
|
15
|
+
def wrap_generate_content_method: (untyped client) -> void
|
|
16
|
+
def wrap_stream_generate_content_method: (untyped client) -> void
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Starter signatures generated by typeprof + hand-refined; see CLAUDE.md
|
|
2
|
+
# "Code style: type signatures (RBS)" for the refinement convention.
|
|
3
|
+
module Payloop
|
|
4
|
+
module Wrappers
|
|
5
|
+
class Google
|
|
6
|
+
@config: Payloop::Config
|
|
7
|
+
@collector: Payloop::Collector
|
|
8
|
+
@sentinel: Payloop::Sentinel?
|
|
9
|
+
|
|
10
|
+
def initialize: (Payloop::Config config, Payloop::Collector collector, ?Payloop::Sentinel? sentinel) -> void
|
|
11
|
+
def register: (untyped client) -> untyped
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
def validate_client!: (untyped client) -> void
|
|
15
|
+
def patch_response_class!: -> void
|
|
16
|
+
def wrap_generate_content_method: (untyped client) -> void
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Starter signatures generated by typeprof + hand-refined; see CLAUDE.md
|
|
2
|
+
# "Code style: type signatures (RBS)" for the refinement convention.
|
|
3
|
+
module Payloop
|
|
4
|
+
module Wrappers
|
|
5
|
+
class Groq
|
|
6
|
+
CHAT_COMPLETIONS_PATH: String
|
|
7
|
+
@config: Payloop::Config
|
|
8
|
+
@collector: Payloop::Collector
|
|
9
|
+
@sentinel: Payloop::Sentinel?
|
|
10
|
+
|
|
11
|
+
def initialize: (Payloop::Config config, Payloop::Collector collector, ?Payloop::Sentinel? sentinel) -> void
|
|
12
|
+
def register: (untyped client) -> untyped
|
|
13
|
+
def self.extract_model_title: (untyped model, String fallback) -> String
|
|
14
|
+
def self.build_error_response: (streaming: bool, accumulated: Hash[untyped, untyped]?, error: Exception) -> Hash[untyped, untyped]
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
def validate_client!: (untyped client) -> void
|
|
18
|
+
def patch_stream_handler!: () -> void
|
|
19
|
+
def wrap_post_method: (untyped client) -> void
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Starter signatures generated by typeprof + hand-refined; see CLAUDE.md
|
|
2
|
+
# "Code style: type signatures (RBS)" for the refinement convention.
|
|
3
|
+
module Payloop
|
|
4
|
+
module Wrappers
|
|
5
|
+
class OpenAI
|
|
6
|
+
@config: Payloop::Config
|
|
7
|
+
@collector: Payloop::Collector
|
|
8
|
+
@sentinel: Payloop::Sentinel?
|
|
9
|
+
|
|
10
|
+
def initialize: (Payloop::Config config, Payloop::Collector collector, ?Payloop::Sentinel? sentinel) -> void
|
|
11
|
+
def register: (untyped client) -> untyped
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
def wrap_responses_method: (untyped client) -> void
|
|
15
|
+
def validate_client!: (untyped client) -> void
|
|
16
|
+
def wrap_chat_method: (untyped client) -> void
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Starter signatures generated by typeprof + hand-refined; see CLAUDE.md
|
|
2
|
+
# "Code style: type signatures (RBS)" for the refinement convention.
|
|
3
|
+
module Payloop
|
|
4
|
+
module Wrappers
|
|
5
|
+
class RubyLLM
|
|
6
|
+
@config: Payloop::Config
|
|
7
|
+
@collector: Payloop::Collector
|
|
8
|
+
@sentinel: Payloop::Sentinel?
|
|
9
|
+
|
|
10
|
+
def initialize: (Payloop::Config config, Payloop::Collector collector, ?Payloop::Sentinel? sentinel) -> void
|
|
11
|
+
def register: (untyped client) -> untyped
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
def validate_client!: (untyped client) -> void
|
|
15
|
+
def wrap_ask_method: (untyped client) -> void
|
|
16
|
+
def build_query: (String provider, String model_id, Array[Hash[Symbol, untyped]] messages, Hash[Symbol, untyped] tools) -> Hash[Symbol, untyped]
|
|
17
|
+
def build_messages_query: (String model_id, Array[Hash[Symbol, untyped]] messages, Hash[Symbol, untyped] tools) -> Hash[Symbol, untyped]
|
|
18
|
+
def build_google_query: (String model_id, Array[Hash[Symbol, untyped]] messages, Hash[Symbol, untyped] tools) -> Hash[Symbol, untyped]
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: payloop
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Payloop
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-05-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: concurrent-ruby
|
|
@@ -52,8 +52,29 @@ files:
|
|
|
52
52
|
- lib/payloop/wrappers/constants.rb
|
|
53
53
|
- lib/payloop/wrappers/geminiai.rb
|
|
54
54
|
- lib/payloop/wrappers/google.rb
|
|
55
|
+
- lib/payloop/wrappers/groq.rb
|
|
55
56
|
- lib/payloop/wrappers/openai.rb
|
|
56
57
|
- lib/payloop/wrappers/ruby_llm.rb
|
|
58
|
+
- sig/payloop/api/base.rbs
|
|
59
|
+
- sig/payloop/api/invocation.rbs
|
|
60
|
+
- sig/payloop/api/sentinel.rbs
|
|
61
|
+
- sig/payloop/api/workflow.rbs
|
|
62
|
+
- sig/payloop/api/workflows.rbs
|
|
63
|
+
- sig/payloop/attribution.rbs
|
|
64
|
+
- sig/payloop/client.rbs
|
|
65
|
+
- sig/payloop/collector.rbs
|
|
66
|
+
- sig/payloop/config.rbs
|
|
67
|
+
- sig/payloop/errors.rbs
|
|
68
|
+
- sig/payloop/sentinel.rbs
|
|
69
|
+
- sig/payloop/version.rbs
|
|
70
|
+
- sig/payloop/wrappers/anthropic.rbs
|
|
71
|
+
- sig/payloop/wrappers/base.rbs
|
|
72
|
+
- sig/payloop/wrappers/constants.rbs
|
|
73
|
+
- sig/payloop/wrappers/geminiai.rbs
|
|
74
|
+
- sig/payloop/wrappers/google.rbs
|
|
75
|
+
- sig/payloop/wrappers/groq.rbs
|
|
76
|
+
- sig/payloop/wrappers/openai.rbs
|
|
77
|
+
- sig/payloop/wrappers/ruby_llm.rbs
|
|
57
78
|
homepage: https://trypayloop.com
|
|
58
79
|
licenses:
|
|
59
80
|
- MIT
|