veadk-python 0.2.9__py3-none-any.whl → 0.2.11__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 veadk-python might be problematic. Click here for more details.

Files changed (46) hide show
  1. veadk/a2a/remote_ve_agent.py +63 -6
  2. veadk/agent.py +10 -3
  3. veadk/agent_builder.py +2 -3
  4. veadk/auth/veauth/ark_veauth.py +43 -51
  5. veadk/auth/veauth/utils.py +57 -0
  6. veadk/cli/cli.py +2 -0
  7. veadk/cli/cli_kb.py +75 -0
  8. veadk/cli/cli_web.py +4 -0
  9. veadk/configs/model_configs.py +3 -3
  10. veadk/consts.py +9 -0
  11. veadk/integrations/__init__.py +13 -0
  12. veadk/integrations/ve_viking_db_memory/__init__.py +13 -0
  13. veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py +293 -0
  14. veadk/knowledgebase/knowledgebase.py +19 -32
  15. veadk/memory/__init__.py +1 -1
  16. veadk/memory/long_term_memory.py +40 -68
  17. veadk/memory/long_term_memory_backends/base_backend.py +4 -2
  18. veadk/memory/long_term_memory_backends/in_memory_backend.py +8 -6
  19. veadk/memory/long_term_memory_backends/mem0_backend.py +25 -10
  20. veadk/memory/long_term_memory_backends/opensearch_backend.py +40 -36
  21. veadk/memory/long_term_memory_backends/redis_backend.py +59 -46
  22. veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +56 -35
  23. veadk/memory/short_term_memory.py +12 -8
  24. veadk/memory/short_term_memory_backends/postgresql_backend.py +3 -1
  25. veadk/runner.py +42 -19
  26. veadk/tools/builtin_tools/generate_image.py +56 -17
  27. veadk/tools/builtin_tools/image_edit.py +17 -7
  28. veadk/tools/builtin_tools/image_generate.py +17 -7
  29. veadk/tools/builtin_tools/load_knowledgebase.py +97 -0
  30. veadk/tools/builtin_tools/video_generate.py +11 -9
  31. veadk/tools/builtin_tools/web_search.py +10 -3
  32. veadk/tools/load_knowledgebase_tool.py +12 -0
  33. veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +5 -0
  34. veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +7 -0
  35. veadk/tracing/telemetry/exporters/apmplus_exporter.py +82 -2
  36. veadk/tracing/telemetry/exporters/inmemory_exporter.py +8 -2
  37. veadk/tracing/telemetry/telemetry.py +41 -5
  38. veadk/utils/misc.py +6 -10
  39. veadk/utils/volcengine_sign.py +2 -0
  40. veadk/version.py +1 -1
  41. {veadk_python-0.2.9.dist-info → veadk_python-0.2.11.dist-info}/METADATA +4 -3
  42. {veadk_python-0.2.9.dist-info → veadk_python-0.2.11.dist-info}/RECORD +46 -40
  43. {veadk_python-0.2.9.dist-info → veadk_python-0.2.11.dist-info}/WHEEL +0 -0
  44. {veadk_python-0.2.9.dist-info → veadk_python-0.2.11.dist-info}/entry_points.txt +0 -0
  45. {veadk_python-0.2.9.dist-info → veadk_python-0.2.11.dist-info}/licenses/LICENSE +0 -0
  46. {veadk_python-0.2.9.dist-info → veadk_python-0.2.11.dist-info}/top_level.txt +0 -0
@@ -17,8 +17,10 @@ from dataclasses import dataclass
17
17
  from typing import Any
18
18
 
19
19
  from google.adk.agents.invocation_context import InvocationContext
20
+ from google.adk.events import Event
20
21
  from google.adk.models.llm_request import LlmRequest
21
22
  from google.adk.models.llm_response import LlmResponse
23
+ from google.adk.tools import BaseTool
22
24
  from opentelemetry import metrics, trace
23
25
  from opentelemetry import metrics as metrics_api
24
26
  from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporter
@@ -124,6 +126,12 @@ class Meters:
124
126
  "gen_ai.chat_completions.streaming_time_per_output_token"
125
127
  )
126
128
 
129
+ # apmplus metrics
130
+ # span duration
131
+ APMPLUS_SPAN_LATENCY = "apmplus_span_latency"
132
+ # tool token usage
133
+ APMPLUS_TOOL_TOKEN_USAGE = "apmplus_tool_token_usage"
134
+
127
135
 
128
136
  class MeterUploader:
129
137
  def __init__(
@@ -195,7 +203,21 @@ class MeterUploader:
195
203
  explicit_bucket_boundaries_advisory=_GEN_AI_SERVER_TIME_PER_OUTPUT_TOKEN_BUCKETS,
196
204
  )
197
205
 
