glaip-sdk 0.0.7__py3-none-any.whl → 0.6.5b6__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 (161) hide show
  1. glaip_sdk/__init__.py +6 -3
  2. glaip_sdk/_version.py +12 -5
  3. glaip_sdk/agents/__init__.py +27 -0
  4. glaip_sdk/agents/base.py +1126 -0
  5. glaip_sdk/branding.py +79 -15
  6. glaip_sdk/cli/account_store.py +540 -0
  7. glaip_sdk/cli/agent_config.py +2 -6
  8. glaip_sdk/cli/auth.py +699 -0
  9. glaip_sdk/cli/commands/__init__.py +2 -2
  10. glaip_sdk/cli/commands/accounts.py +746 -0
  11. glaip_sdk/cli/commands/agents.py +503 -183
  12. glaip_sdk/cli/commands/common_config.py +101 -0
  13. glaip_sdk/cli/commands/configure.py +774 -137
  14. glaip_sdk/cli/commands/mcps.py +1124 -181
  15. glaip_sdk/cli/commands/models.py +25 -10
  16. glaip_sdk/cli/commands/tools.py +144 -92
  17. glaip_sdk/cli/commands/transcripts.py +755 -0
  18. glaip_sdk/cli/commands/update.py +61 -0
  19. glaip_sdk/cli/config.py +95 -0
  20. glaip_sdk/cli/constants.py +38 -0
  21. glaip_sdk/cli/context.py +150 -0
  22. glaip_sdk/cli/core/__init__.py +79 -0
  23. glaip_sdk/cli/core/context.py +124 -0
  24. glaip_sdk/cli/core/output.py +846 -0
  25. glaip_sdk/cli/core/prompting.py +649 -0
  26. glaip_sdk/cli/core/rendering.py +187 -0
  27. glaip_sdk/cli/display.py +143 -53
  28. glaip_sdk/cli/hints.py +57 -0
  29. glaip_sdk/cli/io.py +24 -18
  30. glaip_sdk/cli/main.py +420 -145
  31. glaip_sdk/cli/masking.py +136 -0
  32. glaip_sdk/cli/mcp_validators.py +287 -0
  33. glaip_sdk/cli/pager.py +266 -0
  34. glaip_sdk/cli/parsers/__init__.py +7 -0
  35. glaip_sdk/cli/parsers/json_input.py +177 -0
  36. glaip_sdk/cli/resolution.py +28 -21
  37. glaip_sdk/cli/rich_helpers.py +27 -0
  38. glaip_sdk/cli/slash/__init__.py +15 -0
  39. glaip_sdk/cli/slash/accounts_controller.py +500 -0
  40. glaip_sdk/cli/slash/accounts_shared.py +75 -0
  41. glaip_sdk/cli/slash/agent_session.py +282 -0
  42. glaip_sdk/cli/slash/prompt.py +245 -0
  43. glaip_sdk/cli/slash/remote_runs_controller.py +566 -0
  44. glaip_sdk/cli/slash/session.py +1679 -0
  45. glaip_sdk/cli/slash/tui/__init__.py +9 -0
  46. glaip_sdk/cli/slash/tui/accounts.tcss +86 -0
  47. glaip_sdk/cli/slash/tui/accounts_app.py +872 -0
  48. glaip_sdk/cli/slash/tui/background_tasks.py +72 -0
  49. glaip_sdk/cli/slash/tui/loading.py +58 -0
  50. glaip_sdk/cli/slash/tui/remote_runs_app.py +628 -0
  51. glaip_sdk/cli/transcript/__init__.py +31 -0
  52. glaip_sdk/cli/transcript/cache.py +536 -0
  53. glaip_sdk/cli/transcript/capture.py +329 -0
  54. glaip_sdk/cli/transcript/export.py +38 -0
  55. glaip_sdk/cli/transcript/history.py +815 -0
  56. glaip_sdk/cli/transcript/launcher.py +77 -0
  57. glaip_sdk/cli/transcript/viewer.py +372 -0
  58. glaip_sdk/cli/update_notifier.py +290 -0
  59. glaip_sdk/cli/utils.py +247 -1238
  60. glaip_sdk/cli/validators.py +16 -18
  61. glaip_sdk/client/__init__.py +2 -1
  62. glaip_sdk/client/_agent_payloads.py +520 -0
  63. glaip_sdk/client/agent_runs.py +147 -0
  64. glaip_sdk/client/agents.py +940 -574
  65. glaip_sdk/client/base.py +163 -48
  66. glaip_sdk/client/main.py +35 -12
  67. glaip_sdk/client/mcps.py +126 -18
  68. glaip_sdk/client/run_rendering.py +415 -0
  69. glaip_sdk/client/shared.py +21 -0
  70. glaip_sdk/client/tools.py +195 -37
  71. glaip_sdk/client/validators.py +20 -48
  72. glaip_sdk/config/constants.py +15 -5
  73. glaip_sdk/exceptions.py +16 -9
  74. glaip_sdk/icons.py +25 -0
  75. glaip_sdk/mcps/__init__.py +21 -0
  76. glaip_sdk/mcps/base.py +345 -0
  77. glaip_sdk/models/__init__.py +90 -0
  78. glaip_sdk/models/agent.py +47 -0
  79. glaip_sdk/models/agent_runs.py +116 -0
  80. glaip_sdk/models/common.py +42 -0
  81. glaip_sdk/models/mcp.py +33 -0
  82. glaip_sdk/models/tool.py +33 -0
  83. glaip_sdk/payload_schemas/__init__.py +7 -0
  84. glaip_sdk/payload_schemas/agent.py +85 -0
  85. glaip_sdk/registry/__init__.py +55 -0
  86. glaip_sdk/registry/agent.py +164 -0
  87. glaip_sdk/registry/base.py +139 -0
  88. glaip_sdk/registry/mcp.py +253 -0
  89. glaip_sdk/registry/tool.py +231 -0
  90. glaip_sdk/rich_components.py +98 -2
  91. glaip_sdk/runner/__init__.py +59 -0
  92. glaip_sdk/runner/base.py +84 -0
  93. glaip_sdk/runner/deps.py +115 -0
  94. glaip_sdk/runner/langgraph.py +597 -0
  95. glaip_sdk/runner/mcp_adapter/__init__.py +13 -0
  96. glaip_sdk/runner/mcp_adapter/base_mcp_adapter.py +43 -0
  97. glaip_sdk/runner/mcp_adapter/langchain_mcp_adapter.py +158 -0
  98. glaip_sdk/runner/mcp_adapter/mcp_config_builder.py +95 -0
  99. glaip_sdk/runner/tool_adapter/__init__.py +18 -0
  100. glaip_sdk/runner/tool_adapter/base_tool_adapter.py +44 -0
  101. glaip_sdk/runner/tool_adapter/langchain_tool_adapter.py +177 -0
  102. glaip_sdk/tools/__init__.py +22 -0
  103. glaip_sdk/tools/base.py +435 -0
  104. glaip_sdk/utils/__init__.py +59 -13
  105. glaip_sdk/utils/a2a/__init__.py +34 -0
  106. glaip_sdk/utils/a2a/event_processor.py +188 -0
  107. glaip_sdk/utils/agent_config.py +53 -40
  108. glaip_sdk/utils/bundler.py +267 -0
  109. glaip_sdk/utils/client.py +111 -0
  110. glaip_sdk/utils/client_utils.py +58 -26
  111. glaip_sdk/utils/datetime_helpers.py +58 -0
  112. glaip_sdk/utils/discovery.py +78 -0
  113. glaip_sdk/utils/display.py +65 -32
  114. glaip_sdk/utils/export.py +143 -0
  115. glaip_sdk/utils/general.py +1 -36
  116. glaip_sdk/utils/import_export.py +20 -25
  117. glaip_sdk/utils/import_resolver.py +492 -0
  118. glaip_sdk/utils/instructions.py +101 -0
  119. glaip_sdk/utils/rendering/__init__.py +115 -1
  120. glaip_sdk/utils/rendering/formatting.py +85 -43
  121. glaip_sdk/utils/rendering/layout/__init__.py +64 -0
  122. glaip_sdk/utils/rendering/{renderer → layout}/panels.py +51 -19
  123. glaip_sdk/utils/rendering/layout/progress.py +202 -0
  124. glaip_sdk/utils/rendering/layout/summary.py +74 -0
  125. glaip_sdk/utils/rendering/layout/transcript.py +606 -0
  126. glaip_sdk/utils/rendering/models.py +39 -7
  127. glaip_sdk/utils/rendering/renderer/__init__.py +9 -51
  128. glaip_sdk/utils/rendering/renderer/base.py +672 -759
  129. glaip_sdk/utils/rendering/renderer/config.py +4 -10
  130. glaip_sdk/utils/rendering/renderer/debug.py +75 -22
  131. glaip_sdk/utils/rendering/renderer/factory.py +138 -0
  132. glaip_sdk/utils/rendering/renderer/stream.py +13 -54
  133. glaip_sdk/utils/rendering/renderer/summary_window.py +79 -0
  134. glaip_sdk/utils/rendering/renderer/thinking.py +273 -0
  135. glaip_sdk/utils/rendering/renderer/toggle.py +182 -0
  136. glaip_sdk/utils/rendering/renderer/tool_panels.py +442 -0
  137. glaip_sdk/utils/rendering/renderer/transcript_mode.py +162 -0
  138. glaip_sdk/utils/rendering/state.py +204 -0
  139. glaip_sdk/utils/rendering/step_tree_state.py +100 -0
  140. glaip_sdk/utils/rendering/steps/__init__.py +34 -0
  141. glaip_sdk/utils/rendering/steps/event_processor.py +778 -0
  142. glaip_sdk/utils/rendering/steps/format.py +176 -0
  143. glaip_sdk/utils/rendering/steps/manager.py +387 -0
  144. glaip_sdk/utils/rendering/timing.py +36 -0
  145. glaip_sdk/utils/rendering/viewer/__init__.py +21 -0
  146. glaip_sdk/utils/rendering/viewer/presenter.py +184 -0
  147. glaip_sdk/utils/resource_refs.py +29 -26
  148. glaip_sdk/utils/runtime_config.py +422 -0
  149. glaip_sdk/utils/serialization.py +184 -51
  150. glaip_sdk/utils/sync.py +142 -0
  151. glaip_sdk/utils/tool_detection.py +33 -0
  152. glaip_sdk/utils/validation.py +21 -30
  153. {glaip_sdk-0.0.7.dist-info → glaip_sdk-0.6.5b6.dist-info}/METADATA +58 -12
  154. glaip_sdk-0.6.5b6.dist-info/RECORD +159 -0
  155. {glaip_sdk-0.0.7.dist-info → glaip_sdk-0.6.5b6.dist-info}/WHEEL +1 -1
  156. glaip_sdk/models.py +0 -250
  157. glaip_sdk/utils/rendering/renderer/progress.py +0 -118
  158. glaip_sdk/utils/rendering/steps.py +0 -232
  159. glaip_sdk/utils/rich_utils.py +0 -29
  160. glaip_sdk-0.0.7.dist-info/RECORD +0 -55
  161. {glaip_sdk-0.0.7.dist-info → glaip_sdk-0.6.5b6.dist-info}/entry_points.txt +0 -0
