langchain-trigger-server 0.1.13__tar.gz → 0.1.15__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 langchain-trigger-server might be problematic. Click here for more details.

Files changed (17) hide show
  1. langchain_trigger_server-0.1.15/.vscode/settings.json +3 -0
  2. {langchain_trigger_server-0.1.13 → langchain_trigger_server-0.1.15}/PKG-INFO +1 -1
  3. {langchain_trigger_server-0.1.13 → langchain_trigger_server-0.1.15}/langchain_triggers/app.py +22 -18
  4. {langchain_trigger_server-0.1.13 → langchain_trigger_server-0.1.15}/langchain_triggers/core.py +3 -3
  5. {langchain_trigger_server-0.1.13 → langchain_trigger_server-0.1.15}/langchain_triggers/database/interface.py +1 -0
  6. {langchain_trigger_server-0.1.13 → langchain_trigger_server-0.1.15}/langchain_triggers/database/supabase.py +3 -1
  7. {langchain_trigger_server-0.1.13 → langchain_trigger_server-0.1.15}/langchain_triggers/decorators.py +2 -0
  8. {langchain_trigger_server-0.1.13 → langchain_trigger_server-0.1.15}/langchain_triggers/triggers/cron_trigger.py +1 -0
  9. {langchain_trigger_server-0.1.13 → langchain_trigger_server-0.1.15}/pyproject.toml +1 -1
  10. langchain_trigger_server-0.1.15/uv.lock +1527 -0
  11. {langchain_trigger_server-0.1.13 → langchain_trigger_server-0.1.15}/.github/workflows/release.yml +0 -0
  12. {langchain_trigger_server-0.1.13 → langchain_trigger_server-0.1.15}/README.md +0 -0
  13. {langchain_trigger_server-0.1.13 → langchain_trigger_server-0.1.15}/langchain_triggers/__init__.py +0 -0
  14. {langchain_trigger_server-0.1.13 → langchain_trigger_server-0.1.15}/langchain_triggers/cron_manager.py +0 -0
  15. {langchain_trigger_server-0.1.13 → langchain_trigger_server-0.1.15}/langchain_triggers/database/__init__.py +0 -0
  16. {langchain_trigger_server-0.1.13 → langchain_trigger_server-0.1.15}/langchain_triggers/triggers/__init__.py +0 -0
  17. {langchain_trigger_server-0.1.13 → langchain_trigger_server-0.1.15}/test_framework.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ "python.languageServer": "None"
3
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langchain-trigger-server
3
- Version: 0.1.13
3
+ Version: 0.1.15
4
4
  Summary: Generic event-driven triggers framework
5
5
  Project-URL: Homepage, https://github.com/langchain-ai/open-agent-platform
6
6
  Project-URL: Repository, https://github.com/langchain-ai/open-agent-platform
@@ -149,6 +149,7 @@ class TriggerServer:
149
149
  logger.info(f"Creating new trigger template in database: {trigger.name} ({trigger.id})")