198
- def record(
206
+ # apmplus metrics for veadk dashboard
207
+ self.apmplus_span_latency = self.meter.create_histogram(
208
+ name=Meters.APMPLUS_SPAN_LATENCY,
209
+ description="Latency of span",
210
+ unit="s",
211
+ explicit_bucket_boundaries_advisory=_GEN_AI_CLIENT_OPERATION_DURATION_BUCKETS,
212
+ )
213
+ self.apmplus_tool_token_usage = self.meter.create_histogram(
214
+ name=Meters.APMPLUS_TOOL_TOKEN_USAGE,
215
+ description="Token consumption of APMPlus tool token",
216
+ unit="count",
217
+ explicit_bucket_boundaries_advisory=_GEN_AI_CLIENT_TOKEN_USAGE_BUCKETS,
218
+ )
219
+
220
+ def record_call_llm(
199
221
  self,
200
222
  invocation_context: InvocationContext,
201
223
  event_id: str,
@@ -205,7 +227,8 @@ class MeterUploader:
205
227
  attributes = {
206
228
  "gen_ai_system": "volcengine",
207
229
  "gen_ai_response_model": llm_request.model,
208
- "gen_ai_operation_name": "chat_completions",
230
+ "gen_ai_operation_name": "chat",
231
+ "gen_ai_operation_type": "llm",
209
232
  "stream": "false",
210
233
  "server_address": "api.volcengine.com",
211
234
  } # required by Volcengine APMPlus
@@ -267,6 +290,63 @@ class MeterUploader:
267
290
  # time_per_output_token, attributes=attributes
268
291
  # )
269
292
 
293
+ # add span name attribute
294
+ span = trace.get_current_span()
295
+ if not span:
296
+ return
297
+
298
+ # record span latency
299
+ if hasattr(span, "start_time") and self.apmplus_span_latency:
300
+ # span 耗时
301
+ duration = (time.time_ns() - span.start_time) / 1e9 # type: ignore
302
+ self.apmplus_span_latency.record(duration, attributes=attributes)
303
+
304
+ def record_tool_call(
305
+ self,
306
+ tool: BaseTool,
307
+ args: dict[str, Any],
308
+ function_response_event: Event,
309
+ ):
310
+ logger.debug(f"Record tool call work in progress. Tool: {tool.name}")
311
+ span = trace.get_current_span()
312
+ if not span:
313
+ return
314
+ operation_type = "tool"
315
+ operation_name = tool.name
316
+ operation_backend = ""
317
+ if tool.custom_metadata:
318
+ operation_backend = tool.custom_metadata.get("backend", "")
319
+
320
+ attributes = {
321
+ "gen_ai_operation_name": operation_name,
322
+ "gen_ai_operation_type": operation_type,
323
+ "gen_ai_operation_backend": operation_backend,
324
+ }
325
+
326
+ if hasattr(span, "start_time") and self.apmplus_span_latency:
327
+ # span 耗时
328
+ duration = (time.time_ns() - span.start_time) / 1e9 # type: ignore
329
+ self.apmplus_span_latency.record(duration, attributes=attributes)
330
+
331
+ if self.apmplus_tool_token_usage and hasattr(span, "attributes"):
332
+ tool_input = span.attributes["gen_ai.tool.input"]
333
+ tool_token_usage_input = (
334
+ len(tool_input) / 4
335
+ ) # tool token 数量,使用文本长度/4
336
+ input_tool_token_attributes = {**attributes, "token_type": "input"}
337
+ self.apmplus_tool_token_usage.record(
338
+ tool_token_usage_input, attributes=input_tool_token_attributes
339
+ )
340
+
341
+ tool_output = span.attributes["gen_ai.tool.output"]
342
+ tool_token_usage_output = (
343
+ len(tool_output) / 4
344
+ ) # tool token 数量,使用文本长度/4
345
+ output_tool_token_attributes = {**attributes, "token_type": "output"}
346
+ self.apmplus_tool_token_usage.record(
347
+ tool_token_usage_output, attributes=output_tool_token_attributes
348
+ )
349
+
270
350
 
271
351
  class APMPlusExporterConfig(BaseModel):
272
352
  endpoint: str = Field(
@@ -79,14 +79,20 @@ class _InMemorySpanProcessor(export.SimpleSpanProcessor):
79
79
  def on_start(self, span, parent_context) -> None:
80
80
  if span.name.startswith("invocation"):
81
81
  span.set_attribute("gen_ai.operation.name", "chain")
82
+ span.set_attribute("gen_ai.span.kind", "workflow")
82
83
  span.set_attribute("gen_ai.usage.total_tokens", 0)
83
-
84
84
  ctx = set_value("invocation_span_instance", span, context=parent_context)
85
+ # suppress instrumentation for llm to avoid auto instrument from apmplus, such as openai
86
+ ctx = set_value(
87
+ "suppress_language_model_instrumentation", True, context=ctx
88
+ )
89
+
85
90
  token = attach(ctx) # mount context on `invocation` root span in Google ADK
86
91
  setattr(span, "_invocation_token", token) # for later detach
87
92
 
88
- if span.name.startswith("agent_run"):
93
+ if span.name.startswith("agent_run") or span.name.startswith("invoke_agent"):
89
94
  span.set_attribute("gen_ai.operation.name", "agent")
95
+ span.set_attribute("gen_ai.span.kind", "agent")
90
96
 
91
97
  ctx = set_value("agent_run_span_instance", span, context=parent_context)
92
98
  token = attach(ctx)
@@ -30,11 +30,14 @@ from veadk.tracing.telemetry.attributes.extractors.types import (
30
30
  ToolAttributesParams,
31
31
  )
32
32
  from veadk.utils.logger import get_logger
33
+ from veadk.utils.misc import safe_json_serialize
33
34
 
34
35
  logger = get_logger(__name__)
35
36
 
37
+ meter_uploader = None
36
38
 
37
- def _upload_metrics(
39
+
40
+ def _upload_call_llm_metrics(
38
41
  invocation_context: InvocationContext,
39
42
  event_id: str,
40
43
  llm_request: LlmRequest,
@@ -47,11 +50,27 @@ def _upload_metrics(
47
50
  for tracer in tracers:
48
51
  for exporter in getattr(tracer, "exporters", []):
49
52
  if getattr(exporter, "meter_uploader", None):
50
- exporter.meter_uploader.record(
53
+ global meter_uploader
54
+ meter_uploader = exporter.meter_uploader
55
+ exporter.meter_uploader.record_call_llm(
51
56
  invocation_context, event_id, llm_request, llm_response
52
57
  )
53
58
 
54
59
 
60
+ def _upload_tool_call_metrics(
61
+ tool: BaseTool,
62
+ args: dict[str, Any],
63
+ function_response_event: Event,
64
+ ):
65
+ global meter_uploader
66
+ if meter_uploader:
67
+ meter_uploader.record_tool_call(tool, args, function_response_event)
68
+ else:
69
+ logger.warning(
70
+ "Meter uploader is not initialized yet. Skip recording tool call metrics."
71
+ )
72
+
73
+
55
74
  def _set_agent_input_attribute(
56
75
  span: Span, invocation_context: InvocationContext
57
76
  ) -> None:
@@ -73,6 +92,11 @@ def _set_agent_input_attribute(
73
92
 
74
93
  user_content = invocation_context.user_content
75
94
  if user_content and user_content.parts:
95
+ # set gen_ai.input attribute required by APMPlus
96
+ span.set_attribute(
97
+ "gen_ai.input",
98
+ safe_json_serialize(user_content.model_dump(exclude_none=True)),
99
+ )
76
100
  span.add_event(
77
101
  "gen_ai.user.message",
78
102
  {
@@ -110,6 +134,11 @@ def _set_agent_input_attribute(
110
134
  def _set_agent_output_attribute(span: Span, llm_response: LlmResponse) -> None:
111
135
  content = llm_response.content
112
136
  if content and content.parts:
137
+ # set gen_ai.output attribute required by APMPlus
138
+ span.set_attribute(
139
+ "gen_ai.output", safe_json_serialize(content.model_dump(exclude_none=True))
140
+ )
141
+
113
142
  for idx, part in enumerate(content.parts):
114
143
  if part.text:
115
144
  span.add_event(
@@ -155,10 +184,15 @@ def set_common_attributes_on_model_span(
155
184
  current_step_token_usage + int(prev_total_token_usage) # type: ignore
156
185
  ) # we can ignore this warning, cause we manually set the attribute to int before
157
186
  invocation_span.set_attribute(
158
- "gen_ai.usage.total_tokens", accumulated_total_token_usage
187
+ # record input/output token usage?
188
+ "gen_ai.usage.total_tokens",
189
+ accumulated_total_token_usage,
159
190
  )
160
191
 
161
- if agent_run_span and agent_run_span.name.startswith("agent_run"):
192
+ if agent_run_span and (
193
+ agent_run_span.name.startswith("agent_run")
194
+ or agent_run_span.name.startswith("invoke_agent")
195
+ ):
162
196
  _set_agent_input_attribute(agent_run_span, invocation_context)
163
197
  _set_agent_output_attribute(agent_run_span, llm_response)
164
198
  for attr_name, attr_extractor in common_attributes.items():
@@ -203,6 +237,8 @@ def trace_tool_call(
203
237
  response: ExtractorResponse = attr_extractor(params)
204
238
  ExtractorResponse.update_span(span, attr_name, response)
205
239
 
240
+ _upload_tool_call_metrics(tool, args, function_response_event)
241
+
206
242
 
207
243
  def trace_call_llm(
208
244
  invocation_context: InvocationContext,
@@ -252,7 +288,7 @@ def trace_call_llm(
252
288
  response: ExtractorResponse = attr_extractor(params)
253
289
  ExtractorResponse.update_span(span, attr_name, response)
254
290
 
255
- _upload_metrics(invocation_context, event_id, llm_request, llm_response)
291
+ _upload_call_llm_metrics(invocation_context, event_id, llm_request, llm_response)
256
292
 
257
293
 
258
294
  # Do not modify this function
veadk/utils/misc.py CHANGED
@@ -36,18 +36,14 @@ def formatted_timestamp() -> str:
36
36
  return time.strftime("%Y%m%d%H%M%S", time.localtime())
37
37
 
38
38
 
39
- def read_png_to_bytes(png_path: str) -> bytes:
40
- # Determine whether it is a local file or a network file
41
- if png_path.startswith(("http://", "https://")):
42
- # Network file: Download via URL and return bytes
43
- response = requests.get(png_path)
44
- response.raise_for_status() # Check if the HTTP request is successful
39
+ def read_file_to_bytes(file_path: str) -> bytes:
40
+ if file_path.startswith(("http://", "https://")):
41
+ response = requests.get(file_path)
42
+ response.raise_for_status()
45
43
  return response.content
46
44
  else:
47
- # Local file
48
- with open(png_path, "rb") as f:
49
- data = f.read()
50
- return data
45
+ with open(file_path, "rb") as f:
46
+ return f.read()
51
47
 
52
48
 
53
49
  def load_module_from_file(module_name: str, file_path: str) -> types.ModuleType:
@@ -144,6 +144,8 @@ def request(method, date, query, header, ak, sk, action, body):
144
144
  )
145
145
  )
146
146
  header = {**header, **sign_result}
147
+ if "X-Security-Token" in header and header["X-Security-Token"] == "":
148
+ del header["X-Security-Token"]
147
149
  # header = {**header, **{"X-Security-Token": SessionToken}}
148
150
  # 第六步:将 Signature 签名写入 HTTP Header 中,并发送 HTTP 请求。
149
151
  r = requests.request(
veadk/version.py CHANGED
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- VERSION = "0.2.9"
15
+ VERSION = "0.2.11"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: veadk-python
3
- Version: 0.2.9
3
+ Version: 0.2.11
4
4
  Summary: Volcengine agent development kit, integrations with Volcengine cloud services.
5
5
  Author-email: Yaozheng Fang <fangyozheng@gmail.com>, Guodong Li <cu.eric.lee@gmail.com>, Zhi Han <sliverydayday@gmail.com>, Meng Wang <mengwangwm@gmail.com>
6
6
  License: Apache License
@@ -218,7 +218,7 @@ Requires-Dist: opentelemetry-exporter-otlp>=1.35.0
218
218
  Requires-Dist: opentelemetry-instrumentation-logging>=0.56b0
219
219
  Requires-Dist: wrapt>=1.17.2
220
220
  Requires-Dist: openai<1.100
221
- Requires-Dist: volcengine-python-sdk>=4.0.3
221
+ Requires-Dist: volcengine-python-sdk>=4.0.18
222
222
  Requires-Dist: volcengine>=1.0.193
223
223
  Requires-Dist: agent-pilot-sdk>=0.1.2
224
224
  Requires-Dist: fastmcp>=2.11.3
@@ -231,16 +231,17 @@ Requires-Dist: llama-index-vector-stores-opensearch>=0.6.1
231
231
  Requires-Dist: psycopg2-binary>=2.9.10
232
232
  Requires-Dist: pymysql>=1.1.1
233
233
  Requires-Dist: opensearch-py==2.8.0
234
+ Requires-Dist: filetype>=1.2.0
234
235
  Provides-Extra: extensions
235
236
  Requires-Dist: redis>=5.0; extra == "extensions"
236
237
  Requires-Dist: tos>=2.8.4; extra == "extensions"
237
238
  Requires-Dist: llama-index-vector-stores-redis>=0.6.1; extra == "extensions"
238
- Requires-Dist: mcp-server-vikingdb-memory; extra == "extensions"
239
239
  Provides-Extra: database
240
240
  Requires-Dist: redis>=5.0; extra == "database"
241
241
  Requires-Dist: pymysql>=1.1.1; extra == "database"
242
242
  Requires-Dist: volcengine>=1.0.193; extra == "database"
243
243
  Requires-Dist: tos>=2.8.4; extra == "database"
244
+ Requires-Dist: mem0ai==0.1.118; extra == "database"
244
245
  Provides-Extra: eval
245
246
  Requires-Dist: prometheus-client>=0.22.1; extra == "eval"
246
247
  Requires-Dist: deepeval>=3.2.6; extra == "eval"
@@ -1,14 +1,14 @@
1
1
  veadk/__init__.py,sha256=9l1lyb9ifhHQeetmIBWZnIdwUCVyMyz1EnKsKz8BBG8,1135
2
- veadk/agent.py,sha256=pgGHfAPwPJGSVU922H26d6cEzvi9tnxWTTiFZ_Yrnww,10835
3
- veadk/agent_builder.py,sha256=ilFsXFeF7kao1NPJkC-temVH4Osf_AGsXu71urdh9kc,3021
2
+ veadk/agent.py,sha256=4ijmzPXvY9iAx4s2NqBzwJ0VEYSWiUezeP2OvQFO9ek,11108
3
+ veadk/agent_builder.py,sha256=HI7mRrUZ72_7i-jVzNDx1anTZHy7UxX7jr2Drxxx6j8,3031
4
4
  veadk/config.py,sha256=Ezl9Lna9iriC_Uf7m1ZXTWzylLyd7YspUFAQqh94Ong,3203
5
- veadk/consts.py,sha256=H63v4CLzFoRKwyOIuCiyC__FbZGofPfJkUx_YK_P-tI,2442
6
- veadk/runner.py,sha256=rntJEPwTZgRkGSIDdqftuUiUc3ph5hcP9lwjOdRFk-0,13525
5
+ veadk/consts.py,sha256=LTl4NQYJf7C8EvconGa96NRschzZZmmOqxlEikJe2Nk,2831
6
+ veadk/runner.py,sha256=_DGNwX-t3sHJFJvHs-rRHXbjCZza8I_zU8AN3Fw5nRY,14217
7
7
  veadk/types.py,sha256=zOOzG-QJy-MkzHeicWJzy2_L5U4ERrWziPubIUEbd8c,1656
8
- veadk/version.py,sha256=p0IyHWs5FV0Gt5cgCGziZ4AqfgelEeZ_ZsZJMRpQ4WI,653
8
+ veadk/version.py,sha256=lWn0jlNA7mzOxPAG6V2hGLZtLsCq9qTpu_I9qSsNO6k,654
9
9
  veadk/a2a/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
10
10
  veadk/a2a/agent_card.py,sha256=lhtgW1acMpxYUdULHEZwVFXOi6Xh4lNkf4S7QIhbFFI,1525
11
- veadk/a2a/remote_ve_agent.py,sha256=vjV28Bs8ax21Xu_u4p8g11tlxfbyFMuHw-AA1Q74kNg,1261
11
+ veadk/a2a/remote_ve_agent.py,sha256=L2nzT8PlDI-lLtcaTJqk-D2Uvw9beKl8OEUqp-8qCbA,3510
12
12
  veadk/a2a/ve_a2a_server.py,sha256=U1RVRx_GAfLw2nCacy80O8wC67MfCTXn5x-dCfKCYXg,2492
13
13
  veadk/a2a/ve_agent_executor.py,sha256=PSF5akKxVosLOXQ_Kb75PO8u1Lrm2Zj6OnRT5-U6VE8,2646
14
14
  veadk/a2a/ve_task_store.py,sha256=rxwQ-j7Ffe4LnLwpKbweQk4ofwMQx9UL6k3zaDrFIXg,1234
@@ -19,27 +19,29 @@ veadk/auth/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
19
19
  veadk/auth/base_auth.py,sha256=Iwp6QAuFrJNxqXSolXkIRlK8krS0FjQKpx_fVjF-2b8,789
20
20
  veadk/auth/veauth/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
21
21
  veadk/auth/veauth/apmplus_veauth.py,sha256=zuUg8fEdvYCFUBNN5VrpSQo8IcA_L02bvTy5qVllZWM,2052
22
- veadk/auth/veauth/ark_veauth.py,sha256=qSE0ysgLqxep00oSlF7cZ8pO5pWWcelJbwdq098fPFI,2470
22
+ veadk/auth/veauth/ark_veauth.py,sha256=K3n5nI8R-PtL5TssiX5CFOSdsUQagTOpVvjC9OoyiFA,2279
23
23
  veadk/auth/veauth/base_veauth.py,sha256=y8H_1a_gldt6hDHGBjYDc4xI7IhguNxMGONt_kx5Snc,1519
24
24
  veadk/auth/veauth/cozeloop_veauth.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
25
25
  veadk/auth/veauth/opensearch_veauth.py,sha256=nJ8n3Ru4uyTM4yZx4OvmnzLmjbP66kU7hyFjD3_ZbAM,2580
26
26
  veadk/auth/veauth/postgresql_veauth.py,sha256=oxi9KH78qc-36yQI90aqO24cCuGdFt3HBApxAf8czEA,2580
27
27
  veadk/auth/veauth/prompt_pilot_veauth.py,sha256=cls1LK2Un4cOMfHdaAqRhDHIXuk7cTuAThojEF5tHKo,1913
28
+ veadk/auth/veauth/utils.py,sha256=cVEKWQZeX5fzx3JLB1odv59D8lhOAF1Pb3rsgO6evmM,2152
28
29
  veadk/auth/veauth/vesearch_veauth.py,sha256=rgup3VBbRSLligrsDFOEwpneq1BEtFwf9xpgNFWHKqc,2008
29
30
  veadk/cli/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
30
- veadk/cli/cli.py,sha256=YsNaQAPAOvU0V1Qq4LD3GpbzIWrA82msLgcbhRUPI5s,1289
31
+ veadk/cli/cli.py,sha256=lT2VGY8Mn-_eLO5ifsF7vKTW-qgiCJFDve5nc8N_YuQ,1343
31
32
  veadk/cli/cli_deploy.py,sha256=-P4PmXLGByypXGksshBT7BQ0U42hIvlHibXd_k4YfhQ,5328
32
33
  veadk/cli/cli_eval.py,sha256=TVSraCTyTxo_pLu5fhtk3TiZUOZkN3G2BLam1ybFXBc,5446
33
34
  veadk/cli/cli_init.py,sha256=f2A3RwUj9pApmUTl6FHmMwTTwyKl83pkvZRorTgl-XM,3982
35
+ veadk/cli/cli_kb.py,sha256=SmLz3g6o2LiPa6WzkdyAOExuboHkpAIrN-4qaH4rxn8,1962
34
36
  veadk/cli/cli_pipeline.py,sha256=6FV4WyoapFPAy_P3dzrRm07m6aGjrtLiY4aCFT7CEHs,7510
35
37
  veadk/cli/cli_prompt.py,sha256=atw6O3zkjD1tOsFOOg7rs9HbS4exwaNe_Pces6CoyFY,2582
36
- veadk/cli/cli_web.py,sha256=r6UTtkrbHXMIbJERcFhMndH7K1BfIAqQ-as74oy_HV0,6142
38
+ veadk/cli/cli_web.py,sha256=20VwLxsLf060Gca31Pw3NH5KX9W88sIvgiPECDvY6_4,6246
37
39
  veadk/cloud/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
38
40
  veadk/cloud/cloud_agent_engine.py,sha256=u-v-kkAhRgZY1r82CQRwfkYnj0n7ft8qIW_r-yhnMSI,8461
39
41
  veadk/cloud/cloud_app.py,sha256=2bmEf7RH1Kwz8HLZ0aY3pVn0R8xi1T7kcGRTRyaWawY,8746
40
42
  veadk/configs/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
41
43
  veadk/configs/database_configs.py,sha256=oOqPlpyCR2QmGZ3fxm3t-UoeXK4T3ux7nw6rDevhxNE,2916
42
- veadk/configs/model_configs.py,sha256=Ts88m4wSXCWNr96Y92CRCey3GaOM4hGR6U1oLfOYedY,2378
44
+ veadk/configs/model_configs.py,sha256=izAbuM7i2GgOBsGNr3MEs574KTHMOIP3Vm5tlN7STOg,2378
43
45
  veadk/configs/tool_configs.py,sha256=1BR7-D7mIHug8gI1SEN6_1bUfhXAl1JTZRfvGdfqg0c,1453
44
46
  veadk/configs/tracing_configs.py,sha256=bwfi4JjKvdTjEwbaSVOdnWetcA72vgPiaF5odUlI9gI,3489
45
47
  veadk/evaluation/__init__.py,sha256=Pwnv6x-QaQQiv4J_QNnR-Asl7wN0laF92EX9n0Sll1U,713
@@ -52,6 +54,7 @@ veadk/evaluation/adk_evaluator/adk_evaluator.py,sha256=xHoATLG61Ox9xEwyw3wWuGkVs
52
54
  veadk/evaluation/deepeval_evaluator/__init__.py,sha256=lLGtRvWhwDy4u7hmtZxZbPmdMzM58pSjEwEF34NqW-4,718
53
55
  veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py,sha256=cI2XdJVzGfFdJPOmT5NCYJdLourtgtf4KqKTlUMvYWA,8870
54
56
  veadk/evaluation/utils/prometheus.py,sha256=6i_HuGqqh3cRDwjZCtk4i37iN_IGqRg0YJRQMSp1kaU,3836
57
+ veadk/integrations/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
55
58
  veadk/integrations/ve_apig/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
56
59
  veadk/integrations/ve_apig/ve_apig.py,sha256=B4yPiNTGeXKFdji8RHWrCKmv0RomhfbCKgHM3IhaziU,8931
57
60
  veadk/integrations/ve_apig/ve_apig_utils.py,sha256=9eL7vu51PyPAZNoBMpoaDjWRatvqbY_Bb1BaBsjz-V8,10766
@@ -102,9 +105,11 @@ veadk/integrations/ve_tls/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxP
102
105
  veadk/integrations/ve_tls/utils.py,sha256=DmWS37gSuKsUgiqlLyk1obfAAZZnEpkemQuoTDxAEG4,3769
103
106
  veadk/integrations/ve_tls/ve_tls.py,sha256=zO8rSX0CqxcjKjosXI90ykNFO6dhpsIsPa9uZGrf50s,7253
104
107
  veadk/integrations/ve_tos/ve_tos.py,sha256=yjc3h6JH2MM_8InE42YqjZupu5pcfFwHAMqPhr3x544,25186
108
+ veadk/integrations/ve_viking_db_memory/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
109
+ veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py,sha256=gX5asox3VDra6o1BIg7AickPec0-Vj8_lgZ1zz5ue5Y,10165
105
110
  veadk/knowledgebase/__init__.py,sha256=k-5WM0DAqNq94Dg64Rl12ozoS1BnE9i-MY_ZOR2s2CQ,705
106
111
  veadk/knowledgebase/entry.py,sha256=j6VsXRAyjZryIFntnoNfjbH8fsD9_fDSjoHIL5h0Y1U,917
107
- veadk/knowledgebase/knowledgebase.py,sha256=3tovdz19eImnIBf88wsuW0J_dGMcOoAuYYg1gEW3dMQ,6058
112
+ veadk/knowledgebase/knowledgebase.py,sha256=gfHBxmfAGTFc1y13PMpB455G3YW0qE1zHjiUPM9iS3s,5642
108
113
  veadk/knowledgebase/backends/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
109
114
  veadk/knowledgebase/backends/base_backend.py,sha256=gqkJNIASc-ZrJ2e4enIeUvI9CWucCn2OZX-bb5hyTPw,2104
110
115
  veadk/knowledgebase/backends/in_memory_backend.py,sha256=uC4_LCkjp9DFQzTgTKzEr6yw1hcNUpZ0h7WSR0fpifc,3332
@@ -112,21 +117,21 @@ veadk/knowledgebase/backends/opensearch_backend.py,sha256=4oChkqd25RvL460p1-D7no
112
117
  veadk/knowledgebase/backends/redis_backend.py,sha256=pc-T_QicyAmOp6KbMz0V8iIL1ZlKCKQpdNB9SkaNqm8,5226
113
118
  veadk/knowledgebase/backends/utils.py,sha256=GOIuOFIJqruIk5Imx4F7ou5qKTUmg_gWJoLYi1kkopQ,2661
114
119
  veadk/knowledgebase/backends/vikingdb_knowledge_backend.py,sha256=hVSfAc17wzEoEKlPa7x3ekCcApFgDzY7x6ceBDxd9mw,18126
115
- veadk/memory/__init__.py,sha256=hKFQm9GUvH7b2Jbqs2l2JqUsFNqbblftVFEYRhjGOSM,1253
116
- veadk/memory/long_term_memory.py,sha256=3gL9Z_sCvYDCm0GSTLOjkA-paH_TE9G0x-tb5UYEdnw,8779
117
- veadk/memory/short_term_memory.py,sha256=XL8gSwsEXLWm_opYwviLpxcKsh0dGwLqTuOCAS6YQcI,4790
120
+ veadk/memory/__init__.py,sha256=GRIoRqapS2gUtRMB9JZvodU29PwMxFe2KDjPnVpqib0,1252
121
+ veadk/memory/long_term_memory.py,sha256=YE5DH9qyJwlA7t0smwV4J90wnUBYVR6MRXHg1qsqKNU,7423
122
+ veadk/memory/short_term_memory.py,sha256=MLR2Op_l_Zr-ZKCJ7pyNhe_OzPG06Zcb8pt8qA_zrFY,4922
118
123
  veadk/memory/short_term_memory_processor.py,sha256=vqmYSUNFGXEogJ8ZxIAhSSrv66LGT8eEHCzxF9h07LA,3276
119
124
  veadk/memory/long_term_memory_backends/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
120
- veadk/memory/long_term_memory_backends/base_backend.py,sha256=PuLhqc7LhMzhkQSrz8Zotk-D7WmzjHdUlaWEjsrL470,1181
121
- veadk/memory/long_term_memory_backends/in_memory_backend.py,sha256=h0GNiZTtqpbWucaZ-L0NEhPgi_ntPoA6GPg3qqcH5uo,2672
122
- veadk/memory/long_term_memory_backends/mem0_backend.py,sha256=S0ZfJ_MlvGDFaOERNZBIfJd6wkyoP9_JXeh1VeKJkYs,4344
123
- veadk/memory/long_term_memory_backends/opensearch_backend.py,sha256=xcXeCakgf3FUcLfATajLhIT9u0kEi8craJhG9xLKvPg,4394
124
- veadk/memory/long_term_memory_backends/redis_backend.py,sha256=WJLKAjTLDKORAS6y5e2JaEfduLlIbrj4RThQat-0Cw0,4632
125
- veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py,sha256=Xfq9-fZDZg15Sbfq14Dr7dctUm2N8eN3rBgJ5j4dNdA,4999
125
+ veadk/memory/long_term_memory_backends/base_backend.py,sha256=FDBBUCLEfe8bxkpra1FFGieZZFT_YC8B3kdHx9pKgwo,1223
126
+ veadk/memory/long_term_memory_backends/in_memory_backend.py,sha256=0IKRqstS3Rtm8ePf55XpfLhIjomIGep3SwwlUZ4PFvY,2714
127
+ veadk/memory/long_term_memory_backends/mem0_backend.py,sha256=sj6OxMHA4oG6kuzTMK5zsGEIIa0-ESPrRYv6dR3KI8E,4869
128
+ veadk/memory/long_term_memory_backends/opensearch_backend.py,sha256=u5odPUv0fchH3IsZNTH0-nNpdW4KwkWojRQi3cn52Wo,4567
129
+ veadk/memory/long_term_memory_backends/redis_backend.py,sha256=0XX21AJA4UwEqrteXdgOr5WAfuo31wK1fMLUtXMssfg,5262
130
+ veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py,sha256=QSSy6edP9zWrKTUcnZ8MsPhCcQJmL0IJzGeLxuY0BGo,5781
126
131
  veadk/memory/short_term_memory_backends/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
127
132
  veadk/memory/short_term_memory_backends/base_backend.py,sha256=5AtnWuFE_TYpTAlAKnm2xglf4AT3iXmU9QSF7LkO1BA,1053
128
133
  veadk/memory/short_term_memory_backends/mysql_backend.py,sha256=_m-yuB7X-pPvs93-W8ZswDIkIpYpCFMRRdt9D5SZzn8,1513
129
- veadk/memory/short_term_memory_backends/postgresql_backend.py,sha256=NfqiaudsR0MjGhlDhcxQ24BwBhuvpbv-k5zNCzv4vK0,1594
134
+ veadk/memory/short_term_memory_backends/postgresql_backend.py,sha256=AyCuQMSbnvKYIXRm0KhyuLOz0NDHF6p8y3U31OHciUk,1644
130
135
  veadk/memory/short_term_memory_backends/sqlite_backend.py,sha256=lXcCXRjn7m_sfoGI7VyGhYV3wdNZ38tnn0RcDxt2jx0,1522
131
136
  veadk/prompts/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
132
137
  veadk/prompts/agent_default_prompt.py,sha256=hijfMeZt0TYDVB9WEVwcazuuhm8z0Xdlzht1CfyYPLE,1380
@@ -135,18 +140,19 @@ veadk/prompts/prompt_memory_processor.py,sha256=7RF12ixz13FQ-1H7xDM3EHcMtMRDh7UI
135
140
  veadk/prompts/prompt_optimization.py,sha256=RIHX0bcpBRfG6--0tGH67CQ063KiAoVJO145PVztujI,4164
136
141
  veadk/tools/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
137
142
  veadk/tools/demo_tools.py,sha256=Gu3sxygcYVS2cv3WqUOl-Gq4JhMlDAktoCHOFT0gbFQ,2216
138
- veadk/tools/load_knowledgebase_tool.py,sha256=GgR-MwDskB1qV30tiTDVSGbM5z6qrrEyiyo7g_IhNKw,4262
143
+ veadk/tools/load_knowledgebase_tool.py,sha256=UUTv0Za9GkEXAkl1SXmyq0HGCKGvSlH_f8Ok6O6e52M,4704
139
144
  veadk/tools/builtin_tools/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
140
- veadk/tools/builtin_tools/generate_image.py,sha256=KSfrgsAMAJSiXPCvkB6Razl7TTj6SKG8jk5gYv1NLqU,15040
141
- veadk/tools/builtin_tools/image_edit.py,sha256=nPzEZXad9F2FuC_qmlyGrGwsNU3kcYblRZH4p8dx_BU,10600
142
- veadk/tools/builtin_tools/image_generate.py,sha256=68kFkrRSoVV7PrSf9nUaL0CitFSkFAdc7rVnKwI9Ceo,10334
145
+ veadk/tools/builtin_tools/generate_image.py,sha256=BksUf1sEFDzOkDAPOlmtfALKGAtVSfbMC_WY33uCyaM,16701
146
+ veadk/tools/builtin_tools/image_edit.py,sha256=Nv9nAbW_0zovR_lyZe2A3PIN6Dlifm5jN8PTWRULf9M,10926
147
+ veadk/tools/builtin_tools/image_generate.py,sha256=PCnq16qj28UsauShLmVSSnC91HQMWC0rhFdSfPR0Ko4,10671
143
148
  veadk/tools/builtin_tools/lark.py,sha256=b2IWsN8fZFh9aweSGznaOqA30TCOLpVjNCDNa1LHZl4,2046
144
149
  veadk/tools/builtin_tools/las.py,sha256=rgKfnK5GsHVbmkp-rc7rtCvWg-yYNxMjeV0ayCyRpjM,913
150
+ veadk/tools/builtin_tools/load_knowledgebase.py,sha256=Xqtq25DL720goRegCVmmkpH2Ye2VWLcrF5ncC37gK_Y,3427
145
151
  veadk/tools/builtin_tools/mcp_router.py,sha256=l3xcIHAHQ0AGCZG3mYyhwM0btqEMDe4TY2S-UYUM8M0,883
146
152
  veadk/tools/builtin_tools/vesearch.py,sha256=prPP0w6lYeIEPwuZdmV00RAzaW4MeH8lYtK-NluaXtU,1748
147
- veadk/tools/builtin_tools/video_generate.py,sha256=6MhpskXeeFi7KP0NjZFfyVDFMFb1_iHqLCzxyjQ6sH0,14527
153
+ veadk/tools/builtin_tools/video_generate.py,sha256=8uozyhmg203vpI2mXSkSji79WFZ2B0IzFMLTIGVzc2M,14778
148
154
  veadk/tools/builtin_tools/web_scraper.py,sha256=iVnxWVf2mVgOnEOeQ6Bg5ATYN-g1ZPCTK6VJm710be0,2408
149
- veadk/tools/builtin_tools/web_search.py,sha256=0wSjkihVNF_uYqCBv_1NBVhfvDTrZtFRK8WJwvDiUL0,5794
155
+ veadk/tools/builtin_tools/web_search.py,sha256=1DtdhlcxolzIvx2TyqvUNWk60BHMuLkcru8Wlw3XBtQ,6016
150
156
  veadk/tools/sandbox/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
151
157
  veadk/tools/sandbox/browser_sandbox.py,sha256=2YxGM8BIQ1uCY73FDfkWWq72cOCFbp6YLsXIqRWEoSM,1172
152
158
  veadk/tools/sandbox/code_sandbox.py,sha256=iOB7XxJxbckmnXOOUwzQ5t_0Tq1IA3JITEywKB6t7oM,1244
@@ -155,27 +161,27 @@ veadk/tracing/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
155
161
  veadk/tracing/base_tracer.py,sha256=AQQopQ81Y1dGt3BF1iT8el5iSJC7HH5NrW9sU9R92v8,1098
156
162
  veadk/tracing/telemetry/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
157
163
  veadk/tracing/telemetry/opentelemetry_tracer.py,sha256=FTuJxewyB6D9Cag3X22SfBMw1aSotohBUK_qpgYTVk8,7768
158
- veadk/tracing/telemetry/telemetry.py,sha256=kiPBnkp7VwO0YcY_fwfd8oPbJGWUyP-AluBFVT8-I0I,9849
164
+ veadk/tracing/telemetry/telemetry.py,sha256=qM7Y9UlxTk78Z8inigtDZEoSSsUCY7b1nOmTWfVQ1mA,11033
159
165
  veadk/tracing/telemetry/attributes/attributes.py,sha256=t08vbKenendKdlUrs3Q94p5F8TZEjh-oewBE5ABWDsE,1074
160
166
  veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py,sha256=AcJEw9RFQskK0l9rii7BZJPJa-peHJtrWt8Ge0R5fLU,2753
161
- veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py,sha256=pJ84vyipzmZC4w23nwqIzNG_xEO-z3eGTHvW7V8_uYY,25776
162
- veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py,sha256=FjhSn69yfk7kdgEql7ne9PeIOnxEItMS06RqGMqIMAQ,2722
167
+ veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py,sha256=Zb8hf_Jvp9OT6g2v_5dRssk9XJJSow_DOd9lhBMCfMo,25964
168
+ veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py,sha256=taCVwXY1W8P0N5mZJish2yro0OMG1R_DUgUPu7YFNKQ,3044
163
169
  veadk/tracing/telemetry/attributes/extractors/types.py,sha256=ggyB2I42B6I5YqymqF7s8znFFu1rp887E6Gq4gXSEJ8,3077
164
170
  veadk/tracing/telemetry/exporters/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
165
- veadk/tracing/telemetry/exporters/apmplus_exporter.py,sha256=nemvdz9nigHf3VvMEhK8E61YudJz7Fj11Jw5_jazWfI,10924
171
+ veadk/tracing/telemetry/exporters/apmplus_exporter.py,sha256=i_bFp4IvsTkRNQn0ZGSlDYF1e9tSYE_Y7aRKefkBbXk,14156
166
172
  veadk/tracing/telemetry/exporters/base_exporter.py,sha256=uwYhOI2xP8JDjYc99S2zolYSzjh7lgwHT0T8O4XB5Po,1184
167
173
  veadk/tracing/telemetry/exporters/cozeloop_exporter.py,sha256=khDCU_fMB5mPDgzGSRmxmD8K66GSvW1J4DcdLorYWWc,2498
168
- veadk/tracing/telemetry/exporters/inmemory_exporter.py,sha256=laE9Fz2cx327dRc6gthmC7IGJIGa6fWSWPbMrYlDfGo,4568
174
+ veadk/tracing/telemetry/exporters/inmemory_exporter.py,sha256=wgcXpoPqi-JQirMeqLMdVKvg1u42UYXt1cN7LpyXcFA,4952
169
175
  veadk/tracing/telemetry/exporters/tls_exporter.py,sha256=YODDfqZJKq3SiuDqxjERuJoOAuGErurjl_zFZr8TiGg,2674
170
176
  veadk/utils/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
171
177
  veadk/utils/logger.py,sha256=e4swzeXa-qZ1U2-TDBtfKOurzy4_6t4qPJR9yngNfVg,1605
172
178
  veadk/utils/mcp_utils.py,sha256=aET7pX3LXmRe2-Jh7_xRvxrVyl1dN7uPAUk16luwMlQ,1525
173
- veadk/utils/misc.py,sha256=F-EP-12eh7PHRz2rDCvdG29Kj2DmKoBc9Hik9_RwMpo,5147
179
+ veadk/utils/misc.py,sha256=ghEqrqoDfKrW9ZD3IB0bwcfyyB0gRWN2yEP9eRxQ4nE,4953
174
180
  veadk/utils/patches.py,sha256=dcHdlJ8IciyMjDuMy6-_6McUqJYyLz0yHmJ0xH8lWOw,2752
175
- veadk/utils/volcengine_sign.py,sha256=KJ5-2wRNd7RloxiI47NiwDnVh3VvGYHjRLgaTpovBbU,6623
176
- veadk_python-0.2.9.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
177
- veadk_python-0.2.9.dist-info/METADATA,sha256=3CnJ4iKJ8aqpHsOo0zGTJ1KH2Tf8jAkoEhM6YfLyf9k,18408
178
- veadk_python-0.2.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
179
- veadk_python-0.2.9.dist-info/entry_points.txt,sha256=-g28D6dNV-2UvAiRP9VF0oOVSDSJ5zlLUIZ34ArAqF8,46
180
- veadk_python-0.2.9.dist-info/top_level.txt,sha256=Qqi3ycJ4anKiZWBXtUBIy8zK9ZuXJsFa05oFq8O8qqY,6
181
- veadk_python-0.2.9.dist-info/RECORD,,
181
+ veadk/utils/volcengine_sign.py,sha256=3xn6ca2OAg_AFyP2dqFTSioqkeDel_BoKURUtCcO-EQ,6736
182
+ veadk_python-0.2.11.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
183
+ veadk_python-0.2.11.dist-info/METADATA,sha256=efOOpg8g2B2DWlBQ9xJhvMRHCkCWmQaX1njAolmkHiw,18428
184
+ veadk_python-0.2.11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
185
+ veadk_python-0.2.11.dist-info/entry_points.txt,sha256=-g28D6dNV-2UvAiRP9VF0oOVSDSJ5zlLUIZ34ArAqF8,46
186
+ veadk_python-0.2.11.dist-info/top_level.txt,sha256=Qqi3ycJ4anKiZWBXtUBIy8zK9ZuXJsFa05oFq8O8qqY,6
187
+ veadk_python-0.2.11.dist-info/RECORD,,