glaip-sdk 0.0.15__py3-none-any.whl → 0.0.17__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 (43) hide show
  1. glaip_sdk/__init__.py +1 -1
  2. glaip_sdk/branding.py +28 -2
  3. glaip_sdk/cli/commands/agents.py +36 -27
  4. glaip_sdk/cli/commands/configure.py +46 -52
  5. glaip_sdk/cli/commands/mcps.py +19 -22
  6. glaip_sdk/cli/commands/tools.py +19 -13
  7. glaip_sdk/cli/config.py +42 -0
  8. glaip_sdk/cli/display.py +97 -30
  9. glaip_sdk/cli/main.py +141 -124
  10. glaip_sdk/cli/mcp_validators.py +2 -2
  11. glaip_sdk/cli/pager.py +3 -2
  12. glaip_sdk/cli/parsers/json_input.py +2 -2
  13. glaip_sdk/cli/resolution.py +12 -10
  14. glaip_sdk/cli/rich_helpers.py +29 -0
  15. glaip_sdk/cli/slash/agent_session.py +7 -0
  16. glaip_sdk/cli/slash/prompt.py +21 -2
  17. glaip_sdk/cli/slash/session.py +15 -21
  18. glaip_sdk/cli/update_notifier.py +8 -2
  19. glaip_sdk/cli/utils.py +115 -58
  20. glaip_sdk/client/_agent_payloads.py +504 -0
  21. glaip_sdk/client/agents.py +633 -559
  22. glaip_sdk/client/base.py +92 -20
  23. glaip_sdk/client/main.py +14 -0
  24. glaip_sdk/client/run_rendering.py +275 -0
  25. glaip_sdk/config/constants.py +4 -1
  26. glaip_sdk/exceptions.py +15 -0
  27. glaip_sdk/models.py +5 -0
  28. glaip_sdk/payload_schemas/__init__.py +19 -0
  29. glaip_sdk/payload_schemas/agent.py +87 -0
  30. glaip_sdk/rich_components.py +12 -0
  31. glaip_sdk/utils/client_utils.py +12 -0
  32. glaip_sdk/utils/import_export.py +2 -2
  33. glaip_sdk/utils/rendering/formatting.py +5 -0
  34. glaip_sdk/utils/rendering/models.py +22 -0
  35. glaip_sdk/utils/rendering/renderer/base.py +9 -1
  36. glaip_sdk/utils/rendering/renderer/panels.py +0 -1
  37. glaip_sdk/utils/rendering/steps.py +59 -0
  38. glaip_sdk/utils/serialization.py +24 -3
  39. {glaip_sdk-0.0.15.dist-info → glaip_sdk-0.0.17.dist-info}/METADATA +2 -2
  40. glaip_sdk-0.0.17.dist-info/RECORD +73 -0
  41. glaip_sdk-0.0.15.dist-info/RECORD +0 -67
  42. {glaip_sdk-0.0.15.dist-info → glaip_sdk-0.0.17.dist-info}/WHEEL +0 -0
  43. {glaip_sdk-0.0.15.dist-info → glaip_sdk-0.0.17.dist-info}/entry_points.txt +0 -0
@@ -41,6 +41,11 @@ class MultipartData:
41
41
  self._exit_stack.close()
42
42
 
43
43
  def __enter__(self) -> "MultipartData":
44
+ """Enter context manager.
45
+
46
+ Returns:
47
+ Self instance for context manager protocol
48
+ """
44
49
  return self
45
50
 
46
51
  def __exit__(
@@ -49,6 +54,13 @@ class MultipartData:
49
54
  _exc_val: BaseException | None,
50
55
  _exc_tb: Any,
51
56
  ) -> None:
57
+ """Exit context manager and close all file handles.
58
+
59
+ Args:
60
+ _exc_type: Exception type (unused)
61
+ _exc_val: Exception value (unused)
62
+ _exc_tb: Exception traceback (unused)
63
+ """
52
64
  self.close()
53
65
 
54
66
 
