traia-iatp 0.1.1__tar.gz → 0.1.2__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.

Potentially problematic release.


This version of traia-iatp might be problematic. Click here for more details.

Files changed (78) hide show
  1. {traia_iatp-0.1.1/src/traia_iatp.egg-info → traia_iatp-0.1.2}/PKG-INFO +1 -1
  2. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/pyproject.toml +1 -1
  3. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/templates/__main__.py.j2 +58 -2
  4. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/templates/agent.py.j2 +13 -0
  5. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/templates/agent_executor.py.j2 +16 -0
  6. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/templates/env.example.j2 +3 -0
  7. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/templates/pyproject.toml.j2 +1 -0
  8. {traia_iatp-0.1.1 → traia_iatp-0.1.2/src/traia_iatp.egg-info}/PKG-INFO +1 -1
  9. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/LICENSE +0 -0
  10. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/README.md +0 -0
  11. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/setup.cfg +0 -0
  12. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/README.md +0 -0
  13. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/__init__.py +0 -0
  14. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/cli/__init__.py +0 -0
  15. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/cli/main.py +0 -0
  16. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/client/__init__.py +0 -0
  17. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/client/a2a_client.py +0 -0
  18. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/client/crewai_a2a_tools.py +0 -0
  19. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/client/grpc_a2a_tools.py +0 -0
  20. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/client/root_path_a2a_client.py +0 -0
  21. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/core/__init__.py +0 -0
  22. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/core/models.py +0 -0
  23. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/mcp/__init__.py +0 -0
  24. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/mcp/client.py +0 -0
  25. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/mcp/mcp_agent_template.py +0 -0
  26. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/mcp/templates/Dockerfile.j2 +0 -0
  27. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/mcp/templates/README.md.j2 +0 -0
  28. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/mcp/templates/cursor-rules.md.j2 +0 -0
  29. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/mcp/templates/deployment_params.json.j2 +0 -0
  30. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/mcp/templates/docker-compose.yml.j2 +0 -0
  31. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/mcp/templates/dockerignore.j2 +0 -0
  32. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/mcp/templates/gitignore.j2 +0 -0
  33. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/mcp/templates/mcp_health_check.py.j2 +0 -0
  34. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/mcp/templates/pyproject.toml.j2 +0 -0
  35. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/mcp/templates/run_local_docker.sh.j2 +0 -0
  36. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/mcp/templates/server.py.j2 +0 -0
  37. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/mcp/traia_mcp_adapter.py +0 -0
  38. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/preview_diagrams.html +0 -0
  39. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/registry/__init__.py +0 -0
  40. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/registry/atlas_search_indexes.json +0 -0
  41. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/registry/embeddings.py +0 -0
  42. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/registry/iatp_search_api.py +0 -0
  43. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/registry/mongodb_registry.py +0 -0
  44. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/registry/readmes/ATLAS_SEARCH_INDEXES.md +0 -0
  45. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/registry/readmes/ATLAS_SEARCH_SETUP.md +0 -0
  46. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/registry/readmes/AUTHENTICATION_UPDATE.md +0 -0
  47. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/registry/readmes/EMBEDDINGS_SETUP.md +0 -0
  48. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/registry/readmes/IATP_SEARCH_API_GUIDE.md +0 -0
  49. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/registry/readmes/MONGODB_X509_AUTH.md +0 -0
  50. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/registry/readmes/README.md +0 -0
  51. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/registry/readmes/REFACTORING_SUMMARY.md +0 -0
  52. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/__init__.py +0 -0
  53. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/a2a_server.py +0 -0
  54. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/example_template_usage.py +0 -0
  55. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/iatp_server_agent_generator.py +0 -0
  56. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/iatp_server_template_generator.py +0 -0
  57. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/templates/Dockerfile.j2 +0 -0
  58. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/templates/README.md +0 -0
  59. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/templates/README.md.j2 +0 -0
  60. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/templates/__init__.py +0 -0
  61. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/templates/agent_config.json.j2 +0 -0
  62. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/templates/docker-compose.yml.j2 +0 -0
  63. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/templates/gitignore.j2 +0 -0
  64. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/templates/grpc_server.py.j2 +0 -0
  65. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/templates/run_local_docker.sh.j2 +0 -0
  66. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/server/templates/server.py.j2 +0 -0
  67. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/special_agencies/__init__.py +0 -0
  68. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/special_agencies/registry_search_agency.py +0 -0
  69. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/utils/__init__.py +0 -0
  70. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/utils/docker_utils.py +0 -0
  71. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/utils/general.py +0 -0
  72. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp/utils/iatp_utils.py +0 -0
  73. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp.egg-info/SOURCES.txt +0 -0
  74. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp.egg-info/dependency_links.txt +0 -0
  75. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp.egg-info/entry_points.txt +0 -0
  76. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp.egg-info/requires.txt +0 -0
  77. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/src/traia_iatp.egg-info/top_level.txt +0 -0
  78. {traia_iatp-0.1.1 → traia_iatp-0.1.2}/tests/test_configuration.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: traia-iatp
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Inter-Agent Transfer Protocol (IATP) - Enable AI Agents to utilize other AI Agents as tools
5
5
  Project-URL: Documentation, https://pypi.org/project/traia-iatp
6
6
  Project-URL: Source, https://github.com/Traia-IO/IATP
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "traia-iatp"
7
- version = "0.1.1"
7
+ version = "0.1.2"
8
8
  description = "Inter-Agent Transfer Protocol (IATP) - Enable AI Agents to utilize other AI Agents as tools"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12.8"
@@ -32,6 +32,14 @@ from starlette.routing import Route
32
32
  from starlette.middleware.base import BaseHTTPMiddleware
33
33
  from starlette.responses import Response
34
34
 
35
+ # Import AgentOps for monitoring and observability
36
+ try:
37
+ import agentops
38
+ AGENTOPS_AVAILABLE = True
39
+ except ImportError:
40
+ AGENTOPS_AVAILABLE = False
41
+ agentops = None
42
+
35
43
 
36
44
  import sys
37
45
  from pathlib import Path
@@ -385,6 +393,32 @@ def generate_self_signed_cert(cert_path: str = "cert.pem", key_path: str = "key.
385
393
 
386
394
  async def main():
387
395
  """Main function to start the A2A server with HTTP/2 support."""
396
+
397
+ # Initialize AgentOps for monitoring and observability
398
+ agentops_session_id = None
399
+ if AGENTOPS_AVAILABLE:
400
+ agentops_api_key = os.environ.get("AGENTOPS_API_KEY")
401
+ if agentops_api_key:
402
+ try:
403
+ # Initialize AgentOps with CrewAI-friendly settings
404
+ agentops_session_id = agentops.init(
405
+ api_key=agentops_api_key,
406
+ skip_auto_end_session=True, # Let CrewAI handle session lifecycle
407
+ tags=["{{ agent_name }}", "{{ mcp_server_name }}", "IATP", "A2A"],
408
+ auto_start_session=True
409
+ )
410
+ logger.info(f"✅ AgentOps initialized successfully - Session ID: {agentops_session_id}")
411
+ logger.info("📊 View session at: https://app.agentops.ai")
412
+ except Exception as e:
413
+ logger.warning(f"⚠️ Failed to initialize AgentOps: {e}")
414
+ logger.warning(" Continuing without AgentOps monitoring...")
415
+ else:
416
+ logger.info("ℹ️ AGENTOPS_API_KEY not set - AgentOps monitoring disabled")
417
+ logger.info(" Set AGENTOPS_API_KEY environment variable to enable monitoring")
418
+ else:
419
+ logger.info("ℹ️ AgentOps not installed - monitoring disabled")
420
+ logger.info(" Install with: pip install agentops")
421
+
388
422
  # Get configuration from environment
389
423
  host = os.environ.get("HOST", "0.0.0.0")
390
424
  port = int(os.environ.get("PORT", 8000))
@@ -441,8 +475,30 @@ async def main():
441
475
  logger.info(f"SSE endpoints available at: /a2a/tasks/subscribe and /a2a/tasks/resubscribe")
442
476
  logger.info(f"HTTP/2 multiplexing enabled with max {config.h2_max_concurrent_streams} concurrent streams")
443
477
 
444
- # Run the server with Hypercorn
445
- await serve(app, config)
478
+ if agentops_session_id:
479
+ logger.info(f"📊 AgentOps Session ID: {agentops_session_id}")
480
+ logger.info("📊 Monitor agent performance at: https://app.agentops.ai")
481
+
482
+ try:
483
+ # Run the server with Hypercorn
484
+ await serve(app, config)
485
+ except KeyboardInterrupt:
486
+ logger.info("🛑 Server shutdown requested")
487
+ if AGENTOPS_AVAILABLE and agentops_session_id:
488
+ try:
489
+ agentops.end_session('Success')
490
+ logger.info("✅ AgentOps session ended successfully")
491
+ except Exception as e:
492
+ logger.warning(f"⚠️ Failed to end AgentOps session: {e}")
493
+ except Exception as e:
494
+ logger.error(f"❌ Server error: {e}")
495
+ if AGENTOPS_AVAILABLE and agentops_session_id:
496
+ try:
497
+ agentops.end_session('Fail', end_state_reason=str(e))
498
+ logger.info("📊 AgentOps session ended with failure status")
499
+ except Exception as ae:
500
+ logger.warning(f"⚠️ Failed to end AgentOps session: {ae}")
501
+ raise
446
502
 
447
503
 
448
504
  if __name__ == "__main__":
@@ -13,6 +13,18 @@ import os
13
13
  # Import MCP integration from traia_iatp.mcp
14
14
  from traia_iatp.mcp import MCPServerConfig, MCPAgentBuilder, run_with_mcp_tools, MCPServerInfo
15
15
 
16
+ # Import AgentOps for operation tracking
17
+ try:
18
+ import agentops
19
+ from agentops.sdk.decorators import operation
20
+ AGENTOPS_AVAILABLE = True
21
+ except ImportError:
22
+ AGENTOPS_AVAILABLE = False
23
+ agentops = None
24
+ # Create a no-op decorator if AgentOps is not available
25
+ def operation(func):
26
+ return func
27
+
16
28
  logger = logging.getLogger(__name__)
17
29
 
18
30
 
@@ -52,6 +64,7 @@ class {{ class_name }}Agent:
52
64
  tools_subset=tools_subset
53
65
  )
