71db7d6c1c
feat(api): agent backend session lifecycle for workflow agent nodes
...
Implements the dify-agent run lifecycle contract for workflow Agent nodes so a
single workflow run can fan out into multiple Agent backend runs that share an
Agent session via persisted snapshots, and so a HITL pause routes through a
workflow-level pause instead of being modeled as agent-run pause.
Highlights:
* New ``workflow_agent_runtime_sessions`` table (migration a7b9c8d1e2f3) keyed
by (tenant_id, workflow_run_id, node_id, binding_id, agent_id). Stores the
CompositorSessionSnapshot plus the replayable ``composition_layer_specs`` so
a future cleanup-only run can match the agenton compositor's
snapshot-vs-composition name-order validator.
* ``WorkflowAgentRuntimeRequestBuilder`` now threads the prior snapshot back
into ``CreateRunRequest.session_snapshot`` and defaults to
``on_exit.default = suspend`` so layers survive between runs in the same
Agent session. A pydantic-ai history layer is added by default to carry the
Agent's chat history across runs.
* ``DifyAgentNode`` saves a fresh snapshot on success / paused terminals,
reuses the prior snapshot on the next entry, and retires the local row on
failed / cancelled terminals so a workflow loop cannot resume from stale
state. A paused agent run is reported as a workflow-level
``PauseRequestedEvent`` rather than an Agent backend pause.
* New ``WorkflowAgentSessionCleanupLayer`` (GraphEngineLayer) attached on
Workflow and AdvancedChat app runners. On terminal workflow events it
retires every ACTIVE session row for that workflow run. The HTTP cleanup
path is fully built (composition spec replay + snapshot filtering for
excluded plugin layers + wait_run gating before mark_cleaned) but kept
behind ``_HTTP_CLEANUP_SUPPORTED = False`` because the current dify-agent
``runner._run_agent`` always requires an LLM layer and has no
``purpose=cleanup`` branch yet; flipping the flag enables the contract once
the backend supports cleanup-only runs.
* Adds a compositor integration test that runs the real
``agenton.Compositor.from_config`` + ``_create_run`` against the built
cleanup request so the snapshot-vs-composition mismatch trap (which is
invisible to FakeAgentBackendRunClient) is caught at unit-test time.
Tests: 130 passing in agent_v2 + agent_backend; verified end-to-end against
real agent backend, gunicorn + celery, and the new
``workflow_agent_runtime_sessions`` table.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 17:12:07 +08:00
7d45335a32
fix(chat): close streaming LLM generator when stop response is triggered ( #36227 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-05-26 09:23:26 +00:00
fb07b43107
feat(api): Node Output Inspector service + 3 REST endpoints (Stage 4 §8) ( #36644 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-05-26 07:34:33 +00:00
a728e0ac69
feat: adding dify cli ( #36348 )
...
Co-authored-by: GareArc <garethcxy@dify.ai >
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: L1nSn0w <l1nsn0w@qq.com >
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
Co-authored-by: gigglewang <gigglewang@dify.ai >
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Xiyuan Chen <52963600+GareArc@users.noreply.github.com >
2026-05-26 01:12:36 +00:00
4d8b6c7dc0
refactor: add missing @override decorator to remaining MCP, Jieba, embeddings, and misc subclasses ( #36528 )
2026-05-22 13:45:35 +00:00
6185016910
refactor: add missing @override decorator to file access controller and workflow file runtime ( #36495 )
2026-05-21 19:39:51 +00:00
5b58defd62
refactor: add missing @override decorator to GraphEngineLayer subclasses ( #36491 )
2026-05-21 16:32:02 +00:00
73196de5e1
refactor: add missing @override decorator to AppQueueManager subclasses ( #36490 )
2026-05-21 16:25:07 +00:00
c50d504c44
refactor: add missing @override decorator to AppGenerateResponseConverter subclasses ( #36486 )
2026-05-21 14:00:22 +00:00
56d4d54c16
chore: compatiable conversation is not exists ( #33274 )
...
Co-authored-by: -LAN- <laipz8200@outlook.com >
2026-05-20 12:37:33 +00:00
7bc5c89e3c
fix: prevent recursion error when SharePoint folder is empty ( #36372 )
2026-05-20 03:56:49 +00:00
7e8147295b
refactor: convert isinstance chains to match/case (part 5) ( #36298 )
...
Co-authored-by: Stephen Zhou <hi@hyoban.cc >
2026-05-18 07:16:31 +00:00
b96f372f45
chore(api): upgrade graphon to 0.4.0 ( #36124 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: QuantumGhost <obelisk.reg+git@gmail.com >
2026-05-18 00:34:17 +00:00
127fbf2c9a
refactor: use match cases for workflow stream responses ( #36267 )
2026-05-17 21:38:20 +00:00
e7e6fe8813
refactor: convert isinstance chains to match/case (part 3) ( #36242 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-05-16 08:16:14 +00:00
c0bdd6792f
refactor: convert isinstance chains to match/case in easy_ui_based_generate_task_pipeline.py ( #36222 )
2026-05-15 13:51:49 +00:00
27b084c4d4
fix: reduce db roundtrips of message update ( #36213 )
2026-05-15 08:39:48 +00:00
0d500e6965
fix(api): allow LLM nodes to access retrieved knowledge files ( #36175 )
2026-05-14 13:09:25 +00:00
af4b9bfa8f
chore: Remove pyright in favor of pyrefly ( #36154 )
2026-05-14 05:49:08 +00:00
934a20e745
fix: restore tracing after HITL workflow resume ( #36064 )
...
Co-authored-by: -LAN- <laipz8200@outlook.com >
2026-05-13 03:23:32 +00:00
cbedcd2882
fix(security): harden self-hosted SECRET_KEY bootstrap ( #36049 )
...
Co-authored-by: EndlessLucky <66432853+EndlessLucky@users.noreply.github.com >
2026-05-12 05:35:24 +00:00
7fc40e6c9e
feat: improve phoenix workflow tracing ( #35605 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: -LAN- <laipz8200@outlook.com >
2026-05-11 08:37:17 +00:00
7b5c371b9d
chore: api para type ( #35985 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-05-10 06:04:42 +00:00
19476109da
chore(api): upgrade graphon to v0.3.0 ( #35469 )
...
Signed-off-by: -LAN- <laipz8200@outlook.com >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: WH-2099 <wh2099@pm.me >
2026-05-09 07:30:03 +00:00
4d80892d7b
refactor: convert isinstance chains to match/case ( #35902 ) ( #35922 )
...
Signed-off-by: EvanYao826 <2869018789@qq.com >
2026-05-08 09:51:10 +00:00
be4c828214
feat: add service api of HITL ( #32826 )
...
Co-authored-by: Blackoutta <hyytez@gmail.com >
Co-authored-by: QuantumGhost <QuantumGhost@users.noreply.github.com >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: QuantumGhost <obelisk.reg+git@gmail.com >
Co-authored-by: Yunlu Wen <yunlu.wen@dify.ai >
2026-04-24 06:37:10 +00:00
48e13f65dc
fix: sync 35528 ( #35539 )
2026-04-24 03:59:33 +00:00
afec528f51
feat: improve follow-up settings ( #35442 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-04-22 08:55:16 +00:00
0b60bf6ef0
refactor: replace deprecated Iterator with Generator in contextmanagers #35433 ( #35441 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-04-21 07:44:49 +00:00
3e876e173a
chore(api): adapt Graphon 0.2.2 upgrade ( #35377 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-04-18 11:16:24 +00:00
3193e8a712
chore: reorg imports ( #35308 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-04-16 08:50:02 +00:00
7e7b27fdec
refactor: replace bare dict with dict[str, Any] in response converter… ( #35212 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 19:45:04 +00:00
62bb830338
refactor: convert InvokeFrom if/elif to match/case ( #35143 )
2026-04-14 07:46:58 +00:00
ed401728eb
refactor: replace bare dict with typed annotations in app_config/extension/provider ( #35099 )
2026-04-14 06:11:00 +00:00
ac2258c2dc
refactor: replace bare dict with dict[str, Any] in app_config managers ( #35087 )
2026-04-13 17:14:39 +00:00
3c279edcf2
refactor: replace bare dict with dict[str, Any] in app task_entities … ( #35084 )
2026-04-13 17:14:23 +00:00
5fafac0ca4
refactor(api): modernize type annotations — replace Optional/Union with | syntax ( #34888 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-04-10 05:04:10 +00:00
d1e33ba9ea
refactor(api): reduce Dify GraphInitParams usage ( #34825 )
2026-04-09 07:59:15 +00:00
7ca5b726a2
refactor: convert ProviderQuota if/elif to match/case ( #30001 ) ( #34791 )
2026-04-09 02:28:19 +00:00
2275c5b1a3
refactor: convert file-transfer-method-pipeline if/elif to match/case ( #30001 ) ( #34788 )
...
Co-authored-by: Asuka Minato <i@asukaminato.eu.org >
2026-04-09 01:43:52 +00:00
02a9f0abca
refactor(api): use sessionmaker in core app generators & pipelines ( #34771 )
2026-04-08 23:15:58 +00:00
c825d5dcf6
refactor(api): tighten types for Tenant.custom_config_dict and MCPToolProvider.headers ( #34698 )
2026-04-08 01:36:42 +00:00
80a7843f45
refactor(api): migrate consumers to shared RAG domain entities from core/rag/entities/ ( #34692 )
2026-04-07 23:22:56 +00:00
19c80f0f0e
refactor(api): type error stream response with TypedDict ( #34641 )
2026-04-07 05:57:42 +00:00
84d8940dbf
refactor(api): type app parameter feature toggles with FeatureToggleD… ( #34651 )
2026-04-07 05:53:50 +00:00
b55bef4438
refactor: migrate session.query to select API in core misc modules ( #34608 )
2026-04-07 04:08:34 +00:00
8f9dbf269e
chore(api): align Python support with 3.12 ( #34419 )
...
Co-authored-by: Asuka Minato <i@asukaminato.eu.org >
2026-04-02 05:07:32 +00:00
4bd388669a
refactor: core/app pipeline, core/datasource, and core/indexing_runner ( #34359 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-04-01 02:20:56 +00:00
5897b28355
refactor: use EnumText for Provider.quota_type and consolidate ProviderQuotaType ( #34299 )
2026-03-31 00:29:57 +00:00
ae9a16a397
fix: upgrade langfuse SDK to v3+ for LLM-as-judge support ( #34265 )
...
Signed-off-by: majiayu000 <1835304752@qq.com >
2026-03-30 13:06:55 +00:00