glaip_sdk/branding.py CHANGED
@@ -4,7 +4,7 @@ Simple, friendly CLI branding for the GL AIP (GDP Labs AI Agent Package) SDK.
4
4
 
5
5
  - Package name: GL AIP (GDP Labs AI Agent Package)
6
6
  - Version: auto-detected (AIP_VERSION env or importlib.metadata), or passed in
7
- - Colors: blue / bright_blue, with NO_COLOR/AIP_NO_COLOR fallbacks
7
+ - Colors: GDP Labs brand palette with NO_COLOR/AIP_NO_COLOR fallbacks
8
8
 
9
9
  Author:
10
10
  Raymond Christopher (raymond.christopher@gdplabs.id)
@@ -30,15 +30,37 @@ except Exception: # pragma: no cover
30
30
  PackageNotFoundError = Exception
31
31
 
32
32
 
33
- # ---- minimal, readable styles (light blue + white theme) -----------------
34
- PRIMARY = "bright_blue" # Light blue for main elements
35
- BORDER = "bright_blue" # Light blue borders
33
+ # ---- GDP Labs Brand Color Palette -----------------------------------------
34
+ PRIMARY = "#004987" # Primary brand blue (dark blue)
35
+ SECONDARY_DARK = "#003A5C" # Darkest variant for emphasis
36
+ SECONDARY_MEDIUM = "#005CB8" # Medium variant for UI elements
37
+ SECONDARY_LIGHT = "#40B4E5" # Light variant for highlights
38
+
39
+ # Neutral companion palette (optimized for dark terminals)
40
+ SUCCESS = "#7FA089" # Muted teal-green for success messaging
41
+ WARNING = "#C3A46F" # Soft amber for warnings
42
+ ERROR = "#C97B6C" # Tempered coral-red for errors
43
+ INFO = "#9CA3AF" # Cool grey for informational accents
44
+ NEUTRAL = "#D1D5DB" # Light grey for muted text and dividers
45
+
46
+ BORDER = PRIMARY # Keep borders aligned with primary brand tone
36
47
  TITLE_STYLE = f"bold {PRIMARY}"
