glaip-sdk 0.0.5b1__py3-none-any.whl → 0.0.6a0__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.
- glaip_sdk/__init__.py +1 -1
- glaip_sdk/branding.py +3 -2
- glaip_sdk/cli/commands/__init__.py +1 -1
- glaip_sdk/cli/commands/agents.py +444 -268
- glaip_sdk/cli/commands/configure.py +12 -11
- glaip_sdk/cli/commands/mcps.py +28 -16
- glaip_sdk/cli/commands/models.py +5 -3
- glaip_sdk/cli/commands/tools.py +109 -102
- glaip_sdk/cli/display.py +38 -16
- glaip_sdk/cli/io.py +1 -1
- glaip_sdk/cli/main.py +26 -5
- glaip_sdk/cli/resolution.py +5 -4
- glaip_sdk/cli/utils.py +376 -157
- glaip_sdk/cli/validators.py +7 -2
- glaip_sdk/client/agents.py +184 -89
- glaip_sdk/client/base.py +24 -13
- glaip_sdk/client/validators.py +154 -94
- glaip_sdk/config/constants.py +0 -2
- glaip_sdk/models.py +4 -4
- glaip_sdk/utils/__init__.py +7 -7
- glaip_sdk/utils/client_utils.py +144 -78
- glaip_sdk/utils/display.py +4 -2
- glaip_sdk/utils/general.py +8 -6
- glaip_sdk/utils/import_export.py +55 -24
- glaip_sdk/utils/rendering/formatting.py +12 -6
- glaip_sdk/utils/rendering/models.py +1 -1
- glaip_sdk/utils/rendering/renderer/base.py +412 -248
- glaip_sdk/utils/rendering/renderer/console.py +6 -5
- glaip_sdk/utils/rendering/renderer/debug.py +94 -52
- glaip_sdk/utils/rendering/renderer/stream.py +93 -48
- glaip_sdk/utils/rendering/steps.py +103 -39
- glaip_sdk/utils/rich_utils.py +1 -1
- glaip_sdk/utils/run_renderer.py +1 -1
- glaip_sdk/utils/serialization.py +3 -1
- glaip_sdk/utils/validation.py +2 -2
- glaip_sdk-0.0.6a0.dist-info/METADATA +183 -0
- glaip_sdk-0.0.6a0.dist-info/RECORD +55 -0
- glaip_sdk-0.0.5b1.dist-info/METADATA +0 -645
- glaip_sdk-0.0.5b1.dist-info/RECORD +0 -55
- {glaip_sdk-0.0.5b1.dist-info → glaip_sdk-0.0.6a0.dist-info}/WHEEL +0 -0
- {glaip_sdk-0.0.5b1.dist-info → glaip_sdk-0.0.6a0.dist-info}/entry_points.txt +0 -0
|
@@ -1,645 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: glaip-sdk
|
|
3
|
-
Version: 0.0.5b1
|
|
4
|
-
Summary: Python SDK for GL AIP (GDP Labs AI Agent Package) - Simplified CLI Design
|
|
5
|
-
License: MIT
|
|
6
|
-
Author: Raymond Christopher
|
|
7
|
-
Author-email: raymond.christopher@gdplabs.id
|
|
8
|
-
Requires-Python: >=3.10
|
|
9
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
-
Classifier: Programming Language :: Python :: 3
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
-
Requires-Dist: click (>=8.2.0)
|
|
15
|
-
Requires-Dist: httpx (>=0.28.1)
|
|
16
|
-
Requires-Dist: pydantic (>=2.0.0)
|
|
17
|
-
Requires-Dist: python-dotenv (>=1.1.1,<2.0.0)
|
|
18
|
-
Requires-Dist: pyyaml (>=6.0.0)
|
|
19
|
-
Requires-Dist: questionary (>=2.1.0,<3.0.0)
|
|
20
|
-
Requires-Dist: readchar (>=4.2.1,<5.0.0)
|
|
21
|
-
Requires-Dist: rich (>=13.0.0)
|
|
22
|
-
Description-Content-Type: text/markdown
|
|
23
|
-
|
|
24
|
-
# GL AIP SDK — Enterprise AI Agent Package (Python)
|
|
25
|
-
|
|
26
|
-
[](https://www.python.org/downloads/)
|
|
27
|
-
[](https://opensource.org/licenses/MIT)
|
|
28
|
-
[](https://github.com/psf/black)
|
|
29
|
-
|
|
30
|
-
> **Build, run, and manage AI agents with a minimal, production-ready Python API.**
|
|
31
|
-
|
|
32
|
-
- **Simple**: `Client()` → create resources → `agent.run("...")`
|
|
33
|
-
- **Strong**: typed models (Pydantic), robust errors, clean streaming renderer
|
|
34
|
-
- **Enterprise-ready**: shared HTTP session, timeouts/retries, consistent resource lifecycle
|
|
35
|
-
- **Secure**: automatic recursive secret masking; no telemetry; TLS recommended
|
|
36
|
-
- **Modern CLI**: rich terminal experience, subsequence-based fuzzy search, smart paging, multiple output formats
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## 📋 Table of Contents
|
|
41
|
-
|
|
42
|
-
- [Quick Start](#-quick-start-30-seconds)
|
|
43
|
-
- [Features](#-features)
|
|
44
|
-
- [Latest Improvements](#️-latest-improvements)
|
|
45
|
-
- [Use Cases & Industries](#-use-cases--industries)
|
|
46
|
-
- [Performance & Scalability](#-performance--scalability)
|
|
47
|
-
- [Core API](#core-api-in-60-seconds)
|
|
48
|
-
- [CLI](#cli)
|
|
49
|
-
- [Configuration](#configuration)
|
|
50
|
-
- [Learning Path](#learning-path)
|
|
51
|
-
- [Development](#development)
|
|
52
|
-
- [Error Handling](#️-error-handling)
|
|
53
|
-
- [Troubleshooting](#️-troubleshooting)
|
|
54
|
-
- [Getting Help & Support](#️-getting-help--support)
|
|
55
|
-
- [Why Choose AIP SDK?](#️-why-choose-aip-sdk)
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## 🚀 Installation
|
|
60
|
-
|
|
61
|
-
> **📋 Current Status**: The AIP SDK is currently available for local development. Global installation from PyPI will be available once the package is published.
|
|
62
|
-
|
|
63
|
-
### Option 1: Local Development Setup (Recommended for developers - Available Now)
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
# Clone the repository
|
|
67
|
-
git clone <repository-url>
|
|
68
|
-
cd ai-agent-platform-sdk
|
|
69
|
-
|
|
70
|
-
# Install in editable mode - CLI command 'aip' will be available globally
|
|
71
|
-
pip install -e .
|
|
72
|
-
|
|
73
|
-
# Verify installation
|
|
74
|
-
aip --help
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### Option 2: Poetry Development Setup (Alternative for Poetry users - Available Now)
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
# Clone the repository
|
|
81
|
-
git clone <repository-url>
|
|
82
|
-
cd ai-agent-platform-sdk
|
|
83
|
-
|
|
84
|
-
# Install dependencies and package using Poetry
|
|
85
|
-
poetry install
|
|
86
|
-
|
|
87
|
-
# Run CLI through Poetry (CLI not available globally)
|
|
88
|
-
poetry run aip --help
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### Option 3: Global Installation from PyPI (Coming Soon)
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
# Install globally - CLI command 'aip' will be available everywhere
|
|
95
|
-
# ⚠️ This option will be available once the package is published to PyPI
|
|
96
|
-
pip install glaip-sdk
|
|
97
|
-
|
|
98
|
-
# Verify installation
|
|
99
|
-
aip --help
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
**Note**: All required dependencies including `click` and `rich` are automatically installed with the package. This resolves the previous "click and rich not installed" errors that users encountered.
|
|
103
|
-
|
|
104
|
-
## 🛠️ Local Development Setup
|
|
105
|
-
|
|
106
|
-
### Prerequisites
|
|
107
|
-
|
|
108
|
-
- **Python 3.10+** installed on your system
|
|
109
|
-
- **Git** for cloning the repository
|
|
110
|
-
- **pip** or **Poetry** for package management
|
|
111
|
-
|
|
112
|
-
### Quick Local Setup
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
# 1. Clone the repository
|
|
116
|
-
git clone <repository-url>
|
|
117
|
-
cd ai-agent-platform-sdk
|
|
118
|
-
|
|
119
|
-
# 2. Install in editable mode (recommended)
|
|
120
|
-
pip install -e .
|
|
121
|
-
|
|
122
|
-
# 3. Verify CLI is working
|
|
123
|
-
aip --version
|
|
124
|
-
aip --help
|
|
125
|
-
|
|
126
|
-
# 4. Test basic functionality
|
|
127
|
-
aip status
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
### Development Workflow
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
# After making changes to the code:
|
|
134
|
-
pip install -e . --force-reinstall
|
|
135
|
-
|
|
136
|
-
# Or simply reinstall:
|
|
137
|
-
pip install -e .
|
|
138
|
-
|
|
139
|
-
# Test your changes:
|
|
140
|
-
aip --version
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
### Testing Examples
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
# Run hello world examples
|
|
147
|
-
python3 examples/getting-started/sdk/01_hello_world_agent.py
|
|
148
|
-
python3 examples/getting-started/sdk/02_hello_world_tool.py
|
|
149
|
-
|
|
150
|
-
# List all available examples
|
|
151
|
-
python3 examples/run_examples.py --list
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
### Updating Local Development
|
|
155
|
-
|
|
156
|
-
```bash
|
|
157
|
-
# Pull latest changes
|
|
158
|
-
git pull origin main
|
|
159
|
-
|
|
160
|
-
# Reinstall to get latest version
|
|
161
|
-
pip install -e . --force-reinstall
|
|
162
|
-
|
|
163
|
-
# Verify version
|
|
164
|
-
aip --version
|
|
165
|
-
|
|
166
|
-
# Test new features
|
|
167
|
-
aip --help
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
### Troubleshooting Local Setup
|
|
171
|
-
|
|
172
|
-
#### Common Issues
|
|
173
|
-
|
|
174
|
-
**"aip command not found" after pip install -e .**
|
|
175
|
-
```bash
|
|
176
|
-
# Check if the package was installed correctly
|
|
177
|
-
pip list | grep glaip-sdk
|
|
178
|
-
|
|
179
|
-
# Reinstall with force flag
|
|
180
|
-
pip install -e . --force-reinstall
|
|
181
|
-
|
|
182
|
-
# Verify the CLI script was created
|
|
183
|
-
which aip
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
**Permission errors during installation**
|
|
187
|
-
```bash
|
|
188
|
-
# Use user installation (recommended)
|
|
189
|
-
pip install -e . --user
|
|
190
|
-
|
|
191
|
-
# Or use virtual environment
|
|
192
|
-
python3 -m venv venv
|
|
193
|
-
source venv/bin/activate
|
|
194
|
-
pip install -e .
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
**Dependency conflicts**
|
|
198
|
-
```bash
|
|
199
|
-
# Clean install
|
|
200
|
-
pip uninstall glaip-sdk -y
|
|
201
|
-
pip install -e . --no-deps
|
|
202
|
-
pip install -e .
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
## ⚡ Quick Start (30 seconds)
|
|
206
|
-
|
|
207
|
-
```bash
|
|
208
|
-
# Option 1: Local development setup (Available Now)
|
|
209
|
-
git clone <repository-url>
|
|
210
|
-
cd ai-agent-platform-sdk
|
|
211
|
-
pip install -e .
|
|
212
|
-
|
|
213
|
-
# Option 2: Install globally from PyPI (Coming Soon)
|
|
214
|
-
# pip install glaip-sdk
|
|
215
|
-
|
|
216
|
-
export AIP_API_KEY="your-api-key"
|
|
217
|
-
export AIP_API_URL="https://your-platform.com/api"
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
**Python SDK:**
|
|
221
|
-
```python
|
|
222
|
-
from glaip_sdk import Client
|
|
223
|
-
|
|
224
|
-
client = Client()
|
|
225
|
-
agent = client.create_agent(name="hello", instruction="You are a helpful assistant.")
|
|
226
|
-
print(agent.run("Hello! What can you do?"))
|
|
227
|
-
agent.delete()
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
**CLI:**
|
|
231
|
-
```bash
|
|
232
|
-
# Configure and create your first agent
|
|
233
|
-
aip configure
|
|
234
|
-
aip agents create --name "hello" --instruction "You are a helpful assistant"
|
|
235
|
-
aip agents run <AGENT_ID> --input "Hello! What can you do?"
|
|
236
|
-
aip agents delete <AGENT_ID>
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
**That's it.** You created, ran, and cleaned up your first agent. 🎉
|
|
240
|
-
|
|
241
|
-
---
|
|
242
|
-
|
|
243
|
-
## 🔧 **Connection & Timeouts**
|
|
244
|
-
|
|
245
|
-
```python
|
|
246
|
-
from glaip_sdk import Client
|
|
247
|
-
|
|
248
|
-
# Auto-config from environment
|
|
249
|
-
with Client(timeout=60.0) as client: # shared HTTP session, closes on exit
|
|
250
|
-
print(len(client.list_agents()))
|
|
251
|
-
|
|
252
|
-
# Or explicit configuration
|
|
253
|
-
client = Client(
|
|
254
|
-
api_url="https://your-platform.com/api",
|
|
255
|
-
api_key="your-key",
|
|
256
|
-
timeout=120.0
|
|
257
|
-
)
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
---
|
|
261
|
-
|
|
262
|
-
## ✨ Features
|
|
263
|
-
|
|
264
|
-
* **Python SDK**: Simple `Client()` → create resources → `agent.run("...")`
|
|
265
|
-
* **CLI Interface**: Full command-line control with `aip` commands
|
|
266
|
-
* **Typed Models**: Pydantic-powered `Agent`, `Tool`, `MCP` with `.run()`, `.update()`, and `.delete()` methods
|
|
267
|
-
* **Streaming UX**: Live markdown, tool/sub-agent steps, and theme options (`AIP_THEME`, `AIP_NO_EMOJI`)
|
|
268
|
-
* **Shared Session**: All sub-clients share one HTTP session for reliability and performance
|
|
269
|
-
* **🔐 Enterprise Security**: Automatic recursive secret masking for sensitive data
|
|
270
|
-
* **📱 Multiple Output Formats**: Rich, JSON, Plain text, and Markdown views
|
|
271
|
-
* **🎯 Modern CLI Experience**: Subsequence-based fuzzy search, smart paging, and intuitive navigation
|
|
272
|
-
* **⚡ Performance**: Optimized HTTP sessions, connection pooling, and efficient streaming
|
|
273
|
-
* **🛡️ Reliability**: Comprehensive error handling, configurable timeouts, and graceful degradation
|
|
274
|
-
* **🔧 Developer Tools**: Rich debugging, comprehensive logging, and testing utilities
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
## 🎯 **Use Cases & Industries**
|
|
279
|
-
|
|
280
|
-
### **🚀 Development & DevOps**
|
|
281
|
-
- **CI/CD Automation**: Deploy agents to manage build pipelines and deployments
|
|
282
|
-
- **Code Review**: Automated code analysis and quality checks
|
|
283
|
-
- **Infrastructure Management**: Cloud resource provisioning and monitoring
|
|
284
|
-
- **Testing Automation**: Intelligent test generation and execution
|
|
285
|
-
|
|
286
|
-
### **💼 Business Operations**
|
|
287
|
-
- **Customer Support**: AI-powered customer service agents
|
|
288
|
-
- **Data Analysis**: Automated insights and reporting
|
|
289
|
-
- **Process Automation**: Streamline repetitive business workflows
|
|
290
|
-
- **Document Processing**: Intelligent document analysis and summarization
|
|
291
|
-
|
|
292
|
-
### **🔬 Research & Analytics**
|
|
293
|
-
- **Data Processing**: Automated data cleaning and transformation
|
|
294
|
-
- **Research Automation**: Literature review and data synthesis
|
|
295
|
-
- **Model Training**: Automated ML pipeline management
|
|
296
|
-
- **Reporting**: Dynamic report generation and insights
|
|
297
|
-
|
|
298
|
-
### **🏢 Enterprise Applications**
|
|
299
|
-
- **Compliance**: Automated regulatory compliance checking
|
|
300
|
-
- **Security**: Threat detection and incident response
|
|
301
|
-
- **Auditing**: Automated audit trail analysis
|
|
302
|
-
- **Integration**: Connect with existing enterprise systems
|
|
303
|
-
|
|
304
|
-
---
|
|
305
|
-
|
|
306
|
-
## 🚀 **Performance & Scalability**
|
|
307
|
-
|
|
308
|
-
### **⚡ High Performance**
|
|
309
|
-
- **Connection Pooling**: Efficient HTTP session reuse across requests
|
|
310
|
-
- **Streaming Responses**: Real-time data processing without memory bloat
|
|
311
|
-
- **Optimized Serialization**: Fast JSON parsing and response handling
|
|
312
|
-
- **Concurrent Operations**: Support for parallel agent execution
|
|
313
|
-
|
|
314
|
-
### **📈 Scalability Features**
|
|
315
|
-
- **Resource Management**: Automatic cleanup and lifecycle management
|
|
316
|
-
- **Memory Efficiency**: Streaming processing for large datasets
|
|
317
|
-
- **Timeout Handling**: Configurable timeouts for long-running operations
|
|
318
|
-
- **Connection Management**: Efficient HTTP session reuse and connection pooling
|
|
319
|
-
|
|
320
|
-
### **🏗️ Enterprise Architecture**
|
|
321
|
-
- **Microservices Ready**: Designed for distributed system integration
|
|
322
|
-
- **API-First Design**: RESTful endpoints with consistent patterns
|
|
323
|
-
- **Monitoring Support**: Built-in logging and debugging capabilities
|
|
324
|
-
- **Security Compliance**: Enterprise-grade security and audit features
|
|
325
|
-
|
|
326
|
-
**Security & Data Handling:**
|
|
327
|
-
|
|
328
|
-
* **🔐 Secret Masking**: Sensitive data automatically masked in JSON, Plain, and Markdown outputs
|
|
329
|
-
* **🔑 API Key Security**: API key read from env/config; **never logged or persisted** by default
|
|
330
|
-
* **📊 No Telemetry**: Zero data collection or external reporting
|
|
331
|
-
* **💡 Best Practice**: Use `export AIP_API_KEY="..."` instead of command-line flags
|
|
332
|
-
|
|
333
|
-
**Windows Compatibility:**
|
|
334
|
-
|
|
335
|
-
* **📄 Pager Behavior**: On Windows, automatically uses Rich's built-in pager for better ANSI support
|
|
336
|
-
|
|
337
|
-
**Interactive Features (Optional Dependencies):**
|
|
338
|
-
|
|
339
|
-
* **🔍 Fuzzy Search**: `prompt_toolkit` for intelligent subsequence-based search
|
|
340
|
-
* **📋 Select Menus**: `questionary` for interactive selection menus
|
|
341
|
-
* **🔄 Fallback Behavior**: Falls back to Rich tables when fuzzy search unavailable or non-TTY
|
|
342
|
-
|
|
343
|
-
---
|
|
344
|
-
|
|
345
|
-
## 🆕 **Latest Improvements**
|
|
346
|
-
|
|
347
|
-
### **🔐 Enhanced Security with Recursive Secret Masking**
|
|
348
|
-
Automatically masks sensitive fields like API keys, tokens, and secrets at all levels of nested data structures:
|
|
349
|
-
|
|
350
|
-
```bash
|
|
351
|
-
# Sensitive data is automatically masked in all views
|
|
352
|
-
aip agents get <AGENT_ID> # API keys shown as "••••••••"
|
|
353
|
-
aip agents list --view json # Recursive masking in JSON output
|
|
354
|
-
```
|
|
355
|
-
|
|
356
|
-
### **📱 Multiple Output Formats**
|
|
357
|
-
Choose your preferred output format for any command:
|
|
358
|
-
|
|
359
|
-
```bash
|
|
360
|
-
# Rich terminal experience (default)
|
|
361
|
-
aip agents list
|
|
362
|
-
|
|
363
|
-
# Clean JSON for scripting
|
|
364
|
-
aip agents list --view json
|
|
365
|
-
|
|
366
|
-
# Simple plain text
|
|
367
|
-
aip agents list --view plain
|
|
368
|
-
|
|
369
|
-
# Markdown tables
|
|
370
|
-
aip agents list --view md
|
|
371
|
-
```
|
|
372
|
-
|
|
373
|
-
### **🎯 Enhanced CLI Experience**
|
|
374
|
-
- **Fuzzy Search**: Intelligent search with typo tolerance
|
|
375
|
-
- **Smart Paging**: Automatic paging for large datasets
|
|
376
|
-
- **Rich Rendering**: Beautiful tables and panels with proper TTY detection
|
|
377
|
-
|
|
378
|
-
---
|
|
379
|
-
|
|
380
|
-
## Core API in 60 seconds
|
|
381
|
-
|
|
382
|
-
### Create & run an agent
|
|
383
|
-
|
|
384
|
-
```python
|
|
385
|
-
from glaip_sdk import Client
|
|
386
|
-
|
|
387
|
-
client = Client()
|
|
388
|
-
agent = client.create_agent(
|
|
389
|
-
name="helper",
|
|
390
|
-
instruction="You are a helpful assistant."
|
|
391
|
-
)
|
|
392
|
-
print(agent.run("Summarize why streaming is useful."))
|
|
393
|
-
```
|
|
394
|
-
|
|
395
|
-
### Add a tool, then use it
|
|
396
|
-
|
|
397
|
-
```python
|
|
398
|
-
tool = client.create_tool(
|
|
399
|
-
file_path="my_tool.py",
|
|
400
|
-
name="my_tool", # Optional: extracted from file if not provided
|
|
401
|
-
description="Custom business logic" # Optional: extracted from file if not provided
|
|
402
|
-
)
|
|
403
|
-
|
|
404
|
-
agent = client.create_agent(
|
|
405
|
-
name="tool-user",
|
|
406
|
-
instruction="Use tools when helpful.",
|
|
407
|
-
tools=[tool.id]
|
|
408
|
-
)
|
|
409
|
-
|
|
410
|
-
print(agent.run("Use the custom tool to process today's data."))
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
### Discover models
|
|
414
|
-
|
|
415
|
-
```python
|
|
416
|
-
for lm in client.list_language_models():
|
|
417
|
-
print(lm["name"], lm["provider"])
|
|
418
|
-
```
|
|
419
|
-
|
|
420
|
-
### Update & delete
|
|
421
|
-
|
|
422
|
-
```python
|
|
423
|
-
agent.update(instruction="Be concise.")
|
|
424
|
-
agent.delete()
|
|
425
|
-
tool.delete()
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
---
|
|
429
|
-
|
|
430
|
-
## CLI
|
|
431
|
-
|
|
432
|
-
```bash
|
|
433
|
-
# Configure
|
|
434
|
-
aip configure
|
|
435
|
-
|
|
436
|
-
# Agents
|
|
437
|
-
aip agents create --name "helper" --instruction "You are helpful"
|
|
438
|
-
aip agents run <AGENT_ID> --input "Hello!"
|
|
439
|
-
aip agents delete <AGENT_ID>
|
|
440
|
-
|
|
441
|
-
# Tools
|
|
442
|
-
aip tools create --file my_tool.py --name my_tool --description "Custom logic"
|
|
443
|
-
aip tools list
|
|
444
|
-
|
|
445
|
-
# Multiple output formats
|
|
446
|
-
aip agents list --view json # JSON for scripting
|
|
447
|
-
aip agents list --view plain # Simple text
|
|
448
|
-
aip agents list --view md # Markdown tables
|
|
449
|
-
```
|
|
450
|
-
|
|
451
|
-
> Run full examples: `python -m examples`
|
|
452
|
-
> Getting started: `examples/getting-started/sdk/01_hello_world_agent.py`
|
|
453
|
-
|
|
454
|
-
---
|
|
455
|
-
|
|
456
|
-
## Configuration
|
|
457
|
-
|
|
458
|
-
* **Environment variables**
|
|
459
|
-
|
|
460
|
-
```bash
|
|
461
|
-
# Copy the example file and fill in your values
|
|
462
|
-
cp .env.example .env
|
|
463
|
-
|
|
464
|
-
# Or set manually
|
|
465
|
-
export AIP_API_KEY="your-api-key"
|
|
466
|
-
export AIP_API_URL="https://your-platform.com/api"
|
|
467
|
-
```
|
|
468
|
-
* **Optional config file**: `~/.aip/config.yaml`
|
|
469
|
-
|
|
470
|
-
```yaml
|
|
471
|
-
api_url: https://your-platform.com/api
|
|
472
|
-
api_key: your-api-key
|
|
473
|
-
```
|
|
474
|
-
|
|
475
|
-
**Configuration precedence:** CLI context flags ⟶ environment variables ⟶ `~/.aip/config.yaml`
|
|
476
|
-
* **Renderer options**
|
|
477
|
-
|
|
478
|
-
```bash
|
|
479
|
-
export AIP_THEME=dark # or "light"
|
|
480
|
-
export AIP_NO_EMOJI=true # disable emojis in streaming view
|
|
481
|
-
export AIP_PAGER_HEADER=0 # disable pager headers
|
|
482
|
-
```
|
|
483
|
-
* **Security options**
|
|
484
|
-
|
|
485
|
-
```bash
|
|
486
|
-
export AIP_MASK_OFF=1 # disable secret masking (not recommended)
|
|
487
|
-
export AIP_MASK_FIELDS="custom_field,another_secret" # add custom fields to mask
|
|
488
|
-
```
|
|
489
|
-
|
|
490
|
-
**Environment Variables Reference:**
|
|
491
|
-
|
|
492
|
-
| Variable | Default | Purpose |
|
|
493
|
-
| ------------------------- | ------- | ---------------------------------------- |
|
|
494
|
-
| `AIP_API_URL` | — | Base API endpoint |
|
|
495
|
-
| `AIP_API_KEY` | — | API key used for auth (never logged) |
|
|
496
|
-
| `AIP_TIMEOUT` | `30.0` | Request timeout (s) |
|
|
497
|
-
| `AIP_THEME` | `dark` | Streaming code theme (`dark`/`light`) |
|
|
498
|
-
| `AIP_NO_EMOJI` | `false` | Disable emojis in the stream view |
|
|
499
|
-
| `AIP_PAGER_HEADER` | `1` | Show pager header (`0/1`) |
|
|
500
|
-
| `AIP_PAGER_WRAP` | `0` | Wrap lines in pager (drops `-S`) |
|
|
501
|
-
| `AIP_LESS_FLAGS` | auto | Override default `less` flags |
|
|
502
|
-
| `AIP_MASK_OFF` | `0` | Disable secret masking (not recommended) |
|
|
503
|
-
| `AIP_MASK_FIELDS` | — | Extra comma-separated keys to mask |
|
|
504
|
-
| `AIP_TABLE_NO_SORT` | `0` | Disable automatic table sorting |
|
|
505
|
-
* **Enterprise features**
|
|
506
|
-
|
|
507
|
-
* Single shared HTTP session across sub-clients for reliability & connection reuse
|
|
508
|
-
* Configurable timeouts and SSE streaming out of the box
|
|
509
|
-
* Proxy support: `HTTP_PROXY` / `HTTPS_PROXY` supported by `httpx`
|
|
510
|
-
* **Python**: 3.10–3.12
|
|
511
|
-
* **Versioning**: semantic versioning; breaking changes bump MAJOR
|
|
512
|
-
* **Security**: API key only read from env/config, never logged; no telemetry by default; TLS recommended
|
|
513
|
-
|
|
514
|
-
---
|
|
515
|
-
|
|
516
|
-
## Learning Path
|
|
517
|
-
|
|
518
|
-
* **Start here**
|
|
519
|
-
|
|
520
|
-
* `examples/getting-started/sdk/01_hello_world_agent.py`
|
|
521
|
-
* `examples/getting-started/sdk/02_hello_world_tool.py`
|
|
522
|
-
* `examples/getting-started/sdk/03_hello_world_mcp.py`
|
|
523
|
-
* **Build skills**
|
|
524
|
-
|
|
525
|
-
* `examples/intermediate/sdk/01_conversation_memory.py`
|
|
526
|
-
* `examples/intermediate/sdk/02_streaming_execution.py`
|
|
527
|
-
* `examples/intermediate/sdk/04_agent_tool_integration.py`
|
|
528
|
-
* **Go deeper**
|
|
529
|
-
|
|
530
|
-
* `examples/advanced/sdk/01_agent_workflow_orchestration.py`
|
|
531
|
-
* `examples/advanced/sdk/02_error_handling_patterns.py`
|
|
532
|
-
* `examples/advanced/sdk/03_performance_optimization.py`
|
|
533
|
-
* `examples/advanced/sdk/04_metadata_patterns.py`
|
|
534
|
-
* **SDK Testing Scenario**
|
|
535
|
-
See: [`SDK_TESTING_SCENARIO.md`](SDK_TESTING_SCENARIO.md) (complete end-to-end coverage plan)
|
|
536
|
-
|
|
537
|
-
---
|
|
538
|
-
|
|
539
|
-
## Development
|
|
540
|
-
|
|
541
|
-
```bash
|
|
542
|
-
make install
|
|
543
|
-
make test-unit
|
|
544
|
-
make test-integration
|
|
545
|
-
make pre-commit
|
|
546
|
-
```
|
|
547
|
-
|
|
548
|
-
### Versioning
|
|
549
|
-
|
|
550
|
-
Single source of truth: `pyproject.toml` under `[project].version`.
|
|
551
|
-
|
|
552
|
-
The SDK resolves its runtime version from installed package metadata
|
|
553
|
-
(`glaip_sdk/_version.py`), so you do not need to edit any code files when
|
|
554
|
-
changing the version. Update once in `pyproject.toml`, then build/reinstall.
|
|
555
|
-
|
|
556
|
-
Release by tagging (e.g., `v0.0.3`) and creating a GitHub Release that
|
|
557
|
-
matches the tag.
|
|
558
|
-
|
|
559
|
-
---
|
|
560
|
-
|
|
561
|
-
## 🚨 **Error Handling**
|
|
562
|
-
|
|
563
|
-
```python
|
|
564
|
-
from glaip_sdk import Client
|
|
565
|
-
from glaip_sdk.exceptions import (
|
|
566
|
-
AuthenticationError, NotFoundError, ValidationError,
|
|
567
|
-
RateLimitError, TimeoutError, ServerError, AIPError
|
|
568
|
-
)
|
|
569
|
-
|
|
570
|
-
try:
|
|
571
|
-
client = Client()
|
|
572
|
-
agent = client.create_agent(name="demo", instruction="...")
|
|
573
|
-
print(agent.run("hello"))
|
|
574
|
-
except AuthenticationError:
|
|
575
|
-
print("Invalid API key or insufficient permissions.")
|
|
576
|
-
except NotFoundError:
|
|
577
|
-
print("Resource not found.")
|
|
578
|
-
except RateLimitError:
|
|
579
|
-
print("Rate limited — retry later.")
|
|
580
|
-
except TimeoutError:
|
|
581
|
-
print("Request timed out.")
|
|
582
|
-
except ValidationError as e:
|
|
583
|
-
print(f"Bad request: {e}")
|
|
584
|
-
except ServerError as e:
|
|
585
|
-
print(f"Server issue: {e}")
|
|
586
|
-
except AIPError as e:
|
|
587
|
-
print(f"SDK error: {e}")
|
|
588
|
-
```
|
|
589
|
-
|
|
590
|
-
---
|
|
591
|
-
|
|
592
|
-
## 🔍 **Troubleshooting**
|
|
593
|
-
|
|
594
|
-
```bash
|
|
595
|
-
# Test the connection (auth header is required)
|
|
596
|
-
curl -s -H "X-API-Key: $AIP_API_KEY" "$AIP_API_URL/health-check"
|
|
597
|
-
|
|
598
|
-
# Verify your configuration
|
|
599
|
-
echo "API URL: $AIP_API_URL"
|
|
600
|
-
echo "API Key length: ${#AIP_API_KEY}"
|
|
601
|
-
|
|
602
|
-
# Test CLI functionality
|
|
603
|
-
aip --version
|
|
604
|
-
aip agents list --view json
|
|
605
|
-
```
|
|
606
|
-
|
|
607
|
-
---
|
|
608
|
-
|
|
609
|
-
## 🆘 **Getting Help & Support**
|
|
610
|
-
|
|
611
|
-
### **📚 Documentation & Examples**
|
|
612
|
-
- **Comprehensive Examples**: Run `python -m examples` for complete working samples
|
|
613
|
-
- **Getting Started**: Start with `examples/getting-started/` for basic concepts
|
|
614
|
-
- **Advanced Patterns**: Explore `examples/advanced/` for complex use cases
|
|
615
|
-
- **Testing Guide**: See `SDK_TESTING_SCENARIO.md` for testing strategies
|
|
616
|
-
|
|
617
|
-
### **🔧 Troubleshooting**
|
|
618
|
-
- **Connection Issues**: Check API URL and authentication
|
|
619
|
-
- **Performance**: Monitor timeouts and connection pooling
|
|
620
|
-
- **Security**: Verify secret masking and access controls
|
|
621
|
-
- **CLI Issues**: Test with `--view json` for debugging
|
|
622
|
-
|
|
623
|
-
### **💡 Best Practices**
|
|
624
|
-
- **Resource Management**: Always clean up resources with `.delete()`
|
|
625
|
-
- **Error Handling**: Use try-catch blocks for robust applications
|
|
626
|
-
- **Configuration**: Use environment variables for sensitive data
|
|
627
|
-
- **Testing**: Test with small datasets before scaling up
|
|
628
|
-
|
|
629
|
-
---
|
|
630
|
-
|
|
631
|
-
## 🏆 **Why Choose AIP SDK?**
|
|
632
|
-
|
|
633
|
-
* **🚀 Production Ready**: Built for enterprise with proper error handling, timeouts, and security
|
|
634
|
-
* **🔐 Security First**: Automatic secret masking, no sensitive data logging
|
|
635
|
-
* **💻 Developer Experience**: Intuitive CLI with fuzzy search and multiple output formats
|
|
636
|
-
* **📊 Rich Streaming**: Beautiful terminal experience with live updates and tool visualization
|
|
637
|
-
* **🔧 Simple API**: Minimal boilerplate, maximum functionality
|
|
638
|
-
* **🏗️ Enterprise Features**: Shared sessions, proxy support, comprehensive error handling
|
|
639
|
-
|
|
640
|
-
---
|
|
641
|
-
|
|
642
|
-
## License
|
|
643
|
-
|
|
644
|
-
MIT — see [LICENSE](LICENSE)
|
|
645
|
-
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
glaip_sdk/__init__.py,sha256=AmY3ggfFTMzWNiHc6RYkdr-IgDqU6CZvU7PGdoyVULg,370
|
|
2
|
-
glaip_sdk/_version.py,sha256=Rb9YLDvK1DXCVFrjlLDbtucpwKh_PyCnmZ-ia9VX3Cc,1650
|
|
3
|
-
glaip_sdk/branding.py,sha256=TLx2j4q3QJrmsbQsvtbd9Ta99rQkX8HzYIDwy-D8tz4,5301
|
|
4
|
-
glaip_sdk/cli/__init__.py,sha256=xCCfuF1Yc7mpCDcfhHZTX0vizvtrDSLeT8MJ3V7m5A0,156
|
|
5
|
-
glaip_sdk/cli/agent_config.py,sha256=VHjebw68wAdhGUzYdPH8qz10oADZPRgUQcPW6F7iHIU,2421
|
|
6
|
-
glaip_sdk/cli/commands/__init__.py,sha256=ZAzgT9y68_BbSpuIClPoZureIxEM8gqmG9qL3iFkCyQ,173
|
|
7
|
-
glaip_sdk/cli/commands/agents.py,sha256=xd8zFF8J7Qdes5ywFGhqSpEpe9UhB9oLJfrhT3kbr-I,33989
|
|
8
|
-
glaip_sdk/cli/commands/configure.py,sha256=5Rr_gGc7j53CipCC9shE4uyvpX-06Sif0p2YpbAz33s,7306
|
|
9
|
-
glaip_sdk/cli/commands/mcps.py,sha256=HK3XCnVajjnU02eFHzVtqCEJK5X39ozt9ag-fe32tRM,12476
|
|
10
|
-
glaip_sdk/cli/commands/models.py,sha256=JhVhH-c5V-VkxJu4jXvm2hmaeU7LXuT9KOH9XWcpubg,1417
|
|
11
|
-
glaip_sdk/cli/commands/tools.py,sha256=1Qm-FrWkxF-pjsU0jP9MSW4L1gfzqIYDiZdDy7qhQRg,17475
|
|
12
|
-
glaip_sdk/cli/display.py,sha256=wFYReJQ0VTiQYepWd6uFLvHdYkpAj321o8e7P2zSvfY,8058
|
|
13
|
-
glaip_sdk/cli/io.py,sha256=9DxJsuJyl_kDkxXCt661mZIpBxnfT7rvJ6Xq2a1ie5M,3326
|
|
14
|
-
glaip_sdk/cli/main.py,sha256=U13On-zpLZLTDbruWHDhkgo6HYbcxrc5SL9ttiXsnlw,10414
|
|
15
|
-
glaip_sdk/cli/resolution.py,sha256=FlWEg7Frtw2jwdLLfed58mTXsUv73loI677CezDp4KM,1619
|
|
16
|
-
glaip_sdk/cli/utils.py,sha256=dwiZ6P6j75fcE_hDmLmV2IfrIlXsVdFWR4EI_1LMhqU,29653
|
|
17
|
-
glaip_sdk/cli/validators.py,sha256=0VXG91hVlFVGYMfk5gm1XpiRqDKS_3wWfmfjPZmWPYw,5446
|
|
18
|
-
glaip_sdk/client/__init__.py,sha256=nYLXfBVTTWwKjP0e63iumPYO4k5FifwWaELQPaPIKIg,188
|
|
19
|
-
glaip_sdk/client/agents.py,sha256=j6MljkfVIDAL5sAa0fcIre_ZjQ_1co9pGhqFphBPT8c,30702
|
|
20
|
-
glaip_sdk/client/base.py,sha256=NcxiM2oGKXktNi4zubljO5OhD3DCEP-X0KfuJ9QY4xg,12098
|
|
21
|
-
glaip_sdk/client/main.py,sha256=LlvYHP7-Hy7Eq1ep1kfk337K-Oue5SdKWJpqYfX9eXY,7993
|
|
22
|
-
glaip_sdk/client/mcps.py,sha256=yxwrAtztElYDEGhp2EHRpeYUxNsOlTLTqtw9jSKJmcI,8936
|
|
23
|
-
glaip_sdk/client/tools.py,sha256=ZvRRbXHvd33XUKqmKAIFSvz_IO-1glTvJNyxOeivK9Q,15962
|
|
24
|
-
glaip_sdk/client/validators.py,sha256=3MtOt11IivEwQAgzmdRGWUBzP223ytECOLU_a77x7IU,7101
|
|
25
|
-
glaip_sdk/config/constants.py,sha256=mOH2conxcj8t-bGhwgP_iFX4NMkNEm-9k5QN2F8yqyY,925
|
|
26
|
-
glaip_sdk/exceptions.py,sha256=QTVtwxRHMN4e8gGn0icXphZvdugiRvcSrlMYylwGsDc,1993
|
|
27
|
-
glaip_sdk/models.py,sha256=d8VSE1lm8jR0p_ep8cNaPZ6h2FfKudeAtCZlTxrw_wc,8729
|
|
28
|
-
glaip_sdk/rich_components.py,sha256=pmJd-81OQE8bC9UOXtga5rsax4zphKlzCZ1JoWbbQzQ,803
|
|
29
|
-
glaip_sdk/utils/__init__.py,sha256=9Y4eCjXx9_t_29CfnH-ChCf2b0YsYCLSJN9s9_HnzLo,926
|
|
30
|
-
glaip_sdk/utils/agent_config.py,sha256=b7_J5DELyk0b_XEoi7tsxbS3wqzAKbMa-3_C-65pPIY,6791
|
|
31
|
-
glaip_sdk/utils/client_utils.py,sha256=JdmP2OolXy83lzXxKDvswRw3bCorh2c3Gm5uy-sDeXQ,11839
|
|
32
|
-
glaip_sdk/utils/display.py,sha256=BHVD194MS1vEWm5oaLfEx_vxGoUyHGMGcQJDnKLh2AI,3071
|
|
33
|
-
glaip_sdk/utils/general.py,sha256=YolKDCs1wNcefQ9fOk5wd9prSxJZe1-PHsZSH1a8wDQ,2186
|
|
34
|
-
glaip_sdk/utils/import_export.py,sha256=-XX21D0emPyC6EWpBsxySU1-lb3dkY1jJEjx11oLa6I,4503
|
|
35
|
-
glaip_sdk/utils/rendering/__init__.py,sha256=vXjwk5rPhhfPyD8S0DnV4GFFEtPJp4HCCg1Um9SXfs0,70
|
|
36
|
-
glaip_sdk/utils/rendering/formatting.py,sha256=zTF5E7BcswaIHHGFMjy1ylo6kJfpLQmeeAgFYITthcU,7165
|
|
37
|
-
glaip_sdk/utils/rendering/models.py,sha256=ffPMv4XrKY4V2-THL69KONZf1NL7msIa-jVZAVuz2Js,1559
|
|
38
|
-
glaip_sdk/utils/rendering/renderer/__init__.py,sha256=EXwVBmGkSYcype4ocAXo69Z1kXu0gpNXmhH5LW0_B7A,2939
|
|
39
|
-
glaip_sdk/utils/rendering/renderer/base.py,sha256=LjtJmEs_pAw4uux1XgfZRJGA-myPzCCpwmYbBg0io98,34067
|
|
40
|
-
glaip_sdk/utils/rendering/renderer/config.py,sha256=E4ER8TJJbqr1hcWjkwG7XROqLuccQy4EL99CbuLvSXE,783
|
|
41
|
-
glaip_sdk/utils/rendering/renderer/console.py,sha256=ibQU07rmrWw-MMX6n3J2ewxuOEY-Z6RnKEfzMH2-IrA,1744
|
|
42
|
-
glaip_sdk/utils/rendering/renderer/debug.py,sha256=VqpQAmBA3DtHVIqIeWJSgrycmzORUBk1kJ5m6b3tz4s,2884
|
|
43
|
-
glaip_sdk/utils/rendering/renderer/panels.py,sha256=_KJohKOsyOBkqKzlC-hOSwZt1SGsJRhQwizlrRgWMis,3040
|
|
44
|
-
glaip_sdk/utils/rendering/renderer/progress.py,sha256=i4HG_iNwtK4c3Gf2sviLCiOJ-5ydX4t-YE5dgtLOxNI,3438
|
|
45
|
-
glaip_sdk/utils/rendering/renderer/stream.py,sha256=ZKitYkt_7OirNeERu3cc_NybQ8mWUMoEstg9UL1S090,7323
|
|
46
|
-
glaip_sdk/utils/rendering/steps.py,sha256=SPImcV6f-TY_ITLyi4mSTeTu4SJxlMN7fWEKfDLL3Z8,5862
|
|
47
|
-
glaip_sdk/utils/resource_refs.py,sha256=0YzblJNfRhz9xhpaKE9aE68XEV-6_ssr0fIkiMVOka0,5489
|
|
48
|
-
glaip_sdk/utils/rich_utils.py,sha256=8jPG8HsDTr6nj2vh4_be5ULCGxG1ZSinJqHZT6pdXsY,755
|
|
49
|
-
glaip_sdk/utils/run_renderer.py,sha256=JGQzXymsptgr927-F49H1AOT5bzqErDXZMF2pOxqbfw,1365
|
|
50
|
-
glaip_sdk/utils/serialization.py,sha256=eqbxPOBxuJ88NpES_rGWs1m7QJcs00IwhFOk1GHoZyE,7803
|
|
51
|
-
glaip_sdk/utils/validation.py,sha256=QjBRsYFrP8MLl-xMq68Sk-Gyev-EGLGiY2l5t0ALySc,6990
|
|
52
|
-
glaip_sdk-0.0.5b1.dist-info/METADATA,sha256=BwVLXLD8FOOvs68IBMCUcpZyobzW2qrx9AZEgbJGWsY,19549
|
|
53
|
-
glaip_sdk-0.0.5b1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
54
|
-
glaip_sdk-0.0.5b1.dist-info/entry_points.txt,sha256=EGs8NO8J1fdFMWA3CsF7sKBEvtHb_fujdCoNPhfMouE,47
|
|
55
|
-
glaip_sdk-0.0.5b1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|