150
150
  await self.database.create_trigger_template(
151
151
  id=trigger.id,
152
+ provider=trigger.provider,
152
153
  name=trigger.name,
153
154
  description=trigger.description,
154
155
  registration_schema=trigger.registration_model.model_json_schema()
@@ -181,6 +182,7 @@ class TriggerServer:
181
182
  for template in templates:
182
183
  trigger_list.append({
183
184
  "id": template["id"],
185
+ "provider": template["provider"],
184
186
  "displayName": template["name"],
185
187
  "description": template["description"],
186
188
  "path": "/api/triggers/registrations",
@@ -441,26 +443,28 @@ class TriggerServer:
441
443
  agent_links = await self.database.get_agents_for_trigger(registration_id)
442
444
 
443
445
  agents_invoked = 0
444
- for agent_link in agent_links:
445
- agent_id = agent_link if isinstance(agent_link, str) else agent_link.get("agent_id")
446
+ # Iterate through each message and invoke agents for each
447
+ for message in result.agent_messages:
448
+ for agent_link in agent_links:
449
+ agent_id = agent_link if isinstance(agent_link, str) else agent_link.get("agent_id")
446
450
 
447
- agent_input = {
448
- "messages": [
449
- {"role": "human", "content": result.agent_message}
450
- ]
451
- }
451
+ agent_input = {
452
+ "messages": [
453
+ {"role": "human", "content": message}
454
+ ]
455
+ }
452
456
 
453
- try:
454
- success = await self._invoke_agent(
455
- agent_id=agent_id,
456
- user_id=result.registration["user_id"],
457
- input_data=agent_input,
458
- )
459
- if success:
460
- agents_invoked += 1
461
- except Exception as e:
462
- logger.error(f"Error invoking agent {agent_id}: {e}", exc_info=True)
463
- logger.info(f"Processed trigger handler, invoked {agents_invoked} agents")
457
+ try:
458
+ success = await self._invoke_agent(
459
+ agent_id=agent_id,
460
+ user_id=result.registration["user_id"],
461
+ input_data=agent_input,
462
+ )
463
+ if success:
464
+ agents_invoked += 1
465
+ except Exception as e:
466
+ logger.error(f"Error invoking agent {agent_id}: {e}", exc_info=True)
467
+ logger.info(f"Processed trigger handler with {len(result.agent_messages)} messages, invoked {agents_invoked} agents")
464
468
 
465
469
  return {
466
470
  "success": True,
@@ -44,14 +44,14 @@ class AgentInvocationRequest(BaseModel):
44
44
  class TriggerHandlerResult(BaseModel):
45
45
  """Result returned by trigger handlers."""
46
46
  invoke_agent: bool = Field(default=True, description="Whether to invoke agents for this event")
47
- agent_message: Optional[str] = Field(default=None, description="String message to send to agents")
47
+ agent_messages: Optional[list[str]] = Field(default=None, description="List of messages to send to agents (one invocation per message)")
48
48
  response_body: Optional[Dict[str, Any]] = Field(default=None, description="Custom HTTP response body (when invoke_agent=False)")
49
49
  registration: Optional[Dict[str, Any]] = Field(default=None, description="Registration data (required when invoke_agent=True)")
50
50
 
51
51
  def model_post_init(self, __context) -> None:
52
52
  """Validate that required fields are provided based on invoke_agent."""
53
- if self.invoke_agent and not self.agent_message:
54
- raise ValueError("agent_message is required when invoke_agent=True")
53
+ if self.invoke_agent and not self.agent_messages:
54
+ raise ValueError("agent_messages is required when invoke_agent=True")
55
55
  if self.invoke_agent and not self.registration:
56
56
  raise ValueError("registration is required when invoke_agent=True")
57
57
  if not self.invoke_agent and not self.response_body:
@@ -13,6 +13,7 @@ class TriggerDatabaseInterface(ABC):
13
13
  async def create_trigger_template(
14
14
  self,
15
15
  id: str,
16
+ provider: str,
16
17
  name: str,
17
18
  description: str = None,
18
19
  registration_schema: Dict = None
@@ -71,7 +71,8 @@ class SupabaseTriggerDatabase(TriggerDatabaseInterface):
71
71
 
72
72
  async def create_trigger_template(
73
73
  self,
74
- id: str,
74
+ id: str,
75
+ provider: str,
75
76
  name: str,
76
77
  description: str = None,
77
78
  registration_schema: Dict = None
@@ -80,6 +81,7 @@ class SupabaseTriggerDatabase(TriggerDatabaseInterface):
80
81
  try:
81
82
  data = {
82
83
  "id": id,
84
+ "provider": provider,
83
85
  "name": name,
84
86
  "description": description,
85
87
  "registration_schema": registration_schema or {}
@@ -14,6 +14,7 @@ class TriggerTemplate:
14
14
  def __init__(
15
15
  self,
16
16
  id: str,
17
+ provider: str,
17
18
  name: str,
18
19
  description: str,
19
20
  registration_model: Type[BaseModel],
@@ -22,6 +23,7 @@ class TriggerTemplate:
22
23
  trigger_handler,
23
24
  ):
24
25
  self.id = id
26
+ self.provider = provider
25
27
  self.name = name
26
28
  self.description = description
27
29
  self.registration_model = registration_model
@@ -90,6 +90,7 @@ async def cron_trigger_handler(
90
90
  cron_trigger = TriggerTemplate(
91
91
  id="cron-trigger",
92
92
  name="Cron Scheduler",
93
+ provider="Cron",
93
94
  description="Triggers agents on a cron schedule",
94
95
  registration_model=CronRegistration,
95
96
  registration_handler=cron_registration_handler,
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "langchain-trigger-server"
7
- version = "0.1.13"
7
+ version = "0.1.15"
8
8
  description = "Generic event-driven triggers framework"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"