glaip-sdk 0.6.19__py3-none-any.whl → 0.7.27__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.
- glaip_sdk/agents/base.py +283 -30
- glaip_sdk/agents/component.py +233 -0
- glaip_sdk/branding.py +113 -2
- glaip_sdk/cli/account_store.py +15 -0
- glaip_sdk/cli/auth.py +14 -8
- glaip_sdk/cli/commands/accounts.py +1 -1
- glaip_sdk/cli/commands/agents/__init__.py +116 -0
- glaip_sdk/cli/commands/agents/_common.py +562 -0
- glaip_sdk/cli/commands/agents/create.py +155 -0
- glaip_sdk/cli/commands/agents/delete.py +64 -0
- glaip_sdk/cli/commands/agents/get.py +89 -0
- glaip_sdk/cli/commands/agents/list.py +129 -0
- glaip_sdk/cli/commands/agents/run.py +264 -0
- glaip_sdk/cli/commands/agents/sync_langflow.py +72 -0
- glaip_sdk/cli/commands/agents/update.py +112 -0
- glaip_sdk/cli/commands/common_config.py +1 -1
- glaip_sdk/cli/commands/configure.py +1 -2
- glaip_sdk/cli/commands/mcps/__init__.py +94 -0
- glaip_sdk/cli/commands/mcps/_common.py +459 -0
- glaip_sdk/cli/commands/mcps/connect.py +82 -0
- glaip_sdk/cli/commands/mcps/create.py +152 -0
- glaip_sdk/cli/commands/mcps/delete.py +73 -0
- glaip_sdk/cli/commands/mcps/get.py +212 -0
- glaip_sdk/cli/commands/mcps/list.py +69 -0
- glaip_sdk/cli/commands/mcps/tools.py +235 -0
- glaip_sdk/cli/commands/mcps/update.py +190 -0
- glaip_sdk/cli/commands/models.py +2 -4
- glaip_sdk/cli/commands/shared/__init__.py +21 -0
- glaip_sdk/cli/commands/shared/formatters.py +91 -0
- glaip_sdk/cli/commands/tools/__init__.py +69 -0
- glaip_sdk/cli/commands/tools/_common.py +80 -0
- glaip_sdk/cli/commands/tools/create.py +228 -0
- glaip_sdk/cli/commands/tools/delete.py +61 -0
- glaip_sdk/cli/commands/tools/get.py +103 -0
- glaip_sdk/cli/commands/tools/list.py +69 -0
- glaip_sdk/cli/commands/tools/script.py +49 -0
- glaip_sdk/cli/commands/tools/update.py +102 -0
- glaip_sdk/cli/commands/transcripts/__init__.py +90 -0
- glaip_sdk/cli/commands/transcripts/_common.py +9 -0
- glaip_sdk/cli/commands/transcripts/clear.py +5 -0
- glaip_sdk/cli/commands/transcripts/detail.py +5 -0
- glaip_sdk/cli/commands/{transcripts.py → transcripts_original.py} +2 -1
- glaip_sdk/cli/commands/update.py +163 -17
- glaip_sdk/cli/config.py +1 -0
- glaip_sdk/cli/entrypoint.py +20 -0
- glaip_sdk/cli/main.py +112 -35
- glaip_sdk/cli/pager.py +3 -3
- glaip_sdk/cli/resolution.py +2 -1
- glaip_sdk/cli/slash/accounts_controller.py +3 -1
- glaip_sdk/cli/slash/agent_session.py +1 -1
- glaip_sdk/cli/slash/remote_runs_controller.py +3 -1
- glaip_sdk/cli/slash/session.py +343 -20
- glaip_sdk/cli/slash/tui/__init__.py +29 -1
- glaip_sdk/cli/slash/tui/accounts.tcss +97 -6
- glaip_sdk/cli/slash/tui/accounts_app.py +1117 -126
- glaip_sdk/cli/slash/tui/clipboard.py +316 -0
- glaip_sdk/cli/slash/tui/context.py +92 -0
- glaip_sdk/cli/slash/tui/indicators.py +341 -0
- glaip_sdk/cli/slash/tui/keybind_registry.py +235 -0
- glaip_sdk/cli/slash/tui/layouts/__init__.py +14 -0
- glaip_sdk/cli/slash/tui/layouts/harlequin.py +184 -0
- glaip_sdk/cli/slash/tui/loading.py +43 -21
- glaip_sdk/cli/slash/tui/remote_runs_app.py +178 -20
- glaip_sdk/cli/slash/tui/terminal.py +407 -0
- glaip_sdk/cli/slash/tui/theme/__init__.py +15 -0
- glaip_sdk/cli/slash/tui/theme/catalog.py +79 -0
- glaip_sdk/cli/slash/tui/theme/manager.py +112 -0
- glaip_sdk/cli/slash/tui/theme/tokens.py +55 -0
- glaip_sdk/cli/slash/tui/toast.py +388 -0
- glaip_sdk/cli/transcript/history.py +1 -1
- glaip_sdk/cli/transcript/viewer.py +1 -1
- glaip_sdk/cli/tui_settings.py +125 -0
- glaip_sdk/cli/update_notifier.py +215 -7
- glaip_sdk/cli/validators.py +1 -1
- glaip_sdk/client/__init__.py +2 -1
- glaip_sdk/client/_schedule_payloads.py +89 -0
- glaip_sdk/client/agents.py +293 -17
- glaip_sdk/client/base.py +25 -0
- glaip_sdk/client/hitl.py +136 -0
- glaip_sdk/client/main.py +7 -5
- glaip_sdk/client/mcps.py +44 -13
- glaip_sdk/client/payloads/agent/__init__.py +23 -0
- glaip_sdk/client/{_agent_payloads.py → payloads/agent/requests.py} +28 -48
- glaip_sdk/client/payloads/agent/responses.py +43 -0
- glaip_sdk/client/run_rendering.py +109 -30
- glaip_sdk/client/schedules.py +439 -0
- glaip_sdk/client/tools.py +52 -23
- glaip_sdk/config/constants.py +22 -2
- glaip_sdk/guardrails/__init__.py +80 -0
- glaip_sdk/guardrails/serializer.py +91 -0
- glaip_sdk/hitl/__init__.py +35 -2
- glaip_sdk/hitl/base.py +64 -0
- glaip_sdk/hitl/callback.py +43 -0
- glaip_sdk/hitl/local.py +1 -31
- glaip_sdk/hitl/remote.py +523 -0
- glaip_sdk/models/__init__.py +47 -1
- glaip_sdk/models/_provider_mappings.py +101 -0
- glaip_sdk/models/_validation.py +97 -0
- glaip_sdk/models/agent.py +2 -1
- glaip_sdk/models/agent_runs.py +2 -1
- glaip_sdk/models/constants.py +141 -0
- glaip_sdk/models/model.py +170 -0
- glaip_sdk/models/schedule.py +224 -0
- glaip_sdk/payload_schemas/agent.py +1 -0
- glaip_sdk/payload_schemas/guardrails.py +34 -0
- glaip_sdk/ptc.py +145 -0
- glaip_sdk/registry/tool.py +270 -57
- glaip_sdk/runner/__init__.py +20 -3
- glaip_sdk/runner/deps.py +4 -1
- glaip_sdk/runner/langgraph.py +251 -27
- glaip_sdk/runner/logging_config.py +77 -0
- glaip_sdk/runner/mcp_adapter/mcp_config_builder.py +30 -9
- glaip_sdk/runner/ptc_adapter.py +98 -0
- glaip_sdk/runner/tool_adapter/langchain_tool_adapter.py +25 -2
- glaip_sdk/schedules/__init__.py +22 -0
- glaip_sdk/schedules/base.py +291 -0
- glaip_sdk/tools/base.py +67 -14
- glaip_sdk/utils/__init__.py +1 -0
- glaip_sdk/utils/agent_config.py +8 -2
- glaip_sdk/utils/bundler.py +138 -2
- glaip_sdk/utils/import_resolver.py +427 -49
- glaip_sdk/utils/runtime_config.py +3 -2
- glaip_sdk/utils/sync.py +31 -11
- glaip_sdk/utils/tool_detection.py +274 -6
- {glaip_sdk-0.6.19.dist-info → glaip_sdk-0.7.27.dist-info}/METADATA +22 -8
- glaip_sdk-0.7.27.dist-info/RECORD +227 -0
- {glaip_sdk-0.6.19.dist-info → glaip_sdk-0.7.27.dist-info}/WHEEL +1 -1
- glaip_sdk-0.7.27.dist-info/entry_points.txt +2 -0
- glaip_sdk/cli/commands/agents.py +0 -1509
- glaip_sdk/cli/commands/mcps.py +0 -1356
- glaip_sdk/cli/commands/tools.py +0 -576
- glaip_sdk/cli/utils.py +0 -263
- glaip_sdk-0.6.19.dist-info/RECORD +0 -163
- glaip_sdk-0.6.19.dist-info/entry_points.txt +0 -2
- {glaip_sdk-0.6.19.dist-info → glaip_sdk-0.7.27.dist-info}/top_level.txt +0 -0
|
@@ -4,8 +4,140 @@ Authors:
|
|
|
4
4
|
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import ast
|
|
10
|
+
import importlib
|
|
11
|
+
import inspect
|
|
12
|
+
import pkgutil
|
|
13
|
+
from functools import lru_cache
|
|
7
14
|
from typing import Any
|
|
8
15
|
|
|
16
|
+
# Constants for frequently used strings to avoid duplication (S1192)
|
|
17
|
+
_NAME = "name"
|
|
18
|
+
_AIP_AGENTS_TOOLS = "aip_agents.tools"
|
|
19
|
+
_BASE_TOOL = "BaseTool"
|
|
20
|
+
|
|
21
|
+
# Internal map to store all discovered tools in the session
|
|
22
|
+
_DISCOVERED_TOOLS: dict[str, type] | None = None
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def _should_skip_module(module_name: str) -> bool:
|
|
26
|
+
"""Check if module should be skipped during tool discovery."""
|
|
27
|
+
short_name = module_name.rsplit(".", 1)[-1]
|
|
28
|
+
return short_name.startswith("_") or "test" in short_name
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def _get_pydantic_field_default(cls: type, attr_name: str, field_name: str) -> str | None:
|
|
32
|
+
"""Extract default value from a Pydantic field."""
|
|
33
|
+
try:
|
|
34
|
+
fields = getattr(cls, attr_name, {})
|
|
35
|
+
field = fields.get(field_name)
|
|
36
|
+
# Broad exception handling needed because:
|
|
37
|
+
# - model_fields/__fields__ might be a descriptor that raises AttributeError
|
|
38
|
+
# - field.default might raise during access
|
|
39
|
+
# - Various Pydantic internals can raise unexpected exceptions
|
|
40
|
+
if field and hasattr(field, "default") and isinstance(field.default, str):
|
|
41
|
+
return field.default
|
|
42
|
+
except Exception: # pylint: disable=broad-except
|
|
43
|
+
pass
|
|
44
|
+
return None
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _get_name_from_pydantic_v2(cls: type) -> str | None:
|
|
48
|
+
"""Extract name from Pydantic v2 model_fields."""
|
|
49
|
+
return _get_pydantic_field_default(cls, "model_fields", _NAME)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def _get_name_from_pydantic_v1(cls: type) -> str | None:
|
|
53
|
+
"""Extract name from Pydantic v1 __fields__."""
|
|
54
|
+
return _get_pydantic_field_default(cls, "__fields__", _NAME)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def get_tool_name(ref: Any) -> str | None:
|
|
58
|
+
"""Extract tool name from a tool class or instance.
|
|
59
|
+
|
|
60
|
+
Handles LangChain BaseTool (Pydantic v1/v2) and standard classes.
|
|
61
|
+
|
|
62
|
+
Args:
|
|
63
|
+
ref: Tool class or instance.
|
|
64
|
+
|
|
65
|
+
Returns:
|
|
66
|
+
The extracted tool name, or None if not found.
|
|
67
|
+
"""
|
|
68
|
+
if ref is None:
|
|
69
|
+
return None
|
|
70
|
+
|
|
71
|
+
# 1. Try instance 'name' attribute
|
|
72
|
+
if not isinstance(ref, type):
|
|
73
|
+
try:
|
|
74
|
+
name = getattr(ref, _NAME, None)
|
|
75
|
+
if isinstance(name, str):
|
|
76
|
+
return name
|
|
77
|
+
except Exception: # pylint: disable=broad-except
|
|
78
|
+
pass
|
|
79
|
+
|
|
80
|
+
cls = ref if isinstance(ref, type) else type(ref)
|
|
81
|
+
|
|
82
|
+
# 2. Try class 'model_fields' (Pydantic v2)
|
|
83
|
+
# Check Pydantic v2 first for forward compatibility
|
|
84
|
+
name = _get_name_from_pydantic_v2(cls)
|
|
85
|
+
if name:
|
|
86
|
+
return name
|
|
87
|
+
|
|
88
|
+
# 3. Try class '__fields__' (Pydantic v1)
|
|
89
|
+
name = _get_name_from_pydantic_v1(cls)
|
|
90
|
+
if name:
|
|
91
|
+
return name
|
|
92
|
+
|
|
93
|
+
# 4. Try direct class attribute
|
|
94
|
+
if hasattr(cls, _NAME):
|
|
95
|
+
try:
|
|
96
|
+
name_attr = getattr(cls, _NAME)
|
|
97
|
+
if isinstance(name_attr, str):
|
|
98
|
+
return name_attr
|
|
99
|
+
except Exception: # pylint: disable=broad-except
|
|
100
|
+
pass
|
|
101
|
+
|
|
102
|
+
return None
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def _check_langchain_standard(ref: Any) -> bool:
|
|
106
|
+
"""Perform standard isinstance/issubclass check for LangChain tool."""
|
|
107
|
+
try:
|
|
108
|
+
from langchain_core.tools import BaseTool # noqa: PLC0415
|
|
109
|
+
|
|
110
|
+
# Check if BaseTool is actually a type to avoid TypeError in issubclass/isinstance
|
|
111
|
+
if isinstance(BaseTool, type):
|
|
112
|
+
if isinstance(ref, type) and issubclass(ref, BaseTool):
|
|
113
|
+
return True
|
|
114
|
+
if isinstance(ref, BaseTool):
|
|
115
|
+
return True
|
|
116
|
+
except (ImportError, TypeError):
|
|
117
|
+
pass
|
|
118
|
+
return False
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def _check_langchain_fallback(ref: Any) -> bool:
|
|
122
|
+
"""Perform name-based fallback check for LangChain tool (robust for mocks).
|
|
123
|
+
|
|
124
|
+
This fallback handles cases where:
|
|
125
|
+
- BaseTool is mocked in tests
|
|
126
|
+
- BaseTool is re-imported through internal modules (e.g., runner)
|
|
127
|
+
- isinstance/issubclass checks fail due to module reloading
|
|
128
|
+
"""
|
|
129
|
+
try:
|
|
130
|
+
cls = ref if isinstance(ref, type) else getattr(ref, "__class__", None)
|
|
131
|
+
if cls and hasattr(cls, "__mro__"):
|
|
132
|
+
for c in cls.__mro__:
|
|
133
|
+
c_name = getattr(c, "__name__", None)
|
|
134
|
+
c_module = getattr(c, "__module__", "")
|
|
135
|
+
if c_name == _BASE_TOOL and ("langchain" in c_module or "runner" in c_module):
|
|
136
|
+
return True
|
|
137
|
+
except (AttributeError, TypeError):
|
|
138
|
+
pass
|
|
139
|
+
return False
|
|
140
|
+
|
|
9
141
|
|
|
10
142
|
def is_langchain_tool(ref: Any) -> bool:
|
|
11
143
|
"""Check if ref is a LangChain BaseTool class or instance.
|
|
@@ -20,14 +152,150 @@ def is_langchain_tool(ref: Any) -> bool:
|
|
|
20
152
|
Returns:
|
|
21
153
|
True if ref is a LangChain BaseTool class or instance.
|
|
22
154
|
"""
|
|
155
|
+
if ref is None:
|
|
156
|
+
return False
|
|
157
|
+
|
|
158
|
+
# 1. Standard check (preferred)
|
|
159
|
+
if _check_langchain_standard(ref):
|
|
160
|
+
return True
|
|
161
|
+
|
|
162
|
+
# 2. Name-based check (robust fallback for mocks and re-imports)
|
|
163
|
+
return _check_langchain_fallback(ref)
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def is_aip_agents_tool(ref: Any) -> bool:
|
|
167
|
+
"""Check if ref is an aip-agents tool class or instance.
|
|
168
|
+
|
|
169
|
+
Args:
|
|
170
|
+
ref: Object to check.
|
|
171
|
+
|
|
172
|
+
Returns:
|
|
173
|
+
True if ref is from aip_agents.tools package.
|
|
174
|
+
"""
|
|
23
175
|
try:
|
|
24
|
-
|
|
176
|
+
# Check class module
|
|
177
|
+
if isinstance(ref, type):
|
|
178
|
+
return ref.__module__.startswith(_AIP_AGENTS_TOOLS)
|
|
179
|
+
|
|
180
|
+
# Check instance class
|
|
181
|
+
if hasattr(ref, "__class__"):
|
|
182
|
+
return ref.__class__.__module__.startswith(_AIP_AGENTS_TOOLS)
|
|
183
|
+
|
|
184
|
+
return False
|
|
185
|
+
except (AttributeError, TypeError):
|
|
186
|
+
return False
|
|
187
|
+
|
|
25
188
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
189
|
+
def _get_discovered_classes_from_module(module: Any) -> list[type]:
|
|
190
|
+
"""Extract BaseTool subclasses from a module."""
|
|
191
|
+
discovered_classes = []
|
|
192
|
+
for attr_name in dir(module):
|
|
193
|
+
if attr_name.startswith("_"):
|
|
194
|
+
continue
|
|
195
|
+
|
|
196
|
+
try:
|
|
197
|
+
attr = getattr(module, attr_name)
|
|
198
|
+
if inspect.isclass(attr) and is_langchain_tool(attr):
|
|
199
|
+
# Ensure it's not the BaseTool class itself
|
|
200
|
+
if getattr(attr, "__name__", None) != _BASE_TOOL:
|
|
201
|
+
discovered_classes.append(attr)
|
|
202
|
+
except Exception: # pylint: disable=broad-except
|
|
203
|
+
continue
|
|
204
|
+
return discovered_classes
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
def _import_and_map_module(module_name: str, tools_map: dict[str, type]) -> None:
|
|
208
|
+
"""Import a single module and extract its tools."""
|
|
209
|
+
try:
|
|
210
|
+
module = importlib.import_module(module_name)
|
|
211
|
+
classes = _get_discovered_classes_from_module(module)
|
|
212
|
+
for tool_class in classes:
|
|
213
|
+
name = get_tool_name(tool_class)
|
|
214
|
+
if name:
|
|
215
|
+
tools_map[name] = tool_class
|
|
216
|
+
except Exception: # pylint: disable=broad-except
|
|
217
|
+
# Broad catch to skip broken modules during discovery
|
|
31
218
|
pass
|
|
32
219
|
|
|
220
|
+
|
|
221
|
+
def _walk_and_map_package(package: Any, tools_map: dict[str, type]) -> None:
|
|
222
|
+
"""Walk through a package and map all tools found."""
|
|
223
|
+
try:
|
|
224
|
+
# Walk packages using the package's path and name
|
|
225
|
+
for _, module_name, _ in pkgutil.walk_packages(package.__path__, package.__name__ + "."):
|
|
226
|
+
if _should_skip_module(module_name):
|
|
227
|
+
continue # pragma: no cover
|
|
228
|
+
|
|
229
|
+
_import_and_map_module(module_name, tools_map)
|
|
230
|
+
except Exception: # pylint: disable=broad-except
|
|
231
|
+
# Broad catch for walk_packages failure
|
|
232
|
+
pass
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
def _get_all_aip_agents_tools() -> dict[str, type]:
|
|
236
|
+
"""Discover and map all tools in aip_agents.tools (once per session)."""
|
|
237
|
+
global _DISCOVERED_TOOLS # pylint: disable=global-statement
|
|
238
|
+
if _DISCOVERED_TOOLS is None:
|
|
239
|
+
_DISCOVERED_TOOLS = {}
|
|
240
|
+
try:
|
|
241
|
+
package = importlib.import_module(_AIP_AGENTS_TOOLS)
|
|
242
|
+
if hasattr(package, "__path__"):
|
|
243
|
+
_walk_and_map_package(package, _DISCOVERED_TOOLS)
|
|
244
|
+
except (ImportError, AttributeError):
|
|
245
|
+
pass
|
|
246
|
+
return _DISCOVERED_TOOLS
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
@lru_cache(maxsize=128)
|
|
250
|
+
def find_aip_agents_tool_class(name: str) -> type | None:
|
|
251
|
+
"""Find and return a native tool class by tool name.
|
|
252
|
+
|
|
253
|
+
Searches aip_agents.tools submodules for BaseTool subclasses
|
|
254
|
+
with matching 'name' attribute. Uses caching to improve performance.
|
|
255
|
+
|
|
256
|
+
Note:
|
|
257
|
+
Results are discovered once per session and cached. If tools are
|
|
258
|
+
dynamically added to the path after the first call, they may not
|
|
259
|
+
be discovered until the session restarts.
|
|
260
|
+
|
|
261
|
+
Args:
|
|
262
|
+
name (str): The tool name to search for (e.g., "google_serper").
|
|
263
|
+
|
|
264
|
+
Returns:
|
|
265
|
+
type|None: The discovered tool class, or None if not found.
|
|
266
|
+
|
|
267
|
+
Examples:
|
|
268
|
+
>>> find_aip_agents_tool_class("google_serper")
|
|
269
|
+
<class 'aip_agents.tools.web_search.serper_tool.GoogleSerperTool'>
|
|
270
|
+
|
|
271
|
+
>>> find_aip_agents_tool_class("nonexistent")
|
|
272
|
+
None
|
|
273
|
+
"""
|
|
274
|
+
return _get_all_aip_agents_tools().get(name)
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
def clear_discovery_cache() -> None:
|
|
278
|
+
"""Clear the tool discovery cache (internal use for testing)."""
|
|
279
|
+
global _DISCOVERED_TOOLS # pylint: disable=global-statement
|
|
280
|
+
_DISCOVERED_TOOLS = None
|
|
281
|
+
find_aip_agents_tool_class.cache_clear()
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
def is_tool_plugin_decorator(decorator: ast.expr) -> bool:
|
|
285
|
+
"""Check if an AST decorator node is @tool_plugin.
|
|
286
|
+
|
|
287
|
+
Shared by:
|
|
288
|
+
- ToolBundler._has_tool_plugin_decorator() (for bundling)
|
|
289
|
+
- ImportResolver._is_tool_plugin_decorator() (for import resolution)
|
|
290
|
+
|
|
291
|
+
Args:
|
|
292
|
+
decorator: AST decorator expression node to check.
|
|
293
|
+
|
|
294
|
+
Returns:
|
|
295
|
+
True if decorator is @tool_plugin.
|
|
296
|
+
"""
|
|
297
|
+
if isinstance(decorator, ast.Name) and decorator.id == "tool_plugin":
|
|
298
|
+
return True
|
|
299
|
+
if isinstance(decorator, ast.Call) and isinstance(decorator.func, ast.Name) and decorator.func.id == "tool_plugin":
|
|
300
|
+
return True
|
|
33
301
|
return False
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: glaip-sdk
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary: Python SDK for GL AIP (GDP Labs AI Agent Package) -
|
|
3
|
+
Version: 0.7.27
|
|
4
|
+
Summary: Python SDK and CLI for GL AIP (GDP Labs AI Agent Package) - Build, run, and manage AI agents
|
|
5
5
|
Author-email: Raymond Christopher <raymond.christopher@gdplabs.id>
|
|
6
6
|
License: MIT
|
|
7
7
|
Requires-Python: <3.13,>=3.11
|
|
@@ -20,13 +20,16 @@ Requires-Dist: gllm-core-binary>=0.1.0
|
|
|
20
20
|
Requires-Dist: langchain-core>=0.3.0
|
|
21
21
|
Requires-Dist: gllm-tools-binary>=0.1.3
|
|
22
22
|
Provides-Extra: local
|
|
23
|
-
Requires-Dist: aip-agents-binary[local]>=0.
|
|
24
|
-
Requires-Dist: wrapt>=1.17.0; (python_version >= "3.11" and python_version < "3.13") and extra == "local"
|
|
23
|
+
Requires-Dist: aip-agents-binary[local]>=0.6.4; (python_version >= "3.11" and python_version < "3.13") and extra == "local"
|
|
25
24
|
Provides-Extra: memory
|
|
26
|
-
Requires-Dist: aip-agents-binary[memory]>=0.
|
|
25
|
+
Requires-Dist: aip-agents-binary[memory]>=0.6.4; (python_version >= "3.11" and python_version < "3.13") and extra == "memory"
|
|
27
26
|
Provides-Extra: privacy
|
|
28
|
-
Requires-Dist: aip-agents-binary[privacy]>=0.
|
|
29
|
-
|
|
27
|
+
Requires-Dist: aip-agents-binary[privacy]>=0.6.4; (python_version >= "3.11" and python_version < "3.13") and extra == "privacy"
|
|
28
|
+
Provides-Extra: guardrails
|
|
29
|
+
Requires-Dist: aip-agents-binary[guardrails]>=0.6.4; (python_version >= "3.11" and python_version < "3.13") and extra == "guardrails"
|
|
30
|
+
Provides-Extra: pipeline
|
|
31
|
+
Requires-Dist: gllm-pipeline-binary==0.4.23; extra == "pipeline"
|
|
32
|
+
Requires-Dist: gllm-inference-binary<0.6.0,>=0.5.0; extra == "pipeline"
|
|
30
33
|
Provides-Extra: dev
|
|
31
34
|
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
32
35
|
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
@@ -50,16 +53,27 @@ GL stands for **GDP Labs**—GL AIP is our AI Agents Package for building, runni
|
|
|
50
53
|
|
|
51
54
|
### Installation
|
|
52
55
|
|
|
56
|
+
Installing `glaip-sdk` provides both the **Python SDK** and the **`aip` CLI command** in a single package.
|
|
57
|
+
|
|
53
58
|
```bash
|
|
54
59
|
# Using pip (recommended)
|
|
55
60
|
pip install --upgrade glaip-sdk
|
|
56
61
|
|
|
57
62
|
# Using uv (fast alternative)
|
|
58
63
|
uv tool install glaip-sdk
|
|
64
|
+
|
|
65
|
+
# Using pipx (CLI-focused, isolated environment)
|
|
66
|
+
pipx install glaip-sdk
|
|
59
67
|
```
|
|
60
68
|
|
|
61
69
|
**Requirements**: Python 3.11 or 3.12
|
|
62
70
|
|
|
71
|
+
**Updating**: The `aip` CLI automatically detects your installation method and uses the correct update command:
|
|
72
|
+
|
|
73
|
+
- If installed via `pip`: Uses `pip install --upgrade glaip-sdk`
|
|
74
|
+
- If installed via `uv tool install`: Uses `uv tool install --upgrade glaip-sdk`
|
|
75
|
+
- You can also update manually using the same command you used to install
|
|
76
|
+
|
|
63
77
|
## 🐍 Hello World - Python SDK
|
|
64
78
|
|
|
65
79
|
Perfect for building applications and integrations.
|
|
@@ -135,7 +149,7 @@ print("--- Stream complete ---")
|
|
|
135
149
|
|
|
136
150
|
🎉 **SDK Success!** You're now ready to build AI-powered applications with Python.
|
|
137
151
|
|
|
138
|
-
|
|
152
|
+
______________________________________________________________________
|
|
139
153
|
|
|
140
154
|
## 💻 Hello World - CLI
|
|
141
155
|
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
glaip_sdk/__init__.py,sha256=YpePGKbCjwqCwvb8yig8cc64z876ch1oSlTlu-CiWfs,1722
|
|
2
|
+
glaip_sdk/_version.py,sha256=5CHGCxx_36fgmMWuEx6jJ2CzzM-i9eBFyQWFwBi23XE,2259
|
|
3
|
+
glaip_sdk/branding.py,sha256=uF_-c-cg_rFjzJr0NibLiE1Dvv0DpXBXN63wl-Ej88c,11651
|
|
4
|
+
glaip_sdk/exceptions.py,sha256=iAChFClkytXRBLP0vZq1_YjoZxA9i4m4bW1gDLiGR1g,2321
|
|
5
|
+
glaip_sdk/icons.py,sha256=J5THz0ReAmDwIiIooh1_G3Le-mwTJyEjhJDdJ13KRxM,524
|
|
6
|
+
glaip_sdk/ptc.py,sha256=KbitfKSBTgcbgfL4Csy8WQziFx8tYDjO58K3EAPHjfE,5108
|
|
7
|
+
glaip_sdk/rich_components.py,sha256=44Z0V1ZQleVh9gUDGwRR5mriiYFnVGOhm7fFxZYbP8c,4052
|
|
8
|
+
glaip_sdk/agents/__init__.py,sha256=VfYov56edbWuySXFEbWJ_jLXgwnFzPk1KB-9-mfsUCc,776
|
|
9
|
+
glaip_sdk/agents/base.py,sha256=84Ifr3sJ0RT4_iYVTYUWCzUzNMwkyTUUIYTncsvqm-g,52219
|
|
10
|
+
glaip_sdk/agents/component.py,sha256=3cLLCL_x5OTwcEJx0zdst6RTEXOoAS3cTMkYtAOQb6I,7636
|
|
11
|
+
glaip_sdk/cli/__init__.py,sha256=xCCfuF1Yc7mpCDcfhHZTX0vizvtrDSLeT8MJ3V7m5A0,156
|
|
12
|
+
glaip_sdk/cli/account_store.py,sha256=u_memecwEQssustZs2wYBrHbEmKUlDfmmL-zO1F3n3A,19034
|
|
13
|
+
glaip_sdk/cli/agent_config.py,sha256=YAbFKrTNTRqNA6b0i0Q3pH-01rhHDRi5v8dxSFwGSwM,2401
|
|
14
|
+
glaip_sdk/cli/auth.py,sha256=bqOHMGIOCg3KXssme3uJBBjEbK0rCEppQ6oq-gJ-hzA,24276
|
|
15
|
+
glaip_sdk/cli/config.py,sha256=hFKQSdqELQZLKBuFnhEirNLDyPJwEmpQuD8nHuWxokg,3051
|
|
16
|
+
glaip_sdk/cli/constants.py,sha256=zqcVtzfj6huW97gbCmhkFqntge1H-c1vnkGqTazADgU,895
|
|
17
|
+
glaip_sdk/cli/context.py,sha256=--Y5vc6lgoAV7cRoUAr9UxSQaLmkMg29FolA7EwoRqM,3803
|
|
18
|
+
glaip_sdk/cli/display.py,sha256=ojgWdGeD5KUnGOmWNqqK4JP-1EaWHWX--DWze3BmIz0,12137
|
|
19
|
+
glaip_sdk/cli/entrypoint.py,sha256=ODrNZT1c7mFtNuXn4CrJgs06-xIhrqUMi1rKzkYJ21c,516
|
|
20
|
+
glaip_sdk/cli/hints.py,sha256=ca4krG103IS43s5BSLr0-N7uRMpte1_LY4nAXVvgDxo,1596
|
|
21
|
+
glaip_sdk/cli/io.py,sha256=ChP6CRKbtuENsNomNEaMDfPDU0iqO-WuVvl4_y7F2io,3871
|
|
22
|
+
glaip_sdk/cli/main.py,sha256=bi_SBrRWWMcdbl28zbNMrzp8i5SKCKTb2CWN-hLIx94,24680
|
|
23
|
+
glaip_sdk/cli/masking.py,sha256=2lrXQ-pfL7N-vNEQRT1s4Xq3JPDPDT8RC61OdaTtkkc,4060
|
|
24
|
+
glaip_sdk/cli/mcp_validators.py,sha256=cwbz7p_p7_9xVuuF96OBQOdmEgo5UObU6iWWQ2X03PI,10047
|
|
25
|
+
glaip_sdk/cli/pager.py,sha256=TmiMDNpUMuZju7QJ6A_ITqIoEf8Dhv8U6mTXx2Fga1k,7935
|
|
26
|
+
glaip_sdk/cli/resolution.py,sha256=AGvv7kllLcuvk_jdaArJqH3lId4IDEXpHceRZwy14xY,2448
|
|
27
|
+
glaip_sdk/cli/rich_helpers.py,sha256=kO47N8e506rxrN6Oc9mbAWN3Qb536oQPWZy1s9A616g,819
|
|
28
|
+
glaip_sdk/cli/tui_settings.py,sha256=ey9bSlolEj3_SMmjVVV_PY0FkfH1psAFPOl03NlykvI,3867
|
|
29
|
+
glaip_sdk/cli/update_notifier.py,sha256=0zpWxr4nSyz0tiLWyC7EEO2deAnVmsRcVlMV79G2QMI,18049
|
|
30
|
+
glaip_sdk/cli/validators.py,sha256=k4J2ACYJPF6UmWJfENt9OHWdp4RNArVxR3hoeqauO88,5629
|
|
31
|
+
glaip_sdk/cli/commands/__init__.py,sha256=6Z3ASXDut0lAbUX_umBFtxPzzFyqoiZfVeTahThFu1A,219
|
|
32
|
+
glaip_sdk/cli/commands/accounts.py,sha256=vUZYt5Ii-nWKJ1nXRU684NHILpPXj40Xfh4qN1tZsNc,24685
|
|
33
|
+
glaip_sdk/cli/commands/common_config.py,sha256=seZUw_3kV7GlDH31uYHnT_Khq6B3oEuO-fIerXasgEI,3730
|
|
34
|
+
glaip_sdk/cli/commands/configure.py,sha256=ZToy6LSQ3ulEBrB9YpuWiIAiOQ2XQ11MxPNtN3V1V_A,30273
|
|
35
|
+
glaip_sdk/cli/commands/models.py,sha256=kZKqwv2uzfyz8n_7b0hYTT8waaVZMDzVoSXtRvWa9jk,2042
|
|
36
|
+
glaip_sdk/cli/commands/transcripts_original.py,sha256=6KEAP_mMdoNgydpunxLjYl6QJIY-CJorwLTBSF3Cfuo,26416
|
|
37
|
+
glaip_sdk/cli/commands/update.py,sha256=QYz51JdYSbzbLVIH3-Q-qh5MIY4o-LtpbbfMwHYuExA,6658
|
|
38
|
+
glaip_sdk/cli/commands/agents/__init__.py,sha256=W_fOLZMuTod4atEn4Pryl6Kjp19-qcbnJzFnwfgv-dQ,3361
|
|
39
|
+
glaip_sdk/cli/commands/agents/_common.py,sha256=HztukkGoeS_jZ8fHkrijLofdgSe3ic6uYlUaVoPeAvs,17850
|
|
40
|
+
glaip_sdk/cli/commands/agents/create.py,sha256=uCbDfLtCHZwZl1Z-aiMEXoJAWZaKJybZQU1rKReGkzM,5002
|
|
41
|
+
glaip_sdk/cli/commands/agents/delete.py,sha256=WgNOr_JHqD8EF4jBU0vmUphIyAlbLHWbx68KuINxnz0,1684
|
|
42
|
+
glaip_sdk/cli/commands/agents/get.py,sha256=vwYa2GIFgxGPTmNiIPv3EceJ2NI3S92e6qaAVrgJm48,2682
|
|
43
|
+
glaip_sdk/cli/commands/agents/list.py,sha256=u4gGYYMLJZatKVtpIovcxqzU8caIyvZCuou1GzePcAo,4696
|
|
44
|
+
glaip_sdk/cli/commands/agents/run.py,sha256=XtahMOHhh8K3kaUODXGxbuvA4FfcVEO8yBGfCPqP8zY,8187
|
|
45
|
+
glaip_sdk/cli/commands/agents/sync_langflow.py,sha256=NVejCglmKAzy9WUnj_VkutyOl-jF8ro4Rh_JLul3xxs,2329
|
|
46
|
+
glaip_sdk/cli/commands/agents/update.py,sha256=uMX_-DFhOTBS-tboG-JEkGLlf1q-cfj1FGABGIQSh9g,3441
|
|
47
|
+
glaip_sdk/cli/commands/mcps/__init__.py,sha256=QRCdjBQlYc0ocXazbvqA0xA32FnrJF0XvErdb5OwVTE,2834
|
|
48
|
+
glaip_sdk/cli/commands/mcps/_common.py,sha256=YOSOijID1s8UMIm98K6fyXrp1jkHv2ovWS1x9ipFcP0,14578
|
|
49
|
+
glaip_sdk/cli/commands/mcps/connect.py,sha256=dxz4Y43boZivRGwe5jWM5KwwUNNqiZE6HLKb_BZWgD8,2416
|
|
50
|
+
glaip_sdk/cli/commands/mcps/create.py,sha256=QryzfgVeI8XPJRdY2FWnUYWktSBTrwlfJqtoZ5CphNU,4955
|
|
51
|
+
glaip_sdk/cli/commands/mcps/delete.py,sha256=yIEFuzY6DswVblTdEql3k6b6JSNstNqIHg0vZqazTXc,1945
|
|
52
|
+
glaip_sdk/cli/commands/mcps/get.py,sha256=XQns1wfydmN-7fiNGzlXLWTktLr4pwgW1jhoHVf9NYM,7072
|
|
53
|
+
glaip_sdk/cli/commands/mcps/list.py,sha256=e0qtTtkmOsZVsBNu_ytfyFPV0eDtdlVrUfTfcoI8Ivk,2051
|
|
54
|
+
glaip_sdk/cli/commands/mcps/tools.py,sha256=iMi2mfwQS-lE4yhhHRiBrVeK6qG-IfVKGyV1P4stZVs,7089
|
|
55
|
+
glaip_sdk/cli/commands/mcps/update.py,sha256=7a8b77nDdSRz1jwh-0RoSNbcKw6K6XuZsl2qSC1AnS0,6330
|
|
56
|
+
glaip_sdk/cli/commands/shared/__init__.py,sha256=LA1GQMwBSNpeSHifPOJ9V4VjOuGAlVOyD1MIQO1z1ms,465
|
|
57
|
+
glaip_sdk/cli/commands/shared/formatters.py,sha256=QWjVTihmQV7O6MjMI_8tnTycu0rgGHKF5vMh_FanZMg,2499
|
|
58
|
+
glaip_sdk/cli/commands/tools/__init__.py,sha256=KkcMYJNe164V25Eqp2Bygwf49LIcyECm3r5k59p6cQU,2111
|
|
59
|
+
glaip_sdk/cli/commands/tools/_common.py,sha256=IFJEoyP-lphu0X3eR6txr4QD8Qr1g-AP1kLtahZ29Fo,2190
|
|
60
|
+
glaip_sdk/cli/commands/tools/create.py,sha256=X0xSKG9MyuZC_ZdSGHX2RIk7xGvlfNzgT1WSobMA-Es,7134
|
|
61
|
+
glaip_sdk/cli/commands/tools/delete.py,sha256=lSACJivmpT4Z7KVWOYVErdcWb487UpnlBpjCrlMI_lM,1696
|
|
62
|
+
glaip_sdk/cli/commands/tools/get.py,sha256=VBexy7ZJI418OCYBGQhn5vUO9r22kTctGrTih78qDa8,3530
|
|
63
|
+
glaip_sdk/cli/commands/tools/list.py,sha256=cHHc5pj-NWJaGXpAgdbtuA1gOrqjecUk83eUOuFrp78,1991
|
|
64
|
+
glaip_sdk/cli/commands/tools/script.py,sha256=6mKmMlTkIc0rhvF4l3k4Tyf2d0nOtSJNVd12uR7iF18,1523
|
|
65
|
+
glaip_sdk/cli/commands/tools/update.py,sha256=fptBM6AnrkZQkHaqvDSR149kwFJXBGujpKJ8q9WadDQ,3599
|
|
66
|
+
glaip_sdk/cli/commands/transcripts/__init__.py,sha256=CSipOETWNbnzXts12qis35lkLChAf8-tJJ3Jlz4si6k,2870
|
|
67
|
+
glaip_sdk/cli/commands/transcripts/_common.py,sha256=O70Xg9jFXpz_zDzgWDSJxTmkEl-VkfegAGxzJsa1jDY,238
|
|
68
|
+
glaip_sdk/cli/commands/transcripts/clear.py,sha256=5E-gpazli2Y-KwRnZ44BRgDlFUYQErfc7wEGQ9QzrCc,157
|
|
69
|
+
glaip_sdk/cli/commands/transcripts/detail.py,sha256=tLahGWMPZxXk9xlvM2ye8elgq_b73QQLKzHBO8nCJ_g,159
|
|
70
|
+
glaip_sdk/cli/core/__init__.py,sha256=HTQqpijKNts6bYnwY97rpP3J324phoQmGFi6OXqi0E4,2116
|
|
71
|
+
glaip_sdk/cli/core/context.py,sha256=I22z5IhZ09g5FPtMycDGU9Aj20Qv3TOQLhA5enaU2qk,3970
|
|
72
|
+
glaip_sdk/cli/core/output.py,sha256=hj5F1M_rEqr4CChmdyW1QzGiWL0Mwzf-BFw-d6pjhjY,28304
|
|
73
|
+
glaip_sdk/cli/core/prompting.py,sha256=U6cxTSBNSa5-55M4W9zWCD_QSkkV912xTeOIRwXSDW8,21046
|
|
74
|
+
glaip_sdk/cli/core/rendering.py,sha256=QgbYzTcKH8wa7-BdR3UgiS3KBx1QYZjDcV2Hyy5ox_Q,5878
|
|
75
|
+
glaip_sdk/cli/parsers/__init__.py,sha256=NzLrSH6GOdNoewXtKNpB6GwrauA8rb_IGYV6cz5Hn3o,113
|
|
76
|
+
glaip_sdk/cli/parsers/json_input.py,sha256=kxoxeIlgfsaH2jhe6apZAgSxAtwlpSINLTMRsZZYboQ,5630
|
|
77
|
+
glaip_sdk/cli/slash/__init__.py,sha256=J9TPL2UcNTkW8eifG6nRmAEGHhyEgdYMYk4cHaaObC0,386
|
|
78
|
+
glaip_sdk/cli/slash/accounts_controller.py,sha256=SceJlc2F2ZdlSDkuWO3Js3akL89bVtQLyGM_oA-F2qI,24928
|
|
79
|
+
glaip_sdk/cli/slash/accounts_shared.py,sha256=Mq5HxlI0YsVEQ0KKISWvyBZhzOFFWCzwRbhF5xwvUbM,2626
|
|
80
|
+
glaip_sdk/cli/slash/agent_session.py,sha256=tuVOme-NbEyr6rwJvsBEKZYWQmsaRf4piJeRvIGu0ns,11384
|
|
81
|
+
glaip_sdk/cli/slash/prompt.py,sha256=q4f1c2zr7ZMUeO6AgOBF2Nz4qgMOXrVPt6WzPRQMbAM,8501
|
|
82
|
+
glaip_sdk/cli/slash/remote_runs_controller.py,sha256=iLl4a-mu9QU7dcedgEILewPtDIVtFUJkbKGtcx1F66U,21445
|
|
83
|
+
glaip_sdk/cli/slash/session.py,sha256=lWK4iCb4HGnHZf251kP_1iyH8J0BaTlwSs3XJWfYOuI,76146
|
|
84
|
+
glaip_sdk/cli/slash/tui/__init__.py,sha256=N0nRo_IGIQ3l5LikZTDrwbK5HX9nqYNzwpFeM9crJQg,1109
|
|
85
|
+
glaip_sdk/cli/slash/tui/accounts.tcss,sha256=5iVZZfS10CTJhnoZ9AFJejtj8nyQXH9xV7u9k8jSkGE,2411
|
|
86
|
+
glaip_sdk/cli/slash/tui/accounts_app.py,sha256=CFjAHV0JbTSMoMoCQ0CIGa_8C8xypjHgV-VLDji-uzk,73590
|
|
87
|
+
glaip_sdk/cli/slash/tui/background_tasks.py,sha256=SAe1mV2vXB3mJcSGhelU950vf8Lifjhws9iomyIVFKw,2422
|
|
88
|
+
glaip_sdk/cli/slash/tui/clipboard.py,sha256=Rb1n6nYsjTgMfSMTVo4HisW8ZM3na2REtd3OHEy-Lz0,11255
|
|
89
|
+
glaip_sdk/cli/slash/tui/context.py,sha256=mzI4TDXnfZd42osACp5uo10d10y1_A0z6IxRK1KVoVk,3320
|
|
90
|
+
glaip_sdk/cli/slash/tui/indicators.py,sha256=jV3fFvEVWQ0inWJJ-B1fMsdkF0Uq2zwX3xcl0YWPHSE,11768
|
|
91
|
+
glaip_sdk/cli/slash/tui/keybind_registry.py,sha256=_rK05BxTxNudYc4iJ9gDxpgeUkjDAq8rarIT-9A-jyM,6739
|
|
92
|
+
glaip_sdk/cli/slash/tui/loading.py,sha256=Ku7HyQ_h-r2dJQ5aIEaCOi5PUu5gSsYle8oiKHIxfKI,2336
|
|
93
|
+
glaip_sdk/cli/slash/tui/remote_runs_app.py,sha256=HtjrSKC_mqrzVBmK3ycehaRtaBEK3HsqDDkDp16kbvc,30356
|
|
94
|
+
glaip_sdk/cli/slash/tui/terminal.py,sha256=ZAC3sB17TGpl-GFeRVm_nI8DQTN3pyti3ynlZ41wT_A,12323
|
|
95
|
+
glaip_sdk/cli/slash/tui/toast.py,sha256=3M7mtJAZfEWtMNhC8f1SpUCDZ_jlqhXRt_ll2Mohfg8,12435
|
|
96
|
+
glaip_sdk/cli/slash/tui/layouts/__init__.py,sha256=KT77pZHa7Wz84QlHYT2mfhQ_AXUA-T0eHv_HtAvc1ac,473
|
|
97
|
+
glaip_sdk/cli/slash/tui/layouts/harlequin.py,sha256=JOsaK18jTojzZ-Py-87foxfijuRDWwi8LIWmqM6qS0k,5644
|
|
98
|
+
glaip_sdk/cli/slash/tui/theme/__init__.py,sha256=rtM2ik83YNCRcI1qh_Sf3rnxco2OvCNNT3NbHY6cLvw,432
|
|
99
|
+
glaip_sdk/cli/slash/tui/theme/catalog.py,sha256=G52eU3h8YI9D8XUALVg1KVZ4Lq65VnZdgPS3F_P7XLE,2544
|
|
100
|
+
glaip_sdk/cli/slash/tui/theme/manager.py,sha256=LBnxEMIwz-8cAlZGYk5tIoAJbOJyGYsmDlyuGJ-LlX4,3945
|
|
101
|
+
glaip_sdk/cli/slash/tui/theme/tokens.py,sha256=ympMRny_d-gHtmnPR-lmNZ-C9SGBy2q-MH81l0L1h-Y,1423
|
|
102
|
+
glaip_sdk/cli/transcript/__init__.py,sha256=yiYHyNtebMCu3BXu56Xm5RBC2tDc865q8UGPnoe6QRs,920
|
|
103
|
+
glaip_sdk/cli/transcript/cache.py,sha256=Wi1uln6HP1U6F-MRTrfnxi9bn6XJTxwWXhREIRPoMqQ,17439
|
|
104
|
+
glaip_sdk/cli/transcript/capture.py,sha256=t8j_62cC6rhb51oCluZd17N04vcXqyjkhPRcRd3ZcmM,10291
|
|
105
|
+
glaip_sdk/cli/transcript/export.py,sha256=reCvrZVzli8_LzYe5ZNdaa-MwZ1ov2RjnDzKZWr_6-E,1117
|
|
106
|
+
glaip_sdk/cli/transcript/history.py,sha256=IAUaY41QCr9jKgQ1t8spDJiO3Me5r1vAoTX47QQu5z0,26217
|
|
107
|
+
glaip_sdk/cli/transcript/launcher.py,sha256=z5ivkPXDQJpATIqtRLUK8jH3p3WIZ72PvOPqYRDMJvw,2327
|
|
108
|
+
glaip_sdk/cli/transcript/viewer.py,sha256=Y4G40WR6v1g4TfxRbGSZqdrqhLcqBxoWkQgToQoGGxM,13198
|
|
109
|
+
glaip_sdk/client/__init__.py,sha256=s2REOumgE8Z8lA9dWJpwXqpgMdzSELSuCQkZ7sYngX0,381
|
|
110
|
+
glaip_sdk/client/_schedule_payloads.py,sha256=9BXa75CCx3clsKgwmG9AWyvhPY6kVwzQtoLvTTw40CQ,2759
|
|
111
|
+
glaip_sdk/client/agent_runs.py,sha256=tZSFEZZ3Yx0uYRgnwkLe-X0TlmgKJQ-ivzb6SrVnxY8,4862
|
|
112
|
+
glaip_sdk/client/agents.py,sha256=nnR9gSWBTLNxnifednnSIrJy734EdziAArZH7E7HNGg,58497
|
|
113
|
+
glaip_sdk/client/base.py,sha256=_LAAaCLLPGi2tpsGIpAJqcbEIUShnGLoB2hyWwcRMa8,19133
|
|
114
|
+
glaip_sdk/client/hitl.py,sha256=dO_q-43miI0oGrJDyUrZ9MbettQp0hai4kjvPaYm010,3545
|
|
115
|
+
glaip_sdk/client/main.py,sha256=QbFBA7tlX4znMCp860-gw23Fhv9GAabSeMRoxX2tavc,9184
|
|
116
|
+
glaip_sdk/client/mcps.py,sha256=-JdaIkg0QE3egJ8p93eoOPULup8KbM2WRCcwlvqlqrA,14492
|
|
117
|
+
glaip_sdk/client/run_rendering.py,sha256=BKe9a_KnL58XNcGlLvbhJAZBh57e8-ykYiqp0bbS4ZE,28860
|
|
118
|
+
glaip_sdk/client/schedules.py,sha256=ZfPzCYzk4YRuPkjkTTgLe5Rqa07mi-h2WmP4H91mMZ0,14113
|
|
119
|
+
glaip_sdk/client/shared.py,sha256=esHlsR0LEfL-pFDaWebQjKKOLl09jsRY-2pllBUn4nU,522
|
|
120
|
+
glaip_sdk/client/tools.py,sha256=NzQTIsn-bjYN9EfGWCBqqawCIVs7auaccFv7BM_3oCc,23871
|
|
121
|
+
glaip_sdk/client/validators.py,sha256=ioF9VCs-LG2yLkaRDd7Hff74lojDZZ0_Q3CiLbdm1RY,8381
|
|
122
|
+
glaip_sdk/client/payloads/agent/__init__.py,sha256=gItEH2zt2secVq6n60oGA-ztdE5mc0GLECn-QMX47ew,558
|
|
123
|
+
glaip_sdk/client/payloads/agent/requests.py,sha256=zmyKtR9UuUNwGHzInBHqeurrfrUsshchFafe_5tiEX8,17375
|
|
124
|
+
glaip_sdk/client/payloads/agent/responses.py,sha256=1eRMI4JAIGqTB5zY_7D9ILQDRHPXR06U7JqHSmRp3Qs,1243
|
|
125
|
+
glaip_sdk/config/constants.py,sha256=AWxzOwy8QLv6wYSaOvv5xqAOb7ksgfMB2lkj0f0F1FM,1801
|
|
126
|
+
glaip_sdk/guardrails/__init__.py,sha256=C1gpL2himmv0FfAsR1ywuvBkwXP54-ziPeqqdAo207k,2677
|
|
127
|
+
glaip_sdk/guardrails/serializer.py,sha256=fh4H8GBxXkT5f2wc75bRbU56G1F6BNNgHFLA1UchaY0,2925
|
|
128
|
+
glaip_sdk/hitl/__init__.py,sha256=hi_SwW1oBimNnSFPo9Yc-mZWVPzpytlnDWNq2h1_fPo,1572
|
|
129
|
+
glaip_sdk/hitl/base.py,sha256=EUN2igzydlYZ6_qmHU46Gyk3Bk9uyalZkCJ06XMRKJ8,1484
|
|
130
|
+
glaip_sdk/hitl/callback.py,sha256=icKxxa_f8lxFQuXrZVoTt6baWivFL4a4YioWG_U_8k8,1336
|
|
131
|
+
glaip_sdk/hitl/local.py,sha256=7Qf-O62YcVXpOHdckm1-g4wwvHQCvwg4D1ikK-xwgqA,4642
|
|
132
|
+
glaip_sdk/hitl/remote.py,sha256=cdO-wWwRGdyb0HYNMwIvHfvKwOqhqp-l7efnaC9b85M,18914
|
|
133
|
+
glaip_sdk/mcps/__init__.py,sha256=4jYrt8K__oxrxexHRcmnRBXt-W_tbJN61H9Kf2lVh4Q,551
|
|
134
|
+
glaip_sdk/mcps/base.py,sha256=jWwHjDF67_mtDGRp9p5SolANjVeB8jt1PSwPBtX876M,11654
|
|
135
|
+
glaip_sdk/models/__init__.py,sha256=UUMCfUE17l8XEGak2zMm0GIMIyJd2tXb_KdHL4wSFpo,3646
|
|
136
|
+
glaip_sdk/models/_provider_mappings.py,sha256=aHpFHzT4estAv4x_cjTibinHifM-btOg44jZjRBG97I,3045
|
|
137
|
+
glaip_sdk/models/_validation.py,sha256=URPDiDLmgKKW4AXQO4QjZlw7Bq27dVeRJkup0TB48qE,2882
|
|
138
|
+
glaip_sdk/models/agent.py,sha256=rZarI1268hh_XuM1AKjuX3YN9_b1z--8e9cFKx0KRlg,1524
|
|
139
|
+
glaip_sdk/models/agent_runs.py,sha256=rK0fTpivukyiqIxrS86evgNtfEwV8Xecq_NeUakFUFw,3829
|
|
140
|
+
glaip_sdk/models/common.py,sha256=O30MEGO2nKcGhKbnPNkoGzwNvDVUBjM-uU-Tpigaz5Y,1180
|
|
141
|
+
glaip_sdk/models/constants.py,sha256=dRO1IWgdhaDYwoKu5jGZmcEovPKvFeCjWHCE_VWg2Xk,4429
|
|
142
|
+
glaip_sdk/models/mcp.py,sha256=ti_8MUf4k7qbR1gPs9JhqhybMcLUhZxEELtHQrTv2-U,944
|
|
143
|
+
glaip_sdk/models/model.py,sha256=l8VFKwOH-sjWh6looiDKGpAkIL535pK5rt9LC-TvqMY,5616
|
|
144
|
+
glaip_sdk/models/schedule.py,sha256=gfL_b9abaWToMtnCD_iXOsmonQ1sq2dZoLcInvCzZ2o,7248
|
|
145
|
+
glaip_sdk/models/tool.py,sha256=w3nL2DqyCtGgDPCd40Asi9obRGghQjLlC9Vt_p32Mpc,951
|
|
146
|
+
glaip_sdk/payload_schemas/__init__.py,sha256=nTJmzwn2BbEpzZdq-8U24eVHQHxqYO3_-SABMV9lS_Q,142
|
|
147
|
+
glaip_sdk/payload_schemas/agent.py,sha256=tQlTOuRQx4e8XUsEmSNgD8NMURzChYdYwkfKbGpK4nY,3254
|
|
148
|
+
glaip_sdk/payload_schemas/guardrails.py,sha256=5e0BrS1isBs9Wzuz3ktnB9YnpfZJHMIsvmS0wDH36E4,1162
|
|
149
|
+
glaip_sdk/registry/__init__.py,sha256=mjvElYE-wwmbriGe-c6qy4on0ccEuWxW_EWWrSbptCw,1667
|
|
150
|
+
glaip_sdk/registry/agent.py,sha256=F0axW4BIUODqnttIOzxnoS5AqQkLZ1i48FTeZNnYkhA,5203
|
|
151
|
+
glaip_sdk/registry/base.py,sha256=0x2ZBhiERGUcf9mQeWlksSYs5TxDG6FxBYQToYZa5D4,4143
|
|
152
|
+
glaip_sdk/registry/mcp.py,sha256=kNJmiijIbZL9Btx5o2tFtbaT-WG6O4Xf_nl3wz356Ow,7978
|
|
153
|
+
glaip_sdk/registry/tool.py,sha256=c0Ja4rFYMOKs_1yjDLDZxCId4IjQzprwXzX0iIL8Fio,14979
|
|
154
|
+
glaip_sdk/runner/__init__.py,sha256=orJ3nLR9P-n1qMaAMWZ_xRS4368YnDpdltg-bX5BlUk,2210
|
|
155
|
+
glaip_sdk/runner/base.py,sha256=KIjcSAyDCP9_mn2H4rXR5gu1FZlwD9pe0gkTBmr6Yi4,2663
|
|
156
|
+
glaip_sdk/runner/deps.py,sha256=Lv8LdIF6H4JGzzvLmi-MgG72RJYgB-MsQNRx8yY7cl4,3956
|
|
157
|
+
glaip_sdk/runner/langgraph.py,sha256=2SHQA62wXSXGwPBo5ngPF6LPncFHw-dqidbwFhLnWBU,42383
|
|
158
|
+
glaip_sdk/runner/logging_config.py,sha256=OrQgW23t42qQRqEXKH8U4bFg4JG5EEkUJTlbvtU65iE,2528
|
|
159
|
+
glaip_sdk/runner/ptc_adapter.py,sha256=GGN74y1ykbxbqLIWgUIWCHlfkOqFUqOmjKzmJPQ8nmA,3029
|
|
160
|
+
glaip_sdk/runner/mcp_adapter/__init__.py,sha256=Rdttfg3N6kg3-DaTCKqaGXKByZyBt0Mwf6FV8s_5kI8,462
|
|
161
|
+
glaip_sdk/runner/mcp_adapter/base_mcp_adapter.py,sha256=ic56fKgb3zgVZZQm3ClWUZi7pE1t4EVq8mOg6AM6hdA,1374
|
|
162
|
+
glaip_sdk/runner/mcp_adapter/langchain_mcp_adapter.py,sha256=b58GuadPz7q7aXoJyTYs0eeJ_oqp-wLR1tcr_5cbV1s,9723
|
|
163
|
+
glaip_sdk/runner/mcp_adapter/mcp_config_builder.py,sha256=cNmhu8oGAdGkgxj5QBkS8QecZ5KfCIKUBQ59Mv_VMxk,4205
|
|
164
|
+
glaip_sdk/runner/tool_adapter/__init__.py,sha256=scv8sSPxSWjlSNEace03R230YbmWgphLgqINKvDjWmM,480
|
|
165
|
+
glaip_sdk/runner/tool_adapter/base_tool_adapter.py,sha256=nL--eicV0St5_0PZZSEhRurHDZHNwhGN2cKOUh0C5IY,1400
|
|
166
|
+
glaip_sdk/runner/tool_adapter/langchain_tool_adapter.py,sha256=SgfQM5NgKyYBs34juxv3TCEicJbKgFIVPPZa22tA9AU,8484
|
|
167
|
+
glaip_sdk/schedules/__init__.py,sha256=Ty__lE8ta3a6O7EiEsSXliVOwA3EBLKxKRsjAJt2WUg,482
|
|
168
|
+
glaip_sdk/schedules/base.py,sha256=ZRKWknoxQOYMhX8mjQ7S7oqpy6Wr0xdbzcgIrycsEQ8,9727
|
|
169
|
+
glaip_sdk/tools/__init__.py,sha256=rhGzEqQFCzeMrxmikBuNrMz4PyYczwic28boDKVmoHs,585
|
|
170
|
+
glaip_sdk/tools/base.py,sha256=KRaWWX5cKAvEKtBr4iSOaKQlQ973A4pNOW2KVvA1aYs,17353
|
|
171
|
+
glaip_sdk/utils/__init__.py,sha256=5a1kNLtUriwd1qAT6RU083GOyABS7LMZQacDP4yS9S4,2830
|
|
172
|
+
glaip_sdk/utils/agent_config.py,sha256=T4YbLaNYq2HzlkXCmwEmErKoDtxu-2KKcmFvnhqAMhw,7484
|
|
173
|
+
glaip_sdk/utils/bundler.py,sha256=fLumFj1MqqqGA1Mwn05v_cEKPALv3rIPEMvaURpxZ80,15171
|
|
174
|
+
glaip_sdk/utils/client.py,sha256=otPUOIDvLCCsvFBNR8YMZFtRrORggmvvlFjl3YeeTqQ,3121
|
|
175
|
+
glaip_sdk/utils/client_utils.py,sha256=hzHxxNuM37mK4HhgIdS0qg4AqjAA5ai2irPO6Nr1Uzo,15350
|
|
176
|
+
glaip_sdk/utils/datetime_helpers.py,sha256=QLknNLEAY56628-MTRKnCXAffATkF33erOqBubKmU98,1544
|
|
177
|
+
glaip_sdk/utils/discovery.py,sha256=DbnPuCXuS5mwTZ9fMfsPHQDJltFV99Wf8Em0YttktVU,1994
|
|
178
|
+
glaip_sdk/utils/display.py,sha256=zu3SYqxj9hPyEN8G1vIXv_yXBkV8jLLCXEg2rs8NlzM,4485
|
|
179
|
+
glaip_sdk/utils/export.py,sha256=1NxxE3wGsA1auzecG5oJw5ELB4VmPljoeIkGhrGOh1I,5006
|
|
180
|
+
glaip_sdk/utils/general.py,sha256=3HSVIopUsIymPaim-kP2lqLX75TkkdIVLe6g3UKabZ0,1507
|
|
181
|
+
glaip_sdk/utils/import_export.py,sha256=RCvoydm_6_L7_J1igcE6IYDunqgS5mQUbWT4VGrytMw,5510
|
|
182
|
+
glaip_sdk/utils/import_resolver.py,sha256=82kSV9eAlzBiwPI8rkeXVrNjlpXa5q9fvRoJxE6b-6U,27706
|
|
183
|
+
glaip_sdk/utils/instructions.py,sha256=MTk93lsq3I8aRnvnRMSXXNMzcpnaIM_Pm3Aiiiq3GBc,2997
|
|
184
|
+
glaip_sdk/utils/resource_refs.py,sha256=vF34kyAtFBLnaKnQVrsr2st1JiSxVbIZ4yq0DelJvCI,5966
|
|
185
|
+
glaip_sdk/utils/run_renderer.py,sha256=d_VMI6LbvHPUUeRmGqh5wK_lHqDEIAcym2iqpbtDad0,1365
|
|
186
|
+
glaip_sdk/utils/runtime_config.py,sha256=frbnCVCRVMNXiQODOBZtDSkbys18xayZzpkhJjlpJEs,14117
|
|
187
|
+
glaip_sdk/utils/serialization.py,sha256=z-qpvWLSBrGK3wbUclcA1UIKLXJedTnMSwPdq-FF4lo,13308
|
|
188
|
+
glaip_sdk/utils/sync.py,sha256=71egWp5qm_8tYpWZyGazvnP4NnyW16rcmzjGVicmQEE,6043
|
|
189
|
+
glaip_sdk/utils/tool_detection.py,sha256=B7xze014TZyqWI4JqLhkZrbtT5h32CjQEXRswtdcljI,9808
|
|
190
|
+
glaip_sdk/utils/tool_storage_provider.py,sha256=lampwUeWu4Uy8nBG7C4ZT-M6AHoWZS0m67HdLx21VDg,5396
|
|
191
|
+
glaip_sdk/utils/validation.py,sha256=hB_k3lvHdIFUiSwHStrC0Eqnhx0OG2UvwqASeem0HuQ,6859
|
|
192
|
+
glaip_sdk/utils/a2a/__init__.py,sha256=_X8AvDOsHeppo5n7rP5TeisVxlAdkZDTFReBk_9lmxo,876
|
|
193
|
+
glaip_sdk/utils/a2a/event_processor.py,sha256=9Mjvvd4_4VDYeOkAI7_vF7N7_Dn0Kn23ramKyK32b3c,5993
|
|
194
|
+
glaip_sdk/utils/rendering/__init__.py,sha256=cJhhBEf46RnmUGJ1fivGkFuCoOn2pkJkSuRWoo1xlhE,3608
|
|
195
|
+
glaip_sdk/utils/rendering/formatting.py,sha256=tP-CKkKFDhiAHS1vpJQ3D6NmPVl0TX1ZOwBOoxia2eE,8009
|
|
196
|
+
glaip_sdk/utils/rendering/models.py,sha256=LtBgF0CyFnVW_oLAR8O62P-h8auCJwlgZaMUhmE8V-0,2882
|
|
197
|
+
glaip_sdk/utils/rendering/state.py,sha256=54ViIHCGoBHQE4yMOrB2ToK3FZuv7SsD0Qcyq3CEKe4,6540
|
|
198
|
+
glaip_sdk/utils/rendering/step_tree_state.py,sha256=EItKFTV2FYvm5pSyHbXk7lkzJ-0DW_s-VENIBZe8sp4,4062
|
|
199
|
+
glaip_sdk/utils/rendering/timing.py,sha256=__F1eFPoocm7Dps7Y1O_gJV24HsNTbx_FMiqEDN4T9o,1063
|
|
200
|
+
glaip_sdk/utils/rendering/layout/__init__.py,sha256=Lz8eLXDO28wyK36BhKJ6o9YmsRjmQZrNhvZ2wwSjvPw,1609
|
|
201
|
+
glaip_sdk/utils/rendering/layout/panels.py,sha256=c7EhMznVxIiclrFERJuc3qem21t7sQI6BDcmujtdSAk,3905
|
|
202
|
+
glaip_sdk/utils/rendering/layout/progress.py,sha256=GhOhUPNQd8-e6JxTJsV76s6wIYhtTw2G1C3BY9yhtRk,6418
|
|
203
|
+
glaip_sdk/utils/rendering/layout/summary.py,sha256=K-gkDxwUxF67-4nF20y6hv95QEwRZCQI9Eb4KbA8eQY,2325
|
|
204
|
+
glaip_sdk/utils/rendering/layout/transcript.py,sha256=vbfywtbWCDzLY9B5Vvf4crhomftFq-UEz7zqySiLrD8,19052
|
|
205
|
+
glaip_sdk/utils/rendering/renderer/__init__.py,sha256=lpf0GnNGcPb8gq_hJM6Puflwy3eTigVK9qXP01nWRv0,1754
|
|
206
|
+
glaip_sdk/utils/rendering/renderer/base.py,sha256=CpkkwiTmJHi8j2EGBva7WBpVWNte0VoDGgF6UbiJ9J8,41929
|
|
207
|
+
glaip_sdk/utils/rendering/renderer/config.py,sha256=FgSAZpG1g7Atm2MXg0tY0lOEciY90MR-RO6YuGFhp0E,626
|
|
208
|
+
glaip_sdk/utils/rendering/renderer/console.py,sha256=4cLOw4Q1fkHkApuj6dWW8eYpeYdcT0t2SO5MbVt5UTc,1844
|
|
209
|
+
glaip_sdk/utils/rendering/renderer/debug.py,sha256=qyqFXltYzKEqajwlu8QFSBU3P46JzMzIZqurejhx14o,5907
|
|
210
|
+
glaip_sdk/utils/rendering/renderer/factory.py,sha256=3p1Uga_UEN-wwTNerNaDB3qf3-yu1a9DfH4weXxeRdA,4711
|
|
211
|
+
glaip_sdk/utils/rendering/renderer/stream.py,sha256=htqm8pujXGKJncO86d-dfHixv9btACBgwPbO_brUQio,7812
|
|
212
|
+
glaip_sdk/utils/rendering/renderer/summary_window.py,sha256=ffBsVHaUyy2RfIuXLjhfiO31HeeprVcPP_pe4cjDLsU,2286
|
|
213
|
+
glaip_sdk/utils/rendering/renderer/thinking.py,sha256=09dYbtzpOrG5SlhuqpW9uqPCpiijPQuIntsNboMDDJ8,9399
|
|
214
|
+
glaip_sdk/utils/rendering/renderer/toggle.py,sha256=N3LB4g1r8EdDkQyItQdrP5gig6Sszz9uZ6WJuD0KUmk,5396
|
|
215
|
+
glaip_sdk/utils/rendering/renderer/tool_panels.py,sha256=ev7gZsakUMxfG4JoS_bBDey_MwMDyOLwVhTO536v608,17246
|
|
216
|
+
glaip_sdk/utils/rendering/renderer/transcript_mode.py,sha256=FBZVQYrXF5YH79g3gYizE6P_yL5k9ZSGViCmZhv6C4g,6013
|
|
217
|
+
glaip_sdk/utils/rendering/steps/__init__.py,sha256=y1BJUPeT4bclXPmsy6B66KNZWiY8W5p-LnLnlrxynP8,840
|
|
218
|
+
glaip_sdk/utils/rendering/steps/event_processor.py,sha256=sGOHpxm7WmKxxY68l9Su6_YbDkXcoFblwkv1fToSX5k,29048
|
|
219
|
+
glaip_sdk/utils/rendering/steps/format.py,sha256=Chnq7OBaj8XMeBntSBxrX5zSmrYeGcOszooNeBe7_pM,5654
|
|
220
|
+
glaip_sdk/utils/rendering/steps/manager.py,sha256=BiBmTeQMQhjRMykgICXsXNYh1hGsss-fH9BIGVMWFi0,13194
|
|
221
|
+
glaip_sdk/utils/rendering/viewer/__init__.py,sha256=XrxmE2cMAozqrzo1jtDFm8HqNtvDcYi2mAhXLXn5CjI,457
|
|
222
|
+
glaip_sdk/utils/rendering/viewer/presenter.py,sha256=mlLMTjnyeyPVtsyrAbz1BJu9lFGQSlS-voZ-_Cuugv0,5725
|
|
223
|
+
glaip_sdk-0.7.27.dist-info/METADATA,sha256=HyJsU7u9HVgBLRBB98dFPY2oZOI0js_B8O00Ce-eSiE,8686
|
|
224
|
+
glaip_sdk-0.7.27.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
225
|
+
glaip_sdk-0.7.27.dist-info/entry_points.txt,sha256=NkhO6FfgX9Zrjn63GuKphf-dLw7KNJvucAcXc7P3aMk,54
|
|
226
|
+
glaip_sdk-0.7.27.dist-info/top_level.txt,sha256=td7yXttiYX2s94-4wFhv-5KdT0rSZ-pnJRSire341hw,10
|
|
227
|
+
glaip_sdk-0.7.27.dist-info/RECORD,,
|