agentkit-sdk-python 0.8.6__py3-none-any.whl → 0.8.7__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.
agentkit/auth/admin.py CHANGED
@@ -47,9 +47,15 @@ POLICY_NAME = "agentkit_cli_sandbox_access"
47
47
  SANDBOX_ACCESS_POLICY = "AgentKitSandboxAccess"
48
48
  WELL_KNOWN_KEY = ".well-known/agentkit-cli"
49
49
  ROLE_ACTIONS = (
50
- "agentkit:CreateSession", "agentkit:GetSession", "agentkit:DeleteSession",
51
- "agentkit:GetSessionLogs", "agentkit:SetSessionTtl",
52
- "agentkit:ListTools", "agentkit:GetTool",
50
+ "agentkit:CreateSession",
51
+ "agentkit:GetSession",
52
+ "agentkit:DeleteSession",
53
+ "agentkit:PauseSession",
54
+ "agentkit:ResumeSession",
55
+ "agentkit:GetSessionLogs",
56
+ "agentkit:SetSessionTtl",
57
+ "agentkit:ListTools",
58
+ "agentkit:GetTool",
53
59
  )
54
60
 
55
61
 
@@ -0,0 +1,90 @@
1
+ # Copyright (c) 2026 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ from __future__ import annotations
16
+
17
+ from typing import Any, Optional
18
+
19
+ RUNTIME_GATEWAY_MODES = {"Shared", "Exclusive"}
20
+
21
+
22
+ def normalize_runtime_gateway_mode(
23
+ value: Any,
24
+ label: str = "runtime.gateway_mode",
25
+ ) -> Optional[str]:
26
+ if value is None or value == "":
27
+ return None
28
+ if not isinstance(value, str):
29
+ raise ValueError(f"{label} must be Shared or Exclusive.")
30
+
31
+ normalized = value.strip().lower()
32
+ if normalized == "shared":
33
+ return "Shared"
34
+ if normalized == "exclusive":
35
+ return "Exclusive"
36
+ raise ValueError(f"{label} must be Shared or Exclusive.")
37
+
38
+
39
+ def effective_runtime_gateway_mode(mode: Optional[str]) -> str:
40
+ return str(mode).strip() if mode and str(mode).strip() else "Shared"
41
+
42
+
43
+ def validate_runtime_gateway_create_config(
44
+ *,
45
+ gateway_mode: Optional[str],
46
+ gateway_instance_id: Optional[str],
47
+ has_network_configuration: bool = False,
48
+ label: str = "runtime",
49
+ ) -> None:
50
+ mode = (
51
+ normalize_runtime_gateway_mode(gateway_mode, f"{label}.gateway_mode")
52
+ or "Shared"
53
+ )
54
+ gateway_instance_id = (gateway_instance_id or "").strip()
55
+
56
+ if mode == "Exclusive":
57
+ if not gateway_instance_id:
58
+ raise ValueError(
59
+ f"{label}.gateway_instance_id is required when gateway_mode is Exclusive."
60
+ )
61
+ if has_network_configuration:
62
+ raise ValueError(
63
+ f"{label}.network cannot be used when gateway_mode is Exclusive; "
64
+ "the Runtime follows the selected gateway instance network."
65
+ )
66
+ return
67
+
68
+ if gateway_instance_id:
69
+ raise ValueError(
70
+ f"{label}.gateway_instance_id is only valid when gateway_mode is Exclusive."
71
+ )
72
+
73
+
74
+ def runtime_gateway_binding_changed(
75
+ *,
76
+ desired_mode: Optional[str],
77
+ desired_instance_id: Optional[str],
78
+ current_mode: Optional[str],
79
+ current_instance_id: Optional[str],
80
+ ) -> bool:
81
+ desired_mode = effective_runtime_gateway_mode(desired_mode)
82
+ current_mode = effective_runtime_gateway_mode(current_mode)
83
+
84
+ if desired_mode not in RUNTIME_GATEWAY_MODES or current_mode not in RUNTIME_GATEWAY_MODES:
85
+ return desired_mode != current_mode
86
+ if desired_mode != current_mode:
87
+ return True
88
+ if desired_mode != "Exclusive":
89
+ return False
90
+ return (desired_instance_id or "").strip() != (current_instance_id or "").strip()
@@ -40,6 +40,11 @@ class AgentKitRuntimeVersionsForListRuntimeVersions(RuntimeTypeBaseModel):
40
40
  created_at: Optional[str] = Field(default=None, alias="CreatedAt")
41
41
  description: Optional[str] = Field(default=None, alias="Description")
42
42
  envs: Optional[list[EnvsForListRuntimeVersions]] = Field(default=None, alias="Envs")
43
+ gateway_instance_id: Optional[str] = Field(default=None, alias="GatewayInstanceId")
44
+ gateway_instance_name: Optional[str] = Field(
45
+ default=None, alias="GatewayInstanceName"
46
+ )
47
+ gateway_mode: Optional[str] = Field(default=None, alias="GatewayMode")
43
48
  memory_mb: Optional[int] = Field(default=None, alias="MemoryMb")
44
49
  role_name: Optional[str] = Field(default=None, alias="RoleName")
45
50
  runtime_id: Optional[str] = Field(default=None, alias="RuntimeId")
@@ -63,6 +68,11 @@ class AgentKitRuntimesForListRuntimes(RuntimeTypeBaseModel):
63
68
  )
64
69
  description: Optional[str] = Field(default=None, alias="Description")
65
70
  envs: Optional[list[EnvsForListRuntimes]] = Field(default=None, alias="Envs")
71
+ gateway_instance_id: Optional[str] = Field(default=None, alias="GatewayInstanceId")
72
+ gateway_instance_name: Optional[str] = Field(
73
+ default=None, alias="GatewayInstanceName"
74
+ )
75
+ gateway_mode: Optional[str] = Field(default=None, alias="GatewayMode")
66
76
  knowledge_id: Optional[str] = Field(default=None, alias="KnowledgeId")
67
77
  mcp_toolset_id: Optional[str] = Field(default=None, alias="MCPToolsetId")
68
78
  memory_id: Optional[str] = Field(default=None, alias="MemoryId")
@@ -326,6 +336,8 @@ class CreateRuntimeRequest(RuntimeTypeBaseModel):
326
336
  client_token: Optional[str] = Field(default=None, alias="ClientToken")
327
337
  cpu_milli: Optional[int] = Field(default=None, alias="CpuMilli")
328
338
  description: Optional[str] = Field(default=None, alias="Description")
339
+ gateway_instance_id: Optional[str] = Field(default=None, alias="GatewayInstanceId")
340
+ gateway_mode: Optional[str] = Field(default=None, alias="GatewayMode")
329
341
  knowledge_id: Optional[str] = Field(default=None, alias="KnowledgeId")
330
342
  mcp_toolset_id: Optional[str] = Field(default=None, alias="MCPToolsetId")
331
343
  max_concurrency: Optional[int] = Field(default=None, alias="MaxConcurrency")
@@ -388,6 +400,11 @@ class GetRuntimeResponse(RuntimeTypeBaseModel):
388
400
  description: Optional[str] = Field(default=None, alias="Description")
389
401
  envs: Optional[list[EnvsForGetRuntime]] = Field(default=None, alias="Envs")
390
402
  failed_log_file_url: Optional[str] = Field(default=None, alias="FailedLogFileUrl")
403
+ gateway_instance_id: Optional[str] = Field(default=None, alias="GatewayInstanceId")
404
+ gateway_instance_name: Optional[str] = Field(
405
+ default=None, alias="GatewayInstanceName"
406
+ )
407
+ gateway_mode: Optional[str] = Field(default=None, alias="GatewayMode")
391
408
  knowledge_id: Optional[str] = Field(default=None, alias="KnowledgeId")
392
409
  mcp_toolset_id: Optional[str] = Field(default=None, alias="MCPToolsetId")
393
410
  max_concurrency: Optional[int] = Field(default=None, alias="MaxConcurrency")
@@ -455,6 +472,11 @@ class GetRuntimeVersionResponse(RuntimeTypeBaseModel):
455
472
  description: Optional[str] = Field(default=None, alias="Description")
456
473
  endpoint: Optional[str] = Field(default=None, alias="Endpoint")
457
474
  envs: Optional[list[EnvsForGetRuntimeVersion]] = Field(default=None, alias="Envs")
475
+ gateway_instance_id: Optional[str] = Field(default=None, alias="GatewayInstanceId")
476
+ gateway_instance_name: Optional[str] = Field(
477
+ default=None, alias="GatewayInstanceName"
478
+ )
479
+ gateway_mode: Optional[str] = Field(default=None, alias="GatewayMode")
458
480
  max_concurrency: Optional[int] = Field(default=None, alias="MaxConcurrency")
