Yansong Zhang
c03b25a940
merge: resolve conflicts with origin/main
...
Conflicts resolved:
- workflow_app_runner.py: adopt main's DifyGraphInitContext pattern
- token_buffer_memory.py: adopt main's match/case, add AppMode.AGENT
- app_dsl_service.py: adopt main's match/case, add AppMode.AGENT
Made-with: Cursor
2026-04-13 12:52:56 +08:00
Yansong Zhang
90cce7693f
revert: remove all sandbox and skill related code
...
Remove ~12,900 lines of sandbox/skill code that was ported from
feat/support-agent-sandbox. This reverts to direct tool execution
(the original behavior before sandbox integration).
Removed:
- core/sandbox/ (SandboxBuilder, bash tools, providers, initializers)
- core/skill/ (SkillManager, assembler, entities)
- core/virtual_environment/ (5 provider implementations)
- core/zip_sandbox/ (archive operations)
- core/app_assets/ (asset management)
- core/app_bundle/ (bundle management)
- controllers/cli_api/ (DifyCli callback endpoints)
- services/sandbox/ (provider service)
- services/skill_service, app_asset_service, app_bundle_service
- models/sandbox.py, app_asset.py
- bin/dify-cli-* (3 platform binaries)
- web sandbox-provider-page and service
- SandboxLayer, _resolve_sandbox_context, _invoke_tool_in_sandbox
- CliApiConfig, DIFY_SANDBOX_CONTEXT_KEY
- sandbox-related migrations
Preserved: All Agent V2 core functionality (agent-v2 node, strategy
engine, transparent upgrade, LLM remapping, memory, context, tools
via direct execution).
Made-with: Cursor
2026-04-13 10:42:36 +08:00
wdeveloper16 and GitHub
602753b68a
refactor: replace bare dict with ActionDict TypedDict in cot_agent_runner ( #34997 )
2026-04-13 00:53:20 +00:00
Yansong Zhang
5cdae671d5
feat(api): integrate Sandbox Provider into Agent V2 execution pipeline
...
Close 3 integration gaps between the ported Sandbox system and Agent V2:
1. Fix _invoke_tool_in_sandbox to use SandboxBashSession context manager
API correctly (keyword args, bash_tool, ToolReference), with graceful
fallback to direct invocation when DifyCli binary is unavailable.
2. Inject sandbox into run_context via _resolve_sandbox_context() in
WorkflowBasedAppRunner — automatically creates a sandbox when a
tenant has an active sandbox provider configured.
3. Register SandboxLayer in both advanced_chat and workflow app runners
for proper sandbox lifecycle cleanup on graph end.
Also: make SkillInitializer non-fatal when no skill bundle exists,
add node_id to ExecutionContext for sandbox session scoping.
Made-with: Cursor
2026-04-10 10:14:42 +08:00
Yansong Zhang
3d4be88d97
fix(api): remove unsupported 'user' param from FC/ReAct invoke_llm calls
...
FunctionCallStrategy and ReActStrategy were passing user=self.context.user_id
to ModelInstance.invoke_llm() which doesn't accept that parameter.
This caused tool-using agent runs to fail with:
"ModelInstance.invoke_llm() got an unexpected keyword argument 'user'"
Verified: Agent V2 with current_time tool now works end-to-end:
ROUND 1: LLM thought -> CALL current_time -> got time
ROUND 2: LLM generates answer with time info
Made-with: Cursor
2026-04-09 12:18:07 +08:00
Yansong Zhang
44491e427c
feat(api): enable all sandbox/skill controller routes and resolve dependencies (P0)
...
Resolve the full dependency chain to enable all previously disabled controllers:
Enabled routes:
- sandbox_files: sandbox file browser API
- sandbox_providers: sandbox provider management API
- app_asset: app asset management API
- skills: skill extraction API
- CLI API blueprint: DifyCli callback endpoints (/cli/api/*)
Dependencies extracted (64 files, ~8000 lines):
- models/sandbox.py, models/app_asset.py: DB models
- core/zip_sandbox/: zip-based sandbox execution
- core/session/: CLI API session management
- core/memory/: base memory + node token buffer
- core/helper/creators.py: helper utilities
- core/llm_generator/: context models, output models, utils
- core/workflow/nodes/command/: command node type
- core/workflow/nodes/file_upload/: file upload node type
- core/app/entities/: app_asset_entities, app_bundle_entities, llm_generation_entities
- services/: asset_content, skill, workflow_collaboration, workflow_comment
- controllers/console/app/error.py: AppAsset error classes
- core/tools/utils/system_encryption.py
Import fixes:
- dify_graph.enums -> graphon.enums in skill_service.py
- get_signed_file_url_for_plugin -> get_signed_file_url in cli_api.py
All 5 controllers verified: import OK, Flask starts successfully.
46 existing tests still pass.
Made-with: Cursor
2026-04-09 09:36:16 +08:00
Yansong Zhang
96641a93f6
feat(api): add Agent V2 node and new Agent app type (Phase 1-3)
...
Introduce a new unified Agent V2 workflow node that combines LLM capabilities
with agent tool-calling loops, along with a new AppMode.AGENT for standalone
agent apps backed by single-node workflows.
Phase 1 — Agent Patterns:
- Add core/agent/patterns/ module (AgentPattern, FunctionCallStrategy,
ReActStrategy, StrategyFactory) ported from feat/support-agent-sandbox
- Add ExecutionContext, AgentLog, AgentResult entities
- Add Tool.to_prompt_message_tool() for LLM-consumable tool conversion
Phase 2 — Agent V2 Workflow Node:
- Add core/workflow/nodes/agent_v2/ (AgentV2Node, AgentV2NodeData,
AgentV2ToolManager, AgentV2EventAdapter)
- Register agent-v2 node type in DifyNodeFactory
- No-tools path: single LLM call (LLM Node equivalent)
- Tools path: FC/ReAct loop via StrategyFactory
Phase 3 — Agent App Type:
- Add AppMode.AGENT to model enum
- Add WorkflowGraphFactory for auto-generating start->agent_v2->answer graphs
- AppService.create_app() creates workflow draft for AGENT mode
- AppGenerateService.generate() routes AGENT to AdvancedChatAppGenerator
- Console API and DSL import/export support AGENT mode
- Default app template for AGENT mode
Old agent/agent-chat/LLM node paths are fully preserved.
38 unit tests all passing.
Made-with: Cursor
2026-04-08 12:31:23 +08:00
Pulakesh and GitHub
2575a3a3ab
refactor(api): clean up AssistantPromptMessage typing in CotChatAgentRunner ( #34681 )
2026-04-07 22:53:14 +00:00
364d7ebc40
refactor: core/tools, agent, callback_handler, encrypter, llm_generator, plugin, inner_api ( #34205 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Asuka Minato <[email protected] >
2026-03-28 10:14:43 +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
99 and GitHub
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- <[email protected] >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: WH-2099 <[email protected] >
2026-03-25 20:32:24 +08:00
7757bb5089
refactor(api): Query API to select function_1 ( #33565 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-03-17 23:29:16 +09:00
99 and GitHub
1b6e695520
refactor(workflow): move agent node back to core workflow ( #33431 )
2026-03-14 22:33:13 +08:00
-LAN- and GitHub
4fd6b52808
refactor(api): move model_runtime into dify_graph ( #32858 )
2026-03-02 20:15:32 +08:00
-LAN- and GitHub
c917838f9c
refactor: move workflow package to dify_graph ( #32844 )
2026-03-02 18:42:30 +08:00
-LAN- and GitHub
a694533fc9
refactor(workflow): inject credential/model access ports into LLM nodes ( #32569 )
...
Signed-off-by: -LAN- <[email protected] >
2026-02-27 14:36:41 +08:00
7656d514b9
refactor(workflow-file): move core.file to core.workflow.file ( #32252 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-02-16 22:38:19 +08:00
9be863fefa
fix: missing content if assistant message with tool_calls ( #30083 )
...
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-01-13 12:46:33 +08:00
1e10bf525c
refactor(models): Refine MessageAgentThought SQLAlchemy typing ( #27749 )
...
Co-authored-by: Asuka Minato <[email protected] >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-01-10 17:17:45 +09:00
wangxiaolei and GitHub
9b6b2f3195
feat: add AgentMaxIterationError exc ( #30423 )
2026-01-01 00:40:54 +08:00
QuantumGhost and GitHub
91667e3c1d
feat(api): Implement EventManager error logging and add coverage ( #29204 )
...
- Ensure `EventManager._notify_layers` logs exceptions instead of silently swallowing them
so GraphEngine layer failures surface for debugging
- Introduce unit tests to assert the logger captures the runtime error when collecting events
- Enable the `S110` lint rule to catch `try-except-pass` patterns
- Add proper error logging for existing `try-except-pass` blocks.
2025-12-08 09:40:40 +08:00
+10
85cda47c70
feat: knowledge pipeline ( #25360 )
...
Signed-off-by: -LAN- <[email protected] >
Co-authored-by: twwu <[email protected] >
Co-authored-by: crazywoola <[email protected] >
Co-authored-by: jyong <[email protected] >
Co-authored-by: Wu Tianwei <[email protected] >
Co-authored-by: QuantumGhost <[email protected] >
Co-authored-by: lyzno1 <[email protected] >
Co-authored-by: quicksand <[email protected] >
Co-authored-by: Jyong <[email protected] >
Co-authored-by: lyzno1 <[email protected] >
Co-authored-by: zxhlyh <[email protected] >
Co-authored-by: Yongtao Huang <[email protected] >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Joel <[email protected] >
Co-authored-by: Copilot <[email protected] >
Co-authored-by: nite-knite <[email protected] >
Co-authored-by: Hanqing Zhao <[email protected] >
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Harry <[email protected] >
2025-09-18 12:49:10 +08:00
bab4975809
chore: add ast-grep rule to convert Optional[T] to T | None ( #25560 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-15 13:06:33 +08:00
a13d7987e0
chore: adopt StrEnum and auto() for some string-typed enums ( #25129 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: crazywoola <[email protected] >
2025-09-12 21:14:26 +08:00
08dd3f7b50
Fix basedpyright type errors ( #25435 )
...
Signed-off-by: -LAN- <[email protected] >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-10 01:54:26 +08:00
a78339a040
remove bare list, dict, Sequence, None, Any ( #25058 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: -LAN- <[email protected] >
2025-09-06 03:32:23 +08:00
be3af1e234
Migrate SQLAlchemy from 1.x to 2.0 with automated and manual adjustments ( #23224 )
...
Co-authored-by: Yongtao Huang <[email protected] >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-02 10:30:19 +08:00
1d09708eb7
Fix incorrect exception reference for json.dumps() ( #24329 )
...
Co-authored-by: Yongtao Huang <[email protected] >
2025-08-24 00:31:04 +08:00
805b698c2e
Feat/chat message image first for agent and advanced_chat APP ( #23796 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-22 16:42:15 +08:00
Will and GitHub
67a0751cf3
fix: Improve create_agent_thought and save_agent_thought Logic ( #21263 )
2025-07-27 11:06:37 +08:00
ef51678c73
orm filter -> where ( #22801 )
...
Signed-off-by: -LAN- <[email protected] >
Co-authored-by: -LAN- <[email protected] >
Co-authored-by: Claude <[email protected] >
2025-07-24 00:57:45 +08:00
a4ef900916
Support OAuth Integration for Plugin Tools ( #22550 )
...
Co-authored-by: zxhlyh <[email protected] >
Co-authored-by: Yeuoly <[email protected] >
2025-07-17 17:18:44 +08:00
30aa052a57
feat: Add Citations and Attributions to Agent Node ( #18558 )
...
Co-authored-by: oneness0 <[email protected] >
Co-authored-by: Novice <[email protected] >
2025-07-16 15:46:15 +08:00
6eb155ae69
feat(api/repo): Allow to config repository implementation ( #21458 )
...
Signed-off-by: -LAN- <[email protected] >
Co-authored-by: QuantumGhost <[email protected] >
2025-07-14 14:54:38 +08:00
535fff62f3
feat: add MCP support ( #20716 )
...
Co-authored-by: QuantumGhost <[email protected] >
2025-07-10 14:01:34 +08:00
Novice and GitHub
b2ab401279
chore: remove agent turn limits ( #19930 )
2025-05-29 09:51:56 +08:00
Will and GitHub
0358859467
fix: llm_usage.total_tokens stat ( #19177 )
2025-05-07 16:42:49 +08:00
Will and GitHub
bfa652f2d0
fix: metadata filtering condition variable unassigned; fix External K… ( #19208 )
2025-05-07 14:52:09 +08:00
65b7a783fe
fix: metadata filter not work ( #19020 )
...
Co-authored-by: 金鹏程 <[email protected] >
Co-authored-by: crazywoola <[email protected] >
2025-04-30 11:06:03 +08:00
QuantumGhost and GitHub
bd1bbfee4b
Enhance Code Consistency Across Repository with .editorconfig ( #19023 )
2025-04-29 18:04:33 +08:00
Yeuoly and GitHub
abafa68647
refactor: rename plugin manager to plugin client and rename path from manager to impl ( #18876 )
2025-04-27 14:22:25 +08:00
a1158cc946
fix: Update prompt message content types to use Literal and add union type for content ( #17136 )
...
Co-authored-by: 朱庆超 <[email protected] >
Co-authored-by: crazywoola <[email protected] >
2025-04-22 16:17:55 +08:00
Junjie.M and GitHub
b7e8517b31
feat: agent strategy parameter add help information ( #18192 )
2025-04-16 17:24:09 +08:00
5dd9acbe44
fix: cot agent chinese json bug ( #18073 )
...
Co-authored-by: huangzhuo <[email protected] >
2025-04-15 15:36:44 +08:00
Novice and GitHub
dcdec98c8e
feat: agent node add memory ( #15976 )
2025-04-03 16:40:58 +08:00
shirukai and GitHub
6cf258a809
fix: code block syntax cannot be displayed correctly in react mode ( #16904 )
2025-03-31 16:27:29 +08:00
34cba83ac4
fix: bug that overwrote the llm model thought process when final_answ… ( #17074 )
...
Co-authored-by: 刘江波 <[email protected] >
2025-03-28 23:41:32 +08:00
Yeuoly and GitHub
490b6d092e
Fix/plugin race condition ( #14253 )
2025-02-25 12:20:47 +08:00
+110
403e2d58b9
Introduce Plugins ( #13836 )
...
Signed-off-by: yihong0618 <[email protected] >
Signed-off-by: -LAN- <[email protected] >
Signed-off-by: xhe <[email protected] >
Signed-off-by: dependabot[bot] <[email protected] >
Co-authored-by: takatost <[email protected] >
Co-authored-by: kurokobo <[email protected] >
Co-authored-by: Novice Lee <[email protected] >
Co-authored-by: zxhlyh <[email protected] >
Co-authored-by: AkaraChen <[email protected] >
Co-authored-by: Yi <[email protected] >
Co-authored-by: Joel <[email protected] >
Co-authored-by: JzoNg <[email protected] >
Co-authored-by: twwu <[email protected] >
Co-authored-by: Hiroshi Fujita <[email protected] >
Co-authored-by: AkaraChen <[email protected] >
Co-authored-by: NFish <[email protected] >
Co-authored-by: Wu Tianwei <[email protected] >
Co-authored-by: 非法操作 <[email protected] >
Co-authored-by: Novice <[email protected] >
Co-authored-by: Hiroki Nagai <[email protected] >
Co-authored-by: Gen Sato <[email protected] >
Co-authored-by: eux <[email protected] >
Co-authored-by: huangzhuo1949 <[email protected] >
Co-authored-by: huangzhuo <[email protected] >
Co-authored-by: lotsik <[email protected] >
Co-authored-by: crazywoola <[email protected] >
Co-authored-by: nite-knite <[email protected] >
Co-authored-by: Jyong <[email protected] >
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: gakkiyomi <[email protected] >
Co-authored-by: CN-P5 <[email protected] >
Co-authored-by: CN-P5 <[email protected] >
Co-authored-by: Chuehnone <[email protected] >
Co-authored-by: yihong <[email protected] >
Co-authored-by: Kevin9703 <[email protected] >
Co-authored-by: -LAN- <[email protected] >
Co-authored-by: Boris Feld <[email protected] >
Co-authored-by: mbo <[email protected] >
Co-authored-by: mabo <[email protected] >
Co-authored-by: Warren Chen <[email protected] >
Co-authored-by: JzoNgKVO <[email protected] >
Co-authored-by: jiandanfeng <[email protected] >
Co-authored-by: zhu-an <[email protected] >
Co-authored-by: zhaoqingyu.1075 <[email protected] >
Co-authored-by: 海狸大師 <[email protected] >
Co-authored-by: Xu Song <[email protected] >
Co-authored-by: rayshaw001 <[email protected] >
Co-authored-by: Ding Jiatong <[email protected] >
Co-authored-by: Bowen Liang <[email protected] >
Co-authored-by: JasonVV <[email protected] >
Co-authored-by: le0zh <[email protected] >
Co-authored-by: zhuxinliang <[email protected] >
Co-authored-by: k-zaku <[email protected] >
Co-authored-by: luckylhb90 <[email protected] >
Co-authored-by: hobo.l <[email protected] >
Co-authored-by: jiangbo721 <[email protected] >
Co-authored-by: 刘江波 <[email protected] >
Co-authored-by: Shun Miyazawa <[email protected] >
Co-authored-by: EricPan <[email protected] >
Co-authored-by: crazywoola <[email protected] >
Co-authored-by: sino <[email protected] >
Co-authored-by: Jhvcc <[email protected] >
Co-authored-by: lowell <[email protected] >
Co-authored-by: Boris Polonsky <[email protected] >
Co-authored-by: Ademílson Tonato <[email protected] >
Co-authored-by: Ademílson Tonato <[email protected] >
Co-authored-by: IWAI, Masaharu <[email protected] >
Co-authored-by: Yueh-Po Peng (Yabi) <[email protected] >
Co-authored-by: Jason <[email protected] >
Co-authored-by: Xin Zhang <[email protected] >
Co-authored-by: yjc980121 <[email protected] >
Co-authored-by: heyszt <[email protected] >
Co-authored-by: Abdullah AlOsaimi <[email protected] >
Co-authored-by: Abdullah AlOsaimi <[email protected] >
Co-authored-by: Yingchun Lai <[email protected] >
Co-authored-by: Hash Brown <[email protected] >
Co-authored-by: zuodongxu <[email protected] >
Co-authored-by: Masashi Tomooka <[email protected] >
Co-authored-by: aplio <[email protected] >
Co-authored-by: Obada Khalili <[email protected] >
Co-authored-by: Nam Vu <[email protected] >
Co-authored-by: Kei YAMAZAKI <[email protected] >
Co-authored-by: TechnoHouse <[email protected] >
Co-authored-by: Riddhimaan-Senapati <[email protected] >
Co-authored-by: MaFee921 <[email protected] >
Co-authored-by: te-chan <[email protected] >
Co-authored-by: HQidea <[email protected] >
Co-authored-by: Joshbly <[email protected] >
Co-authored-by: xhe <[email protected] >
Co-authored-by: weiwenyan-dev <[email protected] >
Co-authored-by: ex_wenyan.wei <[email protected] >
Co-authored-by: engchina <[email protected] >
Co-authored-by: engchina <[email protected] >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: 呆萌闷油瓶 <[email protected] >
Co-authored-by: Kemal <[email protected] >
Co-authored-by: Lazy_Frog <[email protected] >
Co-authored-by: Yi Xiao <[email protected] >
Co-authored-by: Steven sun <[email protected] >
Co-authored-by: steven <[email protected] >
Co-authored-by: Kalo Chin <[email protected] >
Co-authored-by: Katy Tao <[email protected] >
Co-authored-by: depy <[email protected] >
Co-authored-by: 胡春东 <[email protected] >
Co-authored-by: Junjie.M <[email protected] >
Co-authored-by: MuYu <[email protected] >
Co-authored-by: Naoki Takashima <[email protected] >
Co-authored-by: Summer-Gu <[email protected] >
Co-authored-by: Fei He <[email protected] >
Co-authored-by: ybalbert001 <[email protected] >
Co-authored-by: Yuanbo Li <[email protected] >
Co-authored-by: douxc <[email protected] >
Co-authored-by: liuzhenghua <[email protected] >
Co-authored-by: Wu Jiayang <[email protected] >
Co-authored-by: Your Name <[email protected] >
Co-authored-by: kimjion <[email protected] >
Co-authored-by: AugNSo <[email protected] >
Co-authored-by: llinvokerl <[email protected] >
Co-authored-by: liusurong.lsr <[email protected] >
Co-authored-by: Vasu Negi <[email protected] >
Co-authored-by: Hundredwz <[email protected] >
Co-authored-by: Xiyuan Chen <[email protected] >
2025-02-17 17:05:13 +08:00