glaip-sdk 0.0.14__py3-none-any.whl → 0.0.16__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 (44) hide show
  1. glaip_sdk/branding.py +27 -1
  2. glaip_sdk/cli/commands/agents.py +27 -20
  3. glaip_sdk/cli/commands/configure.py +39 -50
  4. glaip_sdk/cli/commands/mcps.py +2 -6
  5. glaip_sdk/cli/commands/models.py +1 -1
  6. glaip_sdk/cli/commands/tools.py +1 -3
  7. glaip_sdk/cli/config.py +42 -0
  8. glaip_sdk/cli/context.py +142 -0
  9. glaip_sdk/cli/display.py +92 -26
  10. glaip_sdk/cli/main.py +141 -124
  11. glaip_sdk/cli/masking.py +148 -0
  12. glaip_sdk/cli/mcp_validators.py +2 -2
  13. glaip_sdk/cli/pager.py +272 -0
  14. glaip_sdk/cli/parsers/json_input.py +2 -2
  15. glaip_sdk/cli/resolution.py +12 -10
  16. glaip_sdk/cli/slash/agent_session.py +7 -0
  17. glaip_sdk/cli/slash/prompt.py +21 -2
  18. glaip_sdk/cli/slash/session.py +15 -21
  19. glaip_sdk/cli/update_notifier.py +8 -2
  20. glaip_sdk/cli/utils.py +99 -369
  21. glaip_sdk/client/_agent_payloads.py +504 -0
  22. glaip_sdk/client/agents.py +194 -551
  23. glaip_sdk/client/base.py +92 -20
  24. glaip_sdk/client/main.py +6 -0
  25. glaip_sdk/client/run_rendering.py +275 -0
  26. glaip_sdk/config/constants.py +3 -0
  27. glaip_sdk/exceptions.py +15 -0
  28. glaip_sdk/models.py +5 -0
  29. glaip_sdk/payload_schemas/__init__.py +19 -0
  30. glaip_sdk/payload_schemas/agent.py +87 -0
  31. glaip_sdk/rich_components.py +12 -0
  32. glaip_sdk/utils/client_utils.py +12 -0
  33. glaip_sdk/utils/import_export.py +2 -2
  34. glaip_sdk/utils/rendering/formatting.py +5 -0
  35. glaip_sdk/utils/rendering/models.py +22 -0
  36. glaip_sdk/utils/rendering/renderer/base.py +9 -1
  37. glaip_sdk/utils/rendering/renderer/panels.py +0 -1
  38. glaip_sdk/utils/rendering/steps.py +59 -0
  39. glaip_sdk/utils/serialization.py +24 -3
  40. {glaip_sdk-0.0.14.dist-info → glaip_sdk-0.0.16.dist-info}/METADATA +1 -1
  41. glaip_sdk-0.0.16.dist-info/RECORD +72 -0
  42. glaip_sdk-0.0.14.dist-info/RECORD +0 -64
  43. {glaip_sdk-0.0.14.dist-info → glaip_sdk-0.0.16.dist-info}/WHEEL +0 -0
  44. {glaip_sdk-0.0.14.dist-info → glaip_sdk-0.0.16.dist-info}/entry_points.txt +0 -0
