a1ef47710d
feat(api): Agent App type S2c (runner) — drive a turn via agent backend
...
``AgentAppRunner`` runs one conversation turn against the dify-agent backend
(instead of the legacy in-process ReAct loop): load the conversation's prior
session_snapshot, build the run request (S2b), create the run, consume the
event stream, and republish the assistant answer as chat queue events
(``QueueLLMChunkEvent`` + ``QueueMessageEndEvent``) so the existing EasyUI chat
task pipeline persists the message and streams SSE. On success the conversation
session_snapshot is saved for multi-turn continuity; failures raise
AgentBackendError; the answer is normalized to text (plain string or structured
JSON).
MVP emits the final answer as one chunk + message-end; token-level streaming is
a follow-up refinement. The generator/entity/converter wiring + live-stack
verification land next.
Tests: 4 runner cases via the deterministic fake backend client + fake queue
(success→chunk+end+session-save, prior-snapshot threading, failure raises,
answer extraction). 15 agent_app unit tests green; ruff + pyrefly clean.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-29 19:25:16 +08:00
246c1d74a4
feat(api): Agent App type S2b — agent-app run request builder
...
* ``AgentBackendRunRequestBuilder.build_for_agent_app`` + the
``AgentBackendAgentAppRunInput`` DTO: the app-shaped layer graph (agent soul
system prompt → user message → execution context → history → llm → optional
plugin tools → optional output), purpose=agent_app, on_exit=suspend. No
workflow-node-job / previous-node prompt.
* ``AgentAppRuntimeRequestBuilder`` maps an Agent Soul snapshot + conversation
turn into a CreateRunRequest: plugin-daemon plugin_id/provider normalization,
credential fetch + scalar normalization, Dify plugin tools (reuses
WorkflowAgentPluginToolsBuilder), conversation-scoped execution_context with
invoke_from=agent_app, and the prior session_snapshot for multi-turn.
Tests: 5 builder/DTO cases + reuses the conversation session store; 40 passing
across agent_backend + agent_app suites. ruff + pyrefly clean.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-29 19:14:43 +08:00
1fc9a7802c
feat(api): Agent App type S2a — unified agent_runtime_sessions table
...
Q2 decision: unify the workflow-only ``workflow_agent_runtime_sessions`` into
an owner-agnostic ``agent_runtime_sessions`` table serving both owners. Feature
is unreleased, so the old table is dropped (no data migration).
* ``AgentRuntimeSession`` model (table ``agent_runtime_sessions``) with an
``owner_type`` discriminator (workflow_run | conversation): workflow columns
(workflow_id/run_id/node_id/binding_id/agent_config_snapshot_id/
composition_layer_specs) and ``conversation_id`` are mutually-exclusive,
enforced by two partial unique indexes. Back-compat aliases
``WorkflowAgentRuntimeSession`` / ``WorkflowAgentRuntimeSessionStatus`` keep
the shipped lifecycle path (PR #36724 ) unchanged; the workflow store now sets
``owner_type=workflow_run``.
* New ``AgentAppRuntimeSessionStore`` (conversation-keyed) for the Agent App
side of the same table: one conversation = one Agent session for multi-turn.
* Migration 121e7346074d (drop old + create unified) — applies and
downgrade/upgrade round-trips clean on Postgres.
Tests: 6 new conversation-store ORM round-trip tests; 154 existing workflow
lifecycle + agent_backend tests still green against the unified table.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-29 19:02:21 +08:00
9cdeffd0b1
feat(api): agent backend session lifecycle for workflow agent nodes ( #36724 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 15:00:21 +00: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
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
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
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
27b084c4d4
fix: reduce db roundtrips of message update ( #36213 )
2026-05-15 08:39:48 +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
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
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
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
3c279edcf2
refactor: replace bare dict with dict[str, Any] in app task_entities … ( #35084 )
2026-04-13 17:14:23 +00:00
d1e33ba9ea
refactor(api): reduce Dify GraphInitParams usage ( #34825 )
2026-04-09 07:59:15 +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
19c80f0f0e
refactor(api): type error stream response with TypedDict ( #34641 )
2026-04-07 05:57:42 +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
40591a7c50
refactor(api): use standalone graphon package ( #34209 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-03-27 21:05:32 +00:00
fcfc96ca05
chore: remove stale mypy suppressions and align dataset service tests ( #34130 )
2026-03-26 12:34:44 +00:00
5341cd015b
fix: dataset query created_by empty UUID in iteration subgraph ( #34004 ) ( #34044 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-03-26 14:57:19 +08:00
52e7492cbc
refactor(api): rename dify_graph to graphon ( #34095 )
2026-03-25 21:58:56 +08:00
56593f20b0
refactor(api): continue decoupling dify_graph from API concerns ( #33580 )
...
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-03-25 20:32:24 +08:00
20fc69ae7f
refactor: use EnumText for WorkflowAppLog.created_from and WorkflowArchiveLog columns ( #33954 )
2026-03-24 02:44:46 +09:00
f41d1d0822
refactor: use EnumText for Conversation/Message invoke_from and from_source ( #33832 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Asuka Minato <i@asukaminato.eu.org >
2026-03-21 11:47:48 +09:00
8c9831177a
fix(api): preserve citation metadata in web responses ( #33778 )
...
Co-authored-by: AI Assistant <bot@demo.com >
2026-03-20 10:49:12 +08:00
5b9cb55c45
refactor: use EnumText for MessageFeedback and MessageFile columns ( #33738 )
2026-03-20 01:13:26 +09:00
df0ded210f
fix: preserve timing metrics in parallel iteration ( #33216 )
2026-03-19 18:05:52 +08:00
236ae372be
refactor(api): replace dict/Mapping with TypedDict in core/app ( #33601 )
2026-03-18 00:38:39 +09:00
98e72521f4
chore: change draft var to user scoped ( #33066 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: QuantumGhost <obelisk.reg+git@gmail.com >
2026-03-16 14:04:41 +08:00
fb41b215c8
refactor(api): move workflow knowledge nodes and trigger nodes ( #33445 )
2026-03-15 15:24:59 +08:00
1b6e695520
refactor(workflow): move agent node back to core workflow ( #33431 )
2026-03-14 22:33:13 +08:00
0045e387f5
test: unit test cases for core.app.apps module ( #32482 )
2026-03-12 11:23:25 +08:00
989db0e584
refactor: Unify NodeConfigDict.data and BaseNodeData ( #32780 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-03-11 23:43:58 +08:00
d6721a1dd3
fix: use moderation modified inputs and query ( #33180 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Crazywoola <100913391+crazywoola@users.noreply.github.com >
2026-03-11 13:37:23 +08:00
ad81513b6a
fix: show citations in advanced chat apps ( #32985 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-03-06 09:56:14 +08:00
741d48560d
refactor(api): add TypedDict definitions to models/model.py ( #32925 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-03-06 08:42:54 +09:00