adadf1ec5f
refactor(telemetry): migrate to type-safe enum-based event routing with centralized enterprise filtering
...
Changes:
- Change TelemetryEvent.name from str to TraceTaskName enum for type safety
- Remove hardcoded trace_task_name_map from facade (no mapping needed)
- Add centralized enterprise-only filter in TelemetryFacade.emit()
- Rename is_telemetry_enabled() to is_enterprise_telemetry_enabled()
- Update all 11 call sites to pass TraceTaskName enum values
- Remove redundant enterprise guard from draft_trace.py
- Add unit tests for TelemetryFacade.emit() routing (6 tests)
- Add unit tests for TraceQueueManager telemetry guard (5 tests)
- Fix test fixture scoping issue for full test suite compatibility
- Fix tenant_id handling in agent tool callback handler
Benefits:
- 100% type-safe: basedpyright catches errors at compile time
- No string literals: eliminates entire class of typo bugs
- Single point of control: centralized filtering in facade
- All guards removed except facade
- Zero regressions: 4887 tests passing
Verification:
- make lint: PASS
- make type-check: PASS (0 errors, 0 warnings)
- pytest: 4887 passed, 8 skipped
2026-02-05 20:15:12 -08:00
ed222945aa
refactor(telemetry): introduce TelemetryFacade to centralize event emission
...
Migrate from direct TraceQueueManager.add_trace_task calls to TelemetryFacade.emit
with TelemetryEvent abstraction. This reduces CE code invasion by consolidating
telemetry logic in core/telemetry/ with a single guard in ops_trace_manager.py.
2026-02-05 20:15:11 -08:00
2d60be311d
fix: extract model_provider from model_config in prompt generation trace
...
The model_provider field in prompt generation traces was being incorrectly
extracted by parsing the model name (e.g., 'deepseek-chat'), which resulted
in an empty string when the model name didn't contain a '/' character.
Now extracts the provider directly from the model_config parameter, with
a fallback to the old parsing logic for backward compatibility.
Changes:
- Update _emit_prompt_generation_trace to accept model_config parameter
- Extract provider from model_config.get('provider') when available
- Update all 6 call sites to pass model_config
- Maintain backward compatibility with fallback logic
2026-02-05 20:15:11 -08:00
5bbc938a0d
fix(telemetry): add prompt generation trace emission for no_variable=false path
...
- The no_variable=false code path in generate_rule_config was missing trace emission
- Added timing wrapper and _emit_prompt_generation_trace call to ensure metrics/logs are captured
- Trace now emitted on both success and failure cases for consistency with no_variable=true path
2026-02-05 20:15:10 -08:00
22c8d8d772
feat(telemetry): add prompt generation telemetry to Enterprise OTEL
...
- Add PromptGenerationTraceInfo trace entity with operation_type field
- Implement telemetry for rule-generate, code-generate, structured-output, instruction-modify operations
- Emit metrics: tokens (total/input/output), duration histogram, requests counter, errors counter
- Emit structured logs with model info and operation context
- Content redaction controlled by ENTERPRISE_INCLUDE_CONTENT env var
- Fix user_id propagation in TraceTask kwargs
- Fix latency calculation when llm_result is None
No spans exported - metrics and logs only for lightweight observability.
2026-02-05 20:14:49 -08:00
41177757e6
fix: summary index bug ( #31810 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jyong <76649700+JohnJyong@users.noreply.github.com >
Co-authored-by: zxhlyh <jasonapring2015@outlook.com >
Co-authored-by: Yansong Zhang <916125788@qq.com >
Co-authored-by: hj24 <mambahj24@gmail.com >
Co-authored-by: CodingOnStar <hanxujiang@dify.ai >
Co-authored-by: CodingOnStar <hanxujiang@dify.com >
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-02-02 09:45:17 +08:00
89abea26f9
refactor: rm some dict api/controllers/console/app/generator.py api/core/llm_generator/llm_generator.py ( #31709 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-01-30 17:37:20 +09:00
c2473d85dc
feat: Add summary index for knowledge. ( #31625 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jyong <76649700+JohnJyong@users.noreply.github.com >
Co-authored-by: zxhlyh <jasonapring2015@outlook.com >
Co-authored-by: Yansong Zhang <916125788@qq.com >
Co-authored-by: hj24 <mambahj24@gmail.com >
Co-authored-by: CodingOnStar <hanxujiang@dify.ai >
Co-authored-by: CodingOnStar <hanxujiang@dify.com >
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-01-29 13:47:35 +08:00
de610cbf39
fix: call get_text_content() instead of casting to str ( #31121 )
...
Signed-off-by: Stream <Stream_2@qq.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-01-16 18:41:00 +09:00
1a18012f98
fix(api): use json_repair for conversation title parsing ( #29649 )
2025-12-15 11:29:28 +08:00
c033030d8c
fix: 'list' object has no attribute 'find' ( #29384 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-12-10 12:45:53 +08:00
ee0fe8c7f9
feat: support suggested_questions_after_answer to be configed ( #29254 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-12-08 10:27:02 +08:00
4dccdf9478
Ensure suggested questions parser returns typed sequence ( #27104 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-10-20 13:01:09 +08:00
1bd621f819
remove .value ( #26633 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-10-11 09:08:29 +08:00
3bb67885ef
fix(api): resolve error in agent‑strategy prompt generator ( #26278 )
2025-09-26 16:16:55 +08:00
85cda47c70
feat: knowledge pipeline ( #25360 )
...
Signed-off-by: -LAN- <laipz8200@outlook.com >
Co-authored-by: twwu <twwu@dify.ai >
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com >
Co-authored-by: jyong <718720800@qq.com >
Co-authored-by: Wu Tianwei <30284043+WTW0313@users.noreply.github.com >
Co-authored-by: QuantumGhost <obelisk.reg+git@gmail.com >
Co-authored-by: lyzno1 <yuanyouhuilyz@gmail.com >
Co-authored-by: quicksand <quicksandzn@gmail.com >
Co-authored-by: Jyong <76649700+JohnJyong@users.noreply.github.com >
Co-authored-by: lyzno1 <92089059+lyzno1@users.noreply.github.com >
Co-authored-by: zxhlyh <jasonapring2015@outlook.com >
Co-authored-by: Yongtao Huang <yongtaoh2022@gmail.com >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Joel <iamjoel007@gmail.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: nite-knite <nkCoding@gmail.com >
Co-authored-by: Hanqing Zhao <sherry9277@gmail.com >
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Harry <xh001x@hotmail.com >
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
08dd3f7b50
Fix basedpyright type errors ( #25435 )
...
Signed-off-by: -LAN- <laipz8200@outlook.com >
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- <laipz8200@outlook.com >
2025-09-06 03:32:23 +08:00
9d5956cef8
[Chore/Refactor] Switch from MyPy to Basedpyright for type checking ( #25047 )
...
Signed-off-by: -LAN- <laipz8200@outlook.com >
2025-09-03 11:52:26 +08:00
7b379e2a61
chore: apply ty checks on api code with script and ci action ( #24653 )
2025-09-02 16:05:13 +08:00
826f19e968
Chore : rm dead code detected by pylance ( #24588 )
2025-08-27 13:19:40 +08:00
726c429772
fix: handle non-array segment types in Loop node ( #24590 )
...
Co-authored-by: QuantumGhost <obelisk.reg+git@gmail.com >
2025-08-27 11:21:42 +08:00
fa753239ad
Refactor: use logger = logging.getLogger(__name__) in logging ( #24515 )
...
Co-authored-by: Yongtao Huang <99629139+hyongtao-db@users.noreply.github.com >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com >
2025-08-26 18:10:31 +08:00
47f480c0dc
fix: unify log format, use placeholders instead of string concatenation ( #24544 )
2025-08-26 15:45:16 +08:00
870e3daa95
hotfix: fix multiple case match syntax ( #24204 )
2025-08-20 14:45:46 +08:00
c2606f9062
fix: correct behaviour of code fix ( #24152 )
...
Co-authored-by: Joel <iamjoel007@gmail.com >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-19 14:18:49 +08:00
70da81d0e5
try ast-grep ( #24149 )
2025-08-19 13:41:52 +08:00
de9c5f10b3
feat: enchance prompt and code ( #23633 )
...
Co-authored-by: stream <stream@dify.ai >
Co-authored-by: Stream <1542763342@qq.com >
Co-authored-by: Stream <Stream_2@qq.com >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-18 12:29:12 +08:00
a189d293f8
make logging not use f-str, change others to f-str ( #22882 )
2025-07-25 10:32:48 +08:00
8340d775bd
Improve: support custom model parameters in auto-generator ( #22924 )
2025-07-25 09:00:26 +08:00
60c37fe492
Added a check to ensure the input text is a string before proceeding with parsing ( #22809 )
...
Co-authored-by: -LAN- <laipz8200@outlook.com >
2025-07-23 13:53:27 +08:00
4b2baeea65
fix: use model provided by user in prompt generator ( #22541 ) ( #22542 )
...
Co-authored-by: stream <stream@dify.ai >
2025-07-17 14:19:52 +08:00
5487463385
fix: add list contents handling in structured LLM output ( #21837 )
2025-07-02 19:14:21 +08:00
0cb00d5fd2
refactor: move structured output support outside LLM Node ( #21565 )
...
Co-authored-by: Novice <novice12185727@gmail.com >
2025-06-27 14:55:31 +08:00
55371e5abf
Improve CONVERSATION_TITLE_PROMPT to correctly handle Japanese and input ( #20351 )
2025-05-30 14:43:51 +08:00
2cad98f01f
fix : #18132 when deepseek llm model, auto_generate name can't work ( #18646 )
...
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com >
2025-05-26 18:04:52 +08:00
bd1bbfee4b
Enhance Code Consistency Across Repository with .editorconfig ( #19023 )
2025-04-29 18:04:33 +08:00
a147d2a200
feat(api): use json_repair to fix invalid json while generating structured output ( #18977 )
...
When generating JSON schema using an LLM in the structured output feature,
models may occasionally return invalid JSON, which prevents clients from correctly
parsing the response and can lead to UI breakage.
This commit addresses the issue by introducing `json_repair` to automatically
fix invalid JSON strings returned by the LLM, ensuring smoother functionality
and better client-side handling of structured outputs.
Co-authored-by: lizb <lizb@sugon.com >
2025-04-29 12:39:13 +08:00
2266001d19
Fix some prompt typos ( #18645 )
2025-04-24 10:36:45 +08:00
da9269ca97
feat: structured output ( #17877 )
2025-04-18 16:33:53 +08:00
c4bb07184d
Update prompts.py:Fix conversation title language for Italian conversations ( #16696 )
2025-03-25 14:29:08 +08:00
403e2d58b9
Introduce Plugins ( #13836 )
...
Signed-off-by: yihong0618 <zouzou0208@gmail.com >
Signed-off-by: -LAN- <laipz8200@outlook.com >
Signed-off-by: xhe <xw897002528@gmail.com >
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: takatost <takatost@gmail.com >
Co-authored-by: kurokobo <kuro664@gmail.com >
Co-authored-by: Novice Lee <novicelee@NoviPro.local >
Co-authored-by: zxhlyh <jasonapring2015@outlook.com >
Co-authored-by: AkaraChen <akarachen@outlook.com >
Co-authored-by: Yi <yxiaoisme@gmail.com >
Co-authored-by: Joel <iamjoel007@gmail.com >
Co-authored-by: JzoNg <jzongcode@gmail.com >
Co-authored-by: twwu <twwu@dify.ai >
Co-authored-by: Hiroshi Fujita <fujita-h@users.noreply.github.com >
Co-authored-by: AkaraChen <85140972+AkaraChen@users.noreply.github.com >
Co-authored-by: NFish <douxc512@gmail.com >
Co-authored-by: Wu Tianwei <30284043+WTW0313@users.noreply.github.com >
Co-authored-by: 非法操作 <hjlarry@163.com >
Co-authored-by: Novice <857526207@qq.com >
Co-authored-by: Hiroki Nagai <82458324+nagaihiroki-git@users.noreply.github.com >
Co-authored-by: Gen Sato <52241300+halogen22@users.noreply.github.com >
Co-authored-by: eux <euxuuu@gmail.com >
Co-authored-by: huangzhuo1949 <167434202+huangzhuo1949@users.noreply.github.com >
Co-authored-by: huangzhuo <huangzhuo1@xiaomi.com >
Co-authored-by: lotsik <lotsik@mail.ru >
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com >
Co-authored-by: nite-knite <nkCoding@gmail.com >
Co-authored-by: Jyong <76649700+JohnJyong@users.noreply.github.com >
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: gakkiyomi <gakkiyomi@aliyun.com >
Co-authored-by: CN-P5 <heibai2006@gmail.com >
Co-authored-by: CN-P5 <heibai2006@qq.com >
Co-authored-by: Chuehnone <1897025+chuehnone@users.noreply.github.com >
Co-authored-by: yihong <zouzou0208@gmail.com >
Co-authored-by: Kevin9703 <51311316+Kevin9703@users.noreply.github.com >
Co-authored-by: -LAN- <laipz8200@outlook.com >
Co-authored-by: Boris Feld <lothiraldan@gmail.com >
Co-authored-by: mbo <himabo@gmail.com >
Co-authored-by: mabo <mabo@aeyes.ai >
Co-authored-by: Warren Chen <warren.chen830@gmail.com >
Co-authored-by: JzoNgKVO <27049666+JzoNgKVO@users.noreply.github.com >
Co-authored-by: jiandanfeng <chenjh3@wangsu.com >
Co-authored-by: zhu-an <70234959+xhdd123321@users.noreply.github.com >
Co-authored-by: zhaoqingyu.1075 <zhaoqingyu.1075@bytedance.com >
Co-authored-by: 海狸大師 <86974027+yenslife@users.noreply.github.com >
Co-authored-by: Xu Song <xusong.vip@gmail.com >
Co-authored-by: rayshaw001 <396301947@163.com >
Co-authored-by: Ding Jiatong <dingjiatong@gmail.com >
Co-authored-by: Bowen Liang <liangbowen@gf.com.cn >
Co-authored-by: JasonVV <jasonwangiii@outlook.com >
Co-authored-by: le0zh <newlight@qq.com >
Co-authored-by: zhuxinliang <zhuxinliang@didiglobal.com >
Co-authored-by: k-zaku <zaku99@outlook.jp >
Co-authored-by: luckylhb90 <luckylhb90@gmail.com >
Co-authored-by: hobo.l <hobo.l@binance.com >
Co-authored-by: jiangbo721 <365065261@qq.com >
Co-authored-by: 刘江波 <jiangbo721@163.com >
Co-authored-by: Shun Miyazawa <34241526+miya@users.noreply.github.com >
Co-authored-by: EricPan <30651140+Egfly@users.noreply.github.com >
Co-authored-by: crazywoola <427733928@qq.com >
Co-authored-by: sino <sino2322@gmail.com >
Co-authored-by: Jhvcc <37662342+Jhvcc@users.noreply.github.com >
Co-authored-by: lowell <lowell.hu@zkteco.in >
Co-authored-by: Boris Polonsky <BorisPolonsky@users.noreply.github.com >
Co-authored-by: Ademílson Tonato <ademilsonft@outlook.com >
Co-authored-by: Ademílson Tonato <ademilson.tonato@refurbed.com >
Co-authored-by: IWAI, Masaharu <iwaim.sub@gmail.com >
Co-authored-by: Yueh-Po Peng (Yabi) <94939112+y10ab1@users.noreply.github.com >
Co-authored-by: Jason <ggbbddjm@gmail.com >
Co-authored-by: Xin Zhang <sjhpzx@gmail.com >
Co-authored-by: yjc980121 <3898524+yjc980121@users.noreply.github.com >
Co-authored-by: heyszt <36215648+hieheihei@users.noreply.github.com >
Co-authored-by: Abdullah AlOsaimi <osaimiacc@gmail.com >
Co-authored-by: Abdullah AlOsaimi <189027247+osaimi@users.noreply.github.com >
Co-authored-by: Yingchun Lai <laiyingchun@apache.org >
Co-authored-by: Hash Brown <hi@xzd.me >
Co-authored-by: zuodongxu <192560071+zuodongxu@users.noreply.github.com >
Co-authored-by: Masashi Tomooka <tmokmss@users.noreply.github.com >
Co-authored-by: aplio <ryo.091219@gmail.com >
Co-authored-by: Obada Khalili <54270856+obadakhalili@users.noreply.github.com >
Co-authored-by: Nam Vu <zuzoovn@gmail.com >
Co-authored-by: Kei YAMAZAKI <1715090+kei-yamazaki@users.noreply.github.com >
Co-authored-by: TechnoHouse <13776377+deephbz@users.noreply.github.com >
Co-authored-by: Riddhimaan-Senapati <114703025+Riddhimaan-Senapati@users.noreply.github.com >
Co-authored-by: MaFee921 <31881301+2284730142@users.noreply.github.com >
Co-authored-by: te-chan <t-nakanome@sakura-is.co.jp >
Co-authored-by: HQidea <HQidea@users.noreply.github.com >
Co-authored-by: Joshbly <36315710+Joshbly@users.noreply.github.com >
Co-authored-by: xhe <xw897002528@gmail.com >
Co-authored-by: weiwenyan-dev <154779315+weiwenyan-dev@users.noreply.github.com >
Co-authored-by: ex_wenyan.wei <ex_wenyan.wei@tcl.com >
Co-authored-by: engchina <12236799+engchina@users.noreply.github.com >
Co-authored-by: engchina <atjapan2015@gmail.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: 呆萌闷油瓶 <253605712@qq.com >
Co-authored-by: Kemal <kemalmeler@outlook.com >
Co-authored-by: Lazy_Frog <4590648+lazyFrogLOL@users.noreply.github.com >
Co-authored-by: Yi Xiao <54782454+YIXIAO0@users.noreply.github.com >
Co-authored-by: Steven sun <98230804+Tuyohai@users.noreply.github.com >
Co-authored-by: steven <sunzwj@digitalchina.com >
Co-authored-by: Kalo Chin <91766386+fdb02983rhy@users.noreply.github.com >
Co-authored-by: Katy Tao <34019945+KatyTao@users.noreply.github.com >
Co-authored-by: depy <42985524+h4ckdepy@users.noreply.github.com >
Co-authored-by: 胡春东 <gycm520@gmail.com >
Co-authored-by: Junjie.M <118170653@qq.com >
Co-authored-by: MuYu <mr.muzea@gmail.com >
Co-authored-by: Naoki Takashima <39912547+takatea@users.noreply.github.com >
Co-authored-by: Summer-Gu <37869445+gubinjie@users.noreply.github.com >
Co-authored-by: Fei He <droxer.he@gmail.com >
Co-authored-by: ybalbert001 <120714773+ybalbert001@users.noreply.github.com >
Co-authored-by: Yuanbo Li <ybalbert@amazon.com >
Co-authored-by: douxc <7553076+douxc@users.noreply.github.com >
Co-authored-by: liuzhenghua <1090179900@qq.com >
Co-authored-by: Wu Jiayang <62842862+Wu-Jiayang@users.noreply.github.com >
Co-authored-by: Your Name <you@example.com >
Co-authored-by: kimjion <45935338+kimjion@users.noreply.github.com >
Co-authored-by: AugNSo <song.tiankai@icloud.com >
Co-authored-by: llinvokerl <38915183+llinvokerl@users.noreply.github.com >
Co-authored-by: liusurong.lsr <liusurong.lsr@alibaba-inc.com >
Co-authored-by: Vasu Negi <vasu-negi@users.noreply.github.com >
Co-authored-by: Hundredwz <1808096180@qq.com >
Co-authored-by: Xiyuan Chen <52963600+GareArc@users.noreply.github.com >
2025-02-17 17:05:13 +08:00
210926cd91
Fix suggested_question_prompt ( #12738 )
2025-01-20 22:16:30 +08:00
56e15d09a9
feat: mypy for all type check ( #10921 )
2024-12-24 18:38:51 +08:00
810adb8a94
fix: change OutputParserError to inherit from ValueError ( #11935 )
...
Signed-off-by: -LAN- <laipz8200@outlook.com >
2024-12-21 21:21:30 +08:00
9789905a1f
chore(*): Removes debugging print statements ( #11145 )
...
Signed-off-by: -LAN- <laipz8200@outlook.com >
2024-11-26 22:03:19 +08:00
51db59622c
chore(lint): cleanup repeated cause exception in logging.exception replaced by helpful message ( #10425 )
2024-11-15 15:41:40 +08:00
a7ee51e5d8
feat: add code generator ( #9051 )
...
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com >
2024-10-22 21:57:54 +08:00
8cc9e68363
fix: prompt for the follow-up suggestions ( #8685 )
2024-09-23 20:00:34 +08:00