airtrain 0.1.57__tar.gz → 0.1.58__tar.gz
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.
- {airtrain-0.1.57 → airtrain-0.1.58}/PKG-INFO +1 -1
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/__init__.py +21 -2
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/telemetry/__init__.py +4 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/telemetry/views.py +65 -1
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain.egg-info/PKG-INFO +1 -1
- {airtrain-0.1.57 → airtrain-0.1.58}/pyproject.toml +1 -1
- {airtrain-0.1.57 → airtrain-0.1.58}/setup.py +41 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/MANIFEST.in +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/README.md +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/__main__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/agents/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/agents/example_agent.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/agents/groq_agent.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/agents/memory.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/agents/registry.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/builder/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/builder/agent_builder.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/cli/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/cli/builder.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/cli/main.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/contrib/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/contrib/travel/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/contrib/travel/agents.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/contrib/travel/models.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/core/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/core/credentials.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/core/schemas.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/core/skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/anthropic/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/anthropic/credentials.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/anthropic/list_models.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/anthropic/models_config.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/anthropic/skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/aws/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/aws/credentials.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/aws/skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/cerebras/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/cerebras/credentials.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/cerebras/skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/combined/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/combined/groq_fireworks_skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/combined/list_models_factory.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/completion_skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/conversation_manager.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/credentials.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/list_models.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/models.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/requests_skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/structured_completion_skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/structured_requests_skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/structured_skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/google/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/google/credentials.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/google/skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/groq/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/groq/credentials.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/groq/models_config.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/groq/skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/ollama/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/ollama/credentials.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/ollama/skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/openai/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/openai/chinese_assistant.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/openai/credentials.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/openai/list_models.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/openai/models_config.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/openai/skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/sambanova/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/sambanova/credentials.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/sambanova/skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/audio_models_config.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/credentials.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/embedding_models_config.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/image_models_config.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/image_skill.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/list_models.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/models.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/models_config.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/rerank_models_config.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/rerank_skill.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/schemas.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/skills.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/vision_models_config.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/telemetry/service.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/tools/__init__.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/tools/command.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/tools/filesystem.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/tools/network.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/tools/registry.py +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain.egg-info/SOURCES.txt +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain.egg-info/dependency_links.txt +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain.egg-info/entry_points.txt +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain.egg-info/requires.txt +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/airtrain.egg-info/top_level.txt +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/changelog.md +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/requirements.txt +0 -0
- {airtrain-0.1.57 → airtrain-0.1.58}/setup.cfg +0 -0
@@ -1,6 +1,8 @@
|
|
1
1
|
"""Airtrain - A platform for building and deploying AI agents with structured skills"""
|
2
2
|
|
3
|
-
__version__ = "0.1.
|
3
|
+
__version__ = "0.1.58"
|
4
|
+
|
5
|
+
import sys
|
4
6
|
|
5
7
|
# Core imports
|
6
8
|
from .core.skills import Skill, ProcessingError
|
@@ -49,8 +51,9 @@ from .agents import (
|
|
49
51
|
SharedMemory
|
50
52
|
)
|
51
53
|
|
52
|
-
# Telemetry import
|
54
|
+
# Telemetry import - must be imported after version is defined
|
53
55
|
from .telemetry import telemetry
|
56
|
+
from .telemetry import PackageImportTelemetryEvent
|
54
57
|
|
55
58
|
|
56
59
|
__all__ = [
|
@@ -98,3 +101,19 @@ __all__ = [
|
|
98
101
|
# Telemetry - not directly exposed to users
|
99
102
|
# but initialized at import time
|
100
103
|
]
|
104
|
+
|
105
|
+
# Capture import telemetry
|
106
|
+
try:
|
107
|
+
telemetry.capture(
|
108
|
+
PackageImportTelemetryEvent(
|
109
|
+
version=__version__,
|
110
|
+
python_version=(
|
111
|
+
f"{sys.version_info.major}."
|
112
|
+
f"{sys.version_info.minor}."
|
113
|
+
f"{sys.version_info.micro}"
|
114
|
+
)
|
115
|
+
)
|
116
|
+
)
|
117
|
+
except Exception:
|
118
|
+
# Silently continue if telemetry fails
|
119
|
+
pass
|
@@ -16,6 +16,8 @@ from airtrain.telemetry.views import (
|
|
16
16
|
UserFeedbackTelemetryEvent,
|
17
17
|
SkillInitTelemetryEvent,
|
18
18
|
SkillProcessTelemetryEvent,
|
19
|
+
PackageInstallTelemetryEvent,
|
20
|
+
PackageImportTelemetryEvent,
|
19
21
|
)
|
20
22
|
|
21
23
|
__all__ = [
|
@@ -28,6 +30,8 @@ __all__ = [
|
|
28
30
|
"UserFeedbackTelemetryEvent",
|
29
31
|
"SkillInitTelemetryEvent",
|
30
32
|
"SkillProcessTelemetryEvent",
|
33
|
+
"PackageInstallTelemetryEvent",
|
34
|
+
"PackageImportTelemetryEvent",
|
31
35
|
]
|
32
36
|
|
33
37
|
# Create a singleton instance for easy import
|
@@ -170,4 +170,68 @@ class SkillProcessTelemetryEvent(BaseTelemetryEvent):
|
|
170
170
|
input_data: Optional[Dict[str, Any]] = None
|
171
171
|
duration_seconds: float = 0.0
|
172
172
|
error: Optional[str] = None
|
173
|
-
name: str = 'skill_process'
|
173
|
+
name: str = 'skill_process'
|
174
|
+
|
175
|
+
|
176
|
+
@dataclass
|
177
|
+
class PackageInstallTelemetryEvent(BaseTelemetryEvent):
|
178
|
+
"""Event type to capture package installation"""
|
179
|
+
version: str
|
180
|
+
python_version: str
|
181
|
+
install_method: Optional[str] = None # pip, conda, source, etc.
|
182
|
+
platform: Optional[str] = None # Operating system
|
183
|
+
dependencies: Optional[Dict[str, str]] = None # Installed dependencies
|
184
|
+
name: str = 'package_install'
|
185
|
+
|
186
|
+
def __post_init__(self):
|
187
|
+
# Collect platform info if not provided
|
188
|
+
if self.platform is None:
|
189
|
+
import platform
|
190
|
+
self.platform = platform.platform()
|
191
|
+
|
192
|
+
# Collect dependency info if not provided
|
193
|
+
if self.dependencies is None:
|
194
|
+
# Try to get installed package versions for key dependencies
|
195
|
+
self.dependencies = {}
|
196
|
+
import importlib.metadata
|
197
|
+
try:
|
198
|
+
for package in ["openai", "anthropic", "groq", "together"]:
|
199
|
+
try:
|
200
|
+
self.dependencies[package] = importlib.metadata.version(package)
|
201
|
+
except importlib.metadata.PackageNotFoundError:
|
202
|
+
pass
|
203
|
+
except (ImportError, Exception):
|
204
|
+
pass
|
205
|
+
|
206
|
+
|
207
|
+
@dataclass
|
208
|
+
class PackageImportTelemetryEvent(BaseTelemetryEvent):
|
209
|
+
"""Event type to capture package import"""
|
210
|
+
version: str
|
211
|
+
python_version: str
|
212
|
+
import_context: Optional[str] = None # Information about what imported the package
|
213
|
+
platform: Optional[str] = None # Operating system
|
214
|
+
name: str = 'package_import'
|
215
|
+
|
216
|
+
def __post_init__(self):
|
217
|
+
# Collect platform info if not provided
|
218
|
+
if self.platform is None:
|
219
|
+
import platform
|
220
|
+
self.platform = platform.platform()
|
221
|
+
|
222
|
+
# Try to get import context from traceback
|
223
|
+
if self.import_context is None:
|
224
|
+
try:
|
225
|
+
import inspect
|
226
|
+
frames = inspect.stack()
|
227
|
+
# Skip the first few frames which are inside our code
|
228
|
+
# Look for the first frame that's not in our module
|
229
|
+
import_frames = []
|
230
|
+
for frame in frames[3:10]: # Skip first 3, take up to 7 more
|
231
|
+
module = frame.frame.f_globals.get('__name__', '')
|
232
|
+
if not module.startswith('airtrain'):
|
233
|
+
import_frames.append(f"{module}:{frame.function}")
|
234
|
+
if import_frames:
|
235
|
+
self.import_context = " -> ".join(import_frames)
|
236
|
+
except Exception:
|
237
|
+
pass
|
@@ -2,6 +2,7 @@ from setuptools import setup, find_packages # type: ignore
|
|
2
2
|
import os
|
3
3
|
import sys
|
4
4
|
import re
|
5
|
+
from setuptools.command.install import install
|
5
6
|
|
6
7
|
|
7
8
|
# Read version from __init__.py
|
@@ -35,6 +36,43 @@ def get_changelog() -> str:
|
|
35
36
|
return "".join(changelog_content)
|
36
37
|
|
37
38
|
|
39
|
+
# Custom install command that sends telemetry
|
40
|
+
class CustomInstallCommand(install):
|
41
|
+
def run(self):
|
42
|
+
# Run the standard install
|
43
|
+
install.run(self)
|
44
|
+
|
45
|
+
# Try to send telemetry after installation
|
46
|
+
try:
|
47
|
+
# We need to import here to avoid import errors
|
48
|
+
# before the package is installed
|
49
|
+
sys.path.insert(0, self.install_lib)
|
50
|
+
try:
|
51
|
+
from airtrain.telemetry import telemetry, PackageInstallTelemetryEvent
|
52
|
+
|
53
|
+
# Get the version we just installed
|
54
|
+
version = get_version()
|
55
|
+
|
56
|
+
# Send telemetry
|
57
|
+
telemetry.capture(
|
58
|
+
PackageInstallTelemetryEvent(
|
59
|
+
version=version,
|
60
|
+
python_version=(
|
61
|
+
f"{sys.version_info.major}."
|
62
|
+
f"{sys.version_info.minor}."
|
63
|
+
f"{sys.version_info.micro}"
|
64
|
+
),
|
65
|
+
install_method="pip" if "pip" in sys.argv else "unknown"
|
66
|
+
)
|
67
|
+
)
|
68
|
+
except ImportError:
|
69
|
+
# The package is not fully installed yet
|
70
|
+
pass
|
71
|
+
except Exception:
|
72
|
+
# Don't let telemetry failures interfere with installation
|
73
|
+
pass
|
74
|
+
|
75
|
+
|
38
76
|
with open("README.md", "r", encoding="utf-8") as fh:
|
39
77
|
long_description = fh.read()
|
40
78
|
|
@@ -104,4 +142,7 @@ setup(
|
|
104
142
|
"airtrain=airtrain.cli.main:main",
|
105
143
|
],
|
106
144
|
},
|
145
|
+
cmdclass={
|
146
|
+
'install': CustomInstallCommand,
|
147
|
+
},
|
107
148
|
)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/structured_completion_skills.py
RENAMED
File without changes
|
{airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/structured_requests_skills.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/embedding_models_config.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|