459
481
  memory_mb: Optional[int] = Field(default=None, alias="MemoryMb")
460
482
  model_agent_name: Optional[str] = Field(default=None, alias="ModelAgentName")
@@ -46,6 +46,10 @@ from .types import (
46
46
  ListSessionsResponse,
47
47
  ListToolsRequest,
48
48
  ListToolsResponse,
49
+ PauseSessionRequest,
50
+ PauseSessionResponse,
51
+ ResumeSessionRequest,
52
+ ResumeSessionResponse,
49
53
  ResumeSessionFromSnapshotRequest,
50
54
  ResumeSessionFromSnapshotResponse,
51
55
  SetSessionTtlRequest,
@@ -72,6 +76,8 @@ class AgentkitToolsClient(BaseAgentkitClient):
72
76
  "ListSessionSnapshots": "ListSessionSnapshots",
73
77
  "ListSessions": "ListSessions",
74
78
  "ListTools": "ListTools",
79
+ "PauseSession": "PauseSession",
80
+ "ResumeSession": "ResumeSession",
75
81
  "ResumeSessionFromSnapshot": "ResumeSessionFromSnapshot",
76
82
  "SetSessionTtl": "SetSessionTtl",
77
83
  "UpdateTool": "UpdateTool",
@@ -193,6 +199,20 @@ class AgentkitToolsClient(BaseAgentkitClient):
193
199
  response_type=ListToolsResponse,
194
200
  )
195
201
 
202
+ def pause_session(self, request: PauseSessionRequest) -> PauseSessionResponse:
203
+ return self._invoke_api(
204
+ api_action="PauseSession",
205
+ request=request,
206
+ response_type=PauseSessionResponse,
207
+ )
208
+
209
+ def resume_session(self, request: ResumeSessionRequest) -> ResumeSessionResponse:
210
+ return self._invoke_api(
211
+ api_action="ResumeSession",
212
+ request=request,
213
+ response_type=ResumeSessionResponse,
214
+ )
215
+
196
216
  def resume_session_from_snapshot(
197
217
  self, request: ResumeSessionFromSnapshotRequest
198
218
  ) -> ResumeSessionFromSnapshotResponse:
@@ -133,14 +133,31 @@ class SessionMetaForListSessions(ToolsBaseModel):
133
133
  webshell_url: Optional[str] = Field(default=None, alias="WebshellUrl")
134
134
 
135
135
 
136
+ class SessionMetadataForGetSessionSnapshot(ToolsBaseModel):
137
+ key: Optional[str] = Field(default=None, alias="Key")
138
+ type: Optional[str] = Field(default=None, alias="Type")
139
+ value: Optional[str] = Field(default=None, alias="Value")
140
+
141
+
142
+ class SessionMetadataForListSessionSnapshots(ToolsBaseModel):
143
+ key: Optional[str] = Field(default=None, alias="Key")
144
+ type: Optional[str] = Field(default=None, alias="Type")
145
+ value: Optional[str] = Field(default=None, alias="Value")
146
+
147
+
136
148
  class SnapshotForGetSessionSnapshot(ToolsBaseModel):
137
149
  created_at: Optional[str] = Field(default=None, alias="CreatedAt")
138
150
  reason: Optional[str] = Field(default=None, alias="Reason")
139
151
  sandbox_id: Optional[str] = Field(default=None, alias="SandboxId")
140
152
  session_id: Optional[str] = Field(default=None, alias="SessionId")
153
+ session_metadata: Optional[list[SessionMetadataForGetSessionSnapshot]] = Field(
154
+ default=None, alias="SessionMetadata"
155
+ )
141
156
  snapshot_id: Optional[str] = Field(default=None, alias="SnapshotId")
157
+ snapshot_type: Optional[str] = Field(default=None, alias="SnapshotType")
142
158
  status: Optional[str] = Field(default=None, alias="Status")
143
159
  tool_id: Optional[str] = Field(default=None, alias="ToolId")
160
+ user_session_id: Optional[str] = Field(default=None, alias="UserSessionId")
144
161
 
145
162
 
146
163
  class SnapshotsForListSessionSnapshots(ToolsBaseModel):
@@ -148,7 +165,11 @@ class SnapshotsForListSessionSnapshots(ToolsBaseModel):
148
165
  reason: Optional[str] = Field(default=None, alias="Reason")
149
166
  sandbox_id: Optional[str] = Field(default=None, alias="SandboxId")
150
167
  session_id: Optional[str] = Field(default=None, alias="SessionId")
168
+ session_metadata: Optional[list[SessionMetadataForListSessionSnapshots]] = Field(
169
+ default=None, alias="SessionMetadata"
170
+ )
151
171
  snapshot_id: Optional[str] = Field(default=None, alias="SnapshotId")
172
+ snapshot_type: Optional[str] = Field(default=None, alias="SnapshotType")
152
173
  status: Optional[str] = Field(default=None, alias="Status")
153
174
  tool_id: Optional[str] = Field(default=None, alias="ToolId")
154
175
  user_session_id: Optional[str] = Field(default=None, alias="UserSessionId")
@@ -186,6 +207,7 @@ class ToolsForListTools(ToolsBaseModel):
186
207
  command: Optional[str] = Field(default=None, alias="Command")
187
208
  created_at: Optional[str] = Field(default=None, alias="CreatedAt")
188
209
  description: Optional[str] = Field(default=None, alias="Description")
210
+ enable_mcp: Optional[bool] = Field(default=None, alias="EnableMcp")
189
211
  envs: Optional[list[EnvsForListTools]] = Field(default=None, alias="Envs")
190
212
  image_url: Optional[str] = Field(default=None, alias="ImageUrl")
191
213
  model_agent_name: Optional[str] = Field(default=None, alias="ModelAgentName")
@@ -293,6 +315,7 @@ class CreateSessionResponse(ToolsBaseModel):
293
315
 
294
316
  # CreateSessionSnapshot - Request
295
317
  class CreateSessionSnapshotRequest(ToolsBaseModel):
318
+ retention_count: Optional[int] = Field(default=None, alias="RetentionCount")
296
319
  session_id: str = Field(..., alias="SessionId")
297
320
  tool_id: str = Field(..., alias="ToolId")
298
321
 
@@ -396,6 +419,7 @@ class CreateToolRequest(ToolsBaseModel):
396
419
  command: Optional[str] = Field(default=None, alias="Command")
397
420
  cpu_milli: Optional[int] = Field(default=None, alias="CpuMilli")
398
421
  description: Optional[str] = Field(default=None, alias="Description")
422
+ enable_mcp: Optional[bool] = Field(default=None, alias="EnableMcp")
399
423
  enable_object_set_isolation: Optional[bool] = Field(
400
424
  default=None, alias="EnableObjectSetIsolation"
401
425
  )
@@ -533,6 +557,7 @@ class GetToolResponse(ToolsBaseModel):
533
557
  cpu_milli: Optional[int] = Field(default=None, alias="CpuMilli")
534
558
  created_at: Optional[str] = Field(default=None, alias="CreatedAt")
535
559
  description: Optional[str] = Field(default=None, alias="Description")
560
+ enable_mcp: Optional[bool] = Field(default=None, alias="EnableMcp")
536
561
  enable_object_set_isolation: Optional[bool] = Field(
537
562
  default=None, alias="EnableObjectSetIsolation"
538
563
  )
@@ -576,6 +601,7 @@ class ListSessionSnapshotsRequest(ToolsBaseModel):
576
601
  page_number: Optional[int] = Field(default=None, alias="PageNumber")
577
602
  page_size: Optional[int] = Field(default=None, alias="PageSize")
578
603
  session_id: Optional[str] = Field(default=None, alias="SessionId")
604
+ snapshot_type: Optional[str] = Field(default=None, alias="SnapshotType")
579
605
  tool_id: str = Field(..., alias="ToolId")
580
606
  user_session_id: Optional[str] = Field(default=None, alias="UserSessionId")
581
607
 
@@ -657,6 +683,33 @@ class ListToolsResponse(ToolsBaseModel):
657
683
  tools: Optional[list[ToolsForListTools]] = Field(default=None, alias="Tools")
658
684
 
659
685
 
