Skip to content

Commit dce63f1

Browse files
authored
Add support for the conversation API (#646)
* feat: conversation api implementation Signed-off-by: mikeee <[email protected]> * chore: deps for conversation api Signed-off-by: mikeee <[email protected]> * fix: cleanup convo example Signed-off-by: mikeee <[email protected]> * refactor: add a conversationrequest builder and docs Signed-off-by: mikeee <[email protected]> * fix: lint and refactor, adding preallocations for ins/outs Signed-off-by: Mike Nguyen <[email protected]> * fix: lint and imports Signed-off-by: mikeee <[email protected]> * fix: bump to dapr master refs Signed-off-by: mikeee <[email protected]> * fix: enable scheduler with cli fix + tidy Signed-off-by: mikeee <[email protected]> --------- Signed-off-by: mikeee <[email protected]> Signed-off-by: Mike Nguyen <[email protected]>
1 parent e52d60c commit dce63f1

File tree

10 files changed

+301
-60
lines changed

10 files changed

+301
-60
lines changed

.github/workflows/validate_examples.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ jobs:
3232
GOARCH: amd64
3333
GOPROXY: https://proxy.golang.org
3434
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/master/install/install.sh
35-
DAPR_CLI_REF: ${{ github.event.inputs.daprcli_commit }}
36-
DAPR_REF: ${{ github.event.inputs.daprdapr_commit }}
35+
DAPR_CLI_REF: 8bf3a1605f7b2ecfa7d4633ce4c5de13cdb65c5e
36+
DAPR_REF: c86a77f6db5fb9f294f39d096ff0d9a053e55982
3737
CHECKOUT_REPO: ${{ github.repository }}
3838
CHECKOUT_REF: ${{ github.ref }}
3939
outputs:
@@ -164,6 +164,7 @@ jobs:
164164
[
165165
"actor",
166166
"configuration",
167+
"conversation",
167168
"crypto",
168169
"dist-scheduler",
169170
"grpc-service",

client/client.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,9 @@ type Client interface {
273273
// DeleteJobAlpha1 deletes a scheduled job.
274274
DeleteJobAlpha1(ctx context.Context, name string) error
275275

276+
// ConverseAlpha1 interacts with a conversational AI model.
277+
ConverseAlpha1(ctx context.Context, request conversationRequest, options ...conversationRequestOption) (*ConversationResponse, error)
278+
276279
// GrpcClient returns the base grpc client if grpc is used and nil otherwise
277280
GrpcClient() pb.DaprClient
278281

client/conversation.go

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
/*
2+
Copyright 2024 The Dapr Authors
3+
Licensed under the Apache License, Version 2.0 (the "License");
4+
you may not use this file except in compliance with the License.
5+
You may obtain a copy of the License at
6+
http://www.apache.org/licenses/LICENSE-2.0
7+
Unless required by applicable law or agreed to in writing, software
8+
distributed under the License is distributed on an "AS IS" BASIS,
9+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10+
See the License for the specific language governing permissions and
11+
limitations under the License.
12+
*/
13+
14+
package client
15+
16+
import (
17+
"context"
18+
19+
"google.golang.org/protobuf/types/known/anypb"
20+
21+
runtimev1pb "github.com/dapr/dapr/pkg/proto/runtime/v1"
22+
)
23+
24+
// conversationRequest object - currently unexported as used in a functions option pattern
25+
type conversationRequest struct {
26+
name string
27+
inputs []ConversationInput
28+
Parameters map[string]*anypb.Any
29+
Metadata map[string]string
30+
ContextID *string
31+
ScrubPII *bool // Scrub PII from the output
32+
Temperature *float64
33+
}
34+
35+
// NewConversationRequest defines a request with a component name and one or more inputs as a slice
36+
func NewConversationRequest(llmName string, inputs []ConversationInput) conversationRequest {
37+
return conversationRequest{
38+
name: llmName,
39+
inputs: inputs,
40+
}
41+
}
42+
43+
type conversationRequestOption func(request *conversationRequest)
44+
45+
// ConversationInput defines a single input.
46+
type ConversationInput struct {
47+
// The string to send to the llm.
48+
Message string
49+
// The role of the message.
50+
Role *string
51+
// Whether to Scrub PII from the input
52+
ScrubPII *bool
53+
}
54+
55+
// ConversationResponse is the basic response from a conversationRequest.
56+
type ConversationResponse struct {
57+
ContextID string
58+
Outputs []ConversationResult
59+
}
60+
61+
// ConversationResult is the individual
62+
type ConversationResult struct {
63+
Result string
64+
Parameters map[string]*anypb.Any
65+
}
66+
67+
// WithParameters should be used to provide parameters for custom fields.
68+
func WithParameters(parameters map[string]*anypb.Any) conversationRequestOption {
69+
return func(o *conversationRequest) {
70+
o.Parameters = parameters
71+
}
72+
}
73+
74+
// WithMetadata used to define metadata to be passed to components.
75+
func WithMetadata(metadata map[string]string) conversationRequestOption {
76+
return func(o *conversationRequest) {
77+
o.Metadata = metadata
78+
}
79+
}
80+
81+
// WithContextID to provide a new context or continue an existing one.
82+
func WithContextID(id string) conversationRequestOption {
83+
return func(o *conversationRequest) {
84+
o.ContextID = &id
85+
}
86+
}
87+
88+
// WithScrubPII to define whether the outputs should have PII removed.
89+
func WithScrubPII(scrub bool) conversationRequestOption {
90+
return func(o *conversationRequest) {
91+
o.ScrubPII = &scrub
92+
}
93+
}
94+
95+
// WithTemperature to specify which way the LLM leans.
96+
func WithTemperature(temp float64) conversationRequestOption {
97+
return func(o *conversationRequest) {
98+
o.Temperature = &temp
99+
}
100+
}
101+
102+
// ConverseAlpha1 can invoke an LLM given a request created by the NewConversationRequest function.
103+
func (c *GRPCClient) ConverseAlpha1(ctx context.Context, req conversationRequest, options ...conversationRequestOption) (*ConversationResponse, error) {
104+
cinputs := make([]*runtimev1pb.ConversationInput, len(req.inputs))
105+
for i, in := range req.inputs {
106+
cinputs[i] = &runtimev1pb.ConversationInput{
107+
Message: in.Message,
108+
Role: in.Role,
109+
ScrubPII: in.ScrubPII,
110+
}
111+
}
112+
113+
for _, opt := range options {
114+
if opt != nil {
115+
opt(&req)
116+
}
117+
}
118+
119+
request := runtimev1pb.ConversationRequest{
120+
Name: req.name,
121+
ContextID: req.ContextID,
122+
Inputs: cinputs,
123+
Parameters: req.Parameters,
124+
Metadata: req.Metadata,
125+
ScrubPII: req.ScrubPII,
126+
Temperature: req.Temperature,
127+
}
128+
129+
resp, err := c.protoClient.ConverseAlpha1(ctx, &request)
130+
if err != nil {
131+
return nil, err
132+
}
133+
134+
outputs := make([]ConversationResult, len(resp.GetOutputs()))
135+
for i, o := range resp.GetOutputs() {
136+
outputs[i] = ConversationResult{
137+
Result: o.GetResult(),
138+
Parameters: o.GetParameters(),
139+
}
140+
}
141+
142+
return &ConversationResponse{
143+
ContextID: resp.GetContextID(),
144+
Outputs: outputs,
145+
}, nil
146+
}

examples/conversation/README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Dapr Conversation Example with go-sdk
2+
3+
## Step
4+
5+
### Prepare
6+
7+
- Dapr installed
8+
9+
### Run Conversation Example
10+
11+
<!-- STEP
12+
name: Run Conversation
13+
output_match_mode: substring
14+
expected_stdout_lines:
15+
- '== APP == conversation output: hello world'
16+
17+
background: true
18+
sleep: 60
19+
timeout_seconds: 60
20+
-->
21+
22+
```bash
23+
dapr run --app-id conversation \
24+
--dapr-grpc-port 50001 \
25+
--log-level debug \
26+
--resources-path ./config \
27+
-- go run ./main.go
28+
```
29+
30+
<!-- END_STEP -->
31+
32+
## Result
33+
34+
```
35+
- '== APP == conversation output: hello world'
36+
```
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: dapr.io/v1alpha1
2+
kind: Component
3+
metadata:
4+
name: echo
5+
spec:
6+
type: conversation.echo
7+
version: v1

examples/conversation/main.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/*
2+
Copyright 2024 The Dapr Authors
3+
Licensed under the Apache License, Version 2.0 (the "License");
4+
you may not use this file except in compliance with the License.
5+
You may obtain a copy of the License at
6+
7+
http://www.apache.org/licenses/LICENSE-2.0
8+
9+
Unless required by applicable law or agreed to in writing, software
10+
distributed under the License is distributed on an "AS IS" BASIS,
11+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
See the License for the specific language governing permissions and
13+
limitations under the License.
14+
*/
15+
package main
16+
17+
import (
18+
"context"
19+
"fmt"
20+
dapr "github.com/dapr/go-sdk/client"
21+
"log"
22+
)
23+
24+
func main() {
25+
client, err := dapr.NewClient()
26+
if err != nil {
27+
panic(err)
28+
}
29+
30+
input := dapr.ConversationInput{
31+
Message: "hello world",
32+
// Role: nil, // Optional
33+
// ScrubPII: nil, // Optional
34+
}
35+
36+
fmt.Printf("conversation input: %s\n", input.Message)
37+
38+
var conversationComponent = "echo"
39+
40+
request := dapr.NewConversationRequest(conversationComponent, []dapr.ConversationInput{input})
41+
42+
resp, err := client.ConverseAlpha1(context.Background(), request)
43+
if err != nil {
44+
log.Fatalf("err: %v", err)
45+
}
46+
47+
fmt.Printf("conversation output: %s\n", resp.Outputs[0].Result)
48+
}

examples/go.mod

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
github.com/dapr/go-sdk v0.0.0-00010101000000-000000000000
1010
github.com/go-redis/redis/v8 v8.11.5
1111
github.com/google/uuid v1.6.0
12-
google.golang.org/grpc v1.65.0
12+
google.golang.org/grpc v1.67.0
1313
google.golang.org/grpc/examples v0.0.0-20240516203910-e22436abb809
1414
google.golang.org/protobuf v1.34.2
1515
)
@@ -18,7 +18,7 @@ require (
1818
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect
1919
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
2020
github.com/cespare/xxhash/v2 v2.3.0 // indirect
21-
github.com/dapr/dapr v1.14.1 // indirect
21+
github.com/dapr/dapr v1.14.5-0.20241120233620-c86a77f6db5f // indirect
2222
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
2323
github.com/go-chi/chi/v5 v5.1.0 // indirect
2424
github.com/go-logr/logr v1.4.2 // indirect
@@ -28,12 +28,12 @@ require (
2828
github.com/marusama/semaphore/v2 v2.5.0 // indirect
2929
github.com/microsoft/durabletask-go v0.5.1-0.20241024170039-0c4afbc95428 // indirect
3030
github.com/xhit/go-str2duration/v2 v2.1.0 // indirect
31-
go.opentelemetry.io/otel v1.27.0 // indirect
32-
go.opentelemetry.io/otel/metric v1.27.0 // indirect
33-
go.opentelemetry.io/otel/trace v1.27.0 // indirect
34-
golang.org/x/net v0.26.0 // indirect
35-
golang.org/x/sys v0.21.0 // indirect
36-
golang.org/x/text v0.16.0 // indirect
37-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d // indirect
31+
go.opentelemetry.io/otel v1.30.0 // indirect
32+
go.opentelemetry.io/otel/metric v1.30.0 // indirect
33+
go.opentelemetry.io/otel/trace v1.30.0 // indirect
34+
golang.org/x/net v0.29.0 // indirect
35+
golang.org/x/sys v0.25.0 // indirect
36+
golang.org/x/text v0.18.0 // indirect
37+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240924160255-9d4c2d233b61 // indirect
3838
gopkg.in/yaml.v3 v3.0.1 // indirect
3939
)

examples/go.sum

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY
77
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
88
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
99
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
10-
github.com/dapr/dapr v1.14.1 h1:n+FGF82caTsBjmnmKdBfrO94GRuLeuYs6qrAN5oG4ZM=
11-
github.com/dapr/dapr v1.14.1/go.mod h1:oDNgaPHQIDZ3G4n4g89TElXWgkluYwcar41DI/oF4gw=
10+
github.com/dapr/dapr v1.14.5-0.20241120233620-c86a77f6db5f h1:wXPHK2o5FIABU5BvKk/21MN6GKaoUvWc7fESH/hwVls=
11+
github.com/dapr/dapr v1.14.5-0.20241120233620-c86a77f6db5f/go.mod h1:WlsLcudco11+BhaIvg2XyGxD+2GcZf8OTOawd94dAQs=
1212
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1313
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
1414
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -59,24 +59,24 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT
5959
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
6060
github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc=
6161
github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU=
62-
go.opentelemetry.io/otel v1.27.0 h1:9BZoF3yMK/O1AafMiQTVu0YDj5Ea4hPhxCs7sGva+cg=
63-
go.opentelemetry.io/otel v1.27.0/go.mod h1:DMpAK8fzYRzs+bi3rS5REupisuqTheUlSZJ1WnZaPAQ=
64-
go.opentelemetry.io/otel/metric v1.27.0 h1:hvj3vdEKyeCi4YaYfNjv2NUje8FqKqUY8IlF0FxV/ik=
65-
go.opentelemetry.io/otel/metric v1.27.0/go.mod h1:mVFgmRlhljgBiuk/MP/oKylr4hs85GZAylncepAX/ak=
66-
go.opentelemetry.io/otel/trace v1.27.0 h1:IqYb813p7cmbHk0a5y6pD5JPakbVfftRXABGt5/Rscw=
67-
go.opentelemetry.io/otel/trace v1.27.0/go.mod h1:6RiD1hkAprV4/q+yd2ln1HG9GoPx39SuvvstaLBl+l4=
68-
golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY=
69-
golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI=
70-
golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
71-
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
72-
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
73-
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
74-
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
75-
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
76-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d h1:k3zyW3BYYR30e8v3x0bTDdE9vpYFjZHK+HcyqkrppWk=
77-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
78-
google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc=
79-
google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ=
62+
go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts=
63+
go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc=
64+
go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w=
65+
go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ=
66+
go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc=
67+
go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o=
68+
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk=
69+
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY=
70+
golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
71+
golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
72+
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
73+
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
74+
golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
75+
golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
76+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240924160255-9d4c2d233b61 h1:N9BgCIAUvn/M+p4NJccWPWb3BWh88+zyL0ll9HgbEeM=
77+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240924160255-9d4c2d233b61/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
78+
google.golang.org/grpc v1.67.0 h1:IdH9y6PF5MPSdAntIcpjQ+tXO41pcQsfZV2RxtQgVcw=
79+
google.golang.org/grpc v1.67.0/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
8080
google.golang.org/grpc/examples v0.0.0-20240516203910-e22436abb809 h1:f96Rv5C5Y2CWlbKK6KhKDdyFgGOjPHPEMsdyaxE9k0c=
8181
google.golang.org/grpc/examples v0.0.0-20240516203910-e22436abb809/go.mod h1:uaPEAc5V00jjG3DPhGFLXGT290RUV3+aNQigs1W50/8=
8282
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=

go.mod

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ module github.com/dapr/go-sdk
33
go 1.23.3
44

55
require (
6-
github.com/dapr/dapr v1.14.1
6+
github.com/dapr/dapr v1.14.5-0.20241120233620-c86a77f6db5f
77
github.com/go-chi/chi/v5 v5.1.0
88
github.com/golang/mock v1.6.0
99
github.com/google/uuid v1.6.0
1010
github.com/microsoft/durabletask-go v0.5.1-0.20241024170039-0c4afbc95428
1111
github.com/stretchr/testify v1.9.0
12-
google.golang.org/grpc v1.65.0
12+
google.golang.org/grpc v1.67.0
1313
google.golang.org/protobuf v1.34.2
1414
gopkg.in/yaml.v3 v3.0.1
1515
)
@@ -23,12 +23,12 @@ require (
2323
github.com/kr/text v0.2.0 // indirect
2424
github.com/marusama/semaphore/v2 v2.5.0 // indirect
2525
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
26-
go.opentelemetry.io/otel v1.27.0 // indirect
27-
go.opentelemetry.io/otel/metric v1.27.0 // indirect
28-
go.opentelemetry.io/otel/trace v1.27.0 // indirect
29-
golang.org/x/net v0.26.0 // indirect
30-
golang.org/x/sys v0.21.0 // indirect
31-
golang.org/x/text v0.16.0 // indirect
32-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d // indirect
26+
go.opentelemetry.io/otel v1.30.0 // indirect
27+
go.opentelemetry.io/otel/metric v1.30.0 // indirect
28+
go.opentelemetry.io/otel/trace v1.30.0 // indirect
29+
golang.org/x/net v0.29.0 // indirect
30+
golang.org/x/sys v0.25.0 // indirect
31+
golang.org/x/text v0.18.0 // indirect
32+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240924160255-9d4c2d233b61 // indirect
3333
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
3434
)

0 commit comments

Comments
 (0)