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.
Files changed (101) hide show
  1. {airtrain-0.1.57 → airtrain-0.1.58}/PKG-INFO +1 -1
  2. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/__init__.py +21 -2
  3. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/telemetry/__init__.py +4 -0
  4. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/telemetry/views.py +65 -1
  5. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain.egg-info/PKG-INFO +1 -1
  6. {airtrain-0.1.57 → airtrain-0.1.58}/pyproject.toml +1 -1
  7. {airtrain-0.1.57 → airtrain-0.1.58}/setup.py +41 -0
  8. {airtrain-0.1.57 → airtrain-0.1.58}/MANIFEST.in +0 -0
  9. {airtrain-0.1.57 → airtrain-0.1.58}/README.md +0 -0
  10. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/__main__.py +0 -0
  11. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/agents/__init__.py +0 -0
  12. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/agents/example_agent.py +0 -0
  13. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/agents/groq_agent.py +0 -0
  14. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/agents/memory.py +0 -0
  15. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/agents/registry.py +0 -0
  16. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/builder/__init__.py +0 -0
  17. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/builder/agent_builder.py +0 -0
  18. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/cli/__init__.py +0 -0
  19. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/cli/builder.py +0 -0
  20. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/cli/main.py +0 -0
  21. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/contrib/__init__.py +0 -0
  22. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/contrib/travel/__init__.py +0 -0
  23. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/contrib/travel/agents.py +0 -0
  24. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/contrib/travel/models.py +0 -0
  25. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/core/__init__.py +0 -0
  26. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/core/credentials.py +0 -0
  27. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/core/schemas.py +0 -0
  28. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/core/skills.py +0 -0
  29. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/__init__.py +0 -0
  30. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/anthropic/__init__.py +0 -0
  31. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/anthropic/credentials.py +0 -0
  32. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/anthropic/list_models.py +0 -0
  33. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/anthropic/models_config.py +0 -0
  34. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/anthropic/skills.py +0 -0
  35. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/aws/__init__.py +0 -0
  36. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/aws/credentials.py +0 -0
  37. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/aws/skills.py +0 -0
  38. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/cerebras/__init__.py +0 -0
  39. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/cerebras/credentials.py +0 -0
  40. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/cerebras/skills.py +0 -0
  41. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/combined/__init__.py +0 -0
  42. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/combined/groq_fireworks_skills.py +0 -0
  43. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/combined/list_models_factory.py +0 -0
  44. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/__init__.py +0 -0
  45. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/completion_skills.py +0 -0
  46. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/conversation_manager.py +0 -0
  47. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/credentials.py +0 -0
  48. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/list_models.py +0 -0
  49. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/models.py +0 -0
  50. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/requests_skills.py +0 -0
  51. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/skills.py +0 -0
  52. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/structured_completion_skills.py +0 -0
  53. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/structured_requests_skills.py +0 -0
  54. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/fireworks/structured_skills.py +0 -0
  55. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/google/__init__.py +0 -0
  56. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/google/credentials.py +0 -0
  57. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/google/skills.py +0 -0
  58. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/groq/__init__.py +0 -0
  59. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/groq/credentials.py +0 -0
  60. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/groq/models_config.py +0 -0
  61. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/groq/skills.py +0 -0
  62. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/ollama/__init__.py +0 -0
  63. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/ollama/credentials.py +0 -0
  64. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/ollama/skills.py +0 -0
  65. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/openai/__init__.py +0 -0
  66. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/openai/chinese_assistant.py +0 -0
  67. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/openai/credentials.py +0 -0
  68. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/openai/list_models.py +0 -0
  69. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/openai/models_config.py +0 -0
  70. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/openai/skills.py +0 -0
  71. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/sambanova/__init__.py +0 -0
  72. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/sambanova/credentials.py +0 -0
  73. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/sambanova/skills.py +0 -0
  74. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/__init__.py +0 -0
  75. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/audio_models_config.py +0 -0
  76. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/credentials.py +0 -0
  77. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/embedding_models_config.py +0 -0
  78. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/image_models_config.py +0 -0
  79. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/image_skill.py +0 -0
  80. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/list_models.py +0 -0
  81. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/models.py +0 -0
  82. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/models_config.py +0 -0
  83. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/rerank_models_config.py +0 -0
  84. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/rerank_skill.py +0 -0
  85. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/schemas.py +0 -0
  86. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/skills.py +0 -0
  87. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/integrations/together/vision_models_config.py +0 -0
  88. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/telemetry/service.py +0 -0
  89. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/tools/__init__.py +0 -0
  90. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/tools/command.py +0 -0
  91. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/tools/filesystem.py +0 -0
  92. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/tools/network.py +0 -0
  93. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain/tools/registry.py +0 -0
  94. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain.egg-info/SOURCES.txt +0 -0
  95. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain.egg-info/dependency_links.txt +0 -0
  96. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain.egg-info/entry_points.txt +0 -0
  97. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain.egg-info/requires.txt +0 -0
  98. {airtrain-0.1.57 → airtrain-0.1.58}/airtrain.egg-info/top_level.txt +0 -0
  99. {airtrain-0.1.57 → airtrain-0.1.58}/changelog.md +0 -0
  100. {airtrain-0.1.57 → airtrain-0.1.58}/requirements.txt +0 -0
  101. {airtrain-0.1.57 → airtrain-0.1.58}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airtrain
3
- Version: 0.1.57
3
+ Version: 0.1.58
4
4
  Summary: A platform for building and deploying AI agents with structured skills
5
5
  Home-page: https://github.com/rosaboyle/airtrain.dev
6
6
  Author: Dheeraj Pai
@@ -1,6 +1,8 @@
1
1
  """Airtrain - A platform for building and deploying AI agents with structured skills"""
2
2
 
3
- __version__ = "0.1.57"
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airtrain
3
- Version: 0.1.57
3
+ Version: 0.1.58
4
4
  Summary: A platform for building and deploying AI agents with structured skills
5
5
  Home-page: https://github.com/rosaboyle/airtrain.dev
6
6
  Author: Dheeraj Pai
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "airtrain"
7
- version = "0.1.57"
7
+ version = "0.1.58"
8
8
  description = "A platform for building and deploying AI agents with structured skills"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.8"
@@ -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