Aari 47b258ebd7
feat(mcp): add ordinary durable task driver (#4690)
* feat(mcp): add durable task runtime foundation

* fix(chart): sync embedded config version

* fix(mcp): isolate task polls during shutdown

* feat(mcp): track consecutive poll errors on mcp_tasks

poll_attempt_count grows on every claim (successful polls included), so it
cannot drive a failure backoff without misjudging normal long tasks. Add
consecutive_poll_error_count: incremented when a claim is released after a
poll error, reset to zero by any applied snapshot. The backoff/terminal
policy that consumes it lands with the first concrete driver.

* fix(mcp): harden durable task lifecycle

* feat(mcp): add ordinary durable task driver

* test(mcp): address durable task review feedback

* fix(mcp): preserve submit tool descriptions

* fix(mcp): bound remote task calls

* fix(mcp): bound persisted task payloads

* fix(mcp): preserve task tool error details

* fix(mcp): enforce durable task boundaries

* test(mcp): cover task config snapshot lifecycle

---------

Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
2026-08-15 14:26:38 +08:00

33 lines
776 B
Python

from deerflow.mcp.tasks.driver import McpTaskDriver, McpTaskDriverRegistry
from deerflow.mcp.tasks.models import (
ATTENTION_TASK_STATUSES,
POLLABLE_TASK_STATUSES,
TERMINAL_TASK_STATUSES,
TaskReference,
TaskSnapshot,
TaskStatus,
TaskSubmission,
TaskSubmitRequest,
)
from deerflow.mcp.tasks.ordinary import (
ORDINARY_MCP_TASK_DRIVER,
McpTaskProtocolError,
OrdinaryMcpTaskDriver,
)
__all__ = [
"ATTENTION_TASK_STATUSES",
"McpTaskDriver",
"McpTaskDriverRegistry",
"POLLABLE_TASK_STATUSES",
"TERMINAL_TASK_STATUSES",
"TaskReference",
"TaskSnapshot",
"TaskStatus",
"TaskSubmission",
"TaskSubmitRequest",
"ORDINARY_MCP_TASK_DRIVER",
"McpTaskProtocolError",
"OrdinaryMcpTaskDriver",
]