mirror of
https://github.com/coder/coder.git
synced 2026-10-29 17:44:33 +08:00
chore: graduate aibridged* packages out of experimental (#20522)
<!-- If you have used AI to produce some or all of this PR, please ensure you have read our [AI Contribution guidelines](https://coder.com/docs/about/contributing/AI_CONTRIBUTING) before submitting. -->
This commit is contained in:
@@ -636,8 +636,8 @@ TAILNETTEST_MOCKS := \
|
|||||||
tailnet/tailnettest/subscriptionmock.go
|
tailnet/tailnettest/subscriptionmock.go
|
||||||
|
|
||||||
AIBRIDGED_MOCKS := \
|
AIBRIDGED_MOCKS := \
|
||||||
enterprise/x/aibridged/aibridgedmock/clientmock.go \
|
enterprise/aibridged/aibridgedmock/clientmock.go \
|
||||||
enterprise/x/aibridged/aibridgedmock/poolmock.go
|
enterprise/aibridged/aibridgedmock/poolmock.go
|
||||||
|
|
||||||
GEN_FILES := \
|
GEN_FILES := \
|
||||||
tailnet/proto/tailnet.pb.go \
|
tailnet/proto/tailnet.pb.go \
|
||||||
@@ -645,7 +645,7 @@ GEN_FILES := \
|
|||||||
provisionersdk/proto/provisioner.pb.go \
|
provisionersdk/proto/provisioner.pb.go \
|
||||||
provisionerd/proto/provisionerd.pb.go \
|
provisionerd/proto/provisionerd.pb.go \
|
||||||
vpn/vpn.pb.go \
|
vpn/vpn.pb.go \
|
||||||
enterprise/x/aibridged/proto/aibridged.pb.go \
|
enterprise/aibridged/proto/aibridged.pb.go \
|
||||||
$(DB_GEN_FILES) \
|
$(DB_GEN_FILES) \
|
||||||
$(SITE_GEN_FILES) \
|
$(SITE_GEN_FILES) \
|
||||||
coderd/rbac/object_gen.go \
|
coderd/rbac/object_gen.go \
|
||||||
@@ -697,7 +697,7 @@ gen/mark-fresh:
|
|||||||
provisionersdk/proto/provisioner.pb.go \
|
provisionersdk/proto/provisioner.pb.go \
|
||||||
provisionerd/proto/provisionerd.pb.go \
|
provisionerd/proto/provisionerd.pb.go \
|
||||||
vpn/vpn.pb.go \
|
vpn/vpn.pb.go \
|
||||||
enterprise/x/aibridged/proto/aibridged.pb.go \
|
enterprise/aibridged/proto/aibridged.pb.go \
|
||||||
coderd/database/dump.sql \
|
coderd/database/dump.sql \
|
||||||
$(DB_GEN_FILES) \
|
$(DB_GEN_FILES) \
|
||||||
site/src/api/typesGenerated.ts \
|
site/src/api/typesGenerated.ts \
|
||||||
@@ -768,8 +768,8 @@ codersdk/workspacesdk/agentconnmock/agentconnmock.go: codersdk/workspacesdk/agen
|
|||||||
go generate ./codersdk/workspacesdk/agentconnmock/
|
go generate ./codersdk/workspacesdk/agentconnmock/
|
||||||
touch "$@"
|
touch "$@"
|
||||||
|
|
||||||
$(AIBRIDGED_MOCKS): enterprise/x/aibridged/client.go enterprise/x/aibridged/pool.go
|
$(AIBRIDGED_MOCKS): enterprise/aibridged/client.go enterprise/aibridged/pool.go
|
||||||
go generate ./enterprise/x/aibridged/aibridgedmock/
|
go generate ./enterprise/aibridged/aibridgedmock/
|
||||||
touch "$@"
|
touch "$@"
|
||||||
|
|
||||||
agent/agentcontainers/dcspec/dcspec_gen.go: \
|
agent/agentcontainers/dcspec/dcspec_gen.go: \
|
||||||
@@ -822,13 +822,13 @@ vpn/vpn.pb.go: vpn/vpn.proto
|
|||||||
--go_opt=paths=source_relative \
|
--go_opt=paths=source_relative \
|
||||||
./vpn/vpn.proto
|
./vpn/vpn.proto
|
||||||
|
|
||||||
enterprise/x/aibridged/proto/aibridged.pb.go: enterprise/x/aibridged/proto/aibridged.proto
|
enterprise/aibridged/proto/aibridged.pb.go: enterprise/aibridged/proto/aibridged.proto
|
||||||
protoc \
|
protoc \
|
||||||
--go_out=. \
|
--go_out=. \
|
||||||
--go_opt=paths=source_relative \
|
--go_opt=paths=source_relative \
|
||||||
--go-drpc_out=. \
|
--go-drpc_out=. \
|
||||||
--go-drpc_opt=paths=source_relative \
|
--go-drpc_opt=paths=source_relative \
|
||||||
./enterprise/x/aibridged/proto/aibridged.proto
|
./enterprise/aibridged/proto/aibridged.proto
|
||||||
|
|
||||||
site/src/api/typesGenerated.ts: site/node_modules/.installed $(wildcard scripts/apitypings/*) $(shell find ./codersdk $(FIND_EXCLUSIONS) -type f -name '*.go')
|
site/src/api/typesGenerated.ts: site/node_modules/.installed $(wildcard scripts/apitypings/*) $(shell find ./codersdk $(FIND_EXCLUSIONS) -type f -name '*.go')
|
||||||
# -C sets the directory for the go run command
|
# -C sets the directory for the go run command
|
||||||
|
|||||||
+1
-1
@@ -19,8 +19,8 @@ import (
|
|||||||
"github.com/coder/coder/v2/coderd/database/dbtime"
|
"github.com/coder/coder/v2/coderd/database/dbtime"
|
||||||
"github.com/coder/coder/v2/coderd/externalauth"
|
"github.com/coder/coder/v2/coderd/externalauth"
|
||||||
"github.com/coder/coder/v2/codersdk"
|
"github.com/coder/coder/v2/codersdk"
|
||||||
|
"github.com/coder/coder/v2/enterprise/aibridged"
|
||||||
"github.com/coder/coder/v2/enterprise/coderd/coderdenttest"
|
"github.com/coder/coder/v2/enterprise/coderd/coderdenttest"
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridged"
|
|
||||||
"github.com/coder/coder/v2/testutil"
|
"github.com/coder/coder/v2/testutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -18,9 +18,9 @@ import (
|
|||||||
"cdr.dev/slog/sloggers/slogtest"
|
"cdr.dev/slog/sloggers/slogtest"
|
||||||
"github.com/coder/aibridge"
|
"github.com/coder/aibridge"
|
||||||
"github.com/coder/coder/v2/codersdk"
|
"github.com/coder/coder/v2/codersdk"
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridged"
|
"github.com/coder/coder/v2/enterprise/aibridged"
|
||||||
mock "github.com/coder/coder/v2/enterprise/x/aibridged/aibridgedmock"
|
mock "github.com/coder/coder/v2/enterprise/aibridged/aibridgedmock"
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridged/proto"
|
"github.com/coder/coder/v2/enterprise/aibridged/proto"
|
||||||
"github.com/coder/coder/v2/testutil"
|
"github.com/coder/coder/v2/testutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
+3
-3
@@ -1,9 +1,9 @@
|
|||||||
// Code generated by MockGen. DO NOT EDIT.
|
// Code generated by MockGen. DO NOT EDIT.
|
||||||
// Source: github.com/coder/coder/v2/enterprise/x/aibridged (interfaces: DRPCClient)
|
// Source: github.com/coder/coder/v2/enterprise/aibridged (interfaces: DRPCClient)
|
||||||
//
|
//
|
||||||
// Generated by this command:
|
// Generated by this command:
|
||||||
//
|
//
|
||||||
// mockgen -destination ./clientmock.go -package aibridgedmock github.com/coder/coder/v2/enterprise/x/aibridged DRPCClient
|
// mockgen -destination ./clientmock.go -package aibridgedmock github.com/coder/coder/v2/enterprise/aibridged DRPCClient
|
||||||
//
|
//
|
||||||
|
|
||||||
// Package aibridgedmock is a generated GoMock package.
|
// Package aibridgedmock is a generated GoMock package.
|
||||||
@@ -13,7 +13,7 @@ import (
|
|||||||
context "context"
|
context "context"
|
||||||
reflect "reflect"
|
reflect "reflect"
|
||||||
|
|
||||||
proto "github.com/coder/coder/v2/enterprise/x/aibridged/proto"
|
proto "github.com/coder/coder/v2/enterprise/aibridged/proto"
|
||||||
gomock "go.uber.org/mock/gomock"
|
gomock "go.uber.org/mock/gomock"
|
||||||
drpc "storj.io/drpc"
|
drpc "storj.io/drpc"
|
||||||
)
|
)
|
||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
package aibridgedmock
|
package aibridgedmock
|
||||||
|
|
||||||
//go:generate mockgen -destination ./clientmock.go -package aibridgedmock github.com/coder/coder/v2/enterprise/x/aibridged DRPCClient
|
//go:generate mockgen -destination ./clientmock.go -package aibridgedmock github.com/coder/coder/v2/enterprise/aibridged DRPCClient
|
||||||
//go:generate mockgen -destination ./poolmock.go -package aibridgedmock github.com/coder/coder/v2/enterprise/x/aibridged Pooler
|
//go:generate mockgen -destination ./poolmock.go -package aibridgedmock github.com/coder/coder/v2/enterprise/aibridged Pooler
|
||||||
+3
-3
@@ -1,9 +1,9 @@
|
|||||||
// Code generated by MockGen. DO NOT EDIT.
|
// Code generated by MockGen. DO NOT EDIT.
|
||||||
// Source: github.com/coder/coder/v2/enterprise/x/aibridged (interfaces: Pooler)
|
// Source: github.com/coder/coder/v2/enterprise/aibridged (interfaces: Pooler)
|
||||||
//
|
//
|
||||||
// Generated by this command:
|
// Generated by this command:
|
||||||
//
|
//
|
||||||
// mockgen -destination ./poolmock.go -package aibridgedmock github.com/coder/coder/v2/enterprise/x/aibridged Pooler
|
// mockgen -destination ./poolmock.go -package aibridgedmock github.com/coder/coder/v2/enterprise/aibridged Pooler
|
||||||
//
|
//
|
||||||
|
|
||||||
// Package aibridgedmock is a generated GoMock package.
|
// Package aibridgedmock is a generated GoMock package.
|
||||||
@@ -14,7 +14,7 @@ import (
|
|||||||
http "net/http"
|
http "net/http"
|
||||||
reflect "reflect"
|
reflect "reflect"
|
||||||
|
|
||||||
aibridged "github.com/coder/coder/v2/enterprise/x/aibridged"
|
aibridged "github.com/coder/coder/v2/enterprise/aibridged"
|
||||||
gomock "go.uber.org/mock/gomock"
|
gomock "go.uber.org/mock/gomock"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
|
|
||||||
"storj.io/drpc"
|
"storj.io/drpc"
|
||||||
|
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridged/proto"
|
"github.com/coder/coder/v2/enterprise/aibridged/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Dialer func(ctx context.Context) (DRPCClient, error)
|
type Dialer func(ctx context.Context) (DRPCClient, error)
|
||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
|
|
||||||
"cdr.dev/slog"
|
"cdr.dev/slog"
|
||||||
"github.com/coder/aibridge"
|
"github.com/coder/aibridge"
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridged/proto"
|
"github.com/coder/coder/v2/enterprise/aibridged/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
var _ http.Handler = &Server{}
|
var _ http.Handler = &Server{}
|
||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
|
|
||||||
"cdr.dev/slog"
|
"cdr.dev/slog"
|
||||||
"github.com/coder/aibridge/mcp"
|
"github.com/coder/aibridge/mcp"
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridged/proto"
|
"github.com/coder/coder/v2/enterprise/aibridged/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
+1
-1
@@ -5,7 +5,7 @@ import (
|
|||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridged/proto"
|
"github.com/coder/coder/v2/enterprise/aibridged/proto"
|
||||||
"github.com/coder/coder/v2/testutil"
|
"github.com/coder/coder/v2/testutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -13,8 +13,8 @@ import (
|
|||||||
"cdr.dev/slog/sloggers/slogtest"
|
"cdr.dev/slog/sloggers/slogtest"
|
||||||
"github.com/coder/aibridge/mcp"
|
"github.com/coder/aibridge/mcp"
|
||||||
"github.com/coder/aibridge/mcpmock"
|
"github.com/coder/aibridge/mcpmock"
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridged"
|
"github.com/coder/coder/v2/enterprise/aibridged"
|
||||||
mock "github.com/coder/coder/v2/enterprise/x/aibridged/aibridgedmock"
|
mock "github.com/coder/coder/v2/enterprise/aibridged/aibridgedmock"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TestPool validates the published behavior of [aibridged.CachedBridgePool].
|
// TestPool validates the published behavior of [aibridged.CachedBridgePool].
|
||||||
+312
-313
File diff suppressed because it is too large
Load Diff
+31
-31
@@ -1,6 +1,6 @@
|
|||||||
// Code generated by protoc-gen-go-drpc. DO NOT EDIT.
|
// Code generated by protoc-gen-go-drpc. DO NOT EDIT.
|
||||||
// protoc-gen-go-drpc version: v0.0.34
|
// protoc-gen-go-drpc version: v0.0.34
|
||||||
// source: enterprise/x/aibridged/proto/aibridged.proto
|
// source: enterprise/aibridged/proto/aibridged.proto
|
||||||
|
|
||||||
package proto
|
package proto
|
||||||
|
|
||||||
@@ -13,25 +13,25 @@ import (
|
|||||||
drpcerr "storj.io/drpc/drpcerr"
|
drpcerr "storj.io/drpc/drpcerr"
|
||||||
)
|
)
|
||||||
|
|
||||||
type drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto struct{}
|
type drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto struct{}
|
||||||
|
|
||||||
func (drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto) Marshal(msg drpc.Message) ([]byte, error) {
|
func (drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto) Marshal(msg drpc.Message) ([]byte, error) {
|
||||||
return proto.Marshal(msg.(proto.Message))
|
return proto.Marshal(msg.(proto.Message))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto) MarshalAppend(buf []byte, msg drpc.Message) ([]byte, error) {
|
func (drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto) MarshalAppend(buf []byte, msg drpc.Message) ([]byte, error) {
|
||||||
return proto.MarshalOptions{}.MarshalAppend(buf, msg.(proto.Message))
|
return proto.MarshalOptions{}.MarshalAppend(buf, msg.(proto.Message))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto) Unmarshal(buf []byte, msg drpc.Message) error {
|
func (drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto) Unmarshal(buf []byte, msg drpc.Message) error {
|
||||||
return proto.Unmarshal(buf, msg.(proto.Message))
|
return proto.Unmarshal(buf, msg.(proto.Message))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto) JSONMarshal(msg drpc.Message) ([]byte, error) {
|
func (drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto) JSONMarshal(msg drpc.Message) ([]byte, error) {
|
||||||
return protojson.Marshal(msg.(proto.Message))
|
return protojson.Marshal(msg.(proto.Message))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto) JSONUnmarshal(buf []byte, msg drpc.Message) error {
|
func (drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto) JSONUnmarshal(buf []byte, msg drpc.Message) error {
|
||||||
return protojson.Unmarshal(buf, msg.(proto.Message))
|
return protojson.Unmarshal(buf, msg.(proto.Message))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ func (c *drpcRecorderClient) DRPCConn() drpc.Conn { return c.cc }
|
|||||||
|
|
||||||
func (c *drpcRecorderClient) RecordInterception(ctx context.Context, in *RecordInterceptionRequest) (*RecordInterceptionResponse, error) {
|
func (c *drpcRecorderClient) RecordInterception(ctx context.Context, in *RecordInterceptionRequest) (*RecordInterceptionResponse, error) {
|
||||||
out := new(RecordInterceptionResponse)
|
out := new(RecordInterceptionResponse)
|
||||||
err := c.cc.Invoke(ctx, "/proto.Recorder/RecordInterception", drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{}, in, out)
|
err := c.cc.Invoke(ctx, "/proto.Recorder/RecordInterception", drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{}, in, out)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -66,7 +66,7 @@ func (c *drpcRecorderClient) RecordInterception(ctx context.Context, in *RecordI
|
|||||||
|
|
||||||
func (c *drpcRecorderClient) RecordInterceptionEnded(ctx context.Context, in *RecordInterceptionEndedRequest) (*RecordInterceptionEndedResponse, error) {
|
func (c *drpcRecorderClient) RecordInterceptionEnded(ctx context.Context, in *RecordInterceptionEndedRequest) (*RecordInterceptionEndedResponse, error) {
|
||||||
out := new(RecordInterceptionEndedResponse)
|
out := new(RecordInterceptionEndedResponse)
|
||||||
err := c.cc.Invoke(ctx, "/proto.Recorder/RecordInterceptionEnded", drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{}, in, out)
|
err := c.cc.Invoke(ctx, "/proto.Recorder/RecordInterceptionEnded", drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{}, in, out)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -75,7 +75,7 @@ func (c *drpcRecorderClient) RecordInterceptionEnded(ctx context.Context, in *Re
|
|||||||
|
|
||||||
func (c *drpcRecorderClient) RecordTokenUsage(ctx context.Context, in *RecordTokenUsageRequest) (*RecordTokenUsageResponse, error) {
|
func (c *drpcRecorderClient) RecordTokenUsage(ctx context.Context, in *RecordTokenUsageRequest) (*RecordTokenUsageResponse, error) {
|
||||||
out := new(RecordTokenUsageResponse)
|
out := new(RecordTokenUsageResponse)
|
||||||
err := c.cc.Invoke(ctx, "/proto.Recorder/RecordTokenUsage", drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{}, in, out)
|
err := c.cc.Invoke(ctx, "/proto.Recorder/RecordTokenUsage", drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{}, in, out)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -84,7 +84,7 @@ func (c *drpcRecorderClient) RecordTokenUsage(ctx context.Context, in *RecordTok
|
|||||||
|
|
||||||
func (c *drpcRecorderClient) RecordPromptUsage(ctx context.Context, in *RecordPromptUsageRequest) (*RecordPromptUsageResponse, error) {
|
func (c *drpcRecorderClient) RecordPromptUsage(ctx context.Context, in *RecordPromptUsageRequest) (*RecordPromptUsageResponse, error) {
|
||||||
out := new(RecordPromptUsageResponse)
|
out := new(RecordPromptUsageResponse)
|
||||||
err := c.cc.Invoke(ctx, "/proto.Recorder/RecordPromptUsage", drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{}, in, out)
|
err := c.cc.Invoke(ctx, "/proto.Recorder/RecordPromptUsage", drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{}, in, out)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -93,7 +93,7 @@ func (c *drpcRecorderClient) RecordPromptUsage(ctx context.Context, in *RecordPr
|
|||||||
|
|
||||||
func (c *drpcRecorderClient) RecordToolUsage(ctx context.Context, in *RecordToolUsageRequest) (*RecordToolUsageResponse, error) {
|
func (c *drpcRecorderClient) RecordToolUsage(ctx context.Context, in *RecordToolUsageRequest) (*RecordToolUsageResponse, error) {
|
||||||
out := new(RecordToolUsageResponse)
|
out := new(RecordToolUsageResponse)
|
||||||
err := c.cc.Invoke(ctx, "/proto.Recorder/RecordToolUsage", drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{}, in, out)
|
err := c.cc.Invoke(ctx, "/proto.Recorder/RecordToolUsage", drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{}, in, out)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -137,7 +137,7 @@ func (DRPCRecorderDescription) NumMethods() int { return 5 }
|
|||||||
func (DRPCRecorderDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) {
|
func (DRPCRecorderDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) {
|
||||||
switch n {
|
switch n {
|
||||||
case 0:
|
case 0:
|
||||||
return "/proto.Recorder/RecordInterception", drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{},
|
return "/proto.Recorder/RecordInterception", drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{},
|
||||||
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
return srv.(DRPCRecorderServer).
|
return srv.(DRPCRecorderServer).
|
||||||
RecordInterception(
|
RecordInterception(
|
||||||
@@ -146,7 +146,7 @@ func (DRPCRecorderDescription) Method(n int) (string, drpc.Encoding, drpc.Receiv
|
|||||||
)
|
)
|
||||||
}, DRPCRecorderServer.RecordInterception, true
|
}, DRPCRecorderServer.RecordInterception, true
|
||||||
case 1:
|
case 1:
|
||||||
return "/proto.Recorder/RecordInterceptionEnded", drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{},
|
return "/proto.Recorder/RecordInterceptionEnded", drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{},
|
||||||
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
return srv.(DRPCRecorderServer).
|
return srv.(DRPCRecorderServer).
|
||||||
RecordInterceptionEnded(
|
RecordInterceptionEnded(
|
||||||
@@ -155,7 +155,7 @@ func (DRPCRecorderDescription) Method(n int) (string, drpc.Encoding, drpc.Receiv
|
|||||||
)
|
)
|
||||||
}, DRPCRecorderServer.RecordInterceptionEnded, true
|
}, DRPCRecorderServer.RecordInterceptionEnded, true
|
||||||
case 2:
|
case 2:
|
||||||
return "/proto.Recorder/RecordTokenUsage", drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{},
|
return "/proto.Recorder/RecordTokenUsage", drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{},
|
||||||
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
return srv.(DRPCRecorderServer).
|
return srv.(DRPCRecorderServer).
|
||||||
RecordTokenUsage(
|
RecordTokenUsage(
|
||||||
@@ -164,7 +164,7 @@ func (DRPCRecorderDescription) Method(n int) (string, drpc.Encoding, drpc.Receiv
|
|||||||
)
|
)
|
||||||
}, DRPCRecorderServer.RecordTokenUsage, true
|
}, DRPCRecorderServer.RecordTokenUsage, true
|
||||||
case 3:
|
case 3:
|
||||||
return "/proto.Recorder/RecordPromptUsage", drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{},
|
return "/proto.Recorder/RecordPromptUsage", drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{},
|
||||||
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
return srv.(DRPCRecorderServer).
|
return srv.(DRPCRecorderServer).
|
||||||
RecordPromptUsage(
|
RecordPromptUsage(
|
||||||
@@ -173,7 +173,7 @@ func (DRPCRecorderDescription) Method(n int) (string, drpc.Encoding, drpc.Receiv
|
|||||||
)
|
)
|
||||||
}, DRPCRecorderServer.RecordPromptUsage, true
|
}, DRPCRecorderServer.RecordPromptUsage, true
|
||||||
case 4:
|
case 4:
|
||||||
return "/proto.Recorder/RecordToolUsage", drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{},
|
return "/proto.Recorder/RecordToolUsage", drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{},
|
||||||
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
return srv.(DRPCRecorderServer).
|
return srv.(DRPCRecorderServer).
|
||||||
RecordToolUsage(
|
RecordToolUsage(
|
||||||
@@ -200,7 +200,7 @@ type drpcRecorder_RecordInterceptionStream struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (x *drpcRecorder_RecordInterceptionStream) SendAndClose(m *RecordInterceptionResponse) error {
|
func (x *drpcRecorder_RecordInterceptionStream) SendAndClose(m *RecordInterceptionResponse) error {
|
||||||
if err := x.MsgSend(m, drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{}); err != nil {
|
if err := x.MsgSend(m, drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return x.CloseSend()
|
return x.CloseSend()
|
||||||
@@ -216,7 +216,7 @@ type drpcRecorder_RecordInterceptionEndedStream struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (x *drpcRecorder_RecordInterceptionEndedStream) SendAndClose(m *RecordInterceptionEndedResponse) error {
|
func (x *drpcRecorder_RecordInterceptionEndedStream) SendAndClose(m *RecordInterceptionEndedResponse) error {
|
||||||
if err := x.MsgSend(m, drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{}); err != nil {
|
if err := x.MsgSend(m, drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return x.CloseSend()
|
return x.CloseSend()
|
||||||
@@ -232,7 +232,7 @@ type drpcRecorder_RecordTokenUsageStream struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (x *drpcRecorder_RecordTokenUsageStream) SendAndClose(m *RecordTokenUsageResponse) error {
|
func (x *drpcRecorder_RecordTokenUsageStream) SendAndClose(m *RecordTokenUsageResponse) error {
|
||||||
if err := x.MsgSend(m, drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{}); err != nil {
|
if err := x.MsgSend(m, drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return x.CloseSend()
|
return x.CloseSend()
|
||||||
@@ -248,7 +248,7 @@ type drpcRecorder_RecordPromptUsageStream struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (x *drpcRecorder_RecordPromptUsageStream) SendAndClose(m *RecordPromptUsageResponse) error {
|
func (x *drpcRecorder_RecordPromptUsageStream) SendAndClose(m *RecordPromptUsageResponse) error {
|
||||||
if err := x.MsgSend(m, drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{}); err != nil {
|
if err := x.MsgSend(m, drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return x.CloseSend()
|
return x.CloseSend()
|
||||||
@@ -264,7 +264,7 @@ type drpcRecorder_RecordToolUsageStream struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (x *drpcRecorder_RecordToolUsageStream) SendAndClose(m *RecordToolUsageResponse) error {
|
func (x *drpcRecorder_RecordToolUsageStream) SendAndClose(m *RecordToolUsageResponse) error {
|
||||||
if err := x.MsgSend(m, drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{}); err != nil {
|
if err := x.MsgSend(m, drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return x.CloseSend()
|
return x.CloseSend()
|
||||||
@@ -289,7 +289,7 @@ func (c *drpcMCPConfiguratorClient) DRPCConn() drpc.Conn { return c.cc }
|
|||||||
|
|
||||||
func (c *drpcMCPConfiguratorClient) GetMCPServerConfigs(ctx context.Context, in *GetMCPServerConfigsRequest) (*GetMCPServerConfigsResponse, error) {
|
func (c *drpcMCPConfiguratorClient) GetMCPServerConfigs(ctx context.Context, in *GetMCPServerConfigsRequest) (*GetMCPServerConfigsResponse, error) {
|
||||||
out := new(GetMCPServerConfigsResponse)
|
out := new(GetMCPServerConfigsResponse)
|
||||||
err := c.cc.Invoke(ctx, "/proto.MCPConfigurator/GetMCPServerConfigs", drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{}, in, out)
|
err := c.cc.Invoke(ctx, "/proto.MCPConfigurator/GetMCPServerConfigs", drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{}, in, out)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -298,7 +298,7 @@ func (c *drpcMCPConfiguratorClient) GetMCPServerConfigs(ctx context.Context, in
|
|||||||
|
|
||||||
func (c *drpcMCPConfiguratorClient) GetMCPServerAccessTokensBatch(ctx context.Context, in *GetMCPServerAccessTokensBatchRequest) (*GetMCPServerAccessTokensBatchResponse, error) {
|
func (c *drpcMCPConfiguratorClient) GetMCPServerAccessTokensBatch(ctx context.Context, in *GetMCPServerAccessTokensBatchRequest) (*GetMCPServerAccessTokensBatchResponse, error) {
|
||||||
out := new(GetMCPServerAccessTokensBatchResponse)
|
out := new(GetMCPServerAccessTokensBatchResponse)
|
||||||
err := c.cc.Invoke(ctx, "/proto.MCPConfigurator/GetMCPServerAccessTokensBatch", drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{}, in, out)
|
err := c.cc.Invoke(ctx, "/proto.MCPConfigurator/GetMCPServerAccessTokensBatch", drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{}, in, out)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -327,7 +327,7 @@ func (DRPCMCPConfiguratorDescription) NumMethods() int { return 2 }
|
|||||||
func (DRPCMCPConfiguratorDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) {
|
func (DRPCMCPConfiguratorDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) {
|
||||||
switch n {
|
switch n {
|
||||||
case 0:
|
case 0:
|
||||||
return "/proto.MCPConfigurator/GetMCPServerConfigs", drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{},
|
return "/proto.MCPConfigurator/GetMCPServerConfigs", drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{},
|
||||||
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
return srv.(DRPCMCPConfiguratorServer).
|
return srv.(DRPCMCPConfiguratorServer).
|
||||||
GetMCPServerConfigs(
|
GetMCPServerConfigs(
|
||||||
@@ -336,7 +336,7 @@ func (DRPCMCPConfiguratorDescription) Method(n int) (string, drpc.Encoding, drpc
|
|||||||
)
|
)
|
||||||
}, DRPCMCPConfiguratorServer.GetMCPServerConfigs, true
|
}, DRPCMCPConfiguratorServer.GetMCPServerConfigs, true
|
||||||
case 1:
|
case 1:
|
||||||
return "/proto.MCPConfigurator/GetMCPServerAccessTokensBatch", drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{},
|
return "/proto.MCPConfigurator/GetMCPServerAccessTokensBatch", drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{},
|
||||||
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
return srv.(DRPCMCPConfiguratorServer).
|
return srv.(DRPCMCPConfiguratorServer).
|
||||||
GetMCPServerAccessTokensBatch(
|
GetMCPServerAccessTokensBatch(
|
||||||
@@ -363,7 +363,7 @@ type drpcMCPConfigurator_GetMCPServerConfigsStream struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (x *drpcMCPConfigurator_GetMCPServerConfigsStream) SendAndClose(m *GetMCPServerConfigsResponse) error {
|
func (x *drpcMCPConfigurator_GetMCPServerConfigsStream) SendAndClose(m *GetMCPServerConfigsResponse) error {
|
||||||
if err := x.MsgSend(m, drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{}); err != nil {
|
if err := x.MsgSend(m, drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return x.CloseSend()
|
return x.CloseSend()
|
||||||
@@ -379,7 +379,7 @@ type drpcMCPConfigurator_GetMCPServerAccessTokensBatchStream struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (x *drpcMCPConfigurator_GetMCPServerAccessTokensBatchStream) SendAndClose(m *GetMCPServerAccessTokensBatchResponse) error {
|
func (x *drpcMCPConfigurator_GetMCPServerAccessTokensBatchStream) SendAndClose(m *GetMCPServerAccessTokensBatchResponse) error {
|
||||||
if err := x.MsgSend(m, drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{}); err != nil {
|
if err := x.MsgSend(m, drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return x.CloseSend()
|
return x.CloseSend()
|
||||||
@@ -403,7 +403,7 @@ func (c *drpcAuthorizerClient) DRPCConn() drpc.Conn { return c.cc }
|
|||||||
|
|
||||||
func (c *drpcAuthorizerClient) IsAuthorized(ctx context.Context, in *IsAuthorizedRequest) (*IsAuthorizedResponse, error) {
|
func (c *drpcAuthorizerClient) IsAuthorized(ctx context.Context, in *IsAuthorizedRequest) (*IsAuthorizedResponse, error) {
|
||||||
out := new(IsAuthorizedResponse)
|
out := new(IsAuthorizedResponse)
|
||||||
err := c.cc.Invoke(ctx, "/proto.Authorizer/IsAuthorized", drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{}, in, out)
|
err := c.cc.Invoke(ctx, "/proto.Authorizer/IsAuthorized", drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{}, in, out)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -427,7 +427,7 @@ func (DRPCAuthorizerDescription) NumMethods() int { return 1 }
|
|||||||
func (DRPCAuthorizerDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) {
|
func (DRPCAuthorizerDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) {
|
||||||
switch n {
|
switch n {
|
||||||
case 0:
|
case 0:
|
||||||
return "/proto.Authorizer/IsAuthorized", drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{},
|
return "/proto.Authorizer/IsAuthorized", drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{},
|
||||||
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
return srv.(DRPCAuthorizerServer).
|
return srv.(DRPCAuthorizerServer).
|
||||||
IsAuthorized(
|
IsAuthorized(
|
||||||
@@ -454,7 +454,7 @@ type drpcAuthorizer_IsAuthorizedStream struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (x *drpcAuthorizer_IsAuthorizedStream) SendAndClose(m *IsAuthorizedResponse) error {
|
func (x *drpcAuthorizer_IsAuthorizedStream) SendAndClose(m *IsAuthorizedResponse) error {
|
||||||
if err := x.MsgSend(m, drpcEncoding_File_enterprise_x_aibridged_proto_aibridged_proto{}); err != nil {
|
if err := x.MsgSend(m, drpcEncoding_File_enterprise_aibridged_proto_aibridged_proto{}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return x.CloseSend()
|
return x.CloseSend()
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package aibridged
|
package aibridged
|
||||||
|
|
||||||
import "github.com/coder/coder/v2/enterprise/x/aibridged/proto"
|
import "github.com/coder/coder/v2/enterprise/aibridged/proto"
|
||||||
|
|
||||||
type DRPCServer interface {
|
type DRPCServer interface {
|
||||||
proto.DRPCRecorderServer
|
proto.DRPCRecorderServer
|
||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
"google.golang.org/protobuf/types/known/timestamppb"
|
"google.golang.org/protobuf/types/known/timestamppb"
|
||||||
|
|
||||||
"github.com/coder/coder/v2/coderd/util/ptr"
|
"github.com/coder/coder/v2/coderd/util/ptr"
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridged/proto"
|
"github.com/coder/coder/v2/enterprise/aibridged/proto"
|
||||||
|
|
||||||
"github.com/coder/aibridge"
|
"github.com/coder/aibridge"
|
||||||
)
|
)
|
||||||
+2
-2
@@ -24,8 +24,8 @@ import (
|
|||||||
"github.com/coder/coder/v2/coderd/httpmw"
|
"github.com/coder/coder/v2/coderd/httpmw"
|
||||||
codermcp "github.com/coder/coder/v2/coderd/mcp"
|
codermcp "github.com/coder/coder/v2/coderd/mcp"
|
||||||
"github.com/coder/coder/v2/codersdk"
|
"github.com/coder/coder/v2/codersdk"
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridged"
|
"github.com/coder/coder/v2/enterprise/aibridged"
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridged/proto"
|
"github.com/coder/coder/v2/enterprise/aibridged/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
+3
-3
@@ -28,9 +28,9 @@ import (
|
|||||||
codermcp "github.com/coder/coder/v2/coderd/mcp"
|
codermcp "github.com/coder/coder/v2/coderd/mcp"
|
||||||
"github.com/coder/coder/v2/codersdk"
|
"github.com/coder/coder/v2/codersdk"
|
||||||
"github.com/coder/coder/v2/cryptorand"
|
"github.com/coder/coder/v2/cryptorand"
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridged"
|
"github.com/coder/coder/v2/enterprise/aibridged"
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridged/proto"
|
"github.com/coder/coder/v2/enterprise/aibridged/proto"
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridgedserver"
|
"github.com/coder/coder/v2/enterprise/aibridgedserver"
|
||||||
"github.com/coder/coder/v2/testutil"
|
"github.com/coder/coder/v2/testutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -9,8 +9,8 @@ import (
|
|||||||
|
|
||||||
"github.com/coder/aibridge"
|
"github.com/coder/aibridge"
|
||||||
"github.com/coder/coder/v2/codersdk"
|
"github.com/coder/coder/v2/codersdk"
|
||||||
|
"github.com/coder/coder/v2/enterprise/aibridged"
|
||||||
"github.com/coder/coder/v2/enterprise/coderd"
|
"github.com/coder/coder/v2/enterprise/coderd"
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridged"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func newAIBridgeDaemon(coderAPI *coderd.API) (*aibridged.Server, error) {
|
func newAIBridgeDaemon(coderAPI *coderd.API) (*aibridged.Server, error) {
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import (
|
|||||||
|
|
||||||
"github.com/coder/coder/v2/coderd/database"
|
"github.com/coder/coder/v2/coderd/database"
|
||||||
"github.com/coder/coder/v2/cryptorand"
|
"github.com/coder/coder/v2/cryptorand"
|
||||||
|
"github.com/coder/coder/v2/enterprise/aibridged"
|
||||||
"github.com/coder/coder/v2/enterprise/audit"
|
"github.com/coder/coder/v2/enterprise/audit"
|
||||||
"github.com/coder/coder/v2/enterprise/audit/backends"
|
"github.com/coder/coder/v2/enterprise/audit/backends"
|
||||||
"github.com/coder/coder/v2/enterprise/coderd"
|
"github.com/coder/coder/v2/enterprise/coderd"
|
||||||
@@ -23,7 +24,6 @@ import (
|
|||||||
"github.com/coder/coder/v2/enterprise/coderd/usage"
|
"github.com/coder/coder/v2/enterprise/coderd/usage"
|
||||||
"github.com/coder/coder/v2/enterprise/dbcrypt"
|
"github.com/coder/coder/v2/enterprise/dbcrypt"
|
||||||
"github.com/coder/coder/v2/enterprise/trialer"
|
"github.com/coder/coder/v2/enterprise/trialer"
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridged"
|
|
||||||
"github.com/coder/coder/v2/tailnet"
|
"github.com/coder/coder/v2/tailnet"
|
||||||
"github.com/coder/quartz"
|
"github.com/coder/quartz"
|
||||||
"github.com/coder/serpent"
|
"github.com/coder/serpent"
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ import (
|
|||||||
|
|
||||||
"github.com/coder/coder/v2/coderd/tracing"
|
"github.com/coder/coder/v2/coderd/tracing"
|
||||||
"github.com/coder/coder/v2/codersdk/drpcsdk"
|
"github.com/coder/coder/v2/codersdk/drpcsdk"
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridged"
|
"github.com/coder/coder/v2/enterprise/aibridged"
|
||||||
aibridgedproto "github.com/coder/coder/v2/enterprise/x/aibridged/proto"
|
aibridgedproto "github.com/coder/coder/v2/enterprise/aibridged/proto"
|
||||||
"github.com/coder/coder/v2/enterprise/x/aibridgedserver"
|
"github.com/coder/coder/v2/enterprise/aibridgedserver"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RegisterInMemoryAIBridgedHTTPHandler mounts [aibridged.Server]'s HTTP router onto
|
// RegisterInMemoryAIBridgedHTTPHandler mounts [aibridged.Server]'s HTTP router onto
|
||||||
|
|||||||
Reference in New Issue
Block a user