langchain-trigger-server 0.3.8__py3-none-any.whl → 0.3.10__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.

Potentially problematic release.


This version of langchain-trigger-server might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langchain-trigger-server
3
- Version: 0.3.8
3
+ Version: 0.3.10
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
@@ -0,0 +1,14 @@
1
+ langchain_triggers/__init__.py,sha256=eXytcrcShRMdHE2MBqtS_n3alTAywfPMnu4IAWJEopA,482
2
+ langchain_triggers/app.py,sha256=zVr-CN9FLkmjeQwT-Ic8p0x81vVo_56Mb9rE89u7dbM,27548
3
+ langchain_triggers/core.py,sha256=oBsPbb4I8xawBf1S8wSZRE0W8fjxH0Ex9S-ifvGGqHw,2468
4
+ langchain_triggers/cron_manager.py,sha256=KScudofqMsMDrdlxrsq3tDuDk8a64YWV1c9HVq2jh7o,13359
5
+ langchain_triggers/decorators.py,sha256=UJMxPTlKyRo7LKHDTfJpya97AGU20mQFjQCEBJby8PY,5559
6
+ langchain_triggers/util.py,sha256=DuygTt2WyCH9mW12M1xhVVQe5mNMP7wJeHBt3XDUfes,1768
7
+ langchain_triggers/auth/__init__.py,sha256=Y4DXRRAgCeXK2vVDpJBdaeh3Uq2FA3YIAs4n7r0FOr8,67
8
+ langchain_triggers/database/__init__.py,sha256=8OxGLTh2VWQ-GVVFjrOOL1qdgQ9lkmjUV1racLGuk7E,135
9
+ langchain_triggers/database/interface.py,sha256=QSpZ2AY6fG3s73-3cJMKG-nTJv4zMkDa9c3AABOSTA0,3056
10
+ langchain_triggers/triggers/__init__.py,sha256=Uw1544gxzN4XDRn2RzpZ5EAG6EAF38ZYQtVvlciEsMs,146
11
+ langchain_triggers/triggers/cron_trigger.py,sha256=T1Z4-HBgw6mNjbc1A1WHfsSUs_FIADNv55eCaffy-CY,5373
12
+ langchain_trigger_server-0.3.10.dist-info/METADATA,sha256=oMIn9L2hZsnyHcORaEVE-GOwaFDLJB2Tr0GgcsrPQW4,1439
13
+ langchain_trigger_server-0.3.10.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
14
+ langchain_trigger_server-0.3.10.dist-info/RECORD,,
langchain_triggers/app.py CHANGED
@@ -157,7 +157,6 @@ class TriggerServer:
157
157
  # Add startup and shutdown events
158
158
  @self.app.on_event("startup")
159
159
  async def startup_event():
160
- await self.ensure_trigger_templates()
161
160
  await self.cron_manager.start()
162
161
 
163
162
  @self.app.on_event("shutdown")
@@ -207,32 +206,9 @@ class TriggerServer:
207
206
  logger.info(f"Added handler route: POST {handler_path}")
208
207
 
209
208
  logger.info(
210
- f"Registered trigger template in memory: {trigger.name} ({trigger.id})"
209
+ f"Registered trigger template in memory: {trigger.display_name} ({trigger.id})"
211
210
  )
212
211
 
213
- async def ensure_trigger_templates(self) -> None:
214
- """Ensure all registered trigger templates exist in the database."""
215
- for trigger in self.triggers:
216
- existing = await self.database.get_trigger_template(trigger.id)
217
- if not existing:
218
- logger.info(
219
- f"Creating new trigger template in database: {trigger.name} ({trigger.id})"
220
- )
221
- await self.database.create_trigger_template(
222
- id=trigger.id,
223
- provider=trigger.provider,
224
- name=trigger.name,
225
- description=trigger.description,
226
- registration_schema=trigger.registration_model.model_json_schema(),
227
- )
228
- logger.info(
229
- f"✓ Successfully created trigger template: {trigger.name} ({trigger.id})"
230
- )
231
- else:
232
- logger.info(
233
- f"✓ Trigger template already exists in database: {trigger.name} ({trigger.id})"
234
- )
235
-
236
212
  def add_triggers(self, triggers: list[TriggerTemplate]) -> None:
