kagent-adk 0.6.7__py3-none-any.whl → 0.6.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of kagent-adk might be problematic. Click here for more details.
- {kagent_adk → kagent/adk}/__init__.py +2 -2
- kagent_adk/a2a.py → kagent/adk/_a2a.py +6 -51
- {kagent_adk → kagent/adk}/_agent_executor.py +10 -8
- {kagent_adk → kagent/adk}/_token.py +3 -1
- kagent/adk/cli.py +111 -0
- kagent/adk/converters/__init__.py +0 -0
- kagent/adk/converters/event_converter.py +315 -0
- kagent/adk/converters/part_converter.py +206 -0
- kagent/adk/converters/request_converter.py +33 -0
- kagent/adk/models/__init__.py +3 -0
- kagent/adk/models/_openai.py +393 -0
- kagent_adk/models.py → kagent/adk/types.py +12 -12
- {kagent_adk-0.6.7.dist-info → kagent_adk-0.6.9.dist-info}/METADATA +2 -7
- kagent_adk-0.6.9.dist-info/RECORD +17 -0
- kagent_adk-0.6.9.dist-info/entry_points.txt +2 -0
- kagent_adk/_task_store.py +0 -30
- kagent_adk/cli.py +0 -202
- kagent_adk-0.6.7.dist-info/RECORD +0 -12
- kagent_adk-0.6.7.dist-info/entry_points.txt +0 -2
- {kagent_adk → kagent/adk}/_session_service.py +0 -0
- {kagent_adk-0.6.7.dist-info → kagent_adk-0.6.9.dist-info}/WHEEL +0 -0
|
@@ -4,8 +4,7 @@ from typing import Literal, Self, Union
|
|
|
4
4
|
from google.adk.agents import Agent
|
|
5
5
|
from google.adk.agents.base_agent import BaseAgent
|
|
6
6
|
from google.adk.agents.llm_agent import ToolUnion
|
|
7
|
-
from google.adk.agents.remote_a2a_agent import RemoteA2aAgent
|
|
8
|
-
from google.adk.agents.run_config import RunConfig, StreamingMode
|
|
7
|
+
from google.adk.agents.remote_a2a_agent import AGENT_CARD_WELL_KNOWN_PATH, RemoteA2aAgent
|
|
9
8
|
from google.adk.models.anthropic_llm import Claude as ClaudeLLM
|
|
10
9
|
from google.adk.models.google_llm import Gemini as GeminiLLM
|
|
11
10
|
from google.adk.models.lite_llm import LiteLlm
|
|
@@ -13,6 +12,9 @@ from google.adk.tools.agent_tool import AgentTool
|
|
|
13
12
|
from google.adk.tools.mcp_tool import MCPToolset, SseConnectionParams, StreamableHTTPConnectionParams
|
|
14
13
|
from pydantic import BaseModel, Field
|
|
15
14
|
|
|
15
|
+
from .models import AzureOpenAI as OpenAIAzure
|
|
16
|
+
from .models import OpenAI as OpenAINative
|
|
17
|
+
|
|
16
18
|
logger = logging.getLogger(__name__)
|
|
17
19
|
|
|
18
20
|
|
|
@@ -88,18 +90,17 @@ class AgentConfig(BaseModel):
|
|
|
88
90
|
if self.sse_tools:
|
|
89
91
|
for sse_tool in self.sse_tools: # add stdio tools
|
|
90
92
|
mcp_toolsets.append(MCPToolset(connection_params=sse_tool.params, tool_filter=sse_tool.tools))
|
|
91
|
-
remote_agents: list[BaseAgent] = []
|
|
92
93
|
if self.remote_agents:
|
|
93
94
|
for remote_agent in self.remote_agents: # Add remote agents as tools
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
description=remote_agent.description,
|
|
99
|
-
)
|
|
95
|
+
remote_agent = RemoteA2aAgent(
|
|
96
|
+
name=remote_agent.name,
|
|
97
|
+
agent_card=f"{remote_agent.url}/{AGENT_CARD_WELL_KNOWN_PATH}",
|
|
98
|
+
description=remote_agent.description,
|
|
100
99
|
)
|
|
100
|
+
mcp_toolsets.append(AgentTool(agent=remote_agent, skip_summarization=True))
|
|
101
|
+
|
|
101
102
|
if self.model.type == "openai":
|
|
102
|
-
model =
|
|
103
|
+
model = OpenAINative(model=self.model.model, base_url=self.model.base_url, type="openai")
|
|
103
104
|
elif self.model.type == "anthropic":
|
|
104
105
|
model = LiteLlm(model=f"anthropic/{self.model.model}", base_url=self.model.base_url)
|
|
105
106
|
elif self.model.type == "gemini_vertex_ai":
|
|
@@ -109,7 +110,7 @@ class AgentConfig(BaseModel):
|
|
|
109
110
|
elif self.model.type == "ollama":
|
|
110
111
|
model = LiteLlm(model=f"ollama_chat/{self.model.model}")
|
|
111
112
|
elif self.model.type == "azure_openai":
|
|
112
|
-
model =
|
|
113
|
+
model = OpenAIAzure(model=self.model.model, type="azure_openai")
|
|
113
114
|
elif self.model.type == "gemini":
|
|
114
115
|
model = self.model.model
|
|
115
116
|
else:
|
|
@@ -120,5 +121,4 @@ class AgentConfig(BaseModel):
|
|
|
120
121
|
description=self.description,
|
|
121
122
|
instruction=self.instruction,
|
|
122
123
|
tools=mcp_toolsets,
|
|
123
|
-
sub_agents=remote_agents,
|
|
124
124
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kagent-adk
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.9
|
|
4
4
|
Summary: kagent-adk is an sdk for integrating adk agents with kagent
|
|
5
5
|
Requires-Python: >=3.12.11
|
|
6
6
|
Requires-Dist: a2a-sdk>=0.3.1
|
|
@@ -13,15 +13,10 @@ Requires-Dist: google-auth>=2.40.2
|
|
|
13
13
|
Requires-Dist: google-genai>=1.21.1
|
|
14
14
|
Requires-Dist: httpx>=0.25.0
|
|
15
15
|
Requires-Dist: jsonref>=1.1.0
|
|
16
|
+
Requires-Dist: kagent-core
|
|
16
17
|
Requires-Dist: litellm>=1.74.3
|
|
17
18
|
Requires-Dist: mcp>=1.12.0
|
|
18
19
|
Requires-Dist: openai>=1.72.0
|
|
19
|
-
Requires-Dist: opentelemetry-api>=1.36.0
|
|
20
|
-
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.36.0
|
|
21
|
-
Requires-Dist: opentelemetry-instrumentation-anthropic>=0.44.0
|
|
22
|
-
Requires-Dist: opentelemetry-instrumentation-httpx>=0.52.0
|
|
23
|
-
Requires-Dist: opentelemetry-instrumentation-openai>=0.44.3
|
|
24
|
-
Requires-Dist: opentelemetry-sdk>=1.36.0
|
|
25
20
|
Requires-Dist: protobuf>=6
|
|
26
21
|
Requires-Dist: pydantic>=2.5.0
|
|
27
22
|
Requires-Dist: typer>=0.15.0
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
kagent/adk/__init__.py,sha256=Cam9hwhl6Z1tZ3WJIB1KATX24MwRMpiyBLYF64DTqQI,182
|
|
2
|
+
kagent/adk/_a2a.py,sha256=HvduKJlfuUIKzYuPs_U_9A-xuhcMdQutZTzdLNaGORc,4406
|
|
3
|
+
kagent/adk/_agent_executor.py,sha256=rxNVdrcS4L5Kwe8oF7mLUnD1KOYhe6vXK-si0O-KQ9o,10730
|
|
4
|
+
kagent/adk/_session_service.py,sha256=A47gsfDVp8jITzeW987AHTJLEhcU_mU3ik_SFptFGIc,5815
|
|
5
|
+
kagent/adk/_token.py,sha256=OL46m7U5vUTby1WWjVB7Jqzig4TWddzoAmLVLlfSdAg,2515
|
|
6
|
+
kagent/adk/cli.py,sha256=Sdw9FXnUmeHfgJhdRDq1zpoNMf6GM7x35ZDz_OkQgJg,2963
|
|
7
|
+
kagent/adk/types.py,sha256=v7VbO0tAPvpjdEgWJroEq64jSCz6D3Q0yPdRM0a7MjM,4260
|
|
8
|
+
kagent/adk/converters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
kagent/adk/converters/event_converter.py,sha256=gPDxJhPtoIp2CAm0VjSPTH-siuz3IR23CV25AiN_1B8,10392
|
|
10
|
+
kagent/adk/converters/part_converter.py,sha256=Q9Kbteit8XdL_9Tb8bAtxRxOZQei8Wabszwsl4YMe2c,7507
|
|
11
|
+
kagent/adk/converters/request_converter.py,sha256=iTmTmhlnyRfuYyFi4WmpTSXPz22xjjotbe750j-CvYA,1072
|
|
12
|
+
kagent/adk/models/__init__.py,sha256=mqD0JhS9kT1rMpFNLq5-qnjstpp6lzT9xADaOfjrUKY,78
|
|
13
|
+
kagent/adk/models/_openai.py,sha256=Xdu0AteM4nFbZaCMAcSC_nj1iJRgpWBVXFzD0aPELGA,15685
|
|
14
|
+
kagent_adk-0.6.9.dist-info/METADATA,sha256=JtlHtn8MXVr9XeCg8QX3C0zob7ibyNhf1N6ygfQTLlE,943
|
|
15
|
+
kagent_adk-0.6.9.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
16
|
+
kagent_adk-0.6.9.dist-info/entry_points.txt,sha256=a1Q2Inc9L0dvXWEkwnCdf9cfXdpX5Dl2Q6DhNWNjhxw,50
|
|
17
|
+
kagent_adk-0.6.9.dist-info/RECORD,,
|
kagent_adk/_task_store.py
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
from typing import override
|
|
2
|
-
|
|
3
|
-
import httpx
|
|
4
|
-
from a2a.server.tasks import TaskStore
|
|
5
|
-
from a2a.types import Task
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class KAgentTaskStore(TaskStore):
|
|
9
|
-
client: httpx.AsyncClient
|
|
10
|
-
|
|
11
|
-
def __init__(self, client: httpx.AsyncClient):
|
|
12
|
-
self.client = client
|
|
13
|
-
|
|
14
|
-
@override
|
|
15
|
-
async def save(self, task: Task) -> None:
|
|
16
|
-
response = await self.client.post("/api/tasks", json=task.model_dump())
|
|
17
|
-
response.raise_for_status()
|
|
18
|
-
|
|
19
|
-
@override
|
|
20
|
-
async def get(self, task_id: str) -> Task | None:
|
|
21
|
-
response = await self.client.get(f"/api/tasks/{task_id}")
|
|
22
|
-
if response.status_code == 404:
|
|
23
|
-
return None
|
|
24
|
-
response.raise_for_status()
|
|
25
|
-
return Task.model_validate(response.json())
|
|
26
|
-
|
|
27
|
-
@override
|
|
28
|
-
async def delete(self, task_id: str) -> None:
|
|
29
|
-
response = await self.client.delete(f"/api/tasks/{task_id}")
|
|
30
|
-
response.raise_for_status()
|
kagent_adk/cli.py
DELETED
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
import asyncio
|
|
2
|
-
import json
|
|
3
|
-
import logging
|
|
4
|
-
import os
|
|
5
|
-
from typing import Annotated
|
|
6
|
-
|
|
7
|
-
import typer
|
|
8
|
-
import uvicorn
|
|
9
|
-
from a2a.types import AgentCard
|
|
10
|
-
from google.adk.cli.utils.agent_loader import AgentLoader
|
|
11
|
-
from opentelemetry import _logs, trace
|
|
12
|
-
from opentelemetry.exporter.otlp.proto.grpc._log_exporter import OTLPLogExporter
|
|
13
|
-
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
|
|
14
|
-
from opentelemetry.instrumentation.anthropic import AnthropicInstrumentor
|
|
15
|
-
from opentelemetry.instrumentation.openai import OpenAIInstrumentor
|
|
16
|
-
from opentelemetry.sdk._events import EventLoggerProvider
|
|
17
|
-
from opentelemetry.sdk._logs import LoggerProvider
|
|
18
|
-
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
|
|
19
|
-
from opentelemetry.sdk.resources import Resource
|
|
20
|
-
from opentelemetry.sdk.trace import TracerProvider
|
|
21
|
-
from opentelemetry.sdk.trace.export import BatchSpanProcessor
|
|
22
|
-
|
|
23
|
-
from . import AgentConfig, KAgentApp
|
|
24
|
-
|
|
25
|
-
logger = logging.getLogger(__name__)
|
|
26
|
-
|
|
27
|
-
app = typer.Typer()
|
|
28
|
-
|
|
29
|
-
kagent_url = os.getenv("KAGENT_URL")
|
|
30
|
-
kagent_name = os.getenv("KAGENT_NAME")
|
|
31
|
-
kagent_namespace = os.getenv("KAGENT_NAMESPACE")
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
class Config:
|
|
35
|
-
_url: str
|
|
36
|
-
_name: str
|
|
37
|
-
_namespace: str
|
|
38
|
-
|
|
39
|
-
def __init__(self):
|
|
40
|
-
if not kagent_url:
|
|
41
|
-
raise ValueError("KAGENT_URL is not set")
|
|
42
|
-
if not kagent_name:
|
|
43
|
-
raise ValueError("KAGENT_NAME is not set")
|
|
44
|
-
if not kagent_namespace:
|
|
45
|
-
raise ValueError("KAGENT_NAMESPACE is not set")
|
|
46
|
-
self._url = kagent_url
|
|
47
|
-
self._name = kagent_name
|
|
48
|
-
self._namespace = kagent_namespace
|
|
49
|
-
|
|
50
|
-
@property
|
|
51
|
-
def name(self):
|
|
52
|
-
return self._name.replace("-", "_")
|
|
53
|
-
|
|
54
|
-
@property
|
|
55
|
-
def namespace(self):
|
|
56
|
-
return self._namespace.replace("-", "_")
|
|
57
|
-
|
|
58
|
-
@property
|
|
59
|
-
def app_name(self):
|
|
60
|
-
return self.namespace + "__NS__" + self.name
|
|
61
|
-
|
|
62
|
-
@property
|
|
63
|
-
def url(self):
|
|
64
|
-
return self._url
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
def configure_tracing():
|
|
68
|
-
tracing_enabled = os.getenv("OTEL_TRACING_ENABLED", "false").lower() == "true"
|
|
69
|
-
logging_enabled = os.getenv("OTEL_LOGGING_ENABLED", "false").lower() == "true"
|
|
70
|
-
|
|
71
|
-
resource = Resource({"service.name": "kagent"})
|
|
72
|
-
|
|
73
|
-
# Configure tracing if enabled
|
|
74
|
-
if tracing_enabled:
|
|
75
|
-
logging.info("Enabling tracing")
|
|
76
|
-
tracer_provider = TracerProvider(resource=resource)
|
|
77
|
-
# Check new env var first, fall back to old one for backward compatibility
|
|
78
|
-
trace_endpoint = os.getenv("OTEL_TRACING_EXPORTER_OTLP_ENDPOINT") or os.getenv("OTEL_EXPORTER_OTLP_ENDPOINT")
|
|
79
|
-
if trace_endpoint:
|
|
80
|
-
processor = BatchSpanProcessor(OTLPSpanExporter(endpoint=trace_endpoint))
|
|
81
|
-
else:
|
|
82
|
-
processor = BatchSpanProcessor(OTLPSpanExporter())
|
|
83
|
-
tracer_provider.add_span_processor(processor)
|
|
84
|
-
trace.set_tracer_provider(tracer_provider)
|
|
85
|
-
|
|
86
|
-
# Configure logging if enabled
|
|
87
|
-
if logging_enabled:
|
|
88
|
-
logging.info("Enabling logging for GenAI events")
|
|
89
|
-
logger_provider = LoggerProvider(resource=resource)
|
|
90
|
-
log_endpoint = os.getenv("OTEL_LOGGING_EXPORTER_OTLP_ENDPOINT")
|
|
91
|
-
logging.info(f"Log endpoint configured: {log_endpoint}")
|
|
92
|
-
|
|
93
|
-
# Add OTLP exporter
|
|
94
|
-
if log_endpoint:
|
|
95
|
-
log_processor = BatchLogRecordProcessor(OTLPLogExporter(endpoint=log_endpoint))
|
|
96
|
-
else:
|
|
97
|
-
log_processor = BatchLogRecordProcessor(OTLPLogExporter())
|
|
98
|
-
logger_provider.add_log_record_processor(log_processor)
|
|
99
|
-
|
|
100
|
-
_logs.set_logger_provider(logger_provider)
|
|
101
|
-
logging.info("Log provider configured with OTLP")
|
|
102
|
-
# When logging is enabled, use new event-based approach (input/output as log events in Body)
|
|
103
|
-
logging.info("OpenAI instrumentation configured with event logging capability")
|
|
104
|
-
# Create event logger provider using the configured logger provider
|
|
105
|
-
event_logger_provider = EventLoggerProvider(logger_provider)
|
|
106
|
-
OpenAIInstrumentor(use_legacy_attributes=False).instrument(event_logger_provider=event_logger_provider)
|
|
107
|
-
AnthropicInstrumentor(use_legacy_attributes=False).instrument(event_logger_provider=event_logger_provider)
|
|
108
|
-
else:
|
|
109
|
-
# Use legacy attributes (input/output as GenAI span attributes)
|
|
110
|
-
logging.info("OpenAI instrumentation configured with legacy GenAI span attributes")
|
|
111
|
-
OpenAIInstrumentor().instrument()
|
|
112
|
-
AnthropicInstrumentor().instrument()
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
@app.command()
|
|
116
|
-
def static(
|
|
117
|
-
host: str = "127.0.0.1",
|
|
118
|
-
port: int = 8080,
|
|
119
|
-
workers: int = 1,
|
|
120
|
-
filepath: str = "/config",
|
|
121
|
-
reload: Annotated[bool, typer.Option("--reload")] = False,
|
|
122
|
-
):
|
|
123
|
-
configure_tracing()
|
|
124
|
-
|
|
125
|
-
app_cfg = Config()
|
|
126
|
-
|
|
127
|
-
with open(os.path.join(filepath, "config.json"), "r") as f:
|
|
128
|
-
config = json.load(f)
|
|
129
|
-
agent_config = AgentConfig.model_validate(config)
|
|
130
|
-
with open(os.path.join(filepath, "agent-card.json"), "r") as f:
|
|
131
|
-
agent_card = json.load(f)
|
|
132
|
-
agent_card = AgentCard.model_validate(agent_card)
|
|
133
|
-
root_agent = agent_config.to_agent(app_cfg.name)
|
|
134
|
-
|
|
135
|
-
kagent_app = KAgentApp(root_agent, agent_card, app_cfg.url, app_cfg.app_name)
|
|
136
|
-
|
|
137
|
-
uvicorn.run(
|
|
138
|
-
kagent_app.build,
|
|
139
|
-
host=host,
|
|
140
|
-
port=port,
|
|
141
|
-
workers=workers,
|
|
142
|
-
reload=reload,
|
|
143
|
-
)
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
@app.command()
|
|
147
|
-
def run(
|
|
148
|
-
name: Annotated[str, typer.Argument(help="The name of the agent to run")],
|
|
149
|
-
working_dir: str = ".",
|
|
150
|
-
host: str = "127.0.0.1",
|
|
151
|
-
port: int = 8080,
|
|
152
|
-
workers: int = 1,
|
|
153
|
-
):
|
|
154
|
-
configure_tracing()
|
|
155
|
-
app_cfg = Config()
|
|
156
|
-
|
|
157
|
-
agent_loader = AgentLoader(agents_dir=working_dir)
|
|
158
|
-
root_agent = agent_loader.load_agent(name)
|
|
159
|
-
|
|
160
|
-
with open(os.path.join(working_dir, name, "agent-card.json"), "r") as f:
|
|
161
|
-
agent_card = json.load(f)
|
|
162
|
-
agent_card = AgentCard.model_validate(agent_card)
|
|
163
|
-
kagent_app = KAgentApp(root_agent, agent_card, app_cfg.url, app_cfg.app_name)
|
|
164
|
-
uvicorn.run(
|
|
165
|
-
kagent_app.build,
|
|
166
|
-
host=host,
|
|
167
|
-
port=port,
|
|
168
|
-
workers=workers,
|
|
169
|
-
)
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
async def test_agent(agent_config: AgentConfig, agent_card: AgentCard, task: str):
|
|
173
|
-
app_cfg = Config()
|
|
174
|
-
agent = agent_config.to_agent(app_cfg.name)
|
|
175
|
-
app = KAgentApp(agent, agent_card, app_cfg.url, app_cfg.app_name)
|
|
176
|
-
await app.test(task)
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
@app.command()
|
|
180
|
-
def test(
|
|
181
|
-
task: Annotated[str, typer.Option("--task", help="The task to test the agent with")],
|
|
182
|
-
filepath: Annotated[str, typer.Option("--filepath", help="The path to the agent config file")],
|
|
183
|
-
):
|
|
184
|
-
with open(filepath, "r") as f:
|
|
185
|
-
content = f.read()
|
|
186
|
-
config = json.loads(content)
|
|
187
|
-
|
|
188
|
-
with open(os.path.join(filepath, "agent-card.json"), "r") as f:
|
|
189
|
-
agent_card = json.load(f)
|
|
190
|
-
agent_card = AgentCard.model_validate(agent_card)
|
|
191
|
-
agent_config = AgentConfig.model_validate(config)
|
|
192
|
-
asyncio.run(test_agent(agent_config, agent_card, task))
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
def run_cli():
|
|
196
|
-
logging.basicConfig(level=logging.INFO)
|
|
197
|
-
logging.info("Starting KAgent")
|
|
198
|
-
app()
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
if __name__ == "__main__":
|
|
202
|
-
run_cli()
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
kagent_adk/__init__.py,sha256=3oB8gbSzsvVmqV8w-BGKkRlH3JPfK6o27AfOD6wAd8o,182
|
|
2
|
-
kagent_adk/_agent_executor.py,sha256=8NDMNUveFtewamYtBQ4MkCwFIRn5xDWeuDaMsW-QGF8,10806
|
|
3
|
-
kagent_adk/_session_service.py,sha256=A47gsfDVp8jITzeW987AHTJLEhcU_mU3ik_SFptFGIc,5815
|
|
4
|
-
kagent_adk/_task_store.py,sha256=3ApKbFfcDZmcEnwef6bCDhBhoGY9ZYwwyP671B1DHFo,889
|
|
5
|
-
kagent_adk/_token.py,sha256=M9TOxxC4RAWPup_MIYuLIYoklnfllJS0yV3dQOfr5ng,2486
|
|
6
|
-
kagent_adk/a2a.py,sha256=r8GgDkeKoZJx_qZmLfoaA0zSrP7t0Hn_VqEc-m0xIc8,5845
|
|
7
|
-
kagent_adk/cli.py,sha256=fqGRM6egX0Kb2AvZWWDCv4Ad7oJ8rh0UDOsV9BZKujQ,6858
|
|
8
|
-
kagent_adk/models.py,sha256=BCG7FdXnizGc28HyHne-GRkUUKoc-QII4b8xcIl_4Yc,4201
|
|
9
|
-
kagent_adk-0.6.7.dist-info/METADATA,sha256=LWyROW1gHg-SbR7va1aFGOBhSRUg1QD8wAWNWaUFCY8,1242
|
|
10
|
-
kagent_adk-0.6.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
11
|
-
kagent_adk-0.6.7.dist-info/entry_points.txt,sha256=bmqHEc9zPYkbRoK57wF3wi5ohHTMB6yHTslKfvuVpc4,50
|
|
12
|
-
kagent_adk-0.6.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|