glaip-sdk 0.3.0__py3-none-any.whl → 0.4.0__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 (50) hide show
  1. glaip_sdk/cli/auth.py +2 -1
  2. glaip_sdk/cli/commands/agents.py +1 -1
  3. glaip_sdk/cli/commands/configure.py +2 -1
  4. glaip_sdk/cli/commands/mcps.py +191 -44
  5. glaip_sdk/cli/commands/transcripts.py +1 -1
  6. glaip_sdk/cli/display.py +1 -1
  7. glaip_sdk/cli/hints.py +58 -0
  8. glaip_sdk/cli/io.py +6 -3
  9. glaip_sdk/cli/main.py +2 -1
  10. glaip_sdk/cli/slash/agent_session.py +2 -1
  11. glaip_sdk/cli/slash/session.py +1 -1
  12. glaip_sdk/cli/transcript/capture.py +1 -1
  13. glaip_sdk/cli/transcript/viewer.py +13 -646
  14. glaip_sdk/cli/update_notifier.py +2 -1
  15. glaip_sdk/cli/utils.py +63 -110
  16. glaip_sdk/client/agents.py +2 -4
  17. glaip_sdk/client/main.py +2 -18
  18. glaip_sdk/client/mcps.py +11 -1
  19. glaip_sdk/client/run_rendering.py +90 -111
  20. glaip_sdk/client/shared.py +21 -0
  21. glaip_sdk/models.py +8 -7
  22. glaip_sdk/utils/display.py +23 -15
  23. glaip_sdk/utils/rendering/__init__.py +6 -13
  24. glaip_sdk/utils/rendering/formatting.py +5 -30
  25. glaip_sdk/utils/rendering/layout/__init__.py +64 -0
  26. glaip_sdk/utils/rendering/{renderer → layout}/panels.py +9 -0
  27. glaip_sdk/utils/rendering/{renderer → layout}/progress.py +70 -1
  28. glaip_sdk/utils/rendering/layout/summary.py +74 -0
  29. glaip_sdk/utils/rendering/layout/transcript.py +606 -0
  30. glaip_sdk/utils/rendering/models.py +1 -0
  31. glaip_sdk/utils/rendering/renderer/__init__.py +10 -28
  32. glaip_sdk/utils/rendering/renderer/base.py +214 -1469
  33. glaip_sdk/utils/rendering/renderer/debug.py +24 -0
  34. glaip_sdk/utils/rendering/renderer/factory.py +138 -0
  35. glaip_sdk/utils/rendering/renderer/thinking.py +273 -0
  36. glaip_sdk/utils/rendering/renderer/tool_panels.py +442 -0
  37. glaip_sdk/utils/rendering/renderer/transcript_mode.py +162 -0
  38. glaip_sdk/utils/rendering/state.py +204 -0
  39. glaip_sdk/utils/rendering/steps/__init__.py +34 -0
  40. glaip_sdk/utils/rendering/{steps.py → steps/event_processor.py} +53 -440
  41. glaip_sdk/utils/rendering/steps/format.py +176 -0
  42. glaip_sdk/utils/rendering/steps/manager.py +387 -0
  43. glaip_sdk/utils/rendering/timing.py +36 -0
  44. glaip_sdk/utils/rendering/viewer/__init__.py +21 -0
  45. glaip_sdk/utils/rendering/viewer/presenter.py +184 -0
  46. glaip_sdk/utils/validation.py +13 -21
  47. {glaip_sdk-0.3.0.dist-info → glaip_sdk-0.4.0.dist-info}/METADATA +1 -1
  48. {glaip_sdk-0.3.0.dist-info → glaip_sdk-0.4.0.dist-info}/RECORD +50 -34
  49. {glaip_sdk-0.3.0.dist-info → glaip_sdk-0.4.0.dist-info}/WHEEL +0 -0
  50. {glaip_sdk-0.3.0.dist-info → glaip_sdk-0.4.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,184 @@
1
+ """Shared presenter utilities for CLI/offline transcript viewing.
2
+
3
+ Authors:
4
+ Raymond Christopher (raymond.christopher@gdplabs.id)
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from dataclasses import dataclass
10
+ from typing import Any
11
+
12
+ from rich.console import Console
13
+
14
+ from glaip_sdk.utils.rendering.layout.transcript import (
15
+ DEFAULT_TRANSCRIPT_THEME,
16
+ TranscriptGlyphs,
17
+ TranscriptSnapshot,
18
+ build_transcript_snapshot,
19
+ build_transcript_view,
20
+ )
21
+ from glaip_sdk.utils.rendering.renderer.debug import render_debug_event_stream
22
+ from glaip_sdk.utils.rendering.state import RendererState, coerce_received_at
23
+ from glaip_sdk.utils.rendering.steps import StepManager
24
+
25
+
26
+ @dataclass(slots=True)
27
+ class ViewerContext:
28
+ """Runtime context passed to transcript presenters."""
29
+
30
+ manifest_entry: dict[str, Any]
31
+ events: list[dict[str, Any]]
32
+ default_output: str
33
+ final_output: str
34
+ stream_started_at: float | None
35
+ meta: dict[str, Any]
36
+
37
+
38
+ def render_post_run_view(
39
+ console: Console,
40
+ ctx: ViewerContext,
41
+ *,
42
+ glyphs: TranscriptGlyphs | None = None,
43
+ theme: str = DEFAULT_TRANSCRIPT_THEME,
44
+ ) -> TranscriptSnapshot:
45
+ """Render the default summary view and return the snapshot used."""
46
+ snapshot, _state = prepare_viewer_snapshot(
47
+ ctx,
48
+ glyphs=glyphs,
49
+ theme=theme,
50
+ )
51
+ render_transcript_view(console, snapshot, theme=theme)
52
+ return snapshot
53
+
54
+
55
+ def render_transcript_view(
56
+ console: Console,
57
+ snapshot: TranscriptSnapshot,
58
+ *,
59
+ theme: str = DEFAULT_TRANSCRIPT_THEME,
60
+ ) -> None:
61
+ """Render the transcript summary using a prepared snapshot."""
62
+ header, body = build_transcript_view(snapshot, theme=theme)
63
+ _print_renderables(console, header + body)
64
+
65
+
66
+ def render_transcript_events(console: Console, events: list[dict[str, Any]]) -> None:
67
+ """Pretty-print transcript events using shared debug presenter."""
68
+ if not events:
69
+ console.print("[dim]No SSE events were captured for this run.[/dim]")
70
+ console.print()
71
+ return
72
+
73
+ console.print("[bold]Transcript Events[/bold]")
74
+ console.print("[dim]────────────────────────────────────────────────────────[/dim]")
75
+
76
+ render_debug_event_stream(
77
+ events,
78
+ console,
79
+ resolve_timestamp=lambda event: coerce_received_at(event.get("received_at")),
80
+ )
81
+ console.print()
82
+
83
+
84
+ def prepare_viewer_snapshot(
85
+ ctx: ViewerContext,
86
+ *,
87
+ glyphs: TranscriptGlyphs | None,
88
+ theme: str,
89
+ ) -> tuple[TranscriptSnapshot, RendererState]:
90
+ """Build a transcript snapshot plus renderer state for reusable viewing."""
91
+ state = _build_renderer_state(ctx)
92
+ manager = _build_steps_from_events(ctx.events)
93
+ query = _extract_query_from_manifest(ctx)
94
+ merged_meta = _merge_meta(ctx)
95
+ snapshot = build_transcript_snapshot(
96
+ state,
97
+ manager,
98
+ glyphs=glyphs,
99
+ query_text=query,
100
+ meta=merged_meta,
101
+ theme=theme,
102
+ )
103
+ return snapshot, state
104
+
105
+
106
+ def _build_renderer_state(ctx: ViewerContext) -> RendererState:
107
+ state = RendererState()
108
+ state.meta = dict(ctx.meta or {})
109
+
110
+ final_text = (ctx.final_output or "").strip()
111
+ default_text = (ctx.default_output or "").strip()
112
+ if final_text:
113
+ state.final_text = final_text
114
+ elif default_text:
115
+ state.final_text = default_text
116
+ state.buffer.append(default_text)
117
+
118
+ duration = _extract_final_duration(ctx.events)
119
+ if duration:
120
+ state.final_duration_text = duration # pragma: no cover - exercised indirectly via end-to-end tests
121
+ state.events = list(ctx.events or [])
122
+ return state
123
+
124
+
125
+ def _build_steps_from_events(events: list[dict[str, Any]]) -> StepManager:
126
+ manager = StepManager()
127
+ for event in events or []:
128
+ payload = _coerce_step_event(event)
129
+ if not payload:
130
+ continue
131
+ try:
132
+ manager.apply_event(payload)
133
+ except ValueError:
134
+ continue
135
+ return manager
136
+
137
+
138
+ def _coerce_step_event(event: dict[str, Any]) -> dict[str, Any] | None:
139
+ metadata = event.get("metadata")
140
+ if not isinstance(metadata, dict):
141
+ return None
142
+ if not isinstance(metadata.get("step_id"), str):
143
+ return None
144
+ return {
145
+ "metadata": metadata,
146
+ "status": event.get("status"),
147
+ "task_state": event.get("task_state"),
148
+ "content": event.get("content"),
149
+ "task_id": event.get("task_id"),
150
+ "context_id": event.get("context_id"),
151
+ }
152
+
153
+
154
+ def _extract_final_duration(events: list[dict[str, Any]]) -> str | None:
155
+ for event in events or []:
156
+ metadata = event.get("metadata") or {}
157
+ if metadata.get("kind") != "final_response":
158
+ continue
159
+ time_value = metadata.get("time")
160
+ if isinstance(time_value, (int, float)):
161
+ return f"{float(time_value):.2f}s"
162
+ return None
163
+
164
+
165
+ def _extract_query_from_manifest(ctx: ViewerContext) -> str | None:
166
+ query = ctx.manifest_entry.get("input_message") or ctx.meta.get("input_message") or ctx.meta.get("query")
167
+ if isinstance(query, str) and query.strip():
168
+ return query.strip()
169
+ return None
170
+
171
+
172
+ def _merge_meta(ctx: ViewerContext) -> dict[str, Any]:
173
+ merged = dict(ctx.meta or {})
174
+ manifest = ctx.manifest_entry or {}
175
+ for key in ("agent_name", "agent_id", "model", "run_id", "input_message"):
176
+ if key in manifest and manifest[key] and key not in merged:
177
+ merged[key] = manifest[key]
178
+ return merged
179
+
180
+
181
+ def _print_renderables(console: Console, renderables: list[Any]) -> None:
182
+ for renderable in renderables:
183
+ console.print(renderable)
184
+ console.print()
@@ -18,6 +18,16 @@ from glaip_sdk.utils.resource_refs import validate_name_format
18
18
  RESERVED_NAMES = ["admin", "root", "system", "api", "test", "demo"]
19
19
 
20
20
 
21
+ def _validate_named_resource(name: str, resource_type: str) -> str:
22
+ """Shared validator that prevents reserved-name duplication."""
23
+ cleaned_name = validate_name_format(name, resource_type)
24
+
25
+ if cleaned_name.lower() in RESERVED_NAMES:
26
+ raise ValueError(f"{resource_type.capitalize()} name '{cleaned_name}' is reserved and cannot be used")
27
+
28
+ return cleaned_name
29
+
30
+
21
31
  def validate_agent_name(name: str) -> str:
22
32
  """Validate agent name and return cleaned version.
23
33
 
@@ -30,13 +40,7 @@ def validate_agent_name(name: str) -> str:
30
40
  Raises:
31
41
  ValueError: If name is invalid
32
42
  """
33
- cleaned_name = validate_name_format(name, "agent")
34
-
35
- # Check for reserved names
36
- if cleaned_name.lower() in RESERVED_NAMES:
37
- raise ValueError(f"'{cleaned_name}' is a reserved name and cannot be used")
38
-
39
- return cleaned_name
43
+ return _validate_named_resource(name, "agent")
40
44
 
41
45
 
42
46
  def validate_agent_instruction(instruction: str) -> str:
@@ -74,13 +78,7 @@ def validate_tool_name(name: str) -> str:
74
78
  Raises:
75
79
  ValueError: If name is invalid
76
80
  """
77
- cleaned_name = validate_name_format(name, "tool")
78
-
79
- # Check for reserved names
80
- if cleaned_name.lower() in RESERVED_NAMES:
81
- raise ValueError(f"'{cleaned_name}' is a reserved name and cannot be used")
82
-
83
- return cleaned_name
81
+ return _validate_named_resource(name, "tool")
84
82
 
85
83
 
86
84
  def validate_mcp_name(name: str) -> str:
@@ -95,13 +93,7 @@ def validate_mcp_name(name: str) -> str:
95
93
  Raises:
96
94
  ValueError: If name is invalid
97
95
  """
98
- cleaned_name = validate_name_format(name, "mcp")
99
-
100
- # Check for reserved names
101
- if cleaned_name.lower() in RESERVED_NAMES:
102
- raise ValueError(f"'{cleaned_name}' is a reserved name and cannot be used")
103
-
104
- return cleaned_name
96
+ return _validate_named_resource(name, "mcp")
105
97
 
106
98
 
107
99
  def validate_timeout(timeout: int) -> int:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: glaip-sdk
3
- Version: 0.3.0
3
+ Version: 0.4.0
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
@@ -3,21 +3,22 @@ glaip_sdk/_version.py,sha256=5CHGCxx_36fgmMWuEx6jJ2CzzM-i9eBFyQWFwBi23XE,2259
3
3
  glaip_sdk/branding.py,sha256=tLqYCIHMkUf8p2smpuAGNptwaKUN38G4mlh0A0DOl_w,7823
4
4
  glaip_sdk/cli/__init__.py,sha256=xCCfuF1Yc7mpCDcfhHZTX0vizvtrDSLeT8MJ3V7m5A0,156
5
5
  glaip_sdk/cli/agent_config.py,sha256=YAbFKrTNTRqNA6b0i0Q3pH-01rhHDRi5v8dxSFwGSwM,2401
6
- glaip_sdk/cli/auth.py,sha256=oZLgZTqVgx_o2ppcp1ueFwuu88acOUPUr9ed1WDe_HY,15860
6
+ glaip_sdk/cli/auth.py,sha256=wvzJJXKzOeRaGfuWSv7_VJMba-vbvID0Q5jRYpALOBg,15891
7
7
  glaip_sdk/cli/commands/__init__.py,sha256=6Z3ASXDut0lAbUX_umBFtxPzzFyqoiZfVeTahThFu1A,219
8
- glaip_sdk/cli/commands/agents.py,sha256=W79_08ILOHbjR1AqkbiTfE26oGLR-Nd5V9XRNPfCLVE,47659
9
- glaip_sdk/cli/commands/configure.py,sha256=tcJeHMLXnkT_aeR5-5vsDAg2RwOvIMDxZcWCr6qbHqk,11389
10
- glaip_sdk/cli/commands/mcps.py,sha256=ch9SSo55E26i76pZfiPe33wGoz6FzU62VJpu8Pi7ds8,38072
8
+ glaip_sdk/cli/commands/agents.py,sha256=RTfL-Hj-ORbbsJoRZMJD_MM-zO6P765GPZzZvGxUpYE,47686
9
+ glaip_sdk/cli/commands/configure.py,sha256=urq9Wdnd2JbHSY2KJMCy0-4rBMhQLYsdlWL_YMVgVu8,11420
10
+ glaip_sdk/cli/commands/mcps.py,sha256=tttqQnfM89iI9Pm94u8YRhiHMQNYNouecFX0brsT4cQ,42551
11
11
  glaip_sdk/cli/commands/models.py,sha256=vfcGprK5CHprQ0CNpNzQlNNTELvdgKC7JxTG_ijOwmE,2009
12
12
  glaip_sdk/cli/commands/tools.py,sha256=7_RMTuTI1Guu7psClovbyt2umfk4rkp7jSW19GXKA44,18440
13
- glaip_sdk/cli/commands/transcripts.py,sha256=5W_wRVzyCh813xEXh6UDwzRy4anbc2Shz03ZIVdBhyM,26379
13
+ glaip_sdk/cli/commands/transcripts.py,sha256=4kI6FoaL9K5ch10tKr7vdT10UPdFi5f5ANZhCDytyss,26377
14
14
  glaip_sdk/cli/commands/update.py,sha256=rIZo_x-tvpvcwpQLpwYwso1ix6qTHuNNTL4egmn5fEM,1812
15
15
  glaip_sdk/cli/config.py,sha256=2NZxFyt8jc6CMRUbuxx7sq_wsfTJXmwQGn09hhYHGnE,1341
16
16
  glaip_sdk/cli/constants.py,sha256=zqcVtzfj6huW97gbCmhkFqntge1H-c1vnkGqTazADgU,895
17
17
  glaip_sdk/cli/context.py,sha256=--Y5vc6lgoAV7cRoUAr9UxSQaLmkMg29FolA7EwoRqM,3803
18
- glaip_sdk/cli/display.py,sha256=RuBZxmdBesllMMmH4lYoaozolNHW8hLhxRDFzpTsbhs,12137
19
- glaip_sdk/cli/io.py,sha256=_7qHA3K4VfzNXP7NYHShby_Bw9xigJ26oIaESXYDAQ8,3678
20
- glaip_sdk/cli/main.py,sha256=0mzWIzSfnRAMxzJMxcY2h9l8PU44Jii5UYFWaYdeVGY,16936
18
+ glaip_sdk/cli/display.py,sha256=845_VGCFeQJfvwyLtAIj4E6Rs-alFNmTQXOOWpF-F5U,12137
19
+ glaip_sdk/cli/hints.py,sha256=ZnBvQFgODCmKwRPNIjFswi7XAFsKOyVgFBroxI4jvq4,1597
20
+ glaip_sdk/cli/io.py,sha256=ChP6CRKbtuENsNomNEaMDfPDU0iqO-WuVvl4_y7F2io,3871
21
+ glaip_sdk/cli/main.py,sha256=lPX7IoUuQshAXQQPtdOl563H6VhLWvxCwW9tsFLoJqM,16967
21
22
  glaip_sdk/cli/masking.py,sha256=QRtUeHBVCJG02EXLxnPzfhRmD-leMxWf6QKxh4TCax0,3666
22
23
  glaip_sdk/cli/mcp_validators.py,sha256=cwbz7p_p7_9xVuuF96OBQOdmEgo5UObU6iWWQ2X03PI,10047
23
24
  glaip_sdk/cli/pager.py,sha256=XygkAB6UW3bte7I4KmK7-PUGCJiq2Pv-4-MfyXAmXCw,7925
@@ -26,30 +27,31 @@ glaip_sdk/cli/parsers/json_input.py,sha256=kxoxeIlgfsaH2jhe6apZAgSxAtwlpSINLTMRs
26
27
  glaip_sdk/cli/resolution.py,sha256=K-VaEHm9SYY_qfb9538VNHykL4_2N6F8iQqI1zMx_64,2402
27
28
  glaip_sdk/cli/rich_helpers.py,sha256=kO47N8e506rxrN6Oc9mbAWN3Qb536oQPWZy1s9A616g,819
28
29
  glaip_sdk/cli/slash/__init__.py,sha256=J9TPL2UcNTkW8eifG6nRmAEGHhyEgdYMYk4cHaaObC0,386
29
- glaip_sdk/cli/slash/agent_session.py,sha256=mjMG33VBQvUcqz9yWE5TwPmQMpODU3QDT1Lb1espLlo,11273
30
+ glaip_sdk/cli/slash/agent_session.py,sha256=F11RYVBGs86Ox2zW7czXSBjojPx9jMAdgAiSxWdZl6k,11304
30
31
  glaip_sdk/cli/slash/prompt.py,sha256=2urqR3QqN3O09lHmKKSEbhsIdlS4B7hm9O8AP_VwCSU,8034
31
32
  glaip_sdk/cli/slash/remote_runs_controller.py,sha256=1kdnrH6HNlblqpRtTJVlWzWUeFPlmd6Ef_IDkqZ01CI,21354
32
- glaip_sdk/cli/slash/session.py,sha256=t58QDPZWs0cKro7tV4lVq9NRCisLkZfXeNIXWdz8SaA,57421
33
+ glaip_sdk/cli/slash/session.py,sha256=GB6rMHw5-5zl61XI1ShjtIKe6MOi3zc8biXJxPaw9do,57448
33
34
  glaip_sdk/cli/slash/tui/__init__.py,sha256=ljBAeAFY2qNDkbJrZh5NgXxjwUlsv9-UxgKNIv0AF1Q,274
34
35
  glaip_sdk/cli/slash/tui/remote_runs_app.py,sha256=MRAY8AeUML8dUaC9eHyDK1gwEa6H12bI1XgcO8w21MI,24763
35
36
  glaip_sdk/cli/transcript/__init__.py,sha256=yiYHyNtebMCu3BXu56Xm5RBC2tDc865q8UGPnoe6QRs,920
36
37
  glaip_sdk/cli/transcript/cache.py,sha256=Wi1uln6HP1U6F-MRTrfnxi9bn6XJTxwWXhREIRPoMqQ,17439
37
- glaip_sdk/cli/transcript/capture.py,sha256=PMmJGjdC3QEeBdjkmdAE2-aINqUGrSKYmT5lEINzZ08,10345
38
+ glaip_sdk/cli/transcript/capture.py,sha256=5Zmg0HXPs01-M8v37pNl_JmdMR6WGk7NxIvXVq-bFaI,10343
38
39
  glaip_sdk/cli/transcript/export.py,sha256=reCvrZVzli8_LzYe5ZNdaa-MwZ1ov2RjnDzKZWr_6-E,1117
39
40
  glaip_sdk/cli/transcript/history.py,sha256=2FBjawxP8CX9gRPMUMP8bDjG50BGM2j2zk6IfHvAMH4,26211
40
41
  glaip_sdk/cli/transcript/launcher.py,sha256=z5ivkPXDQJpATIqtRLUK8jH3p3WIZ72PvOPqYRDMJvw,2327
41
- glaip_sdk/cli/transcript/viewer.py,sha256=xQmX639q6c26hSzf1ItSOUHQVt23BrPqPBw5vQLyk04,32891
42
- glaip_sdk/cli/update_notifier.py,sha256=t_qgKGPic8VO5O6h12SfglCpRpnkt65Bkg-EF3C79Bo,9776
43
- glaip_sdk/cli/utils.py,sha256=iVrKiFAjkoLCKk0BaP0rCCtp2__34sB9-C7c3FHyG4o,54403
42
+ glaip_sdk/cli/transcript/viewer.py,sha256=ar1SzRkhKIf3_DgFz1EG1RZGDmd2w2wogAe038DLL_M,13037
43
+ glaip_sdk/cli/update_notifier.py,sha256=qv-GfwTYZdrhlSbC_71I1AvKY9cV4QVBmtees16S2Xg,9807
44
+ glaip_sdk/cli/utils.py,sha256=rrkASWWpJMKrPPgV8UjrZdE3tsyH2rrCDQsyE0KBu6Y,53342
44
45
  glaip_sdk/cli/validators.py,sha256=d-kq4y7HWMo6Gc7wLXWUsCt8JwFvJX_roZqRm1Nko1I,5622
45
46
  glaip_sdk/client/__init__.py,sha256=F-eE_dRSzA0cc1it06oi0tZetZBHmSUjWSHGhJMLCls,263
46
47
  glaip_sdk/client/_agent_payloads.py,sha256=VfBHoijuoqUOixGBf2SA2vlQIXQmBsjB3sXHZhXYiec,17681
47
48
  glaip_sdk/client/agent_runs.py,sha256=tZSFEZZ3Yx0uYRgnwkLe-X0TlmgKJQ-ivzb6SrVnxY8,4862
48
- glaip_sdk/client/agents.py,sha256=5PTIn4MGTwJ-UMGGNB6yONJZalv0s7Dir864glreyh8,43417
49
+ glaip_sdk/client/agents.py,sha256=tKIjkU9-lMEehf1lJe8Bl35nNQntIiyvq02b4fsVN5c,43332
49
50
  glaip_sdk/client/base.py,sha256=ikW33raz2M6rXzo3JmhttfXXuVdMv5zBRKEZkU1F-4I,18176
50
- glaip_sdk/client/main.py,sha256=i3pZwSsSQfe1W0z64D1YwV6VHc7B3LvfARICuOcEmAA,9059
51
- glaip_sdk/client/mcps.py,sha256=kovR4hsCsjkUwCcq5yPN7CQK5z3mist9Mj5QkHwOGEA,8910
52
- glaip_sdk/client/run_rendering.py,sha256=COBU7xEXYIMzg7__U1-cV6RIg1bs3ys5Zb4YV28APoY,14069
51
+ glaip_sdk/client/main.py,sha256=-grOD3mMNbjOPbx2s1ZIF0z0KpEaCaNuXLHX9dqcZgQ,8711
52
+ glaip_sdk/client/mcps.py,sha256=410HY1aC8hzaCDnEGnhrhKs8vC2xQ50PHvUy1PuuIIc,9364
53
+ glaip_sdk/client/run_rendering.py,sha256=ubBO-NzyZoYRELNwxVvrQFRGQVJCuLfqqJNiXrBZDoQ,14223
54
+ glaip_sdk/client/shared.py,sha256=esHlsR0LEfL-pFDaWebQjKKOLl09jsRY-2pllBUn4nU,522
53
55
  glaip_sdk/client/tools.py,sha256=LP7ZRMMlaolBpsu6M14KUifiCM2MWrQoWwX_DYgNxhE,17293
54
56
  glaip_sdk/client/validators.py,sha256=ioF9VCs-LG2yLkaRDd7Hff74lojDZZ0_Q3CiLbdm1RY,8381
55
57
  glaip_sdk/config/constants.py,sha256=Y03c6op0e7K0jTQ8bmWXhWAqsnjWxkAhWniq8Z0iEKY,1081
@@ -57,7 +59,7 @@ glaip_sdk/exceptions.py,sha256=iAChFClkytXRBLP0vZq1_YjoZxA9i4m4bW1gDLiGR1g,2321
57
59
  glaip_sdk/icons.py,sha256=J5THz0ReAmDwIiIooh1_G3Le-mwTJyEjhJDdJ13KRxM,524
58
60
  glaip_sdk/models/__init__.py,sha256=DtFft8zH3eJjeedm6jov1z54wTLTcb6dyOKRwM9ZGbk,1756
59
61
  glaip_sdk/models/agent_runs.py,sha256=oGUxS4UOq8C2QE4ilp0IQZ7ur1m0DPh6ybzTAOg2tcc,3808
60
- glaip_sdk/models.py,sha256=3ghS29EjcE6A9iHEiSxbPco5bCHqnVGpVbE2kGliz_o,8751
62
+ glaip_sdk/models.py,sha256=OyaGkh1OoWJeVAbIjnkPC8XhtuxJ7aylDvwsKC8LPqs,8504
61
63
  glaip_sdk/payload_schemas/__init__.py,sha256=nTJmzwn2BbEpzZdq-8U24eVHQHxqYO3_-SABMV9lS_Q,142
62
64
  glaip_sdk/payload_schemas/agent.py,sha256=Nap68mI2Ba8eNGOhk79mGrYUoYUahcUJLof3DLWtVO4,3198
63
65
  glaip_sdk/rich_components.py,sha256=44Z0V1ZQleVh9gUDGwRR5mriiYFnVGOhm7fFxZYbP8c,4052
@@ -65,30 +67,44 @@ glaip_sdk/utils/__init__.py,sha256=Fy11SCrasMRNnP-qbZ-Rr9JMhxgHHcSGG2v7jd7PP20,1
65
67
  glaip_sdk/utils/agent_config.py,sha256=RhcHsSOVwOaSC2ggnPuHn36Aa0keGJhs8KGb2InvzRk,7262
66
68
  glaip_sdk/utils/client_utils.py,sha256=huMq2FWS4YnTTjWT23gaZABVdqRGRFLpcyhnQR8bs2c,14328
67
69
  glaip_sdk/utils/datetime_helpers.py,sha256=QLknNLEAY56628-MTRKnCXAffATkF33erOqBubKmU98,1544
68
- glaip_sdk/utils/display.py,sha256=_lQ9fHLJnsSgY7nJkYlGLBk47bwNjbqMTr3_GvOyRyM,3983
70
+ glaip_sdk/utils/display.py,sha256=zu3SYqxj9hPyEN8G1vIXv_yXBkV8jLLCXEg2rs8NlzM,4485
69
71
  glaip_sdk/utils/export.py,sha256=1NxxE3wGsA1auzecG5oJw5ELB4VmPljoeIkGhrGOh1I,5006
70
72
  glaip_sdk/utils/general.py,sha256=3HSVIopUsIymPaim-kP2lqLX75TkkdIVLe6g3UKabZ0,1507
71
73
  glaip_sdk/utils/import_export.py,sha256=RCvoydm_6_L7_J1igcE6IYDunqgS5mQUbWT4VGrytMw,5510
72
- glaip_sdk/utils/rendering/__init__.py,sha256=Jago8iv0ra_mq-muksf3yFRyEUYpdenrqeldpcvZ6EQ,3817
73
- glaip_sdk/utils/rendering/formatting.py,sha256=PBT1jD6pxpkiUSs5RQOVWImmKgAwbWuQCUpgu0PNs3Q,8828
74
- glaip_sdk/utils/rendering/models.py,sha256=wB9QtEiwN-AaY8k_YKBBT2qMQSBNMv27VcaZH88DdCM,2823
75
- glaip_sdk/utils/rendering/renderer/__init__.py,sha256=kayCY7nluSRFFPBlXCp5dozM5sTfPydIGxbHmjuN_A8,2236
76
- glaip_sdk/utils/rendering/renderer/base.py,sha256=UvDtxkYMyqqu6GvXSjEpxgRPt9Bu9oe9RXa4EkdGZh0,85668
74
+ glaip_sdk/utils/rendering/__init__.py,sha256=cJhhBEf46RnmUGJ1fivGkFuCoOn2pkJkSuRWoo1xlhE,3608
75
+ glaip_sdk/utils/rendering/formatting.py,sha256=tP-CKkKFDhiAHS1vpJQ3D6NmPVl0TX1ZOwBOoxia2eE,8009
76
+ glaip_sdk/utils/rendering/layout/__init__.py,sha256=Lz8eLXDO28wyK36BhKJ6o9YmsRjmQZrNhvZ2wwSjvPw,1609
77
+ glaip_sdk/utils/rendering/layout/panels.py,sha256=c7EhMznVxIiclrFERJuc3qem21t7sQI6BDcmujtdSAk,3905
78
+ glaip_sdk/utils/rendering/layout/progress.py,sha256=GhOhUPNQd8-e6JxTJsV76s6wIYhtTw2G1C3BY9yhtRk,6418
79
+ glaip_sdk/utils/rendering/layout/summary.py,sha256=K-gkDxwUxF67-4nF20y6hv95QEwRZCQI9Eb4KbA8eQY,2325
80
+ glaip_sdk/utils/rendering/layout/transcript.py,sha256=vbfywtbWCDzLY9B5Vvf4crhomftFq-UEz7zqySiLrD8,19052
81
+ glaip_sdk/utils/rendering/models.py,sha256=LtBgF0CyFnVW_oLAR8O62P-h8auCJwlgZaMUhmE8V-0,2882
82
+ glaip_sdk/utils/rendering/renderer/__init__.py,sha256=lpf0GnNGcPb8gq_hJM6Puflwy3eTigVK9qXP01nWRv0,1754
83
+ glaip_sdk/utils/rendering/renderer/base.py,sha256=YwUz0gS4C55BWEDmwD-gp35Tp_QCryxhld2gV--y8lE,38968
77
84
  glaip_sdk/utils/rendering/renderer/config.py,sha256=FgSAZpG1g7Atm2MXg0tY0lOEciY90MR-RO6YuGFhp0E,626
78
85
  glaip_sdk/utils/rendering/renderer/console.py,sha256=4cLOw4Q1fkHkApuj6dWW8eYpeYdcT0t2SO5MbVt5UTc,1844
79
- glaip_sdk/utils/rendering/renderer/debug.py,sha256=hq6jiBdC6kPz3Nn03zrEpxaOb0ZY_ZpX_7Fht2iyqPY,5062
80
- glaip_sdk/utils/rendering/renderer/panels.py,sha256=tbExgFXzK6NHlvuJlVwsejznGJY1ALwTi9KfIej9aWM,3784
81
- glaip_sdk/utils/rendering/renderer/progress.py,sha256=iwAx76q0hdnjDrHMF_MB2AYQ2kAA4pwfIn0FiSAEkyg,4068
86
+ glaip_sdk/utils/rendering/renderer/debug.py,sha256=qyqFXltYzKEqajwlu8QFSBU3P46JzMzIZqurejhx14o,5907
87
+ glaip_sdk/utils/rendering/renderer/factory.py,sha256=3p1Uga_UEN-wwTNerNaDB3qf3-yu1a9DfH4weXxeRdA,4711
82
88
  glaip_sdk/utils/rendering/renderer/stream.py,sha256=htqm8pujXGKJncO86d-dfHixv9btACBgwPbO_brUQio,7812
83
89
  glaip_sdk/utils/rendering/renderer/summary_window.py,sha256=ffBsVHaUyy2RfIuXLjhfiO31HeeprVcPP_pe4cjDLsU,2286
90
+ glaip_sdk/utils/rendering/renderer/thinking.py,sha256=09dYbtzpOrG5SlhuqpW9uqPCpiijPQuIntsNboMDDJ8,9399
84
91
  glaip_sdk/utils/rendering/renderer/toggle.py,sha256=N3LB4g1r8EdDkQyItQdrP5gig6Sszz9uZ6WJuD0KUmk,5396
92
+ glaip_sdk/utils/rendering/renderer/tool_panels.py,sha256=ev7gZsakUMxfG4JoS_bBDey_MwMDyOLwVhTO536v608,17246
93
+ glaip_sdk/utils/rendering/renderer/transcript_mode.py,sha256=FBZVQYrXF5YH79g3gYizE6P_yL5k9ZSGViCmZhv6C4g,6013
94
+ glaip_sdk/utils/rendering/state.py,sha256=54ViIHCGoBHQE4yMOrB2ToK3FZuv7SsD0Qcyq3CEKe4,6540
85
95
  glaip_sdk/utils/rendering/step_tree_state.py,sha256=EItKFTV2FYvm5pSyHbXk7lkzJ-0DW_s-VENIBZe8sp4,4062
86
- glaip_sdk/utils/rendering/steps.py,sha256=O9vK9ne0sEbPd6lbA7Qr4VjX0_udEMKgr3L05gUjHp8,42407
96
+ glaip_sdk/utils/rendering/steps/__init__.py,sha256=y1BJUPeT4bclXPmsy6B66KNZWiY8W5p-LnLnlrxynP8,840
97
+ glaip_sdk/utils/rendering/steps/event_processor.py,sha256=sGOHpxm7WmKxxY68l9Su6_YbDkXcoFblwkv1fToSX5k,29048
98
+ glaip_sdk/utils/rendering/steps/format.py,sha256=Chnq7OBaj8XMeBntSBxrX5zSmrYeGcOszooNeBe7_pM,5654
99
+ glaip_sdk/utils/rendering/steps/manager.py,sha256=BiBmTeQMQhjRMykgICXsXNYh1hGsss-fH9BIGVMWFi0,13194
100
+ glaip_sdk/utils/rendering/timing.py,sha256=__F1eFPoocm7Dps7Y1O_gJV24HsNTbx_FMiqEDN4T9o,1063
101
+ glaip_sdk/utils/rendering/viewer/__init__.py,sha256=XrxmE2cMAozqrzo1jtDFm8HqNtvDcYi2mAhXLXn5CjI,457
102
+ glaip_sdk/utils/rendering/viewer/presenter.py,sha256=mlLMTjnyeyPVtsyrAbz1BJu9lFGQSlS-voZ-_Cuugv0,5725
87
103
  glaip_sdk/utils/resource_refs.py,sha256=vF34kyAtFBLnaKnQVrsr2st1JiSxVbIZ4yq0DelJvCI,5966
88
104
  glaip_sdk/utils/run_renderer.py,sha256=d_VMI6LbvHPUUeRmGqh5wK_lHqDEIAcym2iqpbtDad0,1365
89
105
  glaip_sdk/utils/serialization.py,sha256=z-qpvWLSBrGK3wbUclcA1UIKLXJedTnMSwPdq-FF4lo,13308
90
- glaip_sdk/utils/validation.py,sha256=NPDexNgGUIoLkEIz6hl3K6EG7ZKSEkcNLDElqm8-Ng4,7019
91
- glaip_sdk-0.3.0.dist-info/METADATA,sha256=h_KpZfxSiEKCNzGYJjG9Uz381WC9ZlJQFE54scxMAsY,7053
92
- glaip_sdk-0.3.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
93
- glaip_sdk-0.3.0.dist-info/entry_points.txt,sha256=EGs8NO8J1fdFMWA3CsF7sKBEvtHb_fujdCoNPhfMouE,47
94
- glaip_sdk-0.3.0.dist-info/RECORD,,
106
+ glaip_sdk/utils/validation.py,sha256=Vt8oSnn7OM6ns5vjOl5FwGIMWBPb0yI6RD5XL_L5_4M,6826
107
+ glaip_sdk-0.4.0.dist-info/METADATA,sha256=3-W1vIpTHWJPyrCo9XrN1V-XSv_1cJRkctTVpIQiNdU,7053
108
+ glaip_sdk-0.4.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
109
+ glaip_sdk-0.4.0.dist-info/entry_points.txt,sha256=EGs8NO8J1fdFMWA3CsF7sKBEvtHb_fujdCoNPhfMouE,47
110
+ glaip_sdk-0.4.0.dist-info/RECORD,,