237
213
  """Add multiple triggers."""
238
214
  for trigger in triggers:
@@ -251,19 +227,19 @@ class TriggerServer:
251
227
 
252
228
  @self.app.get("/v1/triggers")
253
229
  async def api_list_triggers() -> dict[str, Any]:
254
- """List available trigger templates."""
255
- templates = await self.database.get_trigger_templates()
230
+ """List available trigger templates from in-memory registry."""
256
231
  trigger_list = []
257
- for template in templates:
232
+ for trigger in self.triggers:
258
233
  trigger_list.append(
259
234
  {
260
- "id": template["id"],
261
- "provider": template["provider"],
262
- "displayName": template["name"],
263
- "description": template["description"],
235
+ "id": trigger.id,
236
+ "provider": trigger.provider,
237
+ "displayName": trigger.display_name,
238
+ "description": trigger.description,
264
239
  "path": "/v1/triggers/registrations",
265
240
  "method": "POST",
266
- "payloadSchema": template.get("registration_schema", {}),
241
+ "payloadSchema": trigger.registration_model.model_json_schema(),
242
+ "integration": trigger.integration,
267
243
  }
268
244
  )
269
245
 
@@ -292,7 +268,7 @@ class TriggerServer:
292
268
  {
293
269
  "id": reg["id"],
294
270
  "user_id": reg["user_id"],
295
- "template_id": reg.get("trigger_templates", {}).get("id"),
271
+ "template_id": reg.get("template_id"),
296
272
  "resource": reg["resource"],
297
273
  "linked_agent_ids": reg.get("linked_agent_ids", []),
298
274
  "created_at": reg["created_at"],
@@ -7,30 +7,6 @@ from typing import Any
7
7
  class TriggerDatabaseInterface(ABC):
8
8
  """Abstract interface for trigger database operations."""
9
9
 
10
- # ========== Trigger Templates ==========
11
-
12
- @abstractmethod
13
- async def create_trigger_template(
14
- self,
15
- id: str,
16
- provider: str,
17
- name: str,
18
- description: str = None,
19
- registration_schema: dict = None,
20
- ) -> dict[str, Any] | None:
21
- """Create a new trigger template."""
22
- pass
23
-
24
- @abstractmethod
25
- async def get_trigger_templates(self) -> list[dict[str, Any]]:
26
- """Get all available trigger templates."""
27
- pass
28
-
29
- @abstractmethod
30
- async def get_trigger_template(self, id: str) -> dict[str, Any] | None:
31
- """Get a specific trigger template by ID."""
32
- pass
33
-
34
10
  # ========== Trigger Registrations ==========
35
11
 
36
12
  @abstractmethod
@@ -22,7 +22,6 @@ class TriggerTemplate:
22
22
  self,
23
23
  id: str,
24
24
  provider: str,
25
- name: str,
26
25
  description: str,
27
26
  registration_model: type[BaseModel],
28
27
  registration_handler,
@@ -31,10 +30,26 @@ class TriggerTemplate:
31
30
  trigger_type: TriggerType = TriggerType.WEBHOOK,
32
31
  poll_handler: Any | None = None,
33
32
  default_crontab: str | None = None,
33
+ display_name: str | None = None,
34
+ integration: str | None = None,
34
35
  ):
36
+ """Initialize a trigger template.
37
+
38
+ Args:
39
+ id: Unique identifier for the trigger
40
+ provider: (DEPRECATED) Display name for grouping in UI
41
+ description: Description of what the trigger does
42
+ registration_model: Pydantic model for registration data
43
+ registration_handler: Async function to handle registration
44
+ trigger_handler: Async function to handle webhook events (for webhook triggers)
45
+ trigger_type: Type of trigger (webhook or polling)
46
+ poll_handler: Async function to handle polling (for polling triggers)
47
+ default_crontab: Default cron schedule for polling triggers
48
+ display_name: Display name for grouping triggers (e.g., "Slack - Channel Message Received", "Gmail - Email Received")
49
+ integration: Integration ID for logo mapping (e.g., "slack", "gmail")
50
+ """
35
51
  self.id = id