686
+ # PauseSession - Request
687
+ class PauseSessionRequest(ToolsBaseModel):
688
+ session_id: str = Field(..., alias="SessionId")
689
+ tool_id: str = Field(..., alias="ToolId")
690
+
691
+
692
+ # PauseSession - Response
693
+ class PauseSessionResponse(ToolsBaseModel):
694
+ session_id: Optional[str] = Field(default=None, alias="SessionId")
695
+ status: Optional[str] = Field(default=None, alias="Status")
696
+
697
+
698
+ # ResumeSession - Request
699
+ class ResumeSessionRequest(ToolsBaseModel):
700
+ session_id: str = Field(..., alias="SessionId")
701
+ tool_id: str = Field(..., alias="ToolId")
702
+ ttl: Optional[int] = Field(default=None, alias="Ttl")
703
+ ttl_unit: Optional[str] = Field(default=None, alias="TtlUnit")
704
+
705
+
706
+ # ResumeSession - Response
707
+ class ResumeSessionResponse(ToolsBaseModel):
708
+ expire_at: Optional[str] = Field(default=None, alias="ExpireAt")
709
+ session_id: Optional[str] = Field(default=None, alias="SessionId")
710
+ status: Optional[str] = Field(default=None, alias="Status")
711
+
712
+
660
713
  # ResumeSessionFromSnapshot - Request
661
714
  class ResumeSessionFromSnapshotRequest(ToolsBaseModel):
662
715
  create_new_instance: Optional[bool] = Field(default=None, alias="CreateNewInstance")
@@ -722,6 +775,7 @@ class UpdateToolRequest(ToolsBaseModel):
722
775
  command: Optional[str] = Field(default=None, alias="Command")
723
776
  cpu_milli: Optional[int] = Field(default=None, alias="CpuMilli")
724
777
  description: Optional[str] = Field(default=None, alias="Description")
778
+ enable_mcp: Optional[bool] = Field(default=None, alias="EnableMcp")
725
779
  image_url: Optional[str] = Field(default=None, alias="ImageUrl")
726
780
  lark_app_id: Optional[str] = Field(default=None, alias="LarkAppId")
727
781
  lark_app_secret: Optional[str] = Field(default=None, alias="LarkAppSecret")
@@ -192,6 +192,18 @@ def config_command(
192
192
  "--runtime_binding_mcp_toolset_id",
193
193
  help="Bind Runtime to an MCP Toolset ID (cloud/hybrid only)",
194
194
  ),
195
+ runtime_gateway_mode: Optional[str] = typer.Option(
196
+ None,
197
+ "--runtime_gateway_mode",
198
+ "--runtime-gateway-mode",
199
+ help="Runtime gateway mode (cloud/hybrid, CreateRuntime only): Shared|Exclusive",
200
+ ),
201
+ runtime_gateway_instance_id: Optional[str] = typer.Option(
202
+ None,
203
+ "--runtime_gateway_instance_id",
204
+ "--runtime-gateway-instance-id",
205
+ help="Exclusive Runtime gateway instance ID (cloud/hybrid, CreateRuntime only)",
206
+ ),
195
207
  # Runtime network configuration (advanced, CreateRuntime only)
