Skip to content

Commit 50c16e9

Browse files
committed
new handler interface
1 parent 4be0ddf commit 50c16e9

File tree

26 files changed

+378
-236
lines changed

26 files changed

+378
-236
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,8 @@ func registerLogReaderAgent(conn *polaris.Conn, logFilePath string) error {
186186
},
187187
},
188188
// The handler function implements the tool's logic
189-
Handler: func(ctx *polaris.Ctx) error {
190-
linesToRead := ctx.Int("lines")
189+
Handler: func(r *polaris.ReqCtx) error {
190+
linesToRead := r.Int("lines")
191191
if linesToRead <= 0 {
192192
linesToRead = 10 // Use default if invalid
193193
}
@@ -205,7 +205,7 @@ func registerLogReaderAgent(conn *polaris.Conn, logFilePath string) error {
205205
// Dummy content for example:
206206
content := fmt.Sprintf("Read last %d lines of %s (implementation pending)", linesToRead, logFilePath)
207207

208-
ctx.Set(polaris.Resp{
208+
r.Set(polaris.Resp{
209209
"log_content": content,
210210
})
211211
return nil // Return nil on success

_example/agent-schema/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ conn.RegisterTool(polaris.Tool{
133133
},
134134
},
135135
},
136-
Handler: func(c *polaris.Ctx) error {
136+
Handler: func(r *polaris.ReqCtx) (polaris.Resp, error) {
137137
// Handler implementation
138138
},
139139
})

_example/agent-schema/agents.go

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func registerWeatherAgent(ctx context.Context, conn *polaris.Conn) error {
3838
},
3939
},
4040
},
41-
Handler: func(c *polaris.Ctx) error {
41+
Handler: func(r *polaris.ReqCtx) (polaris.Resp, error) {
4242
log.Printf("function call: %s", toolName)
4343
myTool, _ := conn.Tool(toolName)
4444
gen, err := polaris.GenerateJSON(
@@ -51,12 +51,12 @@ func registerWeatherAgent(ctx context.Context, conn *polaris.Conn) error {
5151
polaris.UseTemperature(0.5),
5252
)
5353
if err != nil {
54-
return errors.WithStack(err)
54+
return nil, errors.WithStack(err)
5555
}
5656

5757
currDate, err := conn.Call(ctx, "getCurrentDate", polaris.Req{})
5858
if err != nil {
59-
return errors.WithStack(err)
59+
return nil, errors.WithStack(err)
6060
}
6161

6262
prompt := fmt.Sprintf(`
@@ -66,15 +66,14 @@ func registerWeatherAgent(ctx context.Context, conn *polaris.Conn) error {
6666
%s
6767
Month:
6868
%s
69-
`, c.String("cityName"), currDate.String("month", ""))
69+
`, r.String("cityName"), currDate.String("month", ""))
7070

7171
resp, err := gen(prompt)
7272
if err != nil {
73-
return errors.WithStack(err)
73+
return nil, errors.WithStack(err)
7474
}
7575

76-
c.Set(resp)
77-
return nil
76+
return resp, nil
7877
},
7978
})
8079
}
@@ -93,7 +92,7 @@ func registerFortuneAgent(ctx context.Context, conn *polaris.Conn) error {
9392
},
9493
},
9594
},
96-
Handler: func(c *polaris.Ctx) error {
95+
Handler: func(r *polaris.ReqCtx) (polaris.Resp, error) {
9796
log.Printf("function call: %s", toolName)
9897
t, _ := conn.Tool(toolName)
9998
gen, err := polaris.GenerateJSON(
@@ -106,7 +105,7 @@ func registerFortuneAgent(ctx context.Context, conn *polaris.Conn) error {
106105
polaris.UseTemperature(0.5),
107106
)
108107
if err != nil {
109-
return errors.WithStack(err)
108+
return nil, errors.WithStack(err)
110109
}
111110

112111
resp, err := gen(`
@@ -115,11 +114,10 @@ func registerFortuneAgent(ctx context.Context, conn *polaris.Conn) error {
115114
Make it clear this is just for fun from AI.
116115
`)
117116
if err != nil {
118-
return errors.WithStack(err)
117+
return nil, errors.WithStack(err)
119118
}
120119

121-
c.Set(resp)
122-
return nil
120+
return resp, nil
123121
},
124122
})
125123
}
@@ -145,15 +143,14 @@ func registerCurrentDate(ctx context.Context, conn *polaris.Conn) error {
145143
},
146144
},
147145
},
148-
Handler: func(c *polaris.Ctx) error {
146+
Handler: func(r *polaris.ReqCtx) (polaris.Resp, error) {
149147
log.Printf("function call: getCurrentDate")
150148
now := time.Now()
151-
c.Set(polaris.Resp{
149+
return polaris.Resp{
152150
"year": fmt.Sprintf("%d", now.Year()),
153151
"month": now.Month().String(),
154152
"day": fmt.Sprintf("%d", now.Day()),
155-
})
156-
return nil
153+
}, nil
157154
},
158155
})
159156
}

_example/clustering/go.mod

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
module github.com/octu0/polaris/_example/clustering
2+
3+
go 1.23.0
4+
5+
toolchain go1.23.7
6+
7+
require (
8+
github.com/octu0/polaris v0.0.0
9+
github.com/pkg/errors v0.9.1
10+
)
11+
12+
require (
13+
cloud.google.com/go v0.120.0 // indirect
14+
cloud.google.com/go/aiplatform v1.81.0 // indirect
15+
cloud.google.com/go/auth v0.15.0 // indirect
16+
cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
17+
cloud.google.com/go/compute/metadata v0.6.0 // indirect
18+
cloud.google.com/go/iam v1.5.0 // indirect
19+
cloud.google.com/go/longrunning v0.6.6 // indirect
20+
cloud.google.com/go/vertexai v0.13.3 // indirect
21+
github.com/felixge/httpsnoop v1.0.4 // indirect
22+
github.com/go-logr/logr v1.4.2 // indirect
23+
github.com/go-logr/stdr v1.2.2 // indirect
24+
github.com/google/go-tpm v0.9.3 // indirect
25+
github.com/google/s2a-go v0.1.9 // indirect
26+
github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect
27+
github.com/googleapis/gax-go/v2 v2.14.1 // indirect
28+
github.com/klauspost/compress v1.18.0 // indirect
29+
github.com/mark3labs/mcp-go v0.21.1 // indirect
30+
github.com/minio/highwayhash v1.0.3 // indirect
31+
github.com/nats-io/jwt/v2 v2.7.3 // indirect
32+
github.com/nats-io/nats-server/v2 v2.11.0 // indirect
33+
github.com/nats-io/nats.go v1.39.1 // indirect
34+
github.com/nats-io/nkeys v0.4.10 // indirect
35+
github.com/nats-io/nuid v1.0.1 // indirect
36+
github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
37+
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
38+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect
39+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect
40+
go.opentelemetry.io/otel v1.35.0 // indirect
41+
go.opentelemetry.io/otel/metric v1.35.0 // indirect
42+
go.opentelemetry.io/otel/trace v1.35.0 // indirect
43+
golang.org/x/crypto v0.36.0 // indirect
44+
golang.org/x/net v0.38.0 // indirect
45+
golang.org/x/oauth2 v0.29.0 // indirect
46+
golang.org/x/sync v0.13.0 // indirect
47+
golang.org/x/sys v0.32.0 // indirect
48+
golang.org/x/text v0.24.0 // indirect
49+
golang.org/x/time v0.11.0 // indirect
50+
google.golang.org/api v0.228.0 // indirect
51+
google.golang.org/genproto v0.0.0-20250404141209-ee84b53bf3d0 // indirect
52+
google.golang.org/genproto/googleapis/api v0.0.0-20250404141209-ee84b53bf3d0 // indirect
53+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250404141209-ee84b53bf3d0 // indirect
54+
google.golang.org/grpc v1.71.1 // indirect
55+
google.golang.org/protobuf v1.36.6 // indirect
56+
)
57+
58+
replace github.com/octu0/polaris => ../../

_example/clustering/go.sum

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
cloud.google.com/go v0.120.0 h1:wc6bgG9DHyKqF5/vQvX1CiZrtHnxJjBlKUyF9nP6meA=
2+
cloud.google.com/go v0.120.0/go.mod h1:/beW32s8/pGRuj4IILWQNd4uuebeT4dkOhKmkfit64Q=
3+
cloud.google.com/go/aiplatform v1.81.0 h1:oRsa1gcB2wzD5D57ZY9BcYHyLPdqE7MDkmCkQaKjmFA=
4+
cloud.google.com/go/aiplatform v1.81.0/go.mod h1:uwLaCFXLvVnKzxl3OXQRw1Hry3KJOIgpofYorq0ZMPk=
5+
cloud.google.com/go/auth v0.15.0 h1:Ly0u4aA5vG/fsSsxu98qCQBemXtAtJf+95z9HK+cxps=
6+
cloud.google.com/go/auth v0.15.0/go.mod h1:WJDGqZ1o9E9wKIL+IwStfyn/+s59zl4Bi+1KQNVXLZ8=
7+
cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=
8+
cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=
9+
cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I=
10+
cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg=
11+
cloud.google.com/go/iam v1.5.0 h1:QlLcVMhbLGOjRcGe6VTGGTyQib8dRLK2B/kYNV0+2xs=
12+
cloud.google.com/go/iam v1.5.0/go.mod h1:U+DOtKQltF/LxPEtcDLoobcsZMilSRwR7mgNL7knOpo=
13+
cloud.google.com/go/longrunning v0.6.6 h1:XJNDo5MUfMM05xK3ewpbSdmt7R2Zw+aQEMbdQR65Rbw=
14+
cloud.google.com/go/longrunning v0.6.6/go.mod h1:hyeGJUrPHcx0u2Uu1UFSoYZLn4lkMrccJig0t4FI7yw=
15+
cloud.google.com/go/vertexai v0.13.3 h1:pbw1KfpdE8ZDrXxBKcIsS/j+EixyQRsyu6gxRkXq8/k=
16+
cloud.google.com/go/vertexai v0.13.3/go.mod h1:AxzUNrd36yhfOZedO+Y1v0ajVgGKOdv1njeQChL8IFY=
17+
github.com/antithesishq/antithesis-sdk-go v0.4.3-default-no-op h1:+OSa/t11TFhqfrX0EOSqQBDJ0YlpmK0rDSiB19dg9M0=
18+
github.com/antithesishq/antithesis-sdk-go v0.4.3-default-no-op/go.mod h1:IUpT2DPAKh6i/YhSbt6Gl3v2yvUZjmKncl7U91fup7E=
19+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
20+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
21+
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
22+
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
23+
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
24+
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
25+
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
26+
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
27+
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
28+
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
29+
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
30+
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
31+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
32+
github.com/google/go-tpm v0.9.3 h1:+yx0/anQuGzi+ssRqeD6WpXjW2L/V0dItUayO0i9sRc=
33+
github.com/google/go-tpm v0.9.3/go.mod h1:h9jEsEECg7gtLis0upRBQU+GhYVH6jMjrFxI8u6bVUY=
34+
github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=
35+
github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=
36+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
37+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
38+
github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4=
39+
github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA=
40+
github.com/googleapis/gax-go/v2 v2.14.1 h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q=
41+
github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA=
42+
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
43+
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
44+
github.com/mark3labs/mcp-go v0.21.1 h1:7Ek6KPIIbMhEYHRiRIg6K6UAgNZCJaHKQp926MNr6V0=
45+
github.com/mark3labs/mcp-go v0.21.1/go.mod h1:KmJndYv7GIgcPVwEKJjNcbhVQ+hJGJhrCCB/9xITzpE=
46+
github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q=
47+
github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ=
48+
github.com/nats-io/jwt/v2 v2.7.3 h1:6bNPK+FXgBeAqdj4cYQ0F8ViHRbi7woQLq4W29nUAzE=
49+
github.com/nats-io/jwt/v2 v2.7.3/go.mod h1:GvkcbHhKquj3pkioy5put1wvPxs78UlZ7D/pY+BgZk4=
50+
github.com/nats-io/nats-server/v2 v2.11.0 h1:fdwAT1d6DZW/4LUz5rkvQUe5leGEwjjOQYntzVRKvjE=
51+
github.com/nats-io/nats-server/v2 v2.11.0/go.mod h1:leXySghbdtXSUmWem8K9McnJ6xbJOb0t9+NQ5HTRZjI=
52+
github.com/nats-io/nats.go v1.39.1 h1:oTkfKBmz7W047vRxV762M67ZdXeOtUgvbBaNoQ+3PPk=
53+
github.com/nats-io/nats.go v1.39.1/go.mod h1:MgRb8oOdigA6cYpEPhXJuRVH6UE/V4jblJ2jQ27IXYM=
54+
github.com/nats-io/nkeys v0.4.10 h1:glmRrpCmYLHByYcePvnTBEAwawwapjCPMjy2huw20wc=
55+
github.com/nats-io/nkeys v0.4.10/go.mod h1:OjRrnIKnWBFl+s4YK5ChQfvHP2fxqZexrKJoVVyWB3U=
56+
github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
57+
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
58+
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
59+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
60+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
61+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
62+
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
63+
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
64+
github.com/yosida95/uritemplate/v3 v3.0.2 h1:Ed3Oyj9yrmi9087+NczuL5BwkIc4wvTb5zIM+UJPGz4=
65+
github.com/yosida95/uritemplate/v3 v3.0.2/go.mod h1:ILOh0sOhIJR3+L/8afwt/kE++YT040gmv5BQTMR2HP4=
66+
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
67+
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
68+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw=
69+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM=
70+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 h1:sbiXRNDSWJOTobXh5HyQKjq6wUC5tNybqjIqDpAY4CU=
71+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ=
72+
go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ=
73+
go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y=
74+
go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M=
75+
go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE=
76+
go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY=
77+
go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg=
78+
go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o=
79+
go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w=
80+
go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs=
81+
go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc=
82+
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
83+
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
84+
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
85+
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
86+
golang.org/x/oauth2 v0.29.0 h1:WdYw2tdTK1S8olAzWHdgeqfy+Mtm9XNhv/xJsY65d98=
87+
golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
88+
golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610=
89+
golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
90+
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
91+
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
92+
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
93+
golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0=
94+
golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
95+
golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0=
96+
golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
97+
google.golang.org/api v0.228.0 h1:X2DJ/uoWGnY5obVjewbp8icSL5U4FzuCfy9OjbLSnLs=
98+
google.golang.org/api v0.228.0/go.mod h1:wNvRS1Pbe8r4+IfBIniV8fwCpGwTrYa+kMUDiC5z5a4=
99+
google.golang.org/genproto v0.0.0-20250404141209-ee84b53bf3d0 h1:wX+y2uwLyC73sX9zfiJW7E7m68+oxAQGzgCmoM0e/zs=
100+
google.golang.org/genproto v0.0.0-20250404141209-ee84b53bf3d0/go.mod h1:jwIveCnYVWLDIe0ZXnIrfMKNoy/rQRSRrepUPEruz0U=
101+
google.golang.org/genproto/googleapis/api v0.0.0-20250404141209-ee84b53bf3d0 h1:Qbb5RVn5xzI4naMJSpJ7lhvmos6UwZkbekd5Uz7rt9E=
102+
google.golang.org/genproto/googleapis/api v0.0.0-20250404141209-ee84b53bf3d0/go.mod h1:6T35kB3IPpdw7Wul09by0G/JuOuIFkXV6OOvt8IZeT8=
103+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250404141209-ee84b53bf3d0 h1:0K7wTWyzxZ7J+L47+LbFogJW1nn/gnnMCN0vGXNYtTI=
104+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250404141209-ee84b53bf3d0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
105+
google.golang.org/grpc v1.71.1 h1:ffsFWr7ygTUscGPI0KKK6TLrGz0476KUvvsbqWK0rPI=
106+
google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec=
107+
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
108+
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
109+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
110+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

_example/clustering/tool.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main
33
import (
44
"context"
55
"fmt"
6+
"log"
67
"os/signal"
78
"syscall"
89

@@ -41,11 +42,11 @@ func registerCalculatorAgent(conn *polaris.Conn) error {
4142
},
4243
},
4344
},
44-
Handler: func(ctx *polaris.Ctx) error {
45-
fmt.Println("called handler", ctx)
46-
operation := ctx.String("operation")
47-
a := ctx.Float64("a")
48-
b := ctx.Float64("b")
45+
Handler: func(r *polaris.ReqCtx) (polaris.Resp, error) {
46+
log.Printf("called handler req=%v", r)
47+
operation := r.String("operation")
48+
a := r.Float64("a")
49+
b := r.Float64("b")
4950

5051
result, err := func() (float64, error) {
5152
switch operation {
@@ -65,13 +66,12 @@ func registerCalculatorAgent(conn *polaris.Conn) error {
6566
}
6667
}()
6768
if err != nil {
68-
return errors.WithStack(err)
69+
return nil, errors.WithStack(err)
6970
}
7071

71-
ctx.Set(polaris.Resp{
72+
return polaris.Resp{
7273
"result": result,
73-
})
74-
return nil
74+
}, nil
7575
},
7676
})
7777
}

_example/error-tool/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,16 @@ conn.RegisterTool(polaris.Tool{
5252
Response: polaris.Object{
5353
// Response definition...
5454
},
55-
Handler: func(ctx *polaris.Ctx) error {
56-
return fmt.Errorf("!!!this function does not support!!! args=%v", ctx.Req())
55+
Handler: func(r *polaris.ReqCtx) (polaris.Resp, error) {
56+
return nil, fmt.Errorf("!!!this function does not support!!! args=%v", r.Req())
5757
},
5858
ErrorHandler: func(err error) {
5959
log.Printf("error: %+v", err)
6060
},
6161
})
6262
```
6363

64-
### 3. Client Application (`main.go`)
64+
### 3. Client Application (`client.go`)
6565

6666
The client application connects to the registry, creates a session with the AI model, and sends a prompt that attempts to use the calculator tool:
6767

@@ -119,7 +119,7 @@ $ go run tool.go
119119

120120
4. In another terminal, run the client:
121121
```shell
122-
$ go run main.go
122+
$ go run client.go
123123
```
124124

125125
## Expected Behavior
File renamed without changes.

_example/error-tool/tool.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ func main() {
4646
},
4747
},
4848
},
49-
Handler: func(ctx *polaris.Ctx) error {
50-
return fmt.Errorf("!!!this function does not support!!! args=%v", ctx.Req())
49+
Handler: func(r *polaris.ReqCtx) (polaris.Resp, error) {
50+
return nil, fmt.Errorf("!!!this function does not support!!! args=%v", r.Req())
5151
},
5252
ErrorHandler: func(err error) {
5353
log.Printf("error: %+v", err)
File renamed without changes.

_example/mcp-tool/toolA.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,11 @@ func main() {
4545
},
4646
},
4747
},
48-
Handler: func(ctx *polaris.Ctx) error {
48+
Handler: func(r *polaris.ReqCtx) (polaris.Resp, error) {
4949
log.Println("function calling calculatorA")
50-
ctx.Set(polaris.Resp{
51-
"result": ctx.Int("a") + ctx.Int("b"),
52-
})
53-
return nil
50+
return polaris.Resp{
51+
"result": r.Int("a") + r.Int("b"),
52+
}, nil
5453
},
5554
ErrorHandler: func(err error) {
5655
log.Printf("error: %+v", err)

0 commit comments

Comments
 (0)