54
66
 
67
+ @operation
55
68
  def process_request(self, request: str, context: Dict[str, Any] = None) -> str:
56
69
  """Process a request using the MCP server capabilities."""
57
70
  try:
@@ -20,6 +20,18 @@ from a2a.utils import new_agent_text_message
20
20
  from crewai import Task
21
21
  from traia_iatp.mcp import MCPServerConfig, MCPAgentBuilder, run_with_mcp_tools, MCPServerInfo
22
22
 
23
+ # Import AgentOps for operation tracking
24
+ try:
25
+ import agentops
26
+ from agentops.sdk.decorators import operation
27
+ AGENTOPS_AVAILABLE = True
28
+ except ImportError:
29
+ AGENTOPS_AVAILABLE = False
30
+ agentops = None
31
+ # Create a no-op decorator if AgentOps is not available
32
+ def operation(func):
33
+ return func
34
+
23
35
  logger = logging.getLogger(__name__)
24
36
 
25
37
  # Create a thread pool for CPU-bound CrewAI operations
@@ -72,6 +84,7 @@ class {{ class_name }}AgentExecutor(AgentExecutor):
72
84
  tags=mcp_config.metadata.get("tags", [])
73
85
  )
74
86
 
87
+ @operation
75
88
  async def execute(self, context: RequestContext, event_queue: EventQueue) -> None:
76
89
  """Process a request using the {{ agent_name }} capabilities."""
77
90
  try:
@@ -104,6 +117,7 @@ class {{ class_name }}AgentExecutor(AgentExecutor):
104
117
  msg.taskId = context.task_id
105
118
  await event_queue.enqueue_event(msg)
106
119
 
120
+ @operation
107
121
  async def _execute_standard(self, context: RequestContext, event_queue: EventQueue, request_text: str) -> None:
108
122
  """Execute standard (non-streaming) request."""
109
123
  # Get additional context if provided
@@ -152,6 +166,7 @@ class {{ class_name }}AgentExecutor(AgentExecutor):
152
166
  msg.taskId = context.task_id
153
167
  await event_queue.enqueue_event(msg)
154
168
 
169
+ @operation
155
170
  async def _execute_streaming(self, context: RequestContext, event_queue: EventQueue, request_text: str) -> None:
156
171
  """Execute streaming request using SSE."""
157
172
  try:
@@ -202,6 +217,7 @@ class {{ class_name }}AgentExecutor(AgentExecutor):
202
217
  })
203
218
  )
204
219
 
220
+ @operation
205
221
  async def _stream_mcp_response(self, request_text: str, context: RequestContext) -> AsyncGenerator[str, None]:
206
222
  """
207
223
  Stream responses from MCP server.
@@ -5,6 +5,9 @@
5
5
  PORT=8000
6
6
  HOST=0.0.0.0
7
7
 
8
+ # Required ENV variables
9
+ AGENTOPS_API_KEY=your-agentops-api-key-here
10
+
8
11
  # Language Model Configuration
9
12
  LLM_MODEL=openai/gpt-4.1
10
13
  # You can also use other models:
@@ -7,6 +7,7 @@ requires-python = ">=3.12"
7
7
  dependencies = [
8
8
  "crewai>=0.130.0",
9
9
  "crewai-tools[mcp]>=0.47.1",
10
+ "agentops>=0.3.0",
10
11
  "a2a-sdk>=0.2.6",
11
12
  "fastmcp>=2.8.1",
12
13
  "hypercorn>=0.17.3", # HTTP/2 support via h2 dependency
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: traia-iatp
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Inter-Agent Transfer Protocol (IATP) - Enable AI Agents to utilize other AI Agents as tools
5
5
  Project-URL: Documentation, https://pypi.org/project/traia-iatp
6
6
  Project-URL: Source, https://github.com/Traia-IO/IATP
File without changes
File without changes
File without changes