feat(trigger): enhance trigger debugging with polling API and new subscription retrieval

- Refactored DraftWorkflowTriggerNodeApi and DraftWorkflowTriggerRunApi to implement polling for trigger events instead of listening, improving responsiveness and reliability.
- Introduced TriggerSubscriptionBuilderGetApi to retrieve subscription instances for trigger providers, enhancing the API's capabilities.
- Removed deprecated trigger event classes and streamlined event handling in TriggerDebugService, ensuring a cleaner architecture.
- Updated Queue and Stream entities to reflect the changes in trigger event handling, improving overall clarity and maintainability.

These enhancements significantly improve the trigger debugging experience and API usability.
This commit is contained in:
Harry
2025-09-14 19:12:20 +08:00
parent 91e5e33440
commit 76850749e4
11 changed files with 233 additions and 618 deletions

View File

@ -51,11 +51,6 @@ class QueueEvent(StrEnum):
PING = "ping"
STOP = "stop"
RETRY = "retry"
TRIGGER_LISTENING_STARTED = "trigger_listening_started"
TRIGGER_TRIGGERED = "trigger_triggered"
TRIGGER_NODE_FINISHED = "trigger_node_finished"
TRIGGER_LISTENING_TIMEOUT = "trigger_listening_timeout"
class AppQueueEvent(BaseModel):
"""
@ -722,54 +717,6 @@ class QueueParallelBranchRunSucceededEvent(AppQueueEvent):
"""loop id if node is in loop"""
class QueueTriggerListeningStartedEvent(AppQueueEvent):
"""
QueueTriggerListeningStartedEvent entity
"""
event: QueueEvent = QueueEvent.TRIGGER_LISTENING_STARTED
session_id: str
webhook_url: str
timeout: int
class QueueTriggerTriggeredEvent(AppQueueEvent):
"""
QueueTriggerTriggeredEvent entity
"""
event: QueueEvent = QueueEvent.TRIGGER_TRIGGERED
subscription_id: str
triggers: list[str]
request_id: str
timestamp: float
class QueueTriggerNodeFinishedEvent(AppQueueEvent):
"""
QueueTriggerNodeFinishedEvent entity
"""
event: QueueEvent = QueueEvent.TRIGGER_NODE_FINISHED
id: str
node_id: str
node_type: str
status: str
outputs: Optional[Mapping[str, Any]] = None
error: Optional[str] = None
elapsed_time: Optional[float] = None
execution_metadata: Optional[Mapping[str, Any]] = None
class QueueTriggerListeningTimeoutEvent(AppQueueEvent):
"""
QueueTriggerListeningTimeoutEvent entity
"""
event: QueueEvent = QueueEvent.TRIGGER_LISTENING_TIMEOUT
error: str = "Timeout waiting for trigger"
class QueueParallelBranchRunFailedEvent(AppQueueEvent):
"""
QueueParallelBranchRunFailedEvent entity

View File

@ -82,11 +82,6 @@ class StreamEvent(Enum):
TEXT_CHUNK = "text_chunk"
TEXT_REPLACE = "text_replace"
AGENT_LOG = "agent_log"
# Trigger debug events
TRIGGER_LISTENING_STARTED = "trigger_listening_started"
TRIGGER_LISTENING_TIMEOUT = "trigger_listening_timeout"
TRIGGER_TRIGGERED = "trigger_triggered"
TRIGGER_NODE_FINISHED = "trigger_node_finished"
class StreamResponse(BaseModel):
@ -842,52 +837,3 @@ class AgentLogStreamResponse(StreamResponse):
event: StreamEvent = StreamEvent.AGENT_LOG
data: Data
# Trigger Debug Stream Responses
class TriggerListeningStartedResponse(StreamResponse):
"""
TriggerListeningStartedResponse entity
"""
event: StreamEvent = StreamEvent.TRIGGER_LISTENING_STARTED
session_id: str
webhook_url: str
timeout: int
class TriggerTriggeredResponse(StreamResponse):
"""
TriggerTriggeredResponse entity
"""
event: StreamEvent = StreamEvent.TRIGGER_TRIGGERED
subscription_id: str
triggers: list[str]
request_id: str
timestamp: float
class TriggerNodeFinishedResponse(StreamResponse):
"""
TriggerNodeFinishedResponse entity
"""
event: StreamEvent = StreamEvent.TRIGGER_NODE_FINISHED
id: str
node_id: str
node_type: str
status: str
outputs: Optional[Mapping[str, Any]] = None
error: Optional[str] = None
elapsed_time: float
execution_metadata: Optional[Mapping[str, Any]] = None
class TriggerListeningTimeoutResponse(StreamResponse):
"""
TriggerListeningTimeoutResponse entity
"""
event: StreamEvent = StreamEvent.TRIGGER_LISTENING_TIMEOUT
error: str = "Timeout waiting for trigger"