langchain-trigger-server 0.2.0__tar.gz → 0.2.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 langchain-trigger-server might be problematic. Click here for more details.
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/PKG-INFO +1 -1
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/langchain_triggers/app.py +4 -14
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/langchain_triggers/core.py +1 -8
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/langchain_triggers/database/interface.py +6 -2
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/langchain_triggers/database/supabase.py +27 -4
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/pyproject.toml +1 -1
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/.github/workflows/release.yml +0 -0
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/.vscode/settings.json +0 -0
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/README.md +0 -0
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/langchain_triggers/__init__.py +0 -0
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/langchain_triggers/cron_manager.py +0 -0
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/langchain_triggers/database/__init__.py +0 -0
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/langchain_triggers/decorators.py +0 -0
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/langchain_triggers/triggers/__init__.py +0 -0
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/langchain_triggers/triggers/cron_trigger.py +0 -0
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/test_framework.py +0 -0
- {langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: langchain-trigger-server
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
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
|
|
@@ -181,7 +181,6 @@ class TriggerServer:
|
|
|
181
181
|
name=trigger.name,
|
|
182
182
|
description=trigger.description,
|
|
183
183
|
registration_schema=trigger.registration_model.model_json_schema(),
|
|
184
|
-
require_display_name=getattr(trigger.registration_model, 'require_display_name', False)
|
|
185
184
|
)
|
|
186
185
|
logger.info(f"✓ Successfully created trigger template: {trigger.name} ({trigger.id})")
|
|
187
186
|
else:
|
|
@@ -217,7 +216,6 @@ class TriggerServer:
|
|
|
217
216
|
"path": "/api/triggers/registrations",
|
|
218
217
|
"method": "POST",
|
|
219
218
|
"payloadSchema": template.get("registration_schema", {}),
|
|
220
|
-
"requireDisplayName": template.get("require_display_name", False),
|
|
221
219
|
})
|
|
222
220
|
|
|
223
221
|
return {
|
|
@@ -231,21 +229,18 @@ class TriggerServer:
|
|
|
231
229
|
try:
|
|
232
230
|
user_id = current_user["identity"]
|
|
233
231
|
|
|
234
|
-
# Get user's trigger registrations
|
|
235
|
-
user_registrations = await self.database.
|
|
232
|
+
# Get user's trigger registrations with linked agents in a single query
|
|
233
|
+
user_registrations = await self.database.get_user_trigger_registrations_with_agents(user_id)
|
|
236
234
|
|
|
237
235
|
# Format response to match expected structure
|
|
238
236
|
registrations = []
|
|
239
237
|
for reg in user_registrations:
|
|
240
|
-
# Get linked agent IDs
|
|
241
|
-
linked_agent_ids = await self.database.get_agents_for_trigger(reg["id"])
|
|
242
|
-
|
|
243
238
|
registrations.append({
|
|
244
239
|
"id": reg["id"],
|
|
245
240
|
"user_id": reg["user_id"],
|
|
246
241
|
"template_id": reg.get("trigger_templates", {}).get("id"),
|
|
247
242
|
"resource": reg["resource"],
|
|
248
|
-
"
|
|
243
|
+
"linked_agent_ids": reg.get("linked_agent_ids", []),
|
|
249
244
|
"created_at": reg["created_at"]
|
|
250
245
|
})
|
|
251
246
|
|
|
@@ -314,12 +309,7 @@ class TriggerServer:
|
|
|
314
309
|
media_type="application/json"
|
|
315
310
|
)
|
|
316
311
|
|
|
317
|
-
resource_dict = registration_instance.model_dump(
|
|
318
|
-
|
|
319
|
-
# Remove display_name if it's null/None and not required
|
|
320
|
-
if (not getattr(trigger.registration_model, 'require_display_name', False) and
|
|
321
|
-
resource_dict.get('display_name') is None):
|
|
322
|
-
resource_dict.pop('display_name', None)
|
|
312
|
+
resource_dict = registration_instance.model_dump()
|
|
323
313
|
|
|
324
314
|
registration = await self.database.create_trigger_registration(
|
|
325
315
|
user_id=user_id,
|
{langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/langchain_triggers/core.py
RENAMED
|
@@ -75,11 +75,4 @@ class TriggerRegistrationResult(BaseModel):
|
|
|
75
75
|
|
|
76
76
|
class TriggerRegistrationModel(BaseModel):
|
|
77
77
|
"""Base class for trigger resource models that define how webhooks are matched to registrations."""
|
|
78
|
-
|
|
79
|
-
require_display_name: bool = False # Class attribute to indicate if display_name is required
|
|
80
|
-
display_name: Optional[str] = Field(default=None, description="Optional display name for this registration")
|
|
81
|
-
|
|
82
|
-
def model_post_init(self, __context) -> None:
|
|
83
|
-
"""Validate that display_name is provided when require_display_name is True."""
|
|
84
|
-
if self.require_display_name and not self.display_name:
|
|
85
|
-
raise ValueError(f"{self.__class__.__name__} requires display_name to be set")
|
|
78
|
+
pass
|
|
@@ -16,8 +16,7 @@ class TriggerDatabaseInterface(ABC):
|
|
|
16
16
|
provider: str,
|
|
17
17
|
name: str,
|
|
18
18
|
description: str = None,
|
|
19
|
-
registration_schema: Dict = None
|
|
20
|
-
require_display_name: bool = False
|
|
19
|
+
registration_schema: Dict = None
|
|
21
20
|
) -> Optional[Dict[str, Any]]:
|
|
22
21
|
"""Create a new trigger template."""
|
|
23
22
|
pass
|
|
@@ -50,6 +49,11 @@ class TriggerDatabaseInterface(ABC):
|
|
|
50
49
|
"""Get all trigger registrations for a user."""
|
|
51
50
|
pass
|
|
52
51
|
|
|
52
|
+
@abstractmethod
|
|
53
|
+
async def get_user_trigger_registrations_with_agents(self, user_id: str) -> List[Dict[str, Any]]:
|
|
54
|
+
"""Get all trigger registrations for a user with linked agents in a single query."""
|
|
55
|
+
pass
|
|
56
|
+
|
|
53
57
|
@abstractmethod
|
|
54
58
|
async def get_trigger_registration(
|
|
55
59
|
self,
|
|
@@ -75,8 +75,7 @@ class SupabaseTriggerDatabase(TriggerDatabaseInterface):
|
|
|
75
75
|
provider: str,
|
|
76
76
|
name: str,
|
|
77
77
|
description: str = None,
|
|
78
|
-
registration_schema: Dict = None
|
|
79
|
-
require_display_name: bool = False
|
|
78
|
+
registration_schema: Dict = None
|
|
80
79
|
) -> Optional[Dict[str, Any]]:
|
|
81
80
|
"""Create a new trigger template."""
|
|
82
81
|
try:
|
|
@@ -85,8 +84,7 @@ class SupabaseTriggerDatabase(TriggerDatabaseInterface):
|
|
|
85
84
|
"provider": provider,
|
|
86
85
|
"name": name,
|
|
87
86
|
"description": description,
|
|
88
|
-
"registration_schema": registration_schema or {}
|
|
89
|
-
"require_display_name": require_display_name
|
|
87
|
+
"registration_schema": registration_schema or {}
|
|
90
88
|
}
|
|
91
89
|
|
|
92
90
|
response = self.client.table("trigger_templates").insert(data).execute()
|
|
@@ -162,6 +160,31 @@ class SupabaseTriggerDatabase(TriggerDatabaseInterface):
|
|
|
162
160
|
except Exception as e:
|
|
163
161
|
logger.error(f"Error getting user trigger registrations: {e}")
|
|
164
162
|
return []
|
|
163
|
+
|
|
164
|
+
async def get_user_trigger_registrations_with_agents(self, user_id: str) -> List[Dict[str, Any]]:
|
|
165
|
+
"""Get all trigger registrations for a user with linked agents in a single query."""
|
|
166
|
+
try:
|
|
167
|
+
response = self.client.table("trigger_registrations").select("""
|
|
168
|
+
*,
|
|
169
|
+
trigger_templates(id, name, description),
|
|
170
|
+
agent_trigger_links(agent_id)
|
|
171
|
+
""").eq("user_id", user_id).order("created_at", desc=True).execute()
|
|
172
|
+
|
|
173
|
+
# Process the results to extract linked agent IDs
|
|
174
|
+
if response.data:
|
|
175
|
+
for registration in response.data:
|
|
176
|
+
# Extract agent IDs from the agent_trigger_links
|
|
177
|
+
agent_links = registration.get("agent_trigger_links", [])
|
|
178
|
+
linked_agent_ids = [link.get("agent_id") for link in agent_links if link.get("agent_id")]
|
|
179
|
+
registration["linked_agent_ids"] = linked_agent_ids
|
|
180
|
+
|
|
181
|
+
# Clean up the raw agent_trigger_links data as it's no longer needed
|
|
182
|
+
registration.pop("agent_trigger_links", None)
|
|
183
|
+
|
|
184
|
+
return response.data or []
|
|
185
|
+
except Exception as e:
|
|
186
|
+
logger.error(f"Error getting user trigger registrations with agents: {e}")
|
|
187
|
+
return []
|
|
165
188
|
|
|
166
189
|
async def get_trigger_registration(self, registration_id: str, user_id: str = None) -> Optional[Dict[str, Any]]:
|
|
167
190
|
"""Get a specific trigger registration."""
|
{langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/.github/workflows/release.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/langchain_triggers/__init__.py
RENAMED
|
File without changes
|
{langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/langchain_triggers/cron_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{langchain_trigger_server-0.2.0 → langchain_trigger_server-0.2.2}/langchain_triggers/decorators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|