37
48
  LABEL = "bold"
49
+ SUCCESS_STYLE = f"bold {SUCCESS}"
50
+ WARNING_STYLE = f"bold {WARNING}"
51
+ ERROR_STYLE = f"bold {ERROR}"
52
+ INFO_STYLE = f"bold {INFO}"
53
+ ACCENT_STYLE = INFO # For subdued inline highlights
54
+
55
+ # Hint styling (slash command helpers, tips, quick actions)
56
+ HINT_TITLE_STYLE = f"bold {SECONDARY_LIGHT}"
57
+ HINT_COMMAND_STYLE = f"bold {SECONDARY_LIGHT}"
58
+ HINT_DESCRIPTION_COLOR = NEUTRAL
59
+ HINT_PREFIX_STYLE = INFO_STYLE
38
60
 
39
61
 
40
62
  class AIPBranding:
41
- """GL AIP SDK branding utilities with ASCII banner and version display."""
63
+ """GL AIP branding utilities with ASCII banner and version display."""
42
64
 
43
65
  # GL AIP ASCII art - Modern block style with enhanced visibility
44
66
  AIP_LOGO = r"""
@@ -56,7 +78,8 @@ GDP Labs AI Agents Package
56
78
  version: str | None = None,
57
79
  package_name: str | None = None,
58
80
  ) -> None:
59
- """
81
+ """Initialize AIPBranding instance.
82
+
60
83
  Args:
61
84
  version: Explicit SDK version (overrides auto-detection).
62
85
  package_name: If set, attempt to read version from installed package.
@@ -67,6 +90,14 @@ GDP Labs AI Agents Package
67
90
  # ---- small helpers --------------------------------------------------------
68
91
  @staticmethod
69
92
  def _auto_version(package_name: str | None) -> str:
93
+ """Auto-detect version from environment, package metadata, or fallback.
94
+
95
+ Args:
96
+ package_name: Optional package name to read version from installed metadata.
97
+
98
+ Returns:
99
+ Version string from AIP_VERSION env var, package metadata, or SDK_VERSION fallback.
100
+ """
70
101
  # Priority: env → package metadata → fallback
71
102
  env_version = os.getenv("AIP_VERSION")
72
103
  if env_version:
@@ -80,10 +111,13 @@ GDP Labs AI Agents Package
80
111
 
81
112
  @staticmethod
82
113
  def _make_console() -> Console:
114
+ """Create a Rich Console instance respecting NO_COLOR environment variables.
115
+
116
+ Returns:
117
+ Console instance with color system configured based on environment.
118
+ """
83
119
  # Respect NO_COLOR/AIP_NO_COLOR environment variables
84
- no_color_env = (
85
- os.getenv("NO_COLOR") is not None or os.getenv("AIP_NO_COLOR") is not None
86
- )
120
+ no_color_env = os.getenv("NO_COLOR") is not None or os.getenv("AIP_NO_COLOR") is not None
87
121
  if no_color_env:
88
122
  color_system = None
89
123
  no_color = True
@@ -95,12 +129,17 @@ GDP Labs AI Agents Package
95
129
  # ---- public API -----------------------------------------------------------
96
130
  def get_welcome_banner(self) -> str:
97
131
  """Get AIP banner with version info."""
98
- banner = self.AIP_LOGO
132
+ banner = f"[{PRIMARY}]{self.AIP_LOGO}[/{PRIMARY}]"
99
133
  line = f"Version: {self.version}"
100
134
  banner = f"{banner}\n{line}"
101
135
  return banner
102
136
 
103
137
  def get_version_info(self) -> dict:
138
+ """Get comprehensive version information for the SDK.
139
+
140
+ Returns:
141
+ Dictionary containing version, Python version, platform, and architecture info
142
+ """
104
143
  return {
105
144
  "version": self.version,
106
145
  "python_version": f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}",
@@ -108,7 +147,18 @@ GDP Labs AI Agents Package
108
147
  "architecture": platform.architecture()[0],
109
148
  }
110
149
 
111
- def display_welcome_panel(self, title: str = "Welcome to AIP") -> None:
150
+ def display_welcome_panel(
151
+ self,
152
+ title: str = "Welcome to AIP",
153
+ *,
154
+ console: Console | None = None,
155
+ ) -> None:
156
+ """Display a welcome panel with branding.
157
+
158
+ Args:
159
+ title: Custom title for the welcome panel
160
+ console: Optional console instance to print to. If None, uses self.console
161
+ """
112
162
  banner = self.get_welcome_banner()
113
163
  panel = AIPPanel(
114
164
  banner,
@@ -116,9 +166,11 @@ GDP Labs AI Agents Package
116
166
  border_style=BORDER,
117
167
  padding=(1, 2),
118
168
  )
119
- self.console.print(panel)
169
+ target_console = console or self.console
170
+ target_console.print(panel)
120
171
 
121
172
  def display_version_panel(self) -> None:
173
+ """Display a panel with comprehensive version information."""
122
174
  v = self.get_version_info()
123
175
  version_text = (
124
176
  f"[{TITLE_STYLE}]AIP SDK Version Information[/{TITLE_STYLE}]\n\n"
@@ -136,12 +188,24 @@ GDP Labs AI Agents Package
136
188
  self.console.print(panel)
137
189
 
138
190
  def display_status_banner(self, status: str = "ready") -> None:
191
+ """Display a status banner for the current state.
192
+
193
+ Args:
194
+ status: Current status to display
195
+ """
139
196
  # Keep it simple (no emoji); easy to parse in logs/CI
140
197
  banner = f"[{LABEL}]AIP[/{LABEL}] - {status.title()}"
141
198
  self.console.print(banner)
142
199
 
143
200
  @classmethod
144
- def create_from_sdk(
145
- cls, sdk_version: str | None = None, package_name: str | None = None
146
- ) -> AIPBranding:
201
+ def create_from_sdk(cls, sdk_version: str | None = None, package_name: str | None = None) -> AIPBranding:
202
+ """Create AIPBranding instance from SDK package information.
203
+
204
+ Args:
205
+ sdk_version: Explicit SDK version override
206
+ package_name: Package name to read version from
207
+
208
+ Returns:
209
+ AIPBranding instance
210
+ """
147
211
  return cls(version=sdk_version, package_name=package_name)