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
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
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
d3d9f21cdf
feat(api): wire sandbox into Agent V2 node execution pipeline
...
Integrate the ported sandbox system with Agent V2 node:
- Add DIFY_SANDBOX_CONTEXT_KEY to app_invoke_entities for passing
sandbox through run_context without modifying graphon
- DifyNodeFactory._resolve_sandbox() extracts sandbox from run_context
and passes it to AgentV2Node constructor
- AgentV2Node accepts optional sandbox parameter
- AgentV2ToolManager supports dual execution paths:
- _invoke_tool_directly(): standard ToolEngine.generic_invoke (no sandbox)
- _invoke_tool_in_sandbox(): delegates to SandboxBashSession.run_tool()
which uses DifyCli to call back to Dify API from inside the sandbox
- Graceful fallback: if sandbox execution fails, logs warning and returns
error message (does not crash the agent loop)
To enable sandbox for an Agent workflow:
1. Create a Sandbox via SandboxBuilder
2. Add it to run_context under DIFY_SANDBOX_CONTEXT_KEY
3. Agent V2 nodes will automatically use sandbox for tool execution
46 existing tests still pass.
Made-with: Cursor
2026-04-08 17:46:34 +08:00
corevibe555 and GitHub
c825d5dcf6
refactor(api): tighten types for Tenant.custom_config_dict and MCPToolProvider.headers ( #34698 )
2026-04-08 01:36:42 +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
盐粒 Yanli and GitHub
df0ded210f
fix: preserve timing metrics in parallel iteration ( #33216 )
2026-03-19 18:05:52 +08:00
-LAN- and GitHub
fb41b215c8
refactor(api): move workflow knowledge nodes and trigger nodes ( #33445 )
2026-03-15 15:24:59 +08:00
99 and GitHub
1b6e695520
refactor(workflow): move agent node back to core workflow ( #33431 )
2026-03-14 22:33:13 +08:00
99 and GitHub
7432b58f82
refactor(dify_graph): introduce run_context and delegate child engine creation ( #32964 )
2026-03-05 14:31:28 +08:00
99 and GitHub
c8688ec371
refactor(dify_graph): unify invoke and user enums source in workflow ( #32873 )
2026-03-03 15:05:20 +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
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
a1fc280102
feat: Human Input Node ( #32060 )
...
The frontend and backend implementation for the human input node.
Co-authored-by: twwu <[email protected] >
Co-authored-by: JzoNg <[email protected] >
Co-authored-by: yyh <[email protected] >
Co-authored-by: zhsama <[email protected] >
2026-02-09 14:57:23 +08:00
yyh and GitHub
4f826b4641
refactor(typing): use enum types for workflow status fields ( #31792 )
2026-02-02 09:41:34 +08:00
90fe9abab7
revert: revert human input relevant code ( #31766 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-01-30 19:18:49 +08:00
03e3acfc71
feat(api): Human Input Node (backend part) ( #31646 )
...
The backend part of the human in the loop (HITL) feature and relevant architecture / workflow engine changes.
Signed-off-by: yihong0618 <[email protected] >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: -LAN- <[email protected] >
Co-authored-by: 盐粒 Yanli <[email protected] >
Co-authored-by: CrabSAMA <[email protected] >
Co-authored-by: Stephen Zhou <[email protected] >
Co-authored-by: Copilot <[email protected] >
Co-authored-by: yihong <[email protected] >
Co-authored-by: Joel <[email protected] >
2026-01-30 10:18:49 +08:00
-LAN- and GitHub
55de731f9c
refactor(api): clarify published RAG pipeline invoke naming ( #30644 )
2026-01-06 23:48:06 +09:00
-LAN- and GitHub
2e1efd62e1
revert: "fix(ops): add streaming metrics and LLM span for agent-chat traces" ( #29469 )
2025-12-11 12:53:37 +08:00
e8f93380d1
Fix validation ( #28985 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-12-02 10:25:52 +08:00
wangxiaolei and GitHub
d162f7e5ef
feat(api): automatically NODE_TYPE_CLASSES_MAPPING generation from node class definitions ( #28525 )
2025-12-01 14:14:19 +08:00
1e23957657
fix(ops): add streaming metrics and LLM span for agent-chat traces ( #28320 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: crazywoola <[email protected] >
2025-11-26 22:45:20 +08:00
+4
b76e17b25d
feat: introduce trigger functionality ( #27644 )
...
Signed-off-by: lyzno1 <[email protected] >
Co-authored-by: Stream <[email protected] >
Co-authored-by: lyzno1 <[email protected] >
Co-authored-by: zhsama <[email protected] >
Co-authored-by: Harry <[email protected] >
Co-authored-by: lyzno1 <[email protected] >
Co-authored-by: yessenia <[email protected] >
Co-authored-by: hjlarry <[email protected] >
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: WTW0313 <[email protected] >
Co-authored-by: Copilot <[email protected] >
2025-11-12 17:59:37 +08:00
fd255e81e1
feat(api): Introduce WorkflowResumptionContext for pause state management ( #28122 )
...
Certain metadata (including but not limited to `InvokeFrom`, `call_depth`, and `streaming`) is required when resuming a paused workflow. However, these fields are not part of `GraphRuntimeState` and were not saved in the previous
implementation of `PauseStatePersistenceLayer`.
This commit addresses this limitation by introducing a `WorkflowResumptionContext` model that wraps both the `*GenerateEntity` and `GraphRuntimeState`. This approach provides:
- A structured container for all necessary resumption data
- Better separation of concerns between execution state and persistence
- Enhanced extensibility for future metadata additions
- Clearer naming that distinguishes from `GraphRuntimeState`
The `WorkflowResumptionContext` model makes extending the pause state easier while maintaining backward compatibility and proper version management for the entire execution state ecosystem.
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-11-12 17:00:02 +08:00
-LAN- and GitHub
c8e9edc024
refactor(api): set default value for EasyUIBasedAppGenerateEntity.query ( #27712 )
2025-11-04 10:22:43 +08:00
1e9142c213
feat: enhance tencent trace integration with LLM core metrics ( #27126 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: crazywoola <[email protected] >
2025-10-29 15:53:30 +08:00
-LAN- and GitHub
578247ffbc
feat(graph_engine): Support pausing workflow graph executions ( #26585 )
...
Signed-off-by: -LAN- <[email protected] >
2025-10-19 21:33:41 +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
Yongtao Huang and GitHub
2ac7a9c8fc
Chore: thanks to bump-pydantic ( #25437 )
2025-09-09 20:07:17 +08:00
-LAN- and GitHub
9d5956cef8
[Chore/Refactor] Switch from MyPy to Basedpyright for type checking ( #25047 )
...
Signed-off-by: -LAN- <[email protected] >
2025-09-03 11:52:26 +08:00
湛露先生 and GitHub
5c01dd97e8
clean typos words. ( #24667 )
...
Signed-off-by: zhanluxianshen <[email protected] >
2025-08-28 15:23:59 +08:00
willzhao and GitHub
5ab6bc283c
[CHORE]: x: T = None to x: Optional[T] = None ( #24217 )
2025-08-21 21:58:39 +08:00
106ab7f2a8
Fix: safe defaults for BaseModel dict fields ( #24098 )
...
Co-authored-by: Yongtao Huang <[email protected] >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-21 21:38:55 +08:00
-LAN- and GitHub
2dbf20a3e9
fix: resolve circular import in AppGenerateEntity ( #23731 )
2025-08-11 15:38:28 +08:00
QuantumGhost and GitHub
10b738a296
feat: Persist Variables for Enhanced Debugging Workflow ( #20699 )
...
This pull request introduces a feature aimed at improving the debugging experience during workflow editing. With the addition of variable persistence, the system will automatically retain the output variables from previously executed nodes. These persisted variables can then be reused when debugging subsequent nodes, eliminating the need for repetitive manual input.
By streamlining this aspect of the workflow, the feature minimizes user errors and significantly reduces debugging effort, offering a smoother and more efficient experience.
Key highlights of this change:
- Automatic persistence of output variables for executed nodes.
- Reuse of persisted variables to simplify input steps for nodes requiring them (e.g., `code`, `template`, `variable_assigner`).
- Enhanced debugging experience with reduced friction.
Closes #19735 .
2025-06-24 09:05:29 +08:00
-LAN- and GitHub
a6ea15e63c
Refactor/message cycle manage and knowledge retrieval ( #20460 )
...
Signed-off-by: -LAN- <[email protected] >
2025-05-30 14:36:44 +08:00
-LAN- and GitHub
32e779eef3
refactor(workflow): Rename NodeRunMetadataKey to WorkflowNodeExecutionMetadataKey ( #20457 )
...
Signed-off-by: -LAN- <[email protected] >
2025-05-30 04:47:56 +08:00
-LAN- and GitHub
482e50aae9
Refactor/remove db from cycle manager ( #20455 )
...
Signed-off-by: -LAN- <[email protected] >
2025-05-30 04:34:13 +08:00
-LAN- and GitHub
d31235ca13
feat: Introduce WorkflowExecution Domain Entity and Repository, Replace WorkflowRun Direct Usage, and Unify Stream Response Logic ( #20067 )
...
Signed-off-by: -LAN- <[email protected] >
2025-05-21 22:01:53 +08:00
4977bb21ec
feat(workflow): domain model for workflow node execution ( #19430 )
...
Signed-off-by: -LAN- <[email protected] >
Co-authored-by: Copilot <[email protected] >
2025-05-17 00:56:16 +08:00
5e2b3b34e5
issue: #17056 : Add a reason field to the message_replace event ( #17195 )
...
Co-authored-by: 聂政 <[email protected] >
2025-04-25 10:08:06 +08:00
Novice and GitHub
778861f461
fix: agent node can't use in parallel ( #15047 )
2025-03-06 13:13:24 +08:00
2c17bb2c36
Feature/newnew workflow loop node ( #14863 )
...
Co-authored-by: arkunzz <[email protected] >
2025-03-05 17:41:15 +08:00