src.integrations.kanban_interface module#
Common interface for all Kanban board integrations.
This abstract base class defines the standard interface that all kanban integrations (Planka, Linear, GitHub Projects) must implement.
- class src.integrations.kanban_interface.KanbanProvider[source]#
Bases:
EnumSupported kanban providers.
- PLANKA = 'planka'#
- LINEAR = 'linear'#
- GITHUB = 'github'#
- SQLITE = 'sqlite'#
- class src.integrations.kanban_interface.KanbanInterface[source]#
Bases:
ABCAbstract base class for kanban board integrations.
All kanban providers must implement these methods to ensure consistent behavior across different platforms.
- provider: KanbanProvider | None#
- abstractmethod async connect()[source]#
Establish connection to the kanban service.
- Returns:
True if connection successful
- Return type:
- abstractmethod async get_available_tasks()[source]#
Get all unassigned tasks from backlog/ready columns.
- abstractmethod async get_all_tasks()[source]#
Get all tasks from the board regardless of status or assignment.
- abstractmethod async move_task_to_column(task_id, column_name)[source]#
Move task to a specific column/status.
- abstractmethod async report_blocker(task_id, blocker_description, severity='medium')[source]#
Report a blocker on a task.
- normalize_priority(provider_priority)[source]#
Normalize provider-specific priority to standard Priority enum.
- normalize_status(provider_status)[source]#
Normalize provider-specific status to standard TaskStatus enum.
- Parameters:
provider_status (
Any) – Provider’s status representation- Returns:
Standardized TaskStatus enum value
- Return type:
- abstractmethod async upload_attachment(task_id, filename, content, content_type=None)[source]#
Upload an attachment to a task.
This method provides a generic interface for uploading design artifacts, documentation, and other files to tasks across different kanban providers.
- Parameters:
- Returns:
Dict with attachment details including: - success: bool indicating if upload was successful - data: Dict containing:
id: Attachment identifier
filename: The filename
url: URL to access the attachment (if available)
size: File size in bytes
error: Error message if success is False
- Return type:
- abstractmethod async get_attachments(task_id)[source]#
Get all attachments for a task.
- Parameters:
task_id (
str) – The task identifier- Returns:
Dict containing: - success: bool - data: List of attachment objects with:
id: Attachment identifier
filename: The filename
url: URL to access the attachment
created_at: Creation timestamp (ISO format)
created_by: User who uploaded it (if available)
error: Error message if success is False
- Return type:
- abstractmethod async download_attachment(attachment_id, filename, task_id=None)[source]#
Download an attachment.
- Parameters:
- Returns:
Dict containing: - success: bool - data: Dict with:
content: Base64 encoded file content
filename: The filename
content_type: MIME type if available
error: Error message if success is False
- Return type:
- async delete_attachment(attachment_id, task_id=None)[source]#
Delete an attachment (optional - not all providers support this).
- async update_attachment(attachment_id, filename=None, task_id=None)[source]#
Update attachment metadata (optional - not all providers support this).
- Parameters:
- Returns:
Dict containing: - success: bool - data: Updated attachment info if successful - error: Error message if not supported or failed
- Return type: