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.
Files changed (135) hide show
  1. glaip_sdk/agents/base.py +283 -30
  2. glaip_sdk/agents/component.py +233 -0
  3. glaip_sdk/branding.py +113 -2
  4. glaip_sdk/cli/account_store.py +15 -0
  5. glaip_sdk/cli/auth.py +14 -8
  6. glaip_sdk/cli/commands/accounts.py +1 -1
  7. glaip_sdk/cli/commands/agents/__init__.py +116 -0
  8. glaip_sdk/cli/commands/agents/_common.py +562 -0
  9. glaip_sdk/cli/commands/agents/create.py +155 -0
  10. glaip_sdk/cli/commands/agents/delete.py +64 -0
  11. glaip_sdk/cli/commands/agents/get.py +89 -0
  12. glaip_sdk/cli/commands/agents/list.py +129 -0
  13. glaip_sdk/cli/commands/agents/run.py +264 -0
  14. glaip_sdk/cli/commands/agents/sync_langflow.py +72 -0
  15. glaip_sdk/cli/commands/agents/update.py +112 -0
  16. glaip_sdk/cli/commands/common_config.py +1 -1
  17. glaip_sdk/cli/commands/configure.py +1 -2
  18. glaip_sdk/cli/commands/mcps/__init__.py +94 -0
  19. glaip_sdk/cli/commands/mcps/_common.py +459 -0
  20. glaip_sdk/cli/commands/mcps/connect.py +82 -0
  21. glaip_sdk/cli/commands/mcps/create.py +152 -0
  22. glaip_sdk/cli/commands/mcps/delete.py +73 -0
  23. glaip_sdk/cli/commands/mcps/get.py +212 -0
  24. glaip_sdk/cli/commands/mcps/list.py +69 -0
  25. glaip_sdk/cli/commands/mcps/tools.py +235 -0
  26. glaip_sdk/cli/commands/mcps/update.py +190 -0
  27. glaip_sdk/cli/commands/models.py +2 -4
  28. glaip_sdk/cli/commands/shared/__init__.py +21 -0
  29. glaip_sdk/cli/commands/shared/formatters.py +91 -0
  30. glaip_sdk/cli/commands/tools/__init__.py +69 -0
  31. glaip_sdk/cli/commands/tools/_common.py +80 -0
  32. glaip_sdk/cli/commands/tools/create.py +228 -0
  33. glaip_sdk/cli/commands/tools/delete.py +61 -0
  34. glaip_sdk/cli/commands/tools/get.py +103 -0
  35. glaip_sdk/cli/commands/tools/list.py +69 -0
  36. glaip_sdk/cli/commands/tools/script.py +49 -0
  37. glaip_sdk/cli/commands/tools/update.py +102 -0
  38. glaip_sdk/cli/commands/transcripts/__init__.py +90 -0
  39. glaip_sdk/cli/commands/transcripts/_common.py +9 -0
  40. glaip_sdk/cli/commands/transcripts/clear.py +5 -0
  41. glaip_sdk/cli/commands/transcripts/detail.py +5 -0
  42. glaip_sdk/cli/commands/{transcripts.py → transcripts_original.py} +2 -1
  43. glaip_sdk/cli/commands/update.py +163 -17
  44. glaip_sdk/cli/config.py +1 -0
  45. glaip_sdk/cli/entrypoint.py +20 -0
  46. glaip_sdk/cli/main.py +112 -35
  47. glaip_sdk/cli/pager.py +3 -3
  48. glaip_sdk/cli/resolution.py +2 -1
  49. glaip_sdk/cli/slash/accounts_controller.py +3 -1
  50. glaip_sdk/cli/slash/agent_session.py +1 -1
  51. glaip_sdk/cli/slash/remote_runs_controller.py +3 -1
  52. glaip_sdk/cli/slash/session.py +343 -20
  53. glaip_sdk/cli/slash/tui/__init__.py +29 -1
  54. glaip_sdk/cli/slash/tui/accounts.tcss +97 -6
  55. glaip_sdk/cli/slash/tui/accounts_app.py +1117 -126
  56. glaip_sdk/cli/slash/tui/clipboard.py +316 -0
  57. glaip_sdk/cli/slash/tui/context.py +92 -0
  58. glaip_sdk/cli/slash/tui/indicators.py +341 -0
  59. glaip_sdk/cli/slash/tui/keybind_registry.py +235 -0
  60. glaip_sdk/cli/slash/tui/layouts/__init__.py +14 -0
  61. glaip_sdk/cli/slash/tui/layouts/harlequin.py +184 -0
  62. glaip_sdk/cli/slash/tui/loading.py +43 -21
  63. glaip_sdk/cli/slash/tui/remote_runs_app.py +178 -20
  64. glaip_sdk/cli/slash/tui/terminal.py +407 -0
  65. glaip_sdk/cli/slash/tui/theme/__init__.py +15 -0
  66. glaip_sdk/cli/slash/tui/theme/catalog.py +79 -0
  67. glaip_sdk/cli/slash/tui/theme/manager.py +112 -0
  68. glaip_sdk/cli/slash/tui/theme/tokens.py +55 -0
  69. glaip_sdk/cli/slash/tui/toast.py +388 -0
  70. glaip_sdk/cli/transcript/history.py +1 -1
  71. glaip_sdk/cli/transcript/viewer.py +1 -1
  72. glaip_sdk/cli/tui_settings.py +125 -0
  73. glaip_sdk/cli/update_notifier.py +215 -7
  74. glaip_sdk/cli/validators.py +1 -1
  75. glaip_sdk/client/__init__.py +2 -1
  76. glaip_sdk/client/_schedule_payloads.py +89 -0
  77. glaip_sdk/client/agents.py +293 -17
  78. glaip_sdk/client/base.py +25 -0
  79. glaip_sdk/client/hitl.py +136 -0
  80. glaip_sdk/client/main.py +7 -5
  81. glaip_sdk/client/mcps.py +44 -13
  82. glaip_sdk/client/payloads/agent/__init__.py +23 -0
  83. glaip_sdk/client/{_agent_payloads.py → payloads/agent/requests.py} +28 -48
  84. glaip_sdk/client/payloads/agent/responses.py +43 -0
  85. glaip_sdk/client/run_rendering.py +109 -30
  86. glaip_sdk/client/schedules.py +439 -0
  87. glaip_sdk/client/tools.py +52 -23
  88. glaip_sdk/config/constants.py +22 -2
  89. glaip_sdk/guardrails/__init__.py +80 -0
  90. glaip_sdk/guardrails/serializer.py +91 -0
  91. glaip_sdk/hitl/__init__.py +35 -2
  92. glaip_sdk/hitl/base.py +64 -0
  93. glaip_sdk/hitl/callback.py +43 -0
  94. glaip_sdk/hitl/local.py +1 -31
  95. glaip_sdk/hitl/remote.py +523 -0
  96. glaip_sdk/models/__init__.py +47 -1
  97. glaip_sdk/models/_provider_mappings.py +101 -0
  98. glaip_sdk/models/_validation.py +97 -0
  99. glaip_sdk/models/agent.py +2 -1
  100. glaip_sdk/models/agent_runs.py +2 -1
  101. glaip_sdk/models/constants.py +141 -0
  102. glaip_sdk/models/model.py +170 -0
  103. glaip_sdk/models/schedule.py +224 -0
  104. glaip_sdk/payload_schemas/agent.py +1 -0
  105. glaip_sdk/payload_schemas/guardrails.py +34 -0
  106. glaip_sdk/ptc.py +145 -0
  107. glaip_sdk/registry/tool.py +270 -57
  108. glaip_sdk/runner/__init__.py +20 -3
  109. glaip_sdk/runner/deps.py +4 -1
  110. glaip_sdk/runner/langgraph.py +251 -27
  111. glaip_sdk/runner/logging_config.py +77 -0
  112. glaip_sdk/runner/mcp_adapter/mcp_config_builder.py +30 -9
  113. glaip_sdk/runner/ptc_adapter.py +98 -0
  114. glaip_sdk/runner/tool_adapter/langchain_tool_adapter.py +25 -2
  115. glaip_sdk/schedules/__init__.py +22 -0
  116. glaip_sdk/schedules/base.py +291 -0
  117. glaip_sdk/tools/base.py +67 -14
  118. glaip_sdk/utils/__init__.py +1 -0
  119. glaip_sdk/utils/agent_config.py +8 -2
  120. glaip_sdk/utils/bundler.py +138 -2
  121. glaip_sdk/utils/import_resolver.py +427 -49
  122. glaip_sdk/utils/runtime_config.py +3 -2
  123. glaip_sdk/utils/sync.py +31 -11
  124. glaip_sdk/utils/tool_detection.py +274 -6
  125. {glaip_sdk-0.6.19.dist-info → glaip_sdk-0.7.27.dist-info}/METADATA +22 -8
  126. glaip_sdk-0.7.27.dist-info/RECORD +227 -0
  127. {glaip_sdk-0.6.19.dist-info → glaip_sdk-0.7.27.dist-info}/WHEEL +1 -1
  128. glaip_sdk-0.7.27.dist-info/entry_points.txt +2 -0
  129. glaip_sdk/cli/commands/agents.py +0 -1509
  130. glaip_sdk/cli/commands/mcps.py +0 -1356
  131. glaip_sdk/cli/commands/tools.py +0 -576
  132. glaip_sdk/cli/utils.py +0 -263
  133. glaip_sdk-0.6.19.dist-info/RECORD +0 -163
  134. glaip_sdk-0.6.19.dist-info/entry_points.txt +0 -2
  135. {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
- from langchain_core.tools import BaseTool # noqa: PLC0415
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
- if isinstance(ref, type) and issubclass(ref, BaseTool):
27
- return True
28
- if isinstance(ref, BaseTool):
29
- return True
30
- except ImportError:
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.6.19
4
- Summary: Python SDK for GL AIP (GDP Labs AI Agent Package) - Simplified CLI Design
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.5.14; (python_version >= "3.11" and python_version < "3.13") and extra == "local"
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.5.14; (python_version >= "3.11" and python_version < "3.13") and extra == "memory"
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.5.14; (python_version >= "3.11" and python_version < "3.13") and extra == "privacy"
29
- Requires-Dist: en-core-web-sm; extra == "privacy"
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ aip = glaip_sdk.cli.entrypoint:main