Skip to content

Commit a3acbba

Browse files
committed
some more fixes w agentcard and routes
Signed-off-by: Jet Chiang <pokyuen.jetchiang-ext@solo.io>
1 parent d4c326d commit a3acbba

39 files changed

Lines changed: 168 additions & 76 deletions

go/core/internal/a2a/a2a_handler_mux.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,11 @@ func (a *handlerMux) SetAgentHandler(
5959
card a2atype.AgentCard,
6060
tracing middleware,
6161
) error {
62-
requestHandler := a2asrv.NewHandler(NewPassthroughExecutor(client))
62+
// TODO: Remove this in release 0.11.0 when all agents are migrated to v1
63+
requestHandler := NewPassthroughRequestHandler(client, &card)
6364
legacyJSONRPCHandler := a2av0.NewJSONRPCHandler(requestHandler)
6465
v1JSONRPCHandler := a2asrv.NewJSONRPCHandler(requestHandler)
65-
cardHandler := a2asrv.NewStaticAgentCardHandler(&card)
66+
cardHandler := a2asrv.NewAgentCardHandler(a2av0.NewStaticAgentCardProducer(&card))
6667
wellKnownPath := "/" + strings.TrimPrefix(a2asrv.WellKnownAgentCardPath, "/")
6768

6869
var handler http.Handler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package a2a
2+
3+
import (
4+
"context"
5+
"iter"
6+
7+
a2atype "github.com/a2aproject/a2a-go/v2/a2a"
8+
a2aclient "github.com/a2aproject/a2a-go/v2/a2aclient"
9+
"github.com/a2aproject/a2a-go/v2/a2asrv"
10+
)
11+
12+
type PassthroughRequestHandler struct {
13+
client *a2aclient.Client
14+
card *a2atype.AgentCard
15+
}
16+
17+
var _ a2asrv.RequestHandler = (*PassthroughRequestHandler)(nil)
18+
19+
// NewPassthroughRequestHandler returns a transport-level proxy for controller
20+
// A2A endpoints. It delegates each request directly to the selected upstream
21+
// agent client and intentionally bypasses a2asrv.NewHandler, which would create
22+
// local task state and apply v1 task-processing invariants to legacy streams.
23+
// Keep this while the controller bridges mixed 0.3 and 1.0 clients/runtimes;
24+
// once all supported traffic is native v1, the controller can use the standard
25+
// v1 handler stack directly.
26+
func NewPassthroughRequestHandler(client *a2aclient.Client, card *a2atype.AgentCard) *PassthroughRequestHandler {
27+
return &PassthroughRequestHandler{
28+
client: client,
29+
card: card,
30+
}
31+
}
32+
33+
func (h *PassthroughRequestHandler) GetTask(ctx context.Context, req *a2atype.GetTaskRequest) (*a2atype.Task, error) {
34+
return h.client.GetTask(ctx, req)
35+
}
36+
37+
func (h *PassthroughRequestHandler) ListTasks(ctx context.Context, req *a2atype.ListTasksRequest) (*a2atype.ListTasksResponse, error) {
38+
return h.client.ListTasks(ctx, req)
39+
}
40+
41+
func (h *PassthroughRequestHandler) CancelTask(ctx context.Context, req *a2atype.CancelTaskRequest) (*a2atype.Task, error) {
42+
return h.client.CancelTask(ctx, req)
43+
}
44+
45+
func (h *PassthroughRequestHandler) SendMessage(ctx context.Context, req *a2atype.SendMessageRequest) (a2atype.SendMessageResult, error) {
46+
return h.client.SendMessage(ctx, req)
47+
}
48+
49+
func (h *PassthroughRequestHandler) SubscribeToTask(ctx context.Context, req *a2atype.SubscribeToTaskRequest) iter.Seq2[a2atype.Event, error] {
50+
return h.client.SubscribeToTask(ctx, req)
51+
}
52+
53+
func (h *PassthroughRequestHandler) SendStreamingMessage(ctx context.Context, req *a2atype.SendMessageRequest) iter.Seq2[a2atype.Event, error] {
54+
return h.client.SendStreamingMessage(ctx, req)
55+
}
56+
57+
func (h *PassthroughRequestHandler) GetTaskPushConfig(ctx context.Context, req *a2atype.GetTaskPushConfigRequest) (*a2atype.PushConfig, error) {
58+
return h.client.GetTaskPushConfig(ctx, req)
59+
}
60+
61+
func (h *PassthroughRequestHandler) ListTaskPushConfigs(ctx context.Context, req *a2atype.ListTaskPushConfigRequest) (*a2atype.ListTaskPushConfigResponse, error) {
62+
configs, err := h.client.ListTaskPushConfigs(ctx, req)
63+
if err != nil {
64+
return nil, err
65+
}
66+
return &a2atype.ListTaskPushConfigResponse{Configs: configs}, nil
67+
}
68+
69+
func (h *PassthroughRequestHandler) CreateTaskPushConfig(ctx context.Context, req *a2atype.PushConfig) (*a2atype.PushConfig, error) {
70+
return h.client.CreateTaskPushConfig(ctx, req)
71+
}
72+
73+
func (h *PassthroughRequestHandler) DeleteTaskPushConfig(ctx context.Context, req *a2atype.DeleteTaskPushConfigRequest) error {
74+
return h.client.DeleteTaskPushConfig(ctx, req)
75+
}
76+
77+
func (h *PassthroughRequestHandler) GetExtendedAgentCard(ctx context.Context, req *a2atype.GetExtendedAgentCardRequest) (*a2atype.AgentCard, error) {
78+
if h.card != nil && !h.card.Capabilities.ExtendedAgentCard {
79+
return h.card, nil
80+
}
81+
return h.client.GetExtendedAgentCard(ctx, req)
82+
}

go/core/internal/controller/translator/agent/manifest_builder.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import (
77
"maps"
88

99
a2a "github.com/a2aproject/a2a-go/v2/a2a"
10+
"github.com/a2aproject/a2a-go/v2/a2acompat/a2av0"
11+
"github.com/a2aproject/a2a-go/v2/a2asrv"
1012
"github.com/kagent-dev/kagent/go/api/adk"
1113
"github.com/kagent-dev/kagent/go/api/v1alpha2"
1214
"github.com/kagent-dev/kagent/go/core/internal/controller/translator/labels"
@@ -57,7 +59,7 @@ func (a *adkApiTranslator) BuildManifest(
5759
outputs := &AgentOutputs{}
5860
manifestCtx := newManifestContext(agent, inputs.Deployment)
5961

60-
configSecret, err := a.buildConfigSecret(manifestCtx, inputs.Config, inputs.Sandbox, inputs.AgentCard, inputs.SecretHashBytes)
62+
configSecret, err := a.buildConfigSecret(ctx, manifestCtx, inputs.Config, inputs.Sandbox, inputs.AgentCard, inputs.SecretHashBytes)
6163
if err != nil {
6264
return nil, err
6365
}
@@ -125,6 +127,7 @@ func (m manifestContext) objectMeta() metav1.ObjectMeta {
125127
}
126128

127129
func (a *adkApiTranslator) buildConfigSecret(
130+
ctx context.Context,
128131
manifestCtx manifestContext,
129132
cfg *adk.AgentConfig,
130133
sandboxCfg *v1alpha2.SandboxConfig,
@@ -146,11 +149,17 @@ func (a *adkApiTranslator) buildConfigSecret(
146149
cfgJSON = string(bCfg)
147150
}
148151
if card != nil {
149-
bCard, err := json.Marshal(card)
152+
// TODO: replace this with the v1 agent card producer in release 0.11.0
153+
producer := a2av0.NewStaticAgentCardProducer(card)
154+
jsonProducer, ok := producer.(a2asrv.AgentCardJSONProducer)
155+
if !ok {
156+
return nil, fmt.Errorf("compat agent card producer does not support JSON serialization")
157+
}
158+
cardJSON, err := jsonProducer.CardJSON(ctx)
150159
if err != nil {
151160
return nil, err
152161
}
153-
agentCard = string(bCard)
162+
agentCard = string(cardJSON)
154163
}
155164
if needsSRTSettings(manifestCtx.agent, sandboxCfg) {
156165
bSRTSettings, err := buildSRTSettingsJSON(sandboxCfg)

go/core/internal/controller/translator/agent/testdata/outputs/agent_with_a2a_config.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
]
6969
},
7070
"stringData": {
71-
"agent-card.json": "{\"supportedInterfaces\":[{\"url\":\"http://a2a-agent.test:8080\",\"protocolBinding\":\"JSONRPC\",\"protocolVersion\":\"0.3\"},{\"url\":\"http://a2a-agent.test:8080\",\"protocolBinding\":\"JSONRPC\",\"protocolVersion\":\"1.0\"}],\"capabilities\":{\"streaming\":true},\"defaultInputModes\":[\"text\"],\"defaultOutputModes\":[\"text\"],\"description\":\"\",\"name\":\"a2a_agent\",\"skills\":[{\"description\":\"Summarizes text\",\"id\":\"summarize\",\"name\":\"Summarize\",\"tags\":null}],\"version\":\"\"}",
71+
"agent-card.json": "{\n \"defaultInputModes\": [\n \"text\"\n ],\n \"defaultOutputModes\": [\n \"text\"\n ],\n \"description\": \"\",\n \"name\": \"a2a_agent\",\n \"version\": \"\",\n \"skills\": [\n {\n \"description\": \"Summarizes text\",\n \"id\": \"summarize\",\n \"name\": \"Summarize\",\n \"tags\": null\n }\n ],\n \"capabilities\": {\n \"streaming\": true\n },\n \"supportedInterfaces\": [\n {\n \"url\": \"http://a2a-agent.test:8080\",\n \"protocolBinding\": \"JSONRPC\",\n \"protocolVersion\": \"0.3\"\n },\n {\n \"url\": \"http://a2a-agent.test:8080\",\n \"protocolBinding\": \"JSONRPC\",\n \"protocolVersion\": \"1.0\"\n }\n ],\n \"url\": \"http://a2a-agent.test:8080\",\n \"protocolVersion\": \"0.3\",\n \"preferredTransport\": \"JSONRPC\"\n}",
7272
"config.json": "{\"model\":{\"type\":\"openai\",\"model\":\"gpt-4o\",\"base_url\":\"\"},\"description\":\"\",\"instruction\":\"You are a helpful assistant.\",\"stream\":false}"
7373
}
7474
},
@@ -138,7 +138,7 @@
138138
"template": {
139139
"metadata": {
140140
"annotations": {
141-
"kagent.dev/config-hash": "9207770362976028198"
141+
"kagent.dev/config-hash": "11777198347800362314"
142142
},
143143
"labels": {
144144
"app": "kagent",

go/core/internal/controller/translator/agent/testdata/outputs/agent_with_allowed_headers.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
]
7979
},
8080
"stringData": {
81-
"agent-card.json": "{\"supportedInterfaces\":[{\"url\":\"http://agent.test:8080\",\"protocolBinding\":\"JSONRPC\",\"protocolVersion\":\"0.3\"},{\"url\":\"http://agent.test:8080\",\"protocolBinding\":\"JSONRPC\",\"protocolVersion\":\"1.0\"}],\"capabilities\":{\"streaming\":true},\"defaultInputModes\":[\"text\"],\"defaultOutputModes\":[\"text\"],\"description\":\"\",\"name\":\"agent\",\"skills\":[],\"version\":\"\"}",
81+
"agent-card.json": "{\n \"defaultInputModes\": [\n \"text\"\n ],\n \"defaultOutputModes\": [\n \"text\"\n ],\n \"description\": \"\",\n \"name\": \"agent\",\n \"version\": \"\",\n \"skills\": [],\n \"capabilities\": {\n \"streaming\": true\n },\n \"supportedInterfaces\": [\n {\n \"url\": \"http://agent.test:8080\",\n \"protocolBinding\": \"JSONRPC\",\n \"protocolVersion\": \"0.3\"\n },\n {\n \"url\": \"http://agent.test:8080\",\n \"protocolBinding\": \"JSONRPC\",\n \"protocolVersion\": \"1.0\"\n }\n ],\n \"url\": \"http://agent.test:8080\",\n \"protocolVersion\": \"0.3\",\n \"preferredTransport\": \"JSONRPC\"\n}",
8282
"config.json": "{\"model\":{\"type\":\"openai\",\"model\":\"gpt-4o\",\"base_url\":\"\"},\"description\":\"\",\"instruction\":\"You are a helpful assistant.\",\"http_tools\":[{\"params\":{\"url\":\"http://mcp-server.test:8080/mcp\",\"headers\":{}},\"tools\":[\"tool1\",\"tool2\"],\"allowed_headers\":[\"x-user-email\",\"x-tenant-id\"]}],\"stream\":false}"
8383
}
8484
},
@@ -148,7 +148,7 @@
148148
"template": {
149149
"metadata": {
150150
"annotations": {
151-
"kagent.dev/config-hash": "2138527890147516382"
151+
"kagent.dev/config-hash": "7055658815424891365"
152152
},
153153
"labels": {
154154
"app": "kagent",

go/core/internal/controller/translator/agent/testdata/outputs/agent_with_code.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
]
7171
},
7272
"stringData": {
73-
"agent-card.json": "{\"supportedInterfaces\":[{\"url\":\"http://agent-with-code.test:8080\",\"protocolBinding\":\"JSONRPC\",\"protocolVersion\":\"0.3\"},{\"url\":\"http://agent-with-code.test:8080\",\"protocolBinding\":\"JSONRPC\",\"protocolVersion\":\"1.0\"}],\"capabilities\":{\"streaming\":true},\"defaultInputModes\":[\"text\"],\"defaultOutputModes\":[\"text\"],\"description\":\"\",\"name\":\"agent_with_code\",\"skills\":[],\"version\":\"\"}",
73+
"agent-card.json": "{\n \"defaultInputModes\": [\n \"text\"\n ],\n \"defaultOutputModes\": [\n \"text\"\n ],\n \"description\": \"\",\n \"name\": \"agent_with_code\",\n \"version\": \"\",\n \"skills\": [],\n \"capabilities\": {\n \"streaming\": true\n },\n \"supportedInterfaces\": [\n {\n \"url\": \"http://agent-with-code.test:8080\",\n \"protocolBinding\": \"JSONRPC\",\n \"protocolVersion\": \"0.3\"\n },\n {\n \"url\": \"http://agent-with-code.test:8080\",\n \"protocolBinding\": \"JSONRPC\",\n \"protocolVersion\": \"1.0\"\n }\n ],\n \"url\": \"http://agent-with-code.test:8080\",\n \"protocolVersion\": \"0.3\",\n \"preferredTransport\": \"JSONRPC\"\n}",
7474
"config.json": "{\"model\":{\"type\":\"openai\",\"model\":\"gpt-4o\",\"headers\":{\"User-Agent\":\"kagent/1.0\"},\"base_url\":\"\",\"max_tokens\":1024,\"reasoning_effort\":\"low\",\"temperature\":0.7,\"top_p\":0.95},\"description\":\"\",\"instruction\":\"You are a helpful assistant.\",\"execute_code\":true,\"stream\":false}",
7575
"srt-settings.json": "{\"filesystem\":{\"allowWrite\":[\".\",\"/tmp\"],\"denyRead\":[],\"denyWrite\":[]},\"network\":{\"allowedDomains\":[],\"deniedDomains\":[]}}"
7676
}
@@ -141,7 +141,7 @@
141141
"template": {
142142
"metadata": {
143143
"annotations": {
144-
"kagent.dev/config-hash": "15600117866655840721"
144+
"kagent.dev/config-hash": "13638639139652067632"
145145
},
146146
"labels": {
147147
"app": "kagent",

go/core/internal/controller/translator/agent/testdata/outputs/agent_with_context_config.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
]
8181
},
8282
"stringData": {
83-
"agent-card.json": "{\"supportedInterfaces\":[{\"url\":\"http://agent-with-context.test:8080\",\"protocolBinding\":\"JSONRPC\",\"protocolVersion\":\"0.3\"},{\"url\":\"http://agent-with-context.test:8080\",\"protocolBinding\":\"JSONRPC\",\"protocolVersion\":\"1.0\"}],\"capabilities\":{\"streaming\":true},\"defaultInputModes\":[\"text\"],\"defaultOutputModes\":[\"text\"],\"description\":\"Agent with context management\",\"name\":\"agent_with_context\",\"skills\":[],\"version\":\"\"}",
83+
"agent-card.json": "{\n \"defaultInputModes\": [\n \"text\"\n ],\n \"defaultOutputModes\": [\n \"text\"\n ],\n \"description\": \"Agent with context management\",\n \"name\": \"agent_with_context\",\n \"version\": \"\",\n \"skills\": [],\n \"capabilities\": {\n \"streaming\": true\n },\n \"supportedInterfaces\": [\n {\n \"url\": \"http://agent-with-context.test:8080\",\n \"protocolBinding\": \"JSONRPC\",\n \"protocolVersion\": \"0.3\"\n },\n {\n \"url\": \"http://agent-with-context.test:8080\",\n \"protocolBinding\": \"JSONRPC\",\n \"protocolVersion\": \"1.0\"\n }\n ],\n \"url\": \"http://agent-with-context.test:8080\",\n \"protocolVersion\": \"0.3\",\n \"preferredTransport\": \"JSONRPC\"\n}",
8484
"config.json": "{\"model\":{\"type\":\"openai\",\"model\":\"gpt-4o\",\"headers\":{\"User-Agent\":\"kagent/1.0\"},\"base_url\":\"\",\"max_tokens\":1024,\"temperature\":0.7},\"description\":\"Agent with context management\",\"instruction\":\"You are a helpful assistant with context management enabled.\",\"stream\":false,\"context_config\":{\"compaction\":{\"compaction_interval\":5,\"overlap_size\":2,\"summarizer_model\":{\"type\":\"anthropic\",\"model\":\"claude-3-haiku\"},\"prompt_template\":\"Summarize the following conversation events concisely.\",\"token_threshold\":50000,\"event_retention_size\":10}}}"
8585
}
8686
},
@@ -150,7 +150,7 @@
150150
"template": {
151151
"metadata": {
152152
"annotations": {
153-
"kagent.dev/config-hash": "16190589400428186426"
153+
"kagent.dev/config-hash": "7947347043949539668"
154154
},
155155
"labels": {
156156
"app": "kagent",

go/core/internal/controller/translator/agent/testdata/outputs/agent_with_cross_namespace_tools.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
]
8585
},
8686
"stringData": {
87-
"agent-card.json": "{\"supportedInterfaces\":[{\"url\":\"http://source-agent.source-ns:8080\",\"protocolBinding\":\"JSONRPC\",\"protocolVersion\":\"0.3\"},{\"url\":\"http://source-agent.source-ns:8080\",\"protocolBinding\":\"JSONRPC\",\"protocolVersion\":\"1.0\"}],\"capabilities\":{\"streaming\":true},\"defaultInputModes\":[\"text\"],\"defaultOutputModes\":[\"text\"],\"description\":\"An agent that uses cross-namespace tools\",\"name\":\"source_agent\",\"skills\":[],\"version\":\"\"}",
87+
"agent-card.json": "{\n \"defaultInputModes\": [\n \"text\"\n ],\n \"defaultOutputModes\": [\n \"text\"\n ],\n \"description\": \"An agent that uses cross-namespace tools\",\n \"name\": \"source_agent\",\n \"version\": \"\",\n \"skills\": [],\n \"capabilities\": {\n \"streaming\": true\n },\n \"supportedInterfaces\": [\n {\n \"url\": \"http://source-agent.source-ns:8080\",\n \"protocolBinding\": \"JSONRPC\",\n \"protocolVersion\": \"0.3\"\n },\n {\n \"url\": \"http://source-agent.source-ns:8080\",\n \"protocolBinding\": \"JSONRPC\",\n \"protocolVersion\": \"1.0\"\n }\n ],\n \"url\": \"http://source-agent.source-ns:8080\",\n \"protocolVersion\": \"0.3\",\n \"preferredTransport\": \"JSONRPC\"\n}",
8888
"config.json": "{\"model\":{\"type\":\"openai\",\"model\":\"gpt-4o\",\"base_url\":\"\"},\"description\":\"An agent that uses cross-namespace tools\",\"instruction\":\"You are an assistant with access to shared tools.\",\"http_tools\":[{\"params\":{\"url\":\"http://tools.tools-ns.svc:8080/mcp\",\"headers\":{\"Authorization\":\"tool-secret-token\"},\"timeout\":30},\"tools\":[\"list_resources\",\"get_resource\"]}],\"remote_agents\":[{\"name\":\"tools_ns__NS__tools_agent\",\"url\":\"http://tools-agent.tools-ns:8080\",\"description\":\"An agent that can be used as a cross-namespace tool\"}],\"stream\":false}"
8989
}
9090
},
@@ -154,7 +154,7 @@
154154
"template": {
155155
"metadata": {
156156
"annotations": {
157-
"kagent.dev/config-hash": "9411017991045658659"
157+
"kagent.dev/config-hash": "6928733945253389376"
158158
},
159159
"labels": {
160160
"app": "kagent",

go/core/internal/controller/translator/agent/testdata/outputs/agent_with_custom_sa.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
]
6363
},
6464
"stringData": {
65-
"agent-card.json": "{\"supportedInterfaces\":[{\"url\":\"http://agent-with-custom-sa.test:8080\",\"protocolBinding\":\"JSONRPC\",\"protocolVersion\":\"0.3\"},{\"url\":\"http://agent-with-custom-sa.test:8080\",\"protocolBinding\":\"JSONRPC\",\"protocolVersion\":\"1.0\"}],\"capabilities\":{\"streaming\":true},\"defaultInputModes\":[\"text\"],\"defaultOutputModes\":[\"text\"],\"description\":\"\",\"name\":\"agent_with_custom_sa\",\"skills\":[],\"version\":\"\"}",
65+
"agent-card.json": "{\n \"defaultInputModes\": [\n \"text\"\n ],\n \"defaultOutputModes\": [\n \"text\"\n ],\n \"description\": \"\",\n \"name\": \"agent_with_custom_sa\",\n \"version\": \"\",\n \"skills\": [],\n \"capabilities\": {\n \"streaming\": true\n },\n \"supportedInterfaces\": [\n {\n \"url\": \"http://agent-with-custom-sa.test:8080\",\n \"protocolBinding\": \"JSONRPC\",\n \"protocolVersion\": \"0.3\"\n },\n {\n \"url\": \"http://agent-with-custom-sa.test:8080\",\n \"protocolBinding\": \"JSONRPC\",\n \"protocolVersion\": \"1.0\"\n }\n ],\n \"url\": \"http://agent-with-custom-sa.test:8080\",\n \"protocolVersion\": \"0.3\",\n \"preferredTransport\": \"JSONRPC\"\n}",
6666
"config.json": "{\"model\":{\"type\":\"openai\",\"model\":\"gpt-4\",\"base_url\":\"\"},\"description\":\"\",\"instruction\":\"You are a helpful assistant.\",\"stream\":false}"
6767
}
6868
},
@@ -107,7 +107,7 @@
107107
"template": {
108108
"metadata": {
109109
"annotations": {
110-
"kagent.dev/config-hash": "11401466948750956923"
110+
"kagent.dev/config-hash": "4875306436828307681"
111111
},
112112
"labels": {
113113
"app": "kagent",

go/core/internal/controller/translator/agent/testdata/outputs/agent_with_default_sa.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
]
6363
},
6464
"stringData": {
65-
"agent-card.json": "{\"supportedInterfaces\":[{\"url\":\"http://agent-with-default-sa.test:8080\",\"protocolBinding\":\"JSONRPC\",\"protocolVersion\":\"0.3\"},{\"url\":\"http://agent-with-default-sa.test:8080\",\"protocolBinding\":\"JSONRPC\",\"protocolVersion\":\"1.0\"}],\"capabilities\":{\"streaming\":true},\"defaultInputModes\":[\"text\"],\"defaultOutputModes\":[\"text\"],\"description\":\"\",\"name\":\"agent_with_default_sa\",\"skills\":[],\"version\":\"\"}",
65+
"agent-card.json": "{\n \"defaultInputModes\": [\n \"text\"\n ],\n \"defaultOutputModes\": [\n \"text\"\n ],\n \"description\": \"\",\n \"name\": \"agent_with_default_sa\",\n \"version\": \"\",\n \"skills\": [],\n \"capabilities\": {\n \"streaming\": true\n },\n \"supportedInterfaces\": [\n {\n \"url\": \"http://agent-with-default-sa.test:8080\",\n \"protocolBinding\": \"JSONRPC\",\n \"protocolVersion\": \"0.3\"\n },\n {\n \"url\": \"http://agent-with-default-sa.test:8080\",\n \"protocolBinding\": \"JSONRPC\",\n \"protocolVersion\": \"1.0\"\n }\n ],\n \"url\": \"http://agent-with-default-sa.test:8080\",\n \"protocolVersion\": \"0.3\",\n \"preferredTransport\": \"JSONRPC\"\n}",
6666
"config.json": "{\"model\":{\"type\":\"openai\",\"model\":\"gpt-4\",\"base_url\":\"\"},\"description\":\"\",\"instruction\":\"You are a helpful assistant.\",\"stream\":false}"
6767
}
6868
},
@@ -107,7 +107,7 @@
107107
"template": {
108108
"metadata": {
109109
"annotations": {
110-
"kagent.dev/config-hash": "1706358953235401870"
110+
"kagent.dev/config-hash": "1952368464262477618"
111111
},
112112
"labels": {
113113
"app": "kagent",

0 commit comments

Comments
 (0)