196
208
  runtime_network_mode: Optional[str] = typer.Option(
197
209
  None,
@@ -344,6 +356,8 @@ def config_command(
344
356
  runtime_vpc_id=runtime_vpc_id,
345
357
  runtime_subnet_ids=runtime_subnet_ids,
346
358
  runtime_enable_shared_internet_access=runtime_enable_shared_internet_access,
359
+ runtime_gateway_mode=runtime_gateway_mode,
360
+ runtime_gateway_instance_id=runtime_gateway_instance_id,
347
361
  )
348
362
 
349
363
  has_cli_params = ConfigParamHandler.has_cli_params(cli_params)
@@ -25,6 +25,10 @@ from rich.table import Table
25
25
  from rich.panel import Panel
26
26
 
27
27
  from agentkit.sdk.runtime.client import AgentkitRuntimeClient
28
+ from agentkit.sdk.runtime.gateway import (
29
+ normalize_runtime_gateway_mode,
30
+ validate_runtime_gateway_create_config,
31
+ )
28
32
  from agentkit.sdk.runtime import types as rt
29
33
 
30
34
  console = Console()
@@ -92,6 +96,60 @@ def _build_network_for_create_runtime(
92
96
  )
93
97
 
94
98
 
99
+ def _has_network_configuration_for_create_runtime(
100
+ vpc_id: Optional[str],
101
+ subnet_ids: Optional[str],
102
+ enable_private_network: bool,
103
+ enable_public_network: bool,
104
+ enable_shared_internet_access: bool,
105
+ ) -> bool:
106
+ return (
107
+ enable_private_network
108
+ or bool((vpc_id or "").strip())
109
+ or bool((subnet_ids or "").strip())
110
+ or enable_shared_internet_access
111
+ or enable_public_network is False
112
+ )
113
+
114
+
115
+ def _payload_value(payload: object, *keys: str) -> object:
116
+ if not isinstance(payload, dict):
117
+ return None
118
+ for key in keys:
119
+ if key in payload:
120
+ return payload[key]
121
+ return None
122
+
123
+
124
+ def _payload_has_non_null_key(payload: object, *keys: str) -> bool:
125
+ if not isinstance(payload, dict):
126
+ return False
127
+ return any(key in payload and payload[key] is not None for key in keys)
128
+
129
+
130
+ def _unsupported_runtime_update_fields_message(payload: object) -> Optional[str]:
131
+ if not isinstance(payload, dict):
132
+ return None
133
+ unsupported = [
134
+ "GatewayMode",
135
+ "GatewayInstanceId",
136
+ "NetworkConfiguration",
137
+ "gateway_mode",
138
+ "gateway_instance_id",
139
+ "network_configuration",
140
+ "gatewayMode",
141
+ "gatewayInstanceId",
142
+ "networkConfiguration",
143
+ ]
144
+ found = [key for key in unsupported if key in payload]
145
+ if not found:
146
+ return None
147
+ return (
148
+ f"{', '.join(found)} can only be set when creating a Runtime; "
149
+ "gateway mode, gateway instance, and network configuration cannot be updated."
150
+ )
151
+
152
+
95
153
  def _validate_runtime_create_authorizer_options(
96
154
  api_key_name: Optional[str],
97
155
  jwt_discovery_url: Optional[str],
@@ -132,6 +190,16 @@ def create_runtime_command(
132
190
  model_agent_name: Optional[str] = typer.Option(
133
191
  None, "--model-agent-name", help="Model agent name"
134
192
  ),
193
+ gateway_mode: Optional[str] = typer.Option(
194
+ None,
195
+ "--gateway-mode",
196
+ help="Runtime gateway mode: Shared | Exclusive",
197
+ ),
198
+ gateway_instance_id: Optional[str] = typer.Option(
199
+ None,
200
+ "--gateway-instance-id",
201
+ help="Exclusive Runtime gateway instance ID",
202
+ ),
135
203
  vpc_id: Optional[str] = typer.Option(None, "--vpc-id", help="VPC ID"),
136
204
  subnet_ids: Optional[str] = typer.Option(
137
205
  None, "--subnet-ids", help="Subnet IDs (comma-separated)"
@@ -187,12 +255,49 @@ def create_runtime_command(
187
255
  try:
188
256
  if json_body:
189
257
  payload = json.loads(json_body)
258
+ validate_runtime_gateway_create_config(
259
+ gateway_mode=_payload_value(
260
+ payload,
261
+ "GatewayMode",
262
+ "gateway_mode",
263
+ "gatewayMode",
264
+ ),
265
+ gateway_instance_id=_payload_value(
266
+ payload,
267
+ "GatewayInstanceId",
268
+ "gateway_instance_id",
269
+ "gatewayInstanceId",
270
+ ),
271
+ has_network_configuration=_payload_has_non_null_key(
272
+ payload,
273
+ "NetworkConfiguration",
274
+ "network_configuration",
275
+ "networkConfiguration",
276
+ ),
277
+ label="runtime",
278
+ )
190
279
  req = rt.CreateRuntimeRequest(**payload)
191
280
  else:
192
281
  _validate_runtime_create_authorizer_options(
193
282
  api_key_name=api_key_name,
194
283
  jwt_discovery_url=jwt_discovery_url,
195
284
  )
285
+ normalized_gateway_mode = normalize_runtime_gateway_mode(
286
+ gateway_mode,
287
+ "--gateway-mode",
288
+ )
289
+ validate_runtime_gateway_create_config(
290
+ gateway_mode=normalized_gateway_mode,
291
+ gateway_instance_id=gateway_instance_id,
292
+ has_network_configuration=_has_network_configuration_for_create_runtime(
293
+ vpc_id=vpc_id,
294
+ subnet_ids=subnet_ids,
295
+ enable_private_network=enable_private_network,
296
+ enable_public_network=enable_public_network,
297
+ enable_shared_internet_access=enable_shared_internet_access,
298
+ ),
299
+ label="runtime",
300
+ )
196
301
 
197
302
  authorizer = None
198
303
  if any([api_key_name, api_key_location, jwt_discovery_url]):
@@ -253,6 +358,10 @@ def create_runtime_command(
253
358
  tool_id=tool_id,
254
359
  mcp_toolset_id=mcp_toolset_id,
255
360
  model_agent_name=model_agent_name,
361
+ gateway_mode=normalized_gateway_mode,
362
+ gateway_instance_id=(
363
+ gateway_instance_id.strip() if gateway_instance_id else None
364
+ ),
256
365
  authorizer_configuration=authorizer,
257
366
  network_configuration=network,
258
367
  envs=envs,
@@ -343,6 +452,9 @@ def update_runtime_command(
343
452
  client = AgentkitRuntimeClient(region=(region or "").strip())
344
453
  if json_body:
345
454
  payload = json.loads(json_body)
455
+ unsupported = _unsupported_runtime_update_fields_message(payload)
456
+ if unsupported:
457
+ raise ValueError(unsupported)
346
458
  req = rt.UpdateRuntimeRequest(**payload)
347
459
  else:
348
460
  envs = None
@@ -467,6 +579,16 @@ def list_runtimes_command(
467
579
  project_name: Optional[str] = typer.Option(
468
580
  None, "--project-name", help="Filter by project name"
469
581
  ),
582
+ gateway_mode: Optional[str] = typer.Option(
583
+ None,
584
+ "--gateway-mode",
585
+ help="Filter by runtime gateway mode: Shared | Exclusive",
586
+ ),
587
+ gateway_instance_id: Optional[str] = typer.Option(
588
+ None,
589
+ "--gateway-instance-id",
590
+ help="Filter by runtime gateway instance ID",
591
+ ),
470
592
  # Sorting options
471
593
  sort_by: Optional[str] = typer.Option(
472
594
  None, "--sort-by", help="Sort by field: Name|Status|CreatedAt|UpdatedAt"
@@ -618,6 +740,26 @@ def list_runtimes_command(
618
740
  rt.FiltersItemForListRuntimes(name="Status", values=statuses)
619
741
  )
620
742
 
743
+ if gateway_mode:
744
+ filters.append(
745
+ rt.FiltersItemForListRuntimes(
746
+ name="GatewayMode",
747
+ values=[
748
+ normalize_runtime_gateway_mode(
749
+ gateway_mode,
750
+ "--gateway-mode",
751
+ )
752
+ ],
753
+ )
754
+ )
755
+ if gateway_instance_id:
756
+ filters.append(
757
+ rt.FiltersItemForListRuntimes(
758
+ name="GatewayInstanceId",
759
+ values=[gateway_instance_id],
760
+ )
761
+ )
762
+
621
763
  # Setup console with color control
622
764
  local_console = console if not no_color else Console(no_color=True)
623
765
 
@@ -696,6 +838,8 @@ def list_runtimes_command(
696
838
  ("Name", "Name", "white"),
697
839
  ("Status", "Status", "green"),
698
840
  ("ProjectName", "ProjectName", "yellow"),
841
+ ("GatewayMode", "GatewayMode", "cyan"),
842
+ ("GatewayInstanceName", "GatewayInstanceName", "blue"),
699
843
  ("UpdatedAt", "UpdatedAt", "magenta"),
700
844
  ]
701
845
 
@@ -108,6 +108,11 @@ def create_tool_command(
108
108
  None, "--project-name", help="Project name"
109
109
  ),
110
110
  role_name: Optional[str] = typer.Option(None, "--role-name", help="Role name"),
111
+ enable_mcp: Optional[bool] = typer.Option(
112
+ None,
113
+ "--enable-mcp/--disable-mcp",
114
+ help="Enable AgentGateway MCP capability for the tool.",
115
+ ),
111
116
  api_key_name: Optional[str] = typer.Option(
112
117
  None, "--apikey-name", help="API key name"
113
118
  ),
@@ -234,6 +239,7 @@ def create_tool_command(
234
239
  description=description,
235
240
  project_name=project_name,
236
241
  role_name=role_name,
242
+ enable_mcp=enable_mcp,
237
243
  authorizer_configuration=authorizer,
238
244
  network_configuration=network,
239
245
  tags=tags_list or None,
@@ -306,6 +312,11 @@ def update_tool_command(
306
312
  description: Optional[str] = typer.Option(
307
313
  None, "--description", help="Description"
308
314
  ),
315
+ enable_mcp: Optional[bool] = typer.Option(
316
+ None,
317
+ "--enable-mcp/--disable-mcp",
318
+ help="Enable or disable AgentGateway MCP capability (KeyAuth tools only).",
319
+ ),
309
320
  json_body: Optional[str] = typer.Option(
310
321
  None, "--json", help="Full JSON body for UpdateTool"
311
322
  ),
@@ -324,7 +335,7 @@ def update_tool_command(
324
335
  ),
325
336
  ),
326
337
  ):
327
- """Update tool description."""
338
+ """Update a tool."""
328
339
  try:
329
340
  client = AgentkitToolsClient(region=(region or "").strip())
330
341
  if json_body:
@@ -335,7 +346,9 @@ def update_tool_command(
335
346
  payload["ToolId"] = tool_id.strip()
336
347
  else:
337
348
  payload = tools_types.UpdateToolRequest(
338
- tool_id=tool_id, description=description
349
+ tool_id=tool_id,
350
+ description=description,
351
+ enable_mcp=enable_mcp,
339
352
  ).model_dump(by_alias=True, exclude_none=True)
340
353
 
341
354
  if print_json:
@@ -34,6 +34,10 @@ from agentkit.sdk.tools.types import (
34
34
  GetSessionResponse,
35
35
  ListSessionsRequest,
36
36
  ListSessionsResponse,
37
+ PauseSessionRequest,
38
+ PauseSessionResponse,
39
+ ResumeSessionRequest,
40
+ ResumeSessionResponse,
37
41
  )
38
42
 
39
43
  SANDBOX_APIG_ENDPOINT_ENV = "SANDBOX_APIG_ENDPOINT"
@@ -234,6 +238,20 @@ class TipAgentkitToolsClient(_OpenapiAgentkitToolsClient):
234
238
  response_type=DeleteSessionResponse,
235
239
  )
236
240
 
241
+ def pause_session(self, request: PauseSessionRequest) -> PauseSessionResponse:
242
+ return self._invoke_tip_api(
243
+ api_action="PauseSession",
244
+ request=request,
245
+ response_type=PauseSessionResponse,
246
+ )
247
+
248
+ def resume_session(self, request: ResumeSessionRequest) -> ResumeSessionResponse:
249
+ return self._invoke_tip_api(
250
+ api_action="ResumeSession",
251
+ request=request,
252
+ response_type=ResumeSessionResponse,
253
+ )
254
+
237
255
  def _raise_tip_unsupported(self, api_action: str) -> None:
238
256
  raise Exception(
239
257
  f"{api_action} is not available with TIP sandbox auth. "
@@ -21,6 +21,7 @@ from rich import box
21
21
 
22
22
  from agentkit.toolkit.config.config import get_config
23
23
  from agentkit.toolkit.config.config_validator import ConfigValidator
24
+ from agentkit.sdk.runtime.gateway import normalize_runtime_gateway_mode
24
25
 
25
26
  console = Console()
26
27
 
@@ -113,6 +114,8 @@ class ConfigParamHandler:
113
114
  runtime_vpc_id: Optional[str],
114
115
  runtime_subnet_ids: Optional[List[str]],
115
116
  runtime_enable_shared_internet_access: Optional[bool],
117
+ runtime_gateway_mode: Optional[str] = None,
118
+ runtime_gateway_instance_id: Optional[str] = None,
116
119
  ) -> Dict[str, Any]:
117
120
  """Collect all CLI parameters.
118
121
 
@@ -201,6 +204,17 @@ class ConfigParamHandler:
201
204
  if runtime_bindings:
202
205
  strategy_params["runtime_bindings"] = runtime_bindings
203
206
 
207
+ if runtime_gateway_mode is not None:
208
+ strategy_params["runtime_gateway_mode"] = (
209
+ normalize_runtime_gateway_mode(
210
+ runtime_gateway_mode,
211
+ "runtime_gateway_mode",
212
+ )
213
+ or ""
214
+ )
215
+ if runtime_gateway_instance_id is not None:
216
+ strategy_params["runtime_gateway_instance_id"] = runtime_gateway_instance_id
217
+
204
218
  # Runtime network configuration (advanced, CreateRuntime only)
205
219
  runtime_network: Dict[str, Any] = {}
206
220
  if runtime_network_mode is not None:
@@ -14,6 +14,7 @@
14
14
 
15
15
  from dataclasses import dataclass, field
16
16
  from typing import Any, Dict, List, Optional
17
+ from agentkit.sdk.runtime.gateway import normalize_runtime_gateway_mode
17
18
  from .dataclass_utils import AutoSerializableMixin
18
19
  from .constants import (
19
20
  AUTH_TYPE_CUSTOM_JWT,
@@ -344,6 +345,32 @@ class HybridStrategyConfig(AutoSerializableMixin):
344
345
  "examples": "{mode: private, vpc_id: vpc-xxx, subnet_ids: [subnet-aaa, subnet-bbb], enable_shared_internet_access: true}",
345
346
  },
346
347
  )
348
+ runtime_gateway_mode: str = field(
349
+ default="",
350
+ metadata={
351
+ "hidden": True,
352
+ "description": "Runtime gateway mode: Shared or Exclusive",
353
+ "examples": "Exclusive",
354
+ },
355
+ )
356
+ runtime_gateway_instance_id: str = field(
357
+ default="",
358
+ metadata={
359
+ "hidden": True,
360
+ "description": "Exclusive Runtime gateway instance ID",
361
+ "examples": "g-xxx",
362
+ },
363
+ )
364
+
365
+ def __post_init__(self):
366
+ self.runtime_gateway_mode = (
367
+ normalize_runtime_gateway_mode(
368
+ self.runtime_gateway_mode,
369
+ "runtime_gateway_mode",
370
+ )
371
+ or ""
372
+ )
373
+
347
374
  _config_metadata = {
348
375
  "name": "Hybrid Strategy Configuration",
349
376
  "welcome_message": "Welcome to AgentKit Hybrid Deployment Mode Configuration Wizard",
@@ -611,6 +638,31 @@ class CloudStrategyConfig(AutoSerializableMixin):
611
638
  "examples": "{mode: private, vpc_id: vpc-xxx, subnet_ids: [subnet-aaa, subnet-bbb], enable_shared_internet_access: true}",
612
639
  },
613
640
  )
641
+ runtime_gateway_mode: str = field(
642
+ default="",
643
+ metadata={
644
+ "hidden": True,
645
+ "description": "Runtime gateway mode: Shared or Exclusive",
646
+ "examples": "Exclusive",
647
+ },
648
+ )
649
+ runtime_gateway_instance_id: str = field(
650
+ default="",
651
+ metadata={
652
+ "hidden": True,
653
+ "description": "Exclusive Runtime gateway instance ID",
654
+ "examples": "g-xxx",
655
+ },
656
+ )
657
+
658
+ def __post_init__(self):
659
+ self.runtime_gateway_mode = (
660
+ normalize_runtime_gateway_mode(
661
+ self.runtime_gateway_mode,
662
+ "runtime_gateway_mode",
663
+ )
664
+ or ""
665
+ )
614
666
 
615
667
  # Deployment metadata
616
668
  build_timestamp: str = field(
@@ -43,6 +43,11 @@ from agentkit.utils.misc import (
43
43
  retry,
44
44
  )
45
45
  from agentkit.sdk.runtime.client import AgentkitRuntimeClient
46
+ from agentkit.sdk.runtime.gateway import (
47
+ normalize_runtime_gateway_mode,
48
+ runtime_gateway_binding_changed,
49
+ validate_runtime_gateway_create_config,
50
+ )
46
51
  from agentkit.toolkit.volcengine.iam import VeIAM
47
52
  from .base import Runner
48
53
 
@@ -110,6 +115,14 @@ class VeAgentkitRunnerConfig(AutoSerializableMixin):
110
115
  "description": "Runtime network configuration (advanced, CreateRuntime only)",
111
116
  },
112
117
  )
118
+ runtime_gateway_mode: str = field(
119
+ default="",
120
+ metadata={"description": "Runtime gateway mode: Shared or Exclusive"},
121
+ )
122
+ runtime_gateway_instance_id: str = field(
123
+ default="",
124
+ metadata={"description": "Exclusive Runtime gateway instance ID"},
125
+ )
113
126
 
114
127
  # Authentication configuration
115
128
  runtime_auth_type: str = field(
@@ -754,6 +767,36 @@ class VeAgentkitRuntimeRunner(Runner):
754
767
  enable_public_network=enable_public,
755
768
  )
756
769
 
770
+ @staticmethod
771
+ def _validate_runtime_gateway_config_for_create(
772
+ config: VeAgentkitRunnerConfig,
773
+ ) -> None:
774
+ validate_runtime_gateway_create_config(
775
+ gateway_mode=config.runtime_gateway_mode,
776
+ gateway_instance_id=config.runtime_gateway_instance_id,
777
+ has_network_configuration=bool(config.runtime_network),
778
+ label="runtime",
779
+ )
780
+
781
+ @staticmethod
782
+ def _assert_runtime_gateway_update_allowed(
783
+ config: VeAgentkitRunnerConfig,
784
+ current: Optional[runtime_types.GetRuntimeResponse],
785
+ ) -> None:
786
+ if current is None:
787
+ return
788
+ if not runtime_gateway_binding_changed(
789
+ desired_mode=config.runtime_gateway_mode,
790
+ desired_instance_id=config.runtime_gateway_instance_id,
791
+ current_mode=getattr(current, "gateway_mode", None),
792
+ current_instance_id=getattr(current, "gateway_instance_id", None),
793
+ ):
794
+ return
795
+ raise ConfigError(
796
+ "Runtime gateway_mode/gateway_instance_id cannot be changed after creation. "
797
+ "Delete and recreate the Runtime, or set runtime_id to Auto to create a new Runtime."
798
+ )
799
+
757
800
  def _create_new_runtime(self, config: VeAgentkitRunnerConfig) -> DeployResult:
758
801
  """Create a new Runtime instance.
759
802
 
@@ -787,8 +830,11 @@ class VeAgentkitRuntimeRunner(Runner):
787
830
  # Build authorizer configuration based on auth type
788
831
  authorizer_config = self._build_authorizer_config_for_create(config)
789
832
 
833
+ self._validate_runtime_gateway_config_for_create(config)
834
+
790
835
  # Network configuration is only supported during CreateRuntime.
791
836
  network_configuration = self._build_network_config_for_create(config)
837
+ gateway_mode = normalize_runtime_gateway_mode(config.runtime_gateway_mode)
792
838
 
793
839
  create_request = runtime_types.CreateRuntimeRequest(
794
840
  name=config.runtime_name,
@@ -798,6 +844,12 @@ class VeAgentkitRuntimeRunner(Runner):
798
844
  artifact_type=ARTIFACT_TYPE_DOCKER_IMAGE,
799
845
  artifact_url=config.image_url,
800
846
  role_name=config.runtime_role_name,
847
+ gateway_mode=gateway_mode,
848
+ gateway_instance_id=(
849
+ config.runtime_gateway_instance_id.strip()
850
+ if config.runtime_gateway_instance_id
851
+ else None
852
+ ),
801
853
  memory_id=(memory_id if is_valid_config(memory_id) else None),
802
854
  knowledge_id=(knowledge_id if is_valid_config(knowledge_id) else None),
803
855
  tool_id=(tool_id if is_valid_config(tool_id) else None),
@@ -899,6 +951,8 @@ class VeAgentkitRuntimeRunner(Runner):
899
951
  "runtime_apikey": config.runtime_apikey,
900
952
  "runtime_apikey_name": config.runtime_apikey_name,
901
953
  "runtime_role_name": config.runtime_role_name,
954
+ "runtime_gateway_mode": gateway_mode or "",
955
+ "runtime_gateway_instance_id": config.runtime_gateway_instance_id,
902
956
  "runtime_auth_type": config.runtime_auth_type,
903
957
  "runtime_jwt_discovery_url": config.runtime_jwt_discovery_url,
904
958
  "runtime_jwt_allowed_clients": config.runtime_jwt_allowed_clients,
@@ -1188,6 +1242,8 @@ class VeAgentkitRuntimeRunner(Runner):
1188
1242
  success=False, error=error_msg, error_code=ErrorCode.CONFIG_INVALID
1189
1243
  )
1190
1244
 
1245
+ self._assert_runtime_gateway_update_allowed(config, runtime)
1246
+
1191
1247
  # Check if update is needed
1192
1248
  # needs_update, update_reason = self._needs_runtime_update(runtime, config)
1193
1249
  needs_update = True # Always update for now
@@ -1220,6 +1276,12 @@ class VeAgentkitRuntimeRunner(Runner):
1220
1276
  "runtime_name": config.runtime_name,
1221
1277
  "runtime_apikey": config.runtime_apikey,
1222
1278
  "runtime_auth_type": config.runtime_auth_type,
1279
+ "runtime_gateway_mode": getattr(runtime, "gateway_mode", None)
1280
+ or "",
1281
+ "runtime_gateway_instance_id": getattr(
1282
+ runtime, "gateway_instance_id", None
1283
+ )
1284
+ or "",
1223
1285
  "message": "Runtime configuration is up-to-date",
1224
1286
  },
1225
1287
  )
@@ -1369,6 +1431,12 @@ class VeAgentkitRuntimeRunner(Runner):
1369
1431
  "runtime_apikey": config.runtime_apikey,
1370
1432
  "runtime_apikey_name": config.runtime_apikey_name,
1371
1433
  "runtime_role_name": config.runtime_role_name,
1434
+ "runtime_gateway_mode": getattr(updated_runtime, "gateway_mode", None)
1435
+ or config.runtime_gateway_mode,
1436
+ "runtime_gateway_instance_id": getattr(
1437
+ updated_runtime, "gateway_instance_id", None
1438
+ )
1439
+ or config.runtime_gateway_instance_id,
1372
1440
  "runtime_auth_type": config.runtime_auth_type,
1373
1441
  "runtime_jwt_discovery_url": config.runtime_jwt_discovery_url,
1374
1442
  "runtime_jwt_allowed_clients": config.runtime_jwt_allowed_clients,
@@ -185,6 +185,16 @@ class CloudStrategy(Strategy):
185
185
  config_updates.add(
186
186
  "runtime_role_name", result.metadata["runtime_role_name"]
187
187
  )
188
+ if result.metadata.get("runtime_gateway_mode"):
189
+ config_updates.add(
190
+ "runtime_gateway_mode",
191
+ result.metadata["runtime_gateway_mode"],
192
+ )
193
+ if result.metadata.get("runtime_gateway_instance_id"):
194
+ config_updates.add(
195
+ "runtime_gateway_instance_id",
196
+ result.metadata["runtime_gateway_instance_id"],
197
+ )
188
198
 
189
199
  result.config_updates = config_updates if config_updates.has_updates() else None
190
200
  return result
@@ -352,6 +362,10 @@ class CloudStrategy(Strategy):
352
362
  runtime_envs=merged_envs,
353
363
  runtime_bindings=getattr(strategy_config, "runtime_bindings", None) or {},
354
364
  runtime_network=getattr(strategy_config, "runtime_network", None) or {},
365
+ runtime_gateway_mode=getattr(strategy_config, "runtime_gateway_mode", ""),
366
+ runtime_gateway_instance_id=getattr(
367
+ strategy_config, "runtime_gateway_instance_id", ""
368
+ ),
355
369
  runtime_auth_type=strategy_config.runtime_auth_type,
356
370
  runtime_jwt_discovery_url=strategy_config.runtime_jwt_discovery_url,
357
371
  runtime_jwt_allowed_clients=strategy_config.runtime_jwt_allowed_clients,
@@ -195,6 +195,16 @@ class HybridStrategy(Strategy):
195
195
  config_updates.add(
196
196
  "runtime_role_name", result.metadata["runtime_role_name"]
197
197
  )
198
+ if result.metadata.get("runtime_gateway_mode"):
199
+ config_updates.add(
200
+ "runtime_gateway_mode",
201
+ result.metadata["runtime_gateway_mode"],
202
+ )
203
+ if result.metadata.get("runtime_gateway_instance_id"):
204
+ config_updates.add(
205
+ "runtime_gateway_instance_id",
206
+ result.metadata["runtime_gateway_instance_id"],
207
+ )
198
208
 
199
209
  result.config_updates = config_updates if config_updates.has_updates() else None
200
210
  return result
@@ -518,6 +528,10 @@ class HybridStrategy(Strategy):
518
528
  runtime_envs=merged_envs,
519
529
  runtime_bindings=getattr(strategy_config, "runtime_bindings", None) or {},
520
530
  runtime_network=getattr(strategy_config, "runtime_network", None) or {},
531
+ runtime_gateway_mode=getattr(strategy_config, "runtime_gateway_mode", ""),
532
+ runtime_gateway_instance_id=getattr(
533
+ strategy_config, "runtime_gateway_instance_id", ""
534
+ ),
521
535
  runtime_auth_type=strategy_config.runtime_auth_type,
522
536
  runtime_jwt_discovery_url=strategy_config.runtime_jwt_discovery_url,
523
537
  runtime_jwt_allowed_clients=strategy_config.runtime_jwt_allowed_clients,
agentkit/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.8.6"
15
+ VERSION = "0.8.7"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentkit-sdk-python
3
- Version: 0.8.6
3
+ Version: 0.8.7
4
4
  Summary: Python SDK for transforming any AI agent into a production-ready application. Framework-agnostic primitives for runtime, memory, authentication, and tools with volcengine-managed infrastructure.
5
5
  Author-email: Xiangrui Cheng <innsdcc@gmail.com>, Yumeng Bao <baoyumeng.123@gmail.com>, Yaozheng Fang <fangyozheng@gmail.com>, Guodong Li <cu.eric.lee@gmail.com>
6
6
  License: Apache License
@@ -1,6 +1,6 @@
1
1
  agentkit/__init__.py,sha256=l27ZMDslc3VhmmnPZJyrqVvTDoZ0LqhCtM5hw0caHcU,1021
2
2
  agentkit/errors.py,sha256=UWlXv0ZsXd_oLTMlxuf4u9-XkTdRYeVZueE--Z3JsHU,1214
3
- agentkit/version.py,sha256=oiT47ntHQYP5lVwHBKHO62Vrkzn97W8vuO3VRiy71gY,653
3
+ agentkit/version.py,sha256=6hPmlZzq621W7nRwJLMXCadbdmhZZ3jfsLwIHwgqPEk,653
4
4
  agentkit/apps/__init__.py,sha256=_Na1A4NSaMbVfPbsFKj2U-yI5mytD7W5skMaAOGbauY,2328
5
5
  agentkit/apps/base_app.py,sha256=3hZZExL1wyTGWveJEZZoqXN086MzmkVS_WU1vyulIWg,754
6
6
  agentkit/apps/utils.py,sha256=IzimIDmT6FS6PV9MLimPh46mq5zT-EjVmnYPxBdyEq0,1934
@@ -30,7 +30,7 @@ agentkit/auth/__init__.py,sha256=eIW6ziL3rtBYEupfmqq8MshZ40wL3muYjCQRikFG_j0,364
30
30
  agentkit/auth/_openapi.py,sha256=bToFSAqSCO_nvfvK0FegkJJtP50eZQhe5ZAtHBGla3E,10088
31
31
  agentkit/auth/_redact.py,sha256=Ef3yLlWj6jw0G6gZKy3cY64X6sm0jhzor8qx8b0Dp4A,911
32
32
  agentkit/auth/_sigv4.py,sha256=yAbFD57g3cBvCkGTVJap0BCakQeukyR_FlzMDYZdTkw,3375
33
- agentkit/auth/admin.py,sha256=ZbyN21O4wVzkcGUzwliPneTEKZorLgCDVcxNXfijfE8,28721
33
+ agentkit/auth/admin.py,sha256=v1Wsnc2_V4p1WYj8hCYX_99NRROdyQ2pb7_UxrAxujE,28796
34
34
  agentkit/auth/credential_hosting.py,sha256=lFFYseYHkqCUsv1djtK3EFR1XvESmw6l1Zgu1CcwIa8,24280
35
35
  agentkit/auth/errors.py,sha256=eNNdzXP35QAlYy-jM5I9CQZCSS9rW0cp5_1F0I75JcU,1448
36
36
  agentkit/auth/model_login.py,sha256=_30pbZgs22o4UtGF03dMgFRN9yE4OSyLqXJm9JhEe7E,13775
@@ -95,13 +95,14 @@ agentkit/sdk/model_gateway/client.py,sha256=5fhWACbwFe_sYy-jH53pdlzTl1qNIck9_XBH
95
95
  agentkit/sdk/model_gateway/types.py,sha256=Z6IHikbmlvNsVJhUDC93W4VpIuHfVuQtwT-VXwi3NyY,15677
96
96
  agentkit/sdk/runtime/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
97
97
  agentkit/sdk/runtime/client.py,sha256=Puni7oruHTeQmCeEURfA3yC2HpXj8y5ThHA_wXgRr2I,5908
98
- agentkit/sdk/runtime/types.py,sha256=kTtndXsfG3Nfqg-aadfH0O_g9lVptZ2KHz6_No5Y9os,27523
98
+ agentkit/sdk/runtime/gateway.py,sha256=wMURKvqkVrCQZ9qfE3PHn6JME6KczqjHt-N-t84el5U,3054
99
+ agentkit/sdk/runtime/types.py,sha256=9Zlnsk1IMQ-Xwq3f-Ck4O5AEK_XUS43BcIj85LKGY1k,28762
99
100
  agentkit/sdk/skills/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
100
101
  agentkit/sdk/skills/client.py,sha256=aZLskCgixIBq9PIkMErWLzbySSYioTZrNwHYwksQPcQ,8983
101
102
  agentkit/sdk/skills/types.py,sha256=3ihqQPVJA84TNlUDIuSi_IA-Z8gZh3qHRmIVpu3ytIw,14909
102
103
  agentkit/sdk/tools/__init__.py,sha256=YeCcKcedAqPxmS3LzkqPJOWoz9AVLoqE173cK8gtkHk,636
103
- agentkit/sdk/tools/client.py,sha256=EpOiDfr_JEFRcSIbWt4oADHxCSx2fFqSUblRh-A0xPQ,7084
104
- agentkit/sdk/tools/types.py,sha256=SE_dt6jyiEqfRimGDKfvWZmbnzNH325ZucoCgsl_tUM,31979
104
+ agentkit/sdk/tools/client.py,sha256=yrE_SIrHThiIfcM1YHQVWVoYRrKXD7h6d1SJy6yfr0g,7761
105
+ agentkit/sdk/tools/types.py,sha256=ngzMpotQCvZOl_eqyn1wJM4qinL33zBP06ErmecZ4AI,34367
105
106
  agentkit/toolkit/__init__.py,sha256=VZkLRcjybKRHgWvGmLHAm0Gsb1FCUpKmKuJYfZmbfE0,1249
106
107
  agentkit/toolkit/context.py,sha256=6CPDjmUwB830JB0OrKGFVNUjeiJ17GPDtbbQBtt6L1w,7554
107
108
  agentkit/toolkit/errors.py,sha256=dUqxeYDSBx6npiw4f1T-M1eFsfbnrp0IA0oBszHT4P4,4913
@@ -118,7 +119,7 @@ agentkit/toolkit/cli/cli.py,sha256=cwtaKwo8XeJZ-cWyDJSNe8oS-LnBXEn2R-JWHH9moys,4
118
119
  agentkit/toolkit/cli/cli_add.py,sha256=aLyvN9Vcjis_KLhy92uuPi7e8ltFdHjwFOb-nME7CV0,39730
119
120
  agentkit/toolkit/cli/cli_auth.py,sha256=qfvzLwOV3bGnClX_-EP2CC1uDyEy8fezWoTaCe7Ourw,27271
120
121
  agentkit/toolkit/cli/cli_build.py,sha256=gtRBPJfm6Z4y37ISC_CiGwEkMhD4fD7IQi1H6Lzc2Yo,2984
121
- agentkit/toolkit/cli/cli_config.py,sha256=09TUTlV9-QmBfNpDox2HBCpbgsO7hS9rZRoAAUdE9eI,29311
122
+ agentkit/toolkit/cli/cli_config.py,sha256=3FF7wWGVzc4zV3yC3AFCjqxTPQmci0jIUC2FyJm5yjw,29925
122
123
  agentkit/toolkit/cli/cli_delete.py,sha256=duoX7N1_uklleNMEcxz8t575FluzxLnGeokYUKyx58E,6228
123
124
  agentkit/toolkit/cli/cli_deploy.py,sha256=B912gRSpgLFBCLF8w8lD1J_jP5-PvpT_Zjblx-0yees,7066
124
125
  agentkit/toolkit/cli/cli_destroy.py,sha256=QpH7cctsaIFd2io6hhEeKnCjxK7DbE7AnFsecWL5BxY,1797
@@ -130,12 +131,12 @@ agentkit/toolkit/cli/cli_list.py,sha256=4_SENlUS1P1WRP75fga05JVRkIG4IKGftrFpoVAn
130
131
  agentkit/toolkit/cli/cli_logs.py,sha256=hfyz89MpS7KCGd3ExUiDJoyveEwt_tOCKab_8P_I3Ck,9355
131
132
  agentkit/toolkit/cli/cli_memory.py,sha256=mN1DwUeIjLD_xSRw6xFQoY8EVz0K8mMZf3PGydZkndE,38113
132
133
  agentkit/toolkit/cli/cli_model_gateway.py,sha256=_kMcDo-Y55G2LZZx4rL4Ksp6DQkou8A42_MKbsG-LgI,41233
133
- agentkit/toolkit/cli/cli_runtime.py,sha256=nzk3oVICVACXqZrg0KjgjpjN-K3ezQKAu0dwdjnsMPg,31961
134
+ agentkit/toolkit/cli/cli_runtime.py,sha256=3nd-OrMV7y9CuJraPHwUjKsYD_C6OF7peyekhr8Y-mg,36916
134
135
  agentkit/toolkit/cli/cli_skill.py,sha256=nEZXc9CVGop4e0WC-V2AAHqy7to4nw6KnKOtzS2likQ,16170
135
136
  agentkit/toolkit/cli/cli_skills.py,sha256=jBgpTb286MvXK4tr-asgmG9HAeVAIRr7k-VAcPYqqVI,41716
136
137
  agentkit/toolkit/cli/cli_skills_workflow.py,sha256=kteHk-ajiXZM8W-EghVon7Zb5irT0hXh4pdldCnqQX8,28080
137
138
  agentkit/toolkit/cli/cli_status.py,sha256=HP3TDCtqbD4NHPFAOq5LI8nuVLheCk-zo9hrm97K5lE,7645
138
- agentkit/toolkit/cli/cli_tools.py,sha256=lksz2Qno974GyIum_COCKVqg-0JqH6Okrioz7yHu1LE,41093
139
+ agentkit/toolkit/cli/cli_tools.py,sha256=_4-WAXdWfBQumVMDjpbugpw5uTtP3LzGHehKzt3xiLQ,41539
139
140
  agentkit/toolkit/cli/cli_version.py,sha256=vGZTplakjF4ZoHWGXsxWj3nC29sK4qJ5iHfYtuI0M2A,3080
140
141
  agentkit/toolkit/cli/console_reporter.py,sha256=ta9GFUDkPEFfGeANDsza5bZdVXidqhHIfsu_gTyXzDw,6926
141
142
  agentkit/toolkit/cli/interactive_config.py,sha256=y5g5aNMJuX2tHUuu2pvacOssx3O3oqs0u_g0ZinyP1c,46133
@@ -143,7 +144,7 @@ agentkit/toolkit/cli/tool_lookup.py,sha256=IfaTbRYWE5HuQIHbM7Eub0vYrSaQtH1gkeTWS
143
144
  agentkit/toolkit/cli/utils.py,sha256=THEzN0Nln0sA3luIc9seP_oczBMDsHJAV6nlBhsWroI,8693
144
145
  agentkit/toolkit/cli/sandbox/__init__.py,sha256=xgJq9x_8MJb9i73C_6L9tRwj-Z0QzqgsYWn8rV_12fs,1520
145
146
  agentkit/toolkit/cli/sandbox/a2a_client.py,sha256=El2enMuiAdRSP7uCsKovTtkGrCis14nd5AqBdiFGCxk,12406
146
- agentkit/toolkit/cli/sandbox/agentkit_client.py,sha256=DDYsfB4bHXAbJjcjyitif2qlMtcorHBIXiIclw1DVtY,9077
147
+ agentkit/toolkit/cli/sandbox/agentkit_client.py,sha256=L4XARSVGOwmHdg95rMSQWmEEK3M1mnjA6yL3pYHGNX4,9680
147
148
  agentkit/toolkit/cli/sandbox/cli.py,sha256=un89osF6DWuy8yALdqsIGJcKZ7dBMja9Isj-9a6fxcs,2809
148
149
  agentkit/toolkit/cli/sandbox/cli_build.py,sha256=43s9ohfj-bM48YNEJ4YKSZMofO63bCzb1hWCswxC2ck,2976
149
150
  agentkit/toolkit/cli/sandbox/cli_config.py,sha256=lvAAW1AetRjufBH67YY4ExDPeyxZqY_UU225zz1ia10,4153
@@ -172,7 +173,7 @@ agentkit/toolkit/config/__init__.py,sha256=EtArtF-LsaQYjU9Wc-G_xelqHmlo2XrOWiVqK
172
173
  agentkit/toolkit/config/choice_resolvers.py,sha256=9OxVevL9gLTNqVpMvsDP_rC8ZFF6SPbhLJXrqXdf9xM,5958
173
174
  agentkit/toolkit/config/cloud_provider.py,sha256=fvG-TOfbDsPlda42h2JSZyfgxojAeTD12tYCsp0nww8,2747
174
175
  agentkit/toolkit/config/config.py,sha256=SV8QRjyQA0qOddsnduLSaX8_gdLSs3hGqgPDm9EfbNw,19986
175
- agentkit/toolkit/config/config_handler.py,sha256=GRF07hP9vaTUD0cPlYEZrNs4craVBvnIhHpnotDP9Kw,18857
176
+ agentkit/toolkit/config/config_handler.py,sha256=MGws4Lj75lEOOplfKPnuFun8DwtU-q8CRLyXAei2xcQ,19471
176
177
  agentkit/toolkit/config/config_validator.py,sha256=h39OI2Bwr330D2GpajE-0evcOGSFRf5EdkAz-EksyjQ,11654
177
178
  agentkit/toolkit/config/constants.py,sha256=NbrAzwR_QnWmAIC38MZo3xmXZorB9_otx9UQkRo0zNg,1560
178
179
  agentkit/toolkit/config/dataclass_utils.py,sha256=umNuemsVuohpC_GTBUzVesok5lvpdXjACrIZ-WObdbE,20337
@@ -180,7 +181,7 @@ agentkit/toolkit/config/docker_build_config.py,sha256=EY6ZVLNDZ4C0Qrk1IS5ojDGXZZ
180
181
  agentkit/toolkit/config/global_config.py,sha256=o05R47ZP1awx6f0ffspgvv-RSu9o3S5oQCpYdf0SrPs,17701
181
182
  agentkit/toolkit/config/region_defaults.py,sha256=L1DgDFRDbnuJFldCpAIYPi-YM1Ak43Q9WScCNBgDS1A,1653
182
183
  agentkit/toolkit/config/region_resolver.py,sha256=4lUTMJIPO_dYAl4MS9PjwjAZAfNPqDTWnqmzkr6WAyk,3768
183
- agentkit/toolkit/config/strategy_configs.py,sha256=BZdjtkeqQx4s2_tvgM181z_--zy6HYkjkTUlCTXezVU,22257
184
+ agentkit/toolkit/config/strategy_configs.py,sha256=qlUIYPEVfPUzTr2ctUwT0qciHRWUbjP-P16hXRqdtzE,23730
184
185
  agentkit/toolkit/config/utils.py,sha256=R9pZhPSmqagkA9oNAxp5Rzw0Tw1j4hAGpcrq0Bz5TtM,6630
185
186
  agentkit/toolkit/docker/__init__.py,sha256=cP-_z7XNrlvce4uSqPxIdv4aDwjXJm_bsYI56iluukc,1259
186
187
  agentkit/toolkit/docker/base_images.py,sha256=ZvyRZEgjfKrzYZPWp5Mjs3yAhVfVVCUlLPyonAC3IGA,2362
@@ -237,7 +238,7 @@ agentkit/toolkit/resources/wrappers/wrapper_stream.py.jinja2,sha256=V5KeODA426nN
237
238
  agentkit/toolkit/runners/__init__.py,sha256=c-PuCvGFpIQrYC_W9qp2ZztgTSH2AVgxSEgkXMqJKZM,1829
238
239
  agentkit/toolkit/runners/base.py,sha256=GosKJUUVa1V85y9bhoT8SZthp5sV7KEfvn9gzL1MkoQ,29426
239
240
  agentkit/toolkit/runners/local_docker.py,sha256=YQTFcxB_PxIx_7SXleODBBBRCY9GuAgpkYQLCm8M8KA,28825
240
- agentkit/toolkit/runners/ve_agentkit.py,sha256=JRHoU53D7qc4cEj6bpP-_cJpBmH-kl4thxRbsfChkWs,57297
241
+ agentkit/toolkit/runners/ve_agentkit.py,sha256=2KSCoRtoC_1PnSAlLkPI21I7DcHOAHYFhVJ_RGHA0gA,60243
241
242
  agentkit/toolkit/sdk/__init__.py,sha256=SK_ElW74IiT2WRhDIJhL0xhpAk4C8xHI7ZUCnGgW2hs,2735
242
243
  agentkit/toolkit/sdk/builder.py,sha256=tI-uawiJ_BYVH5FbDxVWJIXC-56rM4eUzX2o7M4pkMI,4225
243
244
  agentkit/toolkit/sdk/client.py,sha256=EbGhgcWgc50Z39AeXnvtip2r5fH_qx9YhM2CXOwlR_8,18136
@@ -251,8 +252,8 @@ agentkit/toolkit/sdk/bindings/__init__.py,sha256=sZVayHUi0CA2dwn1_fovKdb8z_y3k1-
251
252
  agentkit/toolkit/sdk/bindings/memory.py,sha256=85feCymQBkPA6djKOLiO4YhGxw1e89zENa89DWp_BTY,6068
252
253
  agentkit/toolkit/strategies/__init__.py,sha256=vgtqGePsuki2nYwd3ox3xILSrdijQmTaBMogygJ6DMc,1243
253
254
  agentkit/toolkit/strategies/base_strategy.py,sha256=l9att4i-YKJc4vUNlecKCu3ZQWQRgkdiJqovXiY8OWc,6753
254
- agentkit/toolkit/strategies/cloud_strategy.py,sha256=2Z1IazvMeVWBhWercVJ2NQhYLH9iXiHRMiisE3oyIAg,13803
255
- agentkit/toolkit/strategies/hybrid_strategy.py,sha256=3otPmi9p6KYl7zCrc0u9TpvRExCyRK-R5NVDKtlZ3rk,20137
255
+ agentkit/toolkit/strategies/cloud_strategy.py,sha256=HhJwSpOZBMDVUWE3pVwYh6-Zth3JMWSsQh5dcGFKNU8,14520
256
+ agentkit/toolkit/strategies/hybrid_strategy.py,sha256=6IOWWUP_QHTZM6bLibvR0hZUE5g6NcQpAiXbshIkixE,20854
256
257
  agentkit/toolkit/strategies/local_strategy.py,sha256=xK1kJwjY3QLpLBhlfAeYtSwjegfuzGWgi91yNavbqBQ,9950
257
258
  agentkit/toolkit/utils/__init__.py,sha256=uSaoOXTyarlItNRdkmpXAoUEDZDwFBSB146W9hJ_2_4,739
258
259
  agentkit/toolkit/utils/agent_parser.py,sha256=wfjM8udiYVHHz2rIktUZTueRJ-ScONzzCodk-JXJPIU,7625
@@ -285,9 +286,9 @@ agentkit_identity/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
285
286
  agentkit_identity/runtime.py,sha256=hQHLvbAK760teFPTGZ0RG9Ed5DQAXAqIdaAm9ojzS34,14423
286
287
  agentkit_identity/transport.py,sha256=kwGHSEQ5Qcn1kIu6N6DVid7MdDUMj5uaIRIUA_tJ3cM,7693
287
288
  agentkit_identity/types.py,sha256=lT8KQz1pG0rgdy5Gh6WnM0mq9VqCsWSE41Z8Fw3DHZo,7358
288
- agentkit_sdk_python-0.8.6.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
289
- agentkit_sdk_python-0.8.6.dist-info/METADATA,sha256=NN8bgpy6cuQ8yr3ZIb4xeKU1x2PlWCuX9khZzEU-aSk,21580
290
- agentkit_sdk_python-0.8.6.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
291
- agentkit_sdk_python-0.8.6.dist-info/entry_points.txt,sha256=fhzZUsvsLXeB4mPaa0SBQiTBqFT404uDAKPaePAOUAE,58
292
- agentkit_sdk_python-0.8.6.dist-info/top_level.txt,sha256=Kw8DVx7vzg-oUh7xC_hBZw7OwKW3Y_fo_8rkWOL1d5o,27
293
- agentkit_sdk_python-0.8.6.dist-info/RECORD,,
289
+ agentkit_sdk_python-0.8.7.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
290
+ agentkit_sdk_python-0.8.7.dist-info/METADATA,sha256=Yt8ge4ik8oWKIOEEYwIoRANFOYtHKgbFqXCU_7u8KE0,21580
291
+ agentkit_sdk_python-0.8.7.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
292
+ agentkit_sdk_python-0.8.7.dist-info/entry_points.txt,sha256=fhzZUsvsLXeB4mPaa0SBQiTBqFT404uDAKPaePAOUAE,58
293
+ agentkit_sdk_python-0.8.7.dist-info/top_level.txt,sha256=Kw8DVx7vzg-oUh7xC_hBZw7OwKW3Y_fo_8rkWOL1d5o,27
294
+ agentkit_sdk_python-0.8.7.dist-info/RECORD,,