@@ -66,7 +66,7 @@ def convert_export_to_import_format(
66
66
 
67
67
  def _get_default_array_fields() -> list[str]:
68
68
  """Get default array fields that should be merged."""
69
- return ["tools", "agents"]
69
+ return ["tools", "agents", "mcps"]
70
70
 
71
71
 
72
72
  def _should_use_cli_value(cli_value: Any) -> bool:
@@ -133,7 +133,7 @@ def merge_import_with_cli_args(
133
133
 
134
134
  Notes:
135
135
  - CLI arguments take precedence over imported data
136
- - Array fields (tools, agents) are combined rather than replaced
136
+ - Array fields (tools, agents, mcps) are combined rather than replaced
137
137
  - Empty arrays/lists are treated as None (no override)
138
138
  """
139
139
  if array_fields is None:
@@ -141,6 +141,11 @@ def pretty_out(output: any, max_len: int = DEFAULT_ARGS_MAX_LEN) -> str:
141
141
 
142
142
 
143
143
  def get_spinner_char() -> str:
144
+ """Get the next character for a spinner animation.
145
+
146
+ Returns:
147
+ A single character from the spinner frames based on current time
148
+ """
144
149
  frames = "⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏"
145
150
  return frames[int(time.time() * 10) % len(frames)]
146
151
 
@@ -13,6 +13,12 @@ from typing import Any
13
13
 
14
14
  @dataclass(slots=True)
15
15
  class Step:
16
+ """Represents a single execution step in a workflow.
17
+
18
+ A step tracks the execution of tools, delegates, or agents with
19
+ timing information and metadata.
20
+ """
21
+
16
22
  step_id: str
17
23
  kind: str # "tool" | "delegate" | "agent"
18
24
  name: str
@@ -26,6 +32,11 @@ class Step:
26
32
  duration_ms: int | None = None
27
33
 
28
34
  def finish(self, duration_raw: float | None) -> None:
35
+ """Mark the step as finished and calculate duration.
36
+
37
+ Args:
38
+ duration_raw: Raw duration in seconds, or None to calculate from started_at
39
+ """
29
40
  if isinstance(duration_raw, int | float) and duration_raw > 0:
30
41
  # Use provided duration if it's a positive number (even if very small)
31
42
  self.duration_ms = round(float(duration_raw) * 1000)
@@ -37,15 +48,26 @@ class Step:
37
48
 
38
49
  @dataclass(slots=True)
39
50
  class RunStats:
51
+ """Statistics for a complete execution run.
52
+
53
+ Tracks timing and resource usage information for workflow executions.
54
+ """
55
+
40
56
  started_at: float = field(default_factory=monotonic)
41
57
  finished_at: float | None = None
42
58
  usage: dict[str, Any] = field(default_factory=dict)
43
59
 
44
60
  def stop(self) -> None:
61
+ """Mark the run as finished and record the end time."""
45
62
  self.finished_at = monotonic()
46
63
 
47
64
  @property
48
65
  def duration_s(self) -> float | None:
66
+ """Get the duration of the run in seconds.
67
+
68
+ Returns:
69
+ Duration in seconds if run is finished, None otherwise
70
+ """
49
71
  return (
50
72
  None
51
73
  if self.finished_at is None
@@ -57,6 +57,10 @@ class RendererState:
57
57
  finalizing_ui: bool = False
58
58
 
59
59
  def __post_init__(self) -> None:
60
+ """Initialize renderer state after dataclass creation.
61
+
62
+ Ensures buffer is initialized as an empty list if not provided.
63
+ """
60
64
  if self.buffer is None:
61
65
  self.buffer = []
62
66
 
@@ -401,7 +405,6 @@ class RichStreamRenderer:
401
405
 
402
406
  def apply_verbosity(self, verbose: bool) -> None:
403
407
  """Update verbose behaviour at runtime."""
404
-
405
408
  if self.verbose == verbose:
406
409
  return
407
410
 
@@ -838,6 +841,11 @@ class RichStreamRenderer:
838
841
  self._shutdown_live()
839
842
 
840
843
  def __del__(self) -> None:
844
+ """Destructor that ensures live rendering is properly shut down.
845
+
846
+ This is a safety net to prevent resource leaks if the renderer
847
+ is not explicitly stopped.
848
+ """
841
849
  # Destructors must never raise
842
850
  try:
843
851
  self._shutdown_live(reset_attr=False)
@@ -16,7 +16,6 @@ from glaip_sdk.rich_components import AIPPanel
16
16
 
17
17
  def _spinner_renderable(message: str = "Processing...") -> Align:
18
18
  """Build a Rich spinner renderable for loading placeholders."""
19
-
20
19
  spinner = Spinner(
21
20
  "dots",
22
21
  text=Text(f" {message}", style="dim"),
@@ -12,7 +12,18 @@ from glaip_sdk.utils.rendering.models import Step
12
12
 
13
13
 
14
14
  class StepManager:
15
+ """Manages the lifecycle and organization of execution steps.
16
+
17
+ Tracks step creation, parent-child relationships, and execution state
18
+ with automatic pruning of old steps when limits are reached.
19
+ """
20
+
15
21
  def __init__(self, max_steps: int = 200) -> None:
22
+ """Initialize the step manager.
23
+
24
+ Args:
25
+ max_steps: Maximum number of steps to retain before pruning
26
+ """
16
27
  self.by_id: dict[str, Step] = {}
17
28
  self.order: list[str] = []
18
29
  self.children: dict[str, list[str]] = {}
@@ -62,6 +73,19 @@ class StepManager:
62
73
  parent_id: str | None = None,
63
74
  args: dict[str, object] | None = None,
64
75
  ) -> Step:
76
+ """Start a new step or return existing running step with same parameters.
77
+
78
+ Args:
79
+ task_id: Task identifier
80
+ context_id: Context identifier
81
+ kind: Step kind (tool, delegate, agent)
82
+ name: Step name
83
+ parent_id: Parent step ID if this is a child step
84
+ args: Step arguments
85
+
86
+ Returns:
87
+ The Step instance (new or existing)
88
+ """
65
89
  existing = self.find_running(
66
90
  task_id=task_id, context_id=context_id, kind=kind, name=name
67
91
  )
@@ -149,6 +173,14 @@ class StepManager:
149
173
  total -= subtree_size
150
174
 
151
175
  def get_child_count(self, step_id: str) -> int:
176
+ """Get the number of child steps for a given step.
177
+
178
+ Args:
179
+ step_id: The parent step ID
180
+
181
+ Returns:
182
+ Number of child steps
183
+ """
152
184
  return len(self.children.get(step_id, []))
153
185
 
154
186
  def find_running(
@@ -159,6 +191,17 @@ class StepManager:
159
191
  kind: str,
160
192
  name: str,
161
193
  ) -> Step | None:
194
+ """Find a currently running step with the given parameters.
195
+
196
+ Args:
197
+ task_id: Task identifier
198
+ context_id: Context identifier
199
+ kind: Step kind (tool, delegate, agent)
200
+ name: Step name
201
+
202
+ Returns:
203
+ The running Step if found, None otherwise
204
+ """
162
205
  key = (task_id, context_id, kind, name)
163
206
  step_id = self._last_running.get(key)
164
207
  if step_id:
@@ -191,6 +234,22 @@ class StepManager:
191
234
  output: object | None = None,
192
235
  duration_raw: float | None = None,
193
236
  ) -> Step:
237
+ """Finish a step with the given parameters.
238
+
239
+ Args:
240
+ task_id: Task identifier
241
+ context_id: Context identifier
242
+ kind: Step kind (tool, delegate, agent)
243
+ name: Step name
244
+ output: Step output data
245
+ duration_raw: Raw duration in seconds
246
+
247
+ Returns:
248
+ The finished Step instance
249
+
250
+ Raises:
251
+ RuntimeError: If no matching step is found
252
+ """
194
253
  st = self.find_running(
195
254
  task_id=task_id, context_id=context_id, kind=kind, name=name
196
255
  )
@@ -188,7 +188,6 @@ def collect_attributes_for_export(resource: Any) -> dict[str, Any]:
188
188
  and callables are filtered out so the result only contains user-configurable
189
189
  data.
190
190
  """
191
-
192
191
  mapping = _coerce_resource_to_mapping(resource)
193
192
  if (
194
193
  mapping is None
@@ -204,12 +203,35 @@ def collect_attributes_for_export(resource: Any) -> dict[str, Any]:
204
203
  for key, value in items:
205
204
  if _should_include_attribute(key, value):
206
205
  export[key] = value
206
+
207
+ # Post-process agent exports to clean up unwanted transformations
208
+ if hasattr(resource, "__class__") and resource.__class__.__name__ == "Agent":
209
+ export = _clean_agent_export_data(export)
210
+
207
211
  return export
208
212
 
209
213
 
214
+ def _clean_agent_export_data(agent_data: dict[str, Any]) -> dict[str, Any]:
215
+ """Clean up agent export data to remove unwanted transformations.
216
+
217
+ This function addresses the issue where the backend API transforms
218
+ the 'timeout' field into 'execution_timeout' in an 'agent_config' section
219
+ during export, which is not desired for clean agent configuration exports.
220
+ """
221
+ cleaned = agent_data.copy()
222
+
223
+ # Remove execution_timeout from agent_config if it exists
224
+ if "agent_config" in cleaned and isinstance(cleaned["agent_config"], dict):
225
+ agent_config = cleaned["agent_config"]
226
+ if "execution_timeout" in agent_config:
227
+ # Move execution_timeout back to root level as timeout
228
+ cleaned["timeout"] = agent_config.pop("execution_timeout")
229
+
230
+ return cleaned
231
+
232
+
210
233
  def _coerce_resource_to_mapping(resource: Any) -> dict[str, Any] | None:
211
234
  """Return a mapping representation of ``resource`` when possible."""
212
-
213
235
  for attr in _PREFERRED_MAPPERS:
214
236
  method = getattr(resource, attr, None)
215
237
  if callable(method):
@@ -236,7 +258,6 @@ def _coerce_resource_to_mapping(resource: Any) -> dict[str, Any] | None:
236
258
 
237
259
  def _iter_public_attribute_names(resource: Any) -> Iterable[str]:
238
260
  """Yield attribute names we should inspect on ``resource``."""
239
-
240
261
  seen: set[str] = set()
241
262
  names: list[str] = []
242
263
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: glaip-sdk
3
- Version: 0.0.15
3
+ Version: 0.0.17
4
4
  Summary: Python SDK for GL AIP (GDP Labs AI Agent Package) - Simplified CLI Design
5
5
  License: MIT
6
6
  Author: Raymond Christopher
@@ -22,7 +22,7 @@ Requires-Dist: readchar (>=4.2.1,<5.0.0)
22
22
  Requires-Dist: rich (>=13.0.0)
23
23
  Description-Content-Type: text/markdown
24
24
 
25
- # GL AIP SDK — GDP Labs AI Agents Package
25
+ # GL AIP — GDP Labs AI Agents Package
26
26
 
27
27
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
28
28
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
@@ -0,0 +1,73 @@
1
+ glaip_sdk/__init__.py,sha256=-Itm_1dz4QwhIUmqagvCwwvSjKYKYJI3lZSHD2bwtko,366
2
+ glaip_sdk/_version.py,sha256=tGkFWAVu2ry4Hy7j-u7ophGbPRX8y-ngBbXDhN1VBIQ,2007
3
+ glaip_sdk/branding.py,sha256=RwXVIc_gMDayKsNN4HBqo8c1fodTMvGFNhPnEZxpRIQ,6410
4
+ glaip_sdk/cli/__init__.py,sha256=xCCfuF1Yc7mpCDcfhHZTX0vizvtrDSLeT8MJ3V7m5A0,156
5
+ glaip_sdk/cli/agent_config.py,sha256=VHjebw68wAdhGUzYdPH8qz10oADZPRgUQcPW6F7iHIU,2421
6
+ glaip_sdk/cli/auth.py,sha256=eYdtGmJ3XgiO96hq_69GF6b3W-aRWZrDQ-6bHuaRX4M,13517
7
+ glaip_sdk/cli/commands/__init__.py,sha256=x0CZlZbZHoHvuzfoTWIyEch6WmNnbPzxajrox6riYp0,173
8
+ glaip_sdk/cli/commands/agents.py,sha256=FtWGhbl4QRlqxXFNMEnZUpw5mjQ0KPjY0_6o0hYyoaU,41251
9
+ glaip_sdk/cli/commands/configure.py,sha256=h2GgBpnBWYHAhp3zqkAiy8QNgwPD_7pToZBZRpuMoNM,7869
10
+ glaip_sdk/cli/commands/mcps.py,sha256=V41Te3IG8jNFRMb1v1XQV1t461uxpPsrmDFIO6cZPOk,28185
11
+ glaip_sdk/cli/commands/models.py,sha256=G1ce-wZOfvMP6SMnIVuSQ89CF444Kz8Ja6nrNOQXCqU,1729
12
+ glaip_sdk/cli/commands/tools.py,sha256=YfkB7HRBGcAOC6N-wXTV5Ch5XTXqjKTtyq-Cfb0-18c,18908
13
+ glaip_sdk/cli/config.py,sha256=jCLJxTBAnOU6EJI6JjcpwUTEAWCJRoALbMrhOvvAofc,946
14
+ glaip_sdk/cli/context.py,sha256=M4weRf8dmp5bMtPLRF3w1StnRB7Lo8FPFq2GQMv3Rv8,3617
15
+ glaip_sdk/cli/display.py,sha256=fNb2aBEV4V76TaRQ-L6EO-1fwq71VlzekDzZRTYKEPA,10758
16
+ glaip_sdk/cli/io.py,sha256=GPkw3pQMLBGoD5GH-KlbKpNRlVWFZOXHE17F7V3kQsI,3343
17
+ glaip_sdk/cli/main.py,sha256=gIF4b2mtLrWktsVdYcoHO91S07twtfn1w4D4RCqAMfc,13499
18
+ glaip_sdk/cli/masking.py,sha256=BOZjwUqxQf3LQlYgUMwq7UYgve8x4_1Qk04ixiJJPZ8,4399
19
+ glaip_sdk/cli/mcp_validators.py,sha256=SeDbgXkRuBXyDtCmUMpL-1Vh7fmGldz-shAaHhOqbCc,10125
20
+ glaip_sdk/cli/pager.py,sha256=n9ypOGPPSaseJlwPG1X38qSz1yV3pjRWunzA4xx5E7M,8052
21
+ glaip_sdk/cli/parsers/__init__.py,sha256=Ycd4HDfYmA7GUGFt0ndBPBo5uTbv15XsXnYUj-a89ug,183
22
+ glaip_sdk/cli/parsers/json_input.py,sha256=6NqzVM5l8g0pwCNLKeTVL9SeLM9W_Fl4H__X0dfaQEA,4039
23
+ glaip_sdk/cli/resolution.py,sha256=jXUNpKKhs30n7Ke0uz1Hbny5DTo2_sxvchIhTbeBubE,2393
24
+ glaip_sdk/cli/rich_helpers.py,sha256=ByUOmK16IisoXWE7nEiI55BF1KWDrm6KCYAxqHu0XOU,825
25
+ glaip_sdk/cli/slash/__init__.py,sha256=Vdv6Y8bu-pA8dxDlyP4XrhudBPivztUozhLAz9vaLig,682
26
+ glaip_sdk/cli/slash/agent_session.py,sha256=-woZkqH70YUSaEHDF9XpxP-cbh36Jx7yuJW7aA3JszI,7078
27
+ glaip_sdk/cli/slash/prompt.py,sha256=2CLAfdmX6yQedcNLnwZ4g6QFoV9TVv8il9OF8iaJwdc,7977
28
+ glaip_sdk/cli/slash/session.py,sha256=JsTHZB8gPFFdcp_bhtw-nig37Z61OWK_okPMx47H86c,31484
29
+ glaip_sdk/cli/update_notifier.py,sha256=nfQ-jRQKn-nZyt7EhxNfZq9Z7nBrYjZJKAgAtuHffnw,3410
30
+ glaip_sdk/cli/utils.py,sha256=pgbV0f5rdjAHeZ-ULCntH7HUG6FdFB9kODv0a9puB40,35503
31
+ glaip_sdk/cli/validators.py,sha256=USbBgY86AwuDHO-Q_g8g7hu-ot4NgITBsWjTWIl62ms,5569
32
+ glaip_sdk/client/__init__.py,sha256=nYLXfBVTTWwKjP0e63iumPYO4k5FifwWaELQPaPIKIg,188
33
+ glaip_sdk/client/_agent_payloads.py,sha256=sYlMzrfAdd8KC37qxokLy2uDd3aOhzQirnv7UYlvwYc,16385
34
+ glaip_sdk/client/agents.py,sha256=GpDlxzhUQaMn9IUq_kCsbZo5TBfwWXFYs1bbpPLiSok,35492
35
+ glaip_sdk/client/base.py,sha256=OPRlAWhZ77rUK0MRGA83-zW5NVhxJ1RgdfcfGOYr8rI,16267
36
+ glaip_sdk/client/main.py,sha256=tfyyx9utReq7nXdtHKOCXQIUXXeZ1-D6u4OGTu6h8Es,8632
37
+ glaip_sdk/client/mcps.py,sha256=-O-I15qjbwfSA69mouHY6g5_qgPWC4rM98VJLpOkh1A,8975
38
+ glaip_sdk/client/run_rendering.py,sha256=fXUj1FBw8n-nAzjI_zaG7-Ap_UXXe0z4tMdL7m2R7Ek,9213
39
+ glaip_sdk/client/tools.py,sha256=n8DIiOOf1YU_j9JK3Bx2-rDnkpckPi0MI9Ok2s1kwa4,16634
40
+ glaip_sdk/client/validators.py,sha256=NtPsWjQLjj25LiUnmR-WuS8lL5p4MVRaYT9UVRmj9bo,8809
41
+ glaip_sdk/config/constants.py,sha256=B9CSlYG8LYjQuo_vNpqy-eSks3ej37FMcvJMy6d_F4U,888
42
+ glaip_sdk/exceptions.py,sha256=ILquxC4QGPFR9eY6RpeXzkQsblfsvZMGFqz38ZjeW3E,2345
43
+ glaip_sdk/models.py,sha256=ofhnNOaKK0UK1mDiot73z8qS0-X2IKJXmm7YyOifGzg,8876
44
+ glaip_sdk/payload_schemas/__init__.py,sha256=fJamlkpS3IfS9xyKAQaUbnalvrtG5Ied69OUVAA3xvs,395
45
+ glaip_sdk/payload_schemas/agent.py,sha256=nlizuv2w4SVzmMJSE90rE6Ll0Hfpcr5hvPsW_NtXCV0,3204
46
+ glaip_sdk/rich_components.py,sha256=veaps1hrSkC3nSVunAevvynSux8Cg3yFEDmbJk66p7w,1267
47
+ glaip_sdk/utils/__init__.py,sha256=fmVGcUFa7G0CCfSMSqfNU2BqFl36G1gOFyDfTvtJfVw,926
48
+ glaip_sdk/utils/agent_config.py,sha256=b7_J5DELyk0b_XEoi7tsxbS3wqzAKbMa-3_C-65pPIY,6791
49
+ glaip_sdk/utils/client_utils.py,sha256=x27kHQNOxvyVN5GLUiymi0eHzkXRKw-x3s0q0VkMvY4,13938
50
+ glaip_sdk/utils/display.py,sha256=94s9lYF_8ra8jpeqOkbVrUm8oidtCE6OtucyxLQPKmU,3105
51
+ glaip_sdk/utils/general.py,sha256=V5hJrIpYDvDsldU_nChHpuvV2AwhFLUI7Qvcaihq_8A,2270
52
+ glaip_sdk/utils/import_export.py,sha256=jEhl5U6hWWMR1wo5AXpV-_jN_56DcWcemOa2UaFHapk,5217
53
+ glaip_sdk/utils/rendering/__init__.py,sha256=vXjwk5rPhhfPyD8S0DnV4GFFEtPJp4HCCg1Um9SXfs0,70
54
+ glaip_sdk/utils/rendering/formatting.py,sha256=I8nN4H3DxTOYIExn6gozcxyAn_GO1lSztbcrSCkcscg,7351
55
+ glaip_sdk/utils/rendering/models.py,sha256=AM9JbToyA3zrAzXQYjh6oxjBkgZDfWEbs5MmNKODnOY,2259
56
+ glaip_sdk/utils/rendering/renderer/__init__.py,sha256=EXwVBmGkSYcype4ocAXo69Z1kXu0gpNXmhH5LW0_B7A,2939
57
+ glaip_sdk/utils/rendering/renderer/base.py,sha256=HGljrxMcDq4QCsWcwR45qZYjKWZprBunnZJYYea8FTQ,42764
58
+ glaip_sdk/utils/rendering/renderer/config.py,sha256=-P35z9JO_1ypJXAqxJ1ybHraH4i-I1LPopeW3Lh7ACE,785
59
+ glaip_sdk/utils/rendering/renderer/console.py,sha256=4cLOw4Q1fkHkApuj6dWW8eYpeYdcT0t2SO5MbVt5UTc,1844
60
+ glaip_sdk/utils/rendering/renderer/debug.py,sha256=FEYxAu4ZB0CjrJKevqQ2TKDgElA2cf6GqZXCNm12sNQ,3721
61
+ glaip_sdk/utils/rendering/renderer/panels.py,sha256=N0Z6UZt3FUTxakRzHdOef1i3UnMR_Zr_TAvw0_MRpnQ,3363
62
+ glaip_sdk/utils/rendering/renderer/progress.py,sha256=i4HG_iNwtK4c3Gf2sviLCiOJ-5ydX4t-YE5dgtLOxNI,3438
63
+ glaip_sdk/utils/rendering/renderer/stream.py,sha256=1RP5TIV7tqg07X9gPN053XeabFGVT4jPplxaoPU0L38,8601
64
+ glaip_sdk/utils/rendering/steps.py,sha256=V7xFoJM_B-nWT1wMdcXGN5ytCrDTxEzKcX_YCWyJqkk,9051
65
+ glaip_sdk/utils/resource_refs.py,sha256=0YzblJNfRhz9xhpaKE9aE68XEV-6_ssr0fIkiMVOka0,5489
66
+ glaip_sdk/utils/rich_utils.py,sha256=-Ij-1bIJvnVAi6DrfftchIlMcvOTjVmSE0Qqax0EY_s,763
67
+ glaip_sdk/utils/run_renderer.py,sha256=d_VMI6LbvHPUUeRmGqh5wK_lHqDEIAcym2iqpbtDad0,1365
68
+ glaip_sdk/utils/serialization.py,sha256=AFbucakFaCtQDfcgsm2gHZ1iZDA8OaJSZUsS6FhWFR0,12820
69
+ glaip_sdk/utils/validation.py,sha256=QNORcdyvuliEs4EH2_mkDgmoyT9utgl7YNhaf45SEf8,6992
70
+ glaip_sdk-0.0.17.dist-info/METADATA,sha256=z1GiwKAgE5eXkCbBfUXrQuMZBUQ14XWuOZhgj5ugyAw,5164
71
+ glaip_sdk-0.0.17.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
72
+ glaip_sdk-0.0.17.dist-info/entry_points.txt,sha256=EGs8NO8J1fdFMWA3CsF7sKBEvtHb_fujdCoNPhfMouE,47
73
+ glaip_sdk-0.0.17.dist-info/RECORD,,
@@ -1,67 +0,0 @@
1
- glaip_sdk/__init__.py,sha256=FD-oTyFUKsTB9xTuGiqvkhuFXfeZ-TspjkeXERglha8,370
2
- glaip_sdk/_version.py,sha256=tGkFWAVu2ry4Hy7j-u7ophGbPRX8y-ngBbXDhN1VBIQ,2007
3
- glaip_sdk/branding.py,sha256=xsHL7nRAWuwJrAvCi2fZhaPD-AWvdcLNoTVmlw4gZKc,5604
4
- glaip_sdk/cli/__init__.py,sha256=xCCfuF1Yc7mpCDcfhHZTX0vizvtrDSLeT8MJ3V7m5A0,156
5
- glaip_sdk/cli/agent_config.py,sha256=VHjebw68wAdhGUzYdPH8qz10oADZPRgUQcPW6F7iHIU,2421
6
- glaip_sdk/cli/auth.py,sha256=eYdtGmJ3XgiO96hq_69GF6b3W-aRWZrDQ-6bHuaRX4M,13517
7
- glaip_sdk/cli/commands/__init__.py,sha256=x0CZlZbZHoHvuzfoTWIyEch6WmNnbPzxajrox6riYp0,173
8
- glaip_sdk/cli/commands/agents.py,sha256=Ejg_IFXfvajW2q3IrmotiLjljEYknKEcMejdvVCWoDs,40644
9
- glaip_sdk/cli/commands/configure.py,sha256=eRDzsaKV4fl2lJt8ieS4g2-xRnaa02eAAPW8xBf-tqA,7507
10
- glaip_sdk/cli/commands/mcps.py,sha256=I-cqVqAGqSiUDgWOEB6eUeKg_wMtteoPyyXwu96qq6Q,28207
11
- glaip_sdk/cli/commands/models.py,sha256=G1ce-wZOfvMP6SMnIVuSQ89CF444Kz8Ja6nrNOQXCqU,1729
12
- glaip_sdk/cli/commands/tools.py,sha256=P3zuKVapoC3yV4rnHGdFPO_snjLGWo5IpfuYHIUfMeU,18711
13
- glaip_sdk/cli/context.py,sha256=M4weRf8dmp5bMtPLRF3w1StnRB7Lo8FPFq2GQMv3Rv8,3617
14
- glaip_sdk/cli/display.py,sha256=jE20swoRKzpYUmc0jgbeonaXKeE9x95hfjWAEdnBYRc,8727
15
- glaip_sdk/cli/io.py,sha256=GPkw3pQMLBGoD5GH-KlbKpNRlVWFZOXHE17F7V3kQsI,3343
16
- glaip_sdk/cli/main.py,sha256=3Bl8u9t1MekzaNrAZqsx4TukbzzFdi6Wss6jvTDos00,12930
17
- glaip_sdk/cli/masking.py,sha256=BOZjwUqxQf3LQlYgUMwq7UYgve8x4_1Qk04ixiJJPZ8,4399
18
- glaip_sdk/cli/mcp_validators.py,sha256=PEJRzb7ogRkwNJwJK9k5Xmb8hvoQ58L2Qywqd_3Wayo,10125
19
- glaip_sdk/cli/pager.py,sha256=KmOBhY66JHg2vRpiNJ69RnZiF8sFer7yR8NIdlxnALk,8007
20
- glaip_sdk/cli/parsers/__init__.py,sha256=Ycd4HDfYmA7GUGFt0ndBPBo5uTbv15XsXnYUj-a89ug,183
21
- glaip_sdk/cli/parsers/json_input.py,sha256=iISa31ZsDNYWfCVRy0cifRIg2gjnhI-XtdDLB-UOshg,4039
22
- glaip_sdk/cli/resolution.py,sha256=BOw2NchReLKewAwBAZLWw_3_bI7u3tfzQEO7kQbIiGE,2067
23
- glaip_sdk/cli/slash/__init__.py,sha256=Vdv6Y8bu-pA8dxDlyP4XrhudBPivztUozhLAz9vaLig,682
24
- glaip_sdk/cli/slash/agent_session.py,sha256=pDOwGXNHuyJIulrGYu1pacyF3oxHWeDQY-Uv92h2qVg,6859
25
- glaip_sdk/cli/slash/prompt.py,sha256=Pr5SSTOKFssRsi-AujOm5_BCW_f5MxgLwJ3CCji1ogM,7356
26
- glaip_sdk/cli/slash/session.py,sha256=U5UEL6eIvNkIJcSz04Uf8Ql0EptmLJukqHxDCAJ-nOQ,31097
27
- glaip_sdk/cli/update_notifier.py,sha256=uVbjZJnW4znTzx4AkqsDO4NfXiF-mtQiypTkJByAVuM,3236
28
- glaip_sdk/cli/utils.py,sha256=IG1h0wY6rIYvDRcTZuOmSgAHiYlx6yD9SKHrTbDFHmc,33077
29
- glaip_sdk/cli/validators.py,sha256=USbBgY86AwuDHO-Q_g8g7hu-ot4NgITBsWjTWIl62ms,5569
30
- glaip_sdk/client/__init__.py,sha256=nYLXfBVTTWwKjP0e63iumPYO4k5FifwWaELQPaPIKIg,188
31
- glaip_sdk/client/agents.py,sha256=FSKubF40wptMNIheC3_iawiX2CRbhTcNLFiz4qkPC6k,34659
32
- glaip_sdk/client/base.py,sha256=O3dv3I7PqY91gH1FehBMRZcSXjwimfeBcJuiXidDmqw,13700
33
- glaip_sdk/client/main.py,sha256=LlvYHP7-Hy7Eq1ep1kfk337K-Oue5SdKWJpqYfX9eXY,7993
34
- glaip_sdk/client/mcps.py,sha256=-O-I15qjbwfSA69mouHY6g5_qgPWC4rM98VJLpOkh1A,8975
35
- glaip_sdk/client/tools.py,sha256=n8DIiOOf1YU_j9JK3Bx2-rDnkpckPi0MI9Ok2s1kwa4,16634
36
- glaip_sdk/client/validators.py,sha256=NtPsWjQLjj25LiUnmR-WuS8lL5p4MVRaYT9UVRmj9bo,8809
37
- glaip_sdk/config/constants.py,sha256=ysEobMiXlLZGIOEaqTdHpPF8kmg5nbLn7BIcBvTCuHM,819
38
- glaip_sdk/exceptions.py,sha256=DJgaIcvGA09qIX10-ypYgQQ5_k5N3qknmiIFP3p4Z7E,1872
39
- glaip_sdk/models.py,sha256=0Y65LXpLqUY3IYVPIzP7jm8gdZUMw-EKRKGC1ZOLOcA,8758
40
- glaip_sdk/rich_components.py,sha256=pmJd-81OQE8bC9UOXtga5rsax4zphKlzCZ1JoWbbQzQ,803
41
- glaip_sdk/utils/__init__.py,sha256=fmVGcUFa7G0CCfSMSqfNU2BqFl36G1gOFyDfTvtJfVw,926
42
- glaip_sdk/utils/agent_config.py,sha256=b7_J5DELyk0b_XEoi7tsxbS3wqzAKbMa-3_C-65pPIY,6791
43
- glaip_sdk/utils/client_utils.py,sha256=M6rZloMKyONaZfI0RtU5tnkibwrIJL5Udw4wPMKkJcw,13588
44
- glaip_sdk/utils/display.py,sha256=94s9lYF_8ra8jpeqOkbVrUm8oidtCE6OtucyxLQPKmU,3105
45
- glaip_sdk/utils/general.py,sha256=V5hJrIpYDvDsldU_nChHpuvV2AwhFLUI7Qvcaihq_8A,2270
46
- glaip_sdk/utils/import_export.py,sha256=az_0jCpMB7I6N5HygS2uc62-W6ddm4buEwm6gTsalhY,5203
47
- glaip_sdk/utils/rendering/__init__.py,sha256=vXjwk5rPhhfPyD8S0DnV4GFFEtPJp4HCCg1Um9SXfs0,70
48
- glaip_sdk/utils/rendering/formatting.py,sha256=_k8tkcobctmHvdygMljZF7-ALGXpD9-hHF1CNtM2KMU,7201
49
- glaip_sdk/utils/rendering/models.py,sha256=SS34_00FaoGuSYn-viBkAtIbq7cJNwwPjpxnvyeUmxI,1567
50
- glaip_sdk/utils/rendering/renderer/__init__.py,sha256=EXwVBmGkSYcype4ocAXo69Z1kXu0gpNXmhH5LW0_B7A,2939
51
- glaip_sdk/utils/rendering/renderer/base.py,sha256=A_f8r3hWDVrQjzUR5CYzQMekPRIdG-l7Wjh9Hx492Xk,42425
52
- glaip_sdk/utils/rendering/renderer/config.py,sha256=-P35z9JO_1ypJXAqxJ1ybHraH4i-I1LPopeW3Lh7ACE,785
53
- glaip_sdk/utils/rendering/renderer/console.py,sha256=4cLOw4Q1fkHkApuj6dWW8eYpeYdcT0t2SO5MbVt5UTc,1844
54
- glaip_sdk/utils/rendering/renderer/debug.py,sha256=FEYxAu4ZB0CjrJKevqQ2TKDgElA2cf6GqZXCNm12sNQ,3721
55
- glaip_sdk/utils/rendering/renderer/panels.py,sha256=05u6SjU53iP9VD0YHTNruzD7sO6qYCp-P5dTTSdSZmU,3364
56
- glaip_sdk/utils/rendering/renderer/progress.py,sha256=i4HG_iNwtK4c3Gf2sviLCiOJ-5ydX4t-YE5dgtLOxNI,3438
57
- glaip_sdk/utils/rendering/renderer/stream.py,sha256=1RP5TIV7tqg07X9gPN053XeabFGVT4jPplxaoPU0L38,8601
58
- glaip_sdk/utils/rendering/steps.py,sha256=4zdeyKxMbUzCal4-yv8yf18144cs5wwXaxhe6mt2KiE,7307
59
- glaip_sdk/utils/resource_refs.py,sha256=0YzblJNfRhz9xhpaKE9aE68XEV-6_ssr0fIkiMVOka0,5489
60
- glaip_sdk/utils/rich_utils.py,sha256=-Ij-1bIJvnVAi6DrfftchIlMcvOTjVmSE0Qqax0EY_s,763
61
- glaip_sdk/utils/run_renderer.py,sha256=d_VMI6LbvHPUUeRmGqh5wK_lHqDEIAcym2iqpbtDad0,1365
62
- glaip_sdk/utils/serialization.py,sha256=T1yt_8G2DCFpcxx7XnqFl5slksRXfBCUuLQJTreGYEQ,11806
63
- glaip_sdk/utils/validation.py,sha256=QNORcdyvuliEs4EH2_mkDgmoyT9utgl7YNhaf45SEf8,6992
64
- glaip_sdk-0.0.15.dist-info/METADATA,sha256=Hp6gkY7Ci5eTGCScvyovsLl2j0g7Dlw1kQ3chFWYwrI,5168
65
- glaip_sdk-0.0.15.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
66
- glaip_sdk-0.0.15.dist-info/entry_points.txt,sha256=EGs8NO8J1fdFMWA3CsF7sKBEvtHb_fujdCoNPhfMouE,47
67
- glaip_sdk-0.0.15.dist-info/RECORD,,