@@ -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.14
3
+ Version: 0.0.16
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
@@ -0,0 +1,72 @@
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=qHHRG4GCyU_fgCJOx4_20CxcRLItkA2Q-aRCOBGagDs,6414
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=2NeEDnZ1WctVKSfi2VDmYT1Mqo_Lsa7GWCPUORxw2NQ,41167
9
+ glaip_sdk/cli/commands/configure.py,sha256=7bEE6Eo4CCJq5qYbJ-vh6-eXc32d9Mqk4R1rTHZqWZw,7760
10
+ glaip_sdk/cli/commands/mcps.py,sha256=fkl_8SFjz9ZH7rBrY59Mc4DDIDaG1-Xy-OL_xKACa9M,28158
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/config.py,sha256=jCLJxTBAnOU6EJI6JjcpwUTEAWCJRoALbMrhOvvAofc,946
14
+ glaip_sdk/cli/context.py,sha256=M4weRf8dmp5bMtPLRF3w1StnRB7Lo8FPFq2GQMv3Rv8,3617
15
+ glaip_sdk/cli/display.py,sha256=r6gAHg0i__yEq18FjCgb8fzdcURs_ZCiwgM6HV0pjA4,10659
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/slash/__init__.py,sha256=Vdv6Y8bu-pA8dxDlyP4XrhudBPivztUozhLAz9vaLig,682
25
+ glaip_sdk/cli/slash/agent_session.py,sha256=-woZkqH70YUSaEHDF9XpxP-cbh36Jx7yuJW7aA3JszI,7078
26
+ glaip_sdk/cli/slash/prompt.py,sha256=2CLAfdmX6yQedcNLnwZ4g6QFoV9TVv8il9OF8iaJwdc,7977
27
+ glaip_sdk/cli/slash/session.py,sha256=JsTHZB8gPFFdcp_bhtw-nig37Z61OWK_okPMx47H86c,31484
28
+ glaip_sdk/cli/update_notifier.py,sha256=nfQ-jRQKn-nZyt7EhxNfZq9Z7nBrYjZJKAgAtuHffnw,3410
29
+ glaip_sdk/cli/utils.py,sha256=fVWiAIfUwcn_ilteIFlCuRyWTfYZ6WwEFk_Gty58uPU,35480
30
+ glaip_sdk/cli/validators.py,sha256=USbBgY86AwuDHO-Q_g8g7hu-ot4NgITBsWjTWIl62ms,5569
31
+ glaip_sdk/client/__init__.py,sha256=nYLXfBVTTWwKjP0e63iumPYO4k5FifwWaELQPaPIKIg,188
32
+ glaip_sdk/client/_agent_payloads.py,sha256=sYlMzrfAdd8KC37qxokLy2uDd3aOhzQirnv7UYlvwYc,16385
33
+ glaip_sdk/client/agents.py,sha256=KJPl2WTJSYFhPYypvzRpT5X1jCwmvaYbTZrf16ECpaw,21103
34
+ glaip_sdk/client/base.py,sha256=OPRlAWhZ77rUK0MRGA83-zW5NVhxJ1RgdfcfGOYr8rI,16267
35
+ glaip_sdk/client/main.py,sha256=YhStfWSDcA91eN6zNX2MLYRYbtdCJEmp0dZExieA2OA,8190
36
+ glaip_sdk/client/mcps.py,sha256=-O-I15qjbwfSA69mouHY6g5_qgPWC4rM98VJLpOkh1A,8975
37
+ glaip_sdk/client/run_rendering.py,sha256=fXUj1FBw8n-nAzjI_zaG7-Ap_UXXe0z4tMdL7m2R7Ek,9213
38
+ glaip_sdk/client/tools.py,sha256=n8DIiOOf1YU_j9JK3Bx2-rDnkpckPi0MI9Ok2s1kwa4,16634
39
+ glaip_sdk/client/validators.py,sha256=NtPsWjQLjj25LiUnmR-WuS8lL5p4MVRaYT9UVRmj9bo,8809
40
+ glaip_sdk/config/constants.py,sha256=dI7hH46700gCl6jWNgpjYr00ZOWl2m1xg8UesjaXcCA,885
41
+ glaip_sdk/exceptions.py,sha256=ILquxC4QGPFR9eY6RpeXzkQsblfsvZMGFqz38ZjeW3E,2345
42
+ glaip_sdk/models.py,sha256=ofhnNOaKK0UK1mDiot73z8qS0-X2IKJXmm7YyOifGzg,8876
43
+ glaip_sdk/payload_schemas/__init__.py,sha256=fJamlkpS3IfS9xyKAQaUbnalvrtG5Ied69OUVAA3xvs,395
44
+ glaip_sdk/payload_schemas/agent.py,sha256=nlizuv2w4SVzmMJSE90rE6Ll0Hfpcr5hvPsW_NtXCV0,3204
45
+ glaip_sdk/rich_components.py,sha256=veaps1hrSkC3nSVunAevvynSux8Cg3yFEDmbJk66p7w,1267
46
+ glaip_sdk/utils/__init__.py,sha256=fmVGcUFa7G0CCfSMSqfNU2BqFl36G1gOFyDfTvtJfVw,926
47
+ glaip_sdk/utils/agent_config.py,sha256=b7_J5DELyk0b_XEoi7tsxbS3wqzAKbMa-3_C-65pPIY,6791
48
+ glaip_sdk/utils/client_utils.py,sha256=x27kHQNOxvyVN5GLUiymi0eHzkXRKw-x3s0q0VkMvY4,13938
49
+ glaip_sdk/utils/display.py,sha256=94s9lYF_8ra8jpeqOkbVrUm8oidtCE6OtucyxLQPKmU,3105
50
+ glaip_sdk/utils/general.py,sha256=V5hJrIpYDvDsldU_nChHpuvV2AwhFLUI7Qvcaihq_8A,2270
51
+ glaip_sdk/utils/import_export.py,sha256=jEhl5U6hWWMR1wo5AXpV-_jN_56DcWcemOa2UaFHapk,5217
52
+ glaip_sdk/utils/rendering/__init__.py,sha256=vXjwk5rPhhfPyD8S0DnV4GFFEtPJp4HCCg1Um9SXfs0,70
53
+ glaip_sdk/utils/rendering/formatting.py,sha256=I8nN4H3DxTOYIExn6gozcxyAn_GO1lSztbcrSCkcscg,7351
54
+ glaip_sdk/utils/rendering/models.py,sha256=AM9JbToyA3zrAzXQYjh6oxjBkgZDfWEbs5MmNKODnOY,2259
55
+ glaip_sdk/utils/rendering/renderer/__init__.py,sha256=EXwVBmGkSYcype4ocAXo69Z1kXu0gpNXmhH5LW0_B7A,2939
56
+ glaip_sdk/utils/rendering/renderer/base.py,sha256=HGljrxMcDq4QCsWcwR45qZYjKWZprBunnZJYYea8FTQ,42764
57
+ glaip_sdk/utils/rendering/renderer/config.py,sha256=-P35z9JO_1ypJXAqxJ1ybHraH4i-I1LPopeW3Lh7ACE,785
58
+ glaip_sdk/utils/rendering/renderer/console.py,sha256=4cLOw4Q1fkHkApuj6dWW8eYpeYdcT0t2SO5MbVt5UTc,1844
59
+ glaip_sdk/utils/rendering/renderer/debug.py,sha256=FEYxAu4ZB0CjrJKevqQ2TKDgElA2cf6GqZXCNm12sNQ,3721
60
+ glaip_sdk/utils/rendering/renderer/panels.py,sha256=N0Z6UZt3FUTxakRzHdOef1i3UnMR_Zr_TAvw0_MRpnQ,3363
61
+ glaip_sdk/utils/rendering/renderer/progress.py,sha256=i4HG_iNwtK4c3Gf2sviLCiOJ-5ydX4t-YE5dgtLOxNI,3438
62
+ glaip_sdk/utils/rendering/renderer/stream.py,sha256=1RP5TIV7tqg07X9gPN053XeabFGVT4jPplxaoPU0L38,8601
63
+ glaip_sdk/utils/rendering/steps.py,sha256=V7xFoJM_B-nWT1wMdcXGN5ytCrDTxEzKcX_YCWyJqkk,9051
64
+ glaip_sdk/utils/resource_refs.py,sha256=0YzblJNfRhz9xhpaKE9aE68XEV-6_ssr0fIkiMVOka0,5489
65
+ glaip_sdk/utils/rich_utils.py,sha256=-Ij-1bIJvnVAi6DrfftchIlMcvOTjVmSE0Qqax0EY_s,763
66
+ glaip_sdk/utils/run_renderer.py,sha256=d_VMI6LbvHPUUeRmGqh5wK_lHqDEIAcym2iqpbtDad0,1365
67
+ glaip_sdk/utils/serialization.py,sha256=AFbucakFaCtQDfcgsm2gHZ1iZDA8OaJSZUsS6FhWFR0,12820
68
+ glaip_sdk/utils/validation.py,sha256=QNORcdyvuliEs4EH2_mkDgmoyT9utgl7YNhaf45SEf8,6992
69
+ glaip_sdk-0.0.16.dist-info/METADATA,sha256=9RMf0ol4z-uU8SOE1IXMbrH1_i-5sjv8oV5ZDk9dW5U,5168
70
+ glaip_sdk-0.0.16.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
71
+ glaip_sdk-0.0.16.dist-info/entry_points.txt,sha256=EGs8NO8J1fdFMWA3CsF7sKBEvtHb_fujdCoNPhfMouE,47
72
+ glaip_sdk-0.0.16.dist-info/RECORD,,
@@ -1,64 +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=97dzowjHgk5knyHuI-0z2ojvqNlkebNN1-ikGEoS5sc,40623
9
- glaip_sdk/cli/commands/configure.py,sha256=eRDzsaKV4fl2lJt8ieS4g2-xRnaa02eAAPW8xBf-tqA,7507
10
- glaip_sdk/cli/commands/mcps.py,sha256=ENhasfSupmCSKs-Ycg-M9Gy-58Y55SMIQzeg3fBJj48,28186
11
- glaip_sdk/cli/commands/models.py,sha256=Ra3-50BPScNs0Q-j4b7U4iK0hNooucEyVgHpQ11-pt8,1700
12
- glaip_sdk/cli/commands/tools.py,sha256=MOM9Db3HGL1stF-WvL5cZXjw-iZo2qc-oyKQHy6VwIM,18690
13
- glaip_sdk/cli/display.py,sha256=jE20swoRKzpYUmc0jgbeonaXKeE9x95hfjWAEdnBYRc,8727
14
- glaip_sdk/cli/io.py,sha256=GPkw3pQMLBGoD5GH-KlbKpNRlVWFZOXHE17F7V3kQsI,3343
15
- glaip_sdk/cli/main.py,sha256=3Bl8u9t1MekzaNrAZqsx4TukbzzFdi6Wss6jvTDos00,12930
16
- glaip_sdk/cli/mcp_validators.py,sha256=PEJRzb7ogRkwNJwJK9k5Xmb8hvoQ58L2Qywqd_3Wayo,10125
17
- glaip_sdk/cli/parsers/__init__.py,sha256=Ycd4HDfYmA7GUGFt0ndBPBo5uTbv15XsXnYUj-a89ug,183
18
- glaip_sdk/cli/parsers/json_input.py,sha256=iISa31ZsDNYWfCVRy0cifRIg2gjnhI-XtdDLB-UOshg,4039
19
- glaip_sdk/cli/resolution.py,sha256=BOw2NchReLKewAwBAZLWw_3_bI7u3tfzQEO7kQbIiGE,2067
20
- glaip_sdk/cli/slash/__init__.py,sha256=Vdv6Y8bu-pA8dxDlyP4XrhudBPivztUozhLAz9vaLig,682
21
- glaip_sdk/cli/slash/agent_session.py,sha256=pDOwGXNHuyJIulrGYu1pacyF3oxHWeDQY-Uv92h2qVg,6859
22
- glaip_sdk/cli/slash/prompt.py,sha256=Pr5SSTOKFssRsi-AujOm5_BCW_f5MxgLwJ3CCji1ogM,7356
23
- glaip_sdk/cli/slash/session.py,sha256=U5UEL6eIvNkIJcSz04Uf8Ql0EptmLJukqHxDCAJ-nOQ,31097
24
- glaip_sdk/cli/update_notifier.py,sha256=uVbjZJnW4znTzx4AkqsDO4NfXiF-mtQiypTkJByAVuM,3236
25
- glaip_sdk/cli/utils.py,sha256=98n1tovTUSqS5BIUl4cz6zGoRSSJiXFGJW8oD0xIm2g,42537
26
- glaip_sdk/cli/validators.py,sha256=USbBgY86AwuDHO-Q_g8g7hu-ot4NgITBsWjTWIl62ms,5569
27
- glaip_sdk/client/__init__.py,sha256=nYLXfBVTTWwKjP0e63iumPYO4k5FifwWaELQPaPIKIg,188
28
- glaip_sdk/client/agents.py,sha256=FSKubF40wptMNIheC3_iawiX2CRbhTcNLFiz4qkPC6k,34659
29
- glaip_sdk/client/base.py,sha256=O3dv3I7PqY91gH1FehBMRZcSXjwimfeBcJuiXidDmqw,13700
30
- glaip_sdk/client/main.py,sha256=LlvYHP7-Hy7Eq1ep1kfk337K-Oue5SdKWJpqYfX9eXY,7993
31
- glaip_sdk/client/mcps.py,sha256=-O-I15qjbwfSA69mouHY6g5_qgPWC4rM98VJLpOkh1A,8975
32
- glaip_sdk/client/tools.py,sha256=n8DIiOOf1YU_j9JK3Bx2-rDnkpckPi0MI9Ok2s1kwa4,16634
33
- glaip_sdk/client/validators.py,sha256=NtPsWjQLjj25LiUnmR-WuS8lL5p4MVRaYT9UVRmj9bo,8809
34
- glaip_sdk/config/constants.py,sha256=ysEobMiXlLZGIOEaqTdHpPF8kmg5nbLn7BIcBvTCuHM,819
35
- glaip_sdk/exceptions.py,sha256=DJgaIcvGA09qIX10-ypYgQQ5_k5N3qknmiIFP3p4Z7E,1872
36
- glaip_sdk/models.py,sha256=0Y65LXpLqUY3IYVPIzP7jm8gdZUMw-EKRKGC1ZOLOcA,8758
37
- glaip_sdk/rich_components.py,sha256=pmJd-81OQE8bC9UOXtga5rsax4zphKlzCZ1JoWbbQzQ,803
38
- glaip_sdk/utils/__init__.py,sha256=fmVGcUFa7G0CCfSMSqfNU2BqFl36G1gOFyDfTvtJfVw,926
39
- glaip_sdk/utils/agent_config.py,sha256=b7_J5DELyk0b_XEoi7tsxbS3wqzAKbMa-3_C-65pPIY,6791
40
- glaip_sdk/utils/client_utils.py,sha256=M6rZloMKyONaZfI0RtU5tnkibwrIJL5Udw4wPMKkJcw,13588
41
- glaip_sdk/utils/display.py,sha256=94s9lYF_8ra8jpeqOkbVrUm8oidtCE6OtucyxLQPKmU,3105
42
- glaip_sdk/utils/general.py,sha256=V5hJrIpYDvDsldU_nChHpuvV2AwhFLUI7Qvcaihq_8A,2270
43
- glaip_sdk/utils/import_export.py,sha256=az_0jCpMB7I6N5HygS2uc62-W6ddm4buEwm6gTsalhY,5203
44
- glaip_sdk/utils/rendering/__init__.py,sha256=vXjwk5rPhhfPyD8S0DnV4GFFEtPJp4HCCg1Um9SXfs0,70
45
- glaip_sdk/utils/rendering/formatting.py,sha256=_k8tkcobctmHvdygMljZF7-ALGXpD9-hHF1CNtM2KMU,7201
46
- glaip_sdk/utils/rendering/models.py,sha256=SS34_00FaoGuSYn-viBkAtIbq7cJNwwPjpxnvyeUmxI,1567
47
- glaip_sdk/utils/rendering/renderer/__init__.py,sha256=EXwVBmGkSYcype4ocAXo69Z1kXu0gpNXmhH5LW0_B7A,2939
48
- glaip_sdk/utils/rendering/renderer/base.py,sha256=A_f8r3hWDVrQjzUR5CYzQMekPRIdG-l7Wjh9Hx492Xk,42425
49
- glaip_sdk/utils/rendering/renderer/config.py,sha256=-P35z9JO_1ypJXAqxJ1ybHraH4i-I1LPopeW3Lh7ACE,785
50
- glaip_sdk/utils/rendering/renderer/console.py,sha256=4cLOw4Q1fkHkApuj6dWW8eYpeYdcT0t2SO5MbVt5UTc,1844
51
- glaip_sdk/utils/rendering/renderer/debug.py,sha256=FEYxAu4ZB0CjrJKevqQ2TKDgElA2cf6GqZXCNm12sNQ,3721
52
- glaip_sdk/utils/rendering/renderer/panels.py,sha256=05u6SjU53iP9VD0YHTNruzD7sO6qYCp-P5dTTSdSZmU,3364
53
- glaip_sdk/utils/rendering/renderer/progress.py,sha256=i4HG_iNwtK4c3Gf2sviLCiOJ-5ydX4t-YE5dgtLOxNI,3438
54
- glaip_sdk/utils/rendering/renderer/stream.py,sha256=1RP5TIV7tqg07X9gPN053XeabFGVT4jPplxaoPU0L38,8601
55
- glaip_sdk/utils/rendering/steps.py,sha256=4zdeyKxMbUzCal4-yv8yf18144cs5wwXaxhe6mt2KiE,7307
56
- glaip_sdk/utils/resource_refs.py,sha256=0YzblJNfRhz9xhpaKE9aE68XEV-6_ssr0fIkiMVOka0,5489
57
- glaip_sdk/utils/rich_utils.py,sha256=-Ij-1bIJvnVAi6DrfftchIlMcvOTjVmSE0Qqax0EY_s,763
58
- glaip_sdk/utils/run_renderer.py,sha256=d_VMI6LbvHPUUeRmGqh5wK_lHqDEIAcym2iqpbtDad0,1365
59
- glaip_sdk/utils/serialization.py,sha256=T1yt_8G2DCFpcxx7XnqFl5slksRXfBCUuLQJTreGYEQ,11806
60
- glaip_sdk/utils/validation.py,sha256=QNORcdyvuliEs4EH2_mkDgmoyT9utgl7YNhaf45SEf8,6992
61
- glaip_sdk-0.0.14.dist-info/METADATA,sha256=hLG4fJ5u_23gDgWSYD1THNIIRgkBh1i9OTp76TJMCzo,5168
62
- glaip_sdk-0.0.14.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
63
- glaip_sdk-0.0.14.dist-info/entry_points.txt,sha256=EGs8NO8J1fdFMWA3CsF7sKBEvtHb_fujdCoNPhfMouE,47
64
- glaip_sdk-0.0.14.dist-info/RECORD,,