36
52
  self.provider = provider
37
- self.name = name
38
53
  self.description = description
39
54
  self.registration_model = registration_model
40
55
  self.registration_handler = registration_handler
@@ -42,6 +57,8 @@ class TriggerTemplate:
42
57
  self.trigger_type = trigger_type
43
58
  self.poll_handler = poll_handler
44
59
  self.default_crontab = default_crontab
60
+ self.display_name = display_name
61
+ self.integration = integration
45
62
 
46
63
  self._validate_handler_signatures()
47
64
 
@@ -121,7 +121,9 @@ async def cron_poll_handler(
121
121
  headers=headers,
122
122
  )
123
123
  except Exception as thread_err:
124
- logger.warning(f"cron_thread_create_failed thread_id={thread_id} error={str(thread_err)}")
124
+ logger.warning(
125
+ f"cron_thread_create_failed thread_id={thread_id} error={str(thread_err)}"
126
+ )
125
127
 
126
128
  await client.runs.create(
127
129
  thread_id,
@@ -150,11 +152,12 @@ async def cron_poll_handler(
150
152
 
151
153
  cron_trigger = TriggerTemplate(
152
154
  id=CRON_TRIGGER_ID,
153
- name="Cron Scheduler",
154
155
  provider="Cron",
155
156
  description="Triggers agents on a cron schedule",
156
157
  registration_model=CronRegistration,
157
158
  registration_handler=cron_registration_handler,
158
159
  trigger_type=TriggerType.POLLING,
159
160
  poll_handler=cron_poll_handler,
161
+ display_name="Cron",
162
+ integration=None,
160
163
  )
@@ -1,14 +0,0 @@
1
- langchain_triggers/__init__.py,sha256=eXytcrcShRMdHE2MBqtS_n3alTAywfPMnu4IAWJEopA,482
2
- langchain_triggers/app.py,sha256=vSQ_RucgbTMYRG0s9pXMHf8ooYXM-e_LQ1pLhwMdHSI,28661
3
- langchain_triggers/core.py,sha256=oBsPbb4I8xawBf1S8wSZRE0W8fjxH0Ex9S-ifvGGqHw,2468
4
- langchain_triggers/cron_manager.py,sha256=KScudofqMsMDrdlxrsq3tDuDk8a64YWV1c9HVq2jh7o,13359
5
- langchain_triggers/decorators.py,sha256=m2nQIiwdBF35S6HGgP5QvLXIKRnhs0LrhigCyK31W5I,4532
6
- langchain_triggers/util.py,sha256=DuygTt2WyCH9mW12M1xhVVQe5mNMP7wJeHBt3XDUfes,1768
7
- langchain_triggers/auth/__init__.py,sha256=Y4DXRRAgCeXK2vVDpJBdaeh3Uq2FA3YIAs4n7r0FOr8,67
8
- langchain_triggers/database/__init__.py,sha256=8OxGLTh2VWQ-GVVFjrOOL1qdgQ9lkmjUV1racLGuk7E,135
9
- langchain_triggers/database/interface.py,sha256=Wu1MOl1rugFFVcDVM4nEMgyvwW5JxUCNpS3oD6EwkCQ,3716
10
- langchain_triggers/triggers/__init__.py,sha256=Uw1544gxzN4XDRn2RzpZ5EAG6EAF38ZYQtVvlciEsMs,146
11
- langchain_triggers/triggers/cron_trigger.py,sha256=H1GK8XmSPFbSQiP7UBuvgInNwQURGuqGi4gKlCHkYcw,5315
12
- langchain_trigger_server-0.3.8.dist-info/METADATA,sha256=QDMEDjZByDqSmdeR8COZNS44tzgO37L0lg5o8nBI57w,1438
13
- langchain_trigger_server-0.3.8.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
14
- langchain_trigger_server-0.3.8.dist-info/RECORD,,