Repository navigation
feat(api): add inner API for enterprise admin app list and detail - #44044
Conversation
Enterprise admin needs a cross-workspace view of Studio-visible apps to assemble its app management pages. Non-built-in environments, their deployment status and invocation metrics stay in enterprise. - GET /inner/api/enterprise/apps: paginated app metadata, workspace and creator, so enterprise can join its environment data by app id. - GET /inner/api/enterprise/apps/<app_id>: adds what only CE owns, the built-in environment's published version, access points (Web App, Service API, MCP, triggers) and its invocations. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Pyrefly Type Coverage
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #44044 +/- ##
==========================================
+ Coverage 88.96% 89.02% +0.06%
==========================================
Files 5305 5352 +47
Lines 326631 332709 +6078
Branches 63844 65823 +1979
==========================================
+ Hits 290576 296191 +5615
- Misses 30862 31324 +462
- Partials 5193 5194 +1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Enterprise generates its inner API client from a spec, so the exporter now also writes inner-openapi.json. @dify/contracts does not consume it; the TS contract pipeline still reads its fixed spec list. The inner API inherited the Service API Bearer scheme in its docs, which would make a generated client send the wrong header. Declare the X-Inner-Api-Key header that every inner endpoint actually checks. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
Publication reporting hides live Agent versions after draft edits, and invocation filtering omits legacy messages.
2 open findings
What changed in this PR
Adds enterprise admin endpoints for cross-workspace Studio app discovery and built-in environment details.
Changes:
- Adds paginated app listing and detail endpoints.
- Exposes publication state, access points, and invocation metrics.
- Adds endpoint tests and shares Agent version-history constants.
| File | Description |
|---|---|
| api/tests/unit_tests/controllers/inner_api/test_schema.py | Registers expected endpoint schemas. |
| api/tests/unit_tests/controllers/inner_api/app/test_app.py | Tests filtering, pagination, and built-in details. |
| api/services/app/enterprise_app_service.py | Defines service contracts and invocation window. |
| api/services/agent/roster_service.py | Reuses shared version-history operations. |
| api/repositories/app/enterprise_app_repository.py | Queries app metadata and built-in state. |
| api/models/agent.py | Defines shared version-history operations. |
| api/extensions/application_services/app.py | Wires the enterprise app service. |
| api/controllers/inner_api/app/app.py | Adds endpoints and response schemas. |
| api/controllers/inner_api/__init__.py | Registers the new controllers. |
🧠 Review effort: Balanced
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
0ab5a0e to
248c82c
Compare
60cb0e1 to
44f2208
Compare
* feat(agent): stream Agent V2 text output in plain runs (langgenius#43986) Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> * refactor(api): read provider configuration cache rows via pydantic (langgenius#44055) * refactor(web): use Select for the Studio app type filter (langgenius#44070) * refactor(web): model app settings with form primitives (langgenius#44073) * fix(dify-ui): show destructive colors on keyboard focus (langgenius#44079) * ci: require TypeBase for new models (langgenius#44087) Co-authored-by: Codex <codex@openai.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * ci: enable Ruff E721 (langgenius#44096) Co-authored-by: Codex <codex@openai.com> * ci: enable Ruff SIM210 (langgenius#44095) Co-authored-by: Codex <codex@openai.com> * fix(web): align API key dialog lifecycle and copy behavior (langgenius#44077) * test(dify-ui): wait for time picker visibility before axe scan (langgenius#44105) * ci: enable Ruff B006 (langgenius#44099) Co-authored-by: Codex <codex@openai.com> * ci: enable Ruff FURB152 (langgenius#44091) Co-authored-by: Codex <codex@openai.com> * ci: enable Ruff E711 (langgenius#44088) Co-authored-by: Codex <codex@openai.com> * fix(knowledge): only batch-enable segments whose indexing completed (langgenius#44017) * fix(nodejs-client): preserve SSE field value whitespace (langgenius#44083) * fix(api): stage hit-testing query log with flush instead of committing caller session (langgenius#44084) * fix(dify-agent): treat a confirmed-missing Home Snapshot as a success on Enterprise delete (langgenius#44085) Co-authored-by: D41910 <d41910@users.noreply.github.com> * fix(nodejs-client): override default headers case-insensitively (langgenius#44090) * fix(nodejs-client): allow empty keyword filters in list APIs (langgenius#44097) * fix(nodejs-client): replace stale user fields in native upload forms (langgenius#44120) * fix(api): accept MCP protocol version 2025-11-25 (langgenius#44066) * fix(api): compare datasource credentials as JSON on MySQL (langgenius#44039) * fix(structured_output): skip reasoning JSON when selecting output (langgenius#44005) Co-authored-by: crazywoola <427733928@qq.com> * ci: enable Ruff E722 (langgenius#44098) Co-authored-by: Codex <codex@openai.com> * ci: enable Ruff UP032 (langgenius#44092) Co-authored-by: Codex <codex@openai.com> * ci: enable Ruff B905 (langgenius#44094) Co-authored-by: Codex <codex@openai.com> * ci: enable Ruff SIM113 (langgenius#44102) Co-authored-by: Codex <codex@openai.com> * fix(deps): upgrade Next.js to 16.4.1 for October security fixes (langgenius#44127) * docs: record overlay ownership and focus lessons (langgenius#44126) * refactor(workflow): use route identity and Console Query for webhook URLs (langgenius#44135) * refactor(workflow): own preview chat requests with Console Query (langgenius#44136) * perf(rag): reduce knowledge retrieval post-processing overhead (langgenius#43665) * fix(api): fix typos in logger warning and docstrings (langgenius#44134) * refactor(api): enable strict typing for enterprise telemetry exporter tests (langgenius#44138) * refactor(api): enable strict typing for prompt transform tests (langgenius#44139) * ci: enable Ruff TID252 (langgenius#44108) Co-authored-by: Codex <codex@openai.com> * ci: enable Ruff B026 (langgenius#44100) Co-authored-by: Codex <codex@openai.com> * ci: enable Ruff SIM103 (langgenius#44110) Co-authored-by: Codex <codex@openai.com> * ci: enable Ruff FURB113 (langgenius#44109) Co-authored-by: Codex <codex@openai.com> * refactor(tools): remove redundant nested cast in MCP tool (langgenius#44132) * refactor(api): use Pydantic to validate crawl cache key (langgenius#44131) * fix(mcp): collect all tool discovery pages (langgenius#43842) * fix(deps): override fflate to 0.7.5 for CVE-2026-45820 (langgenius#44148) * refactor(web): let layouts own viewport height instead of root h-full chain (langgenius#44143) * refactor(web): centralize AppIcon data and Avatar rendering (langgenius#44149) * fix(agent): fail closed on Landlock errors and require local tokens (langgenius#44152) * chore(deps): bump mako from 1.3.12 to 1.4.2 in /api (langgenius#43607) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump multidict from 6.7.0 to 6.9.1 in /api (langgenius#43610) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump fsspec from 2026.3.0 to 2026.6.0 in /dify-agent (langgenius#43606) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump oauthlib from 3.3.1 to 4.0.0 in /api (langgenius#43257) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump pydantic-ai-slim from 2.31.0 to 2.53.0 in /api (langgenius#43725) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * ci: enable Ruff E712 (langgenius#44114) Co-authored-by: Codex <codex@openai.com> * refactor: migrate app tracing queries and harden monitoring configuration (langgenius#44150) * ci: enable Ruff SIM108 (langgenius#44113) Co-authored-by: Codex <codex@openai.com> * refactor(api): remove redundant casts in tencent trace unit tests (langgenius#44158) * fix(api): preserve timestamp ties in message pagination (langgenius#44023) Co-authored-by: mac <mac@macdeMacBook-Pro.local> * fix(web): keep the value selector of a Code node input when regenerating code (langgenius#44075) * fix(e2e): share sandbox auth token across managed runtimes (langgenius#44164) * chore: remove KnowledgeFS and New Knowledge from main (langgenius#44163) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * ci: enable Ruff SIM105 (langgenius#44112) Co-authored-by: Codex <codex@openai.com> * refactor(web): retire the app detail store in favour of the query cache (langgenius#44166) * fix(api): let a removed active member sign in with a re-invite (langgenius#43667) Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com> Co-authored-by: Stream <Stream_2@qq.com> * refactor(web): clarify App modes and scope workflow editor resources (langgenius#44171) * chore: mark generated files as linguist-generated (langgenius#44180) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * feat(api): let agents build, configure and ship Dify apps over openapi (langgenius#43067) * ci: enable Ruff B007 (langgenius#44107) Co-authored-by: Codex <codex@openai.com> * ci: enable Ruff F821 (langgenius#44101) Co-authored-by: Codex <codex@openai.com> * ci: enable Ruff UP007 (langgenius#44106) Co-authored-by: Codex <codex@openai.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * ci: enable Ruff N806 (langgenius#44116) Co-authored-by: Codex <codex@openai.com> * fix: accumulate workflow elapsed time across resumptions (langgenius#44161) * refactor(web): migrate handwritten console API calls to the generated oRPC contract (langgenius#44169) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * chore(deps): bump unstructured from 0.24.0 to 0.24.1 in /dify-agent (langgenius#44189) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(web): normalize collapsible indicator rotation (langgenius#44193) * fix(workflow): generate template-compatible snippet node IDs (langgenius#43838) * fix(api): return protocol errors for unsupported MCP requests (langgenius#44197) * fix(api): align hosted moderation provider validation (langgenius#44200) * feat(api): add inner API for enterprise admin app list and detail (langgenius#44044) Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix(dify-ui): let portal order stack overlays so nested modals block clicks (langgenius#44214) * fix(nodejs-client): collect workflow text_chunk and apply message_replace in toText (langgenius#44177) * fix(rag): preserve newlines in recursive character fallback (langgenius#44179) * refactor(web): remove unnecessary type assertions with a migration-only tsslint rule (langgenius#44219) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * refactor: remove redundant TypeScript type aliases (langgenius#44225) * refactor(web): replace straightforward explicit any types (langgenius#44228) * refactor(dify-ui): give AlertDialog a header part and design defaults (langgenius#44223) Co-authored-by: Claude <noreply@anthropic.com> * refactor(web): remove unnecessary use prefixes (langgenius#44231) * fix(web): clear Storybook and file preview lint suppressions (langgenius#44233) * refactor(web): replace explicit any in test fixtures and mocks (langgenius#44235) * refactor(dify-ui): compose dialogs from the Design Kit anatomy (langgenius#44221) * refactor(web): exercise real frontend behavior in tests (langgenius#44243) * chore(web): prefer vinext for frontend development (langgenius#44246) * chore(contracts): upgrade @hey-api/openapi-ts to 0.99.0 (langgenius#44247) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * refactor(dify-ui): scroll dialog bodies and give AlertDialog a body (langgenius#44248) Signed-off-by: yyh <yuanyouhuilyz@gmail.com> Co-authored-by: Stephen Zhou <hi@hyoban.cc> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(web): align app and agent export feedback (langgenius#44251) * refactor(web): migrate Notion page preview to Console Query (langgenius#44252) * test(web): include untested sources in coverage (langgenius#44254) * test(web): replace low-value suites with behavioral coverage (langgenius#44260) * fix(api): preserve published triggers on draft sync (langgenius#44068) Co-authored-by: mac <mac@macdeMacBook-Pro.local> * fix: don't stringify list values for union-typed MCP tool parameters (langgenius#44182) Co-authored-by: Stream <Stream_2@qq.com> * fix(cli): observe SSE read failures while consumers process events (langgenius#43943) Co-authored-by: huyengiang101086-spec <270684046+huyengiang101086-spec@users.noreply.github.com> * fix(skills): preserve PPTX presentation slide order (langgenius#43893) Co-authored-by: LimbC-C <329404569+LimbC-C@users.noreply.github.com> * fix(dify): retry failed archive deletion instead of reporting success (langgenius#44061) Co-authored-by: Stream <Stream_2@qq.com> * refactor(api): enable strict typing for tasks unit tests (langgenius#44255) * refactor(api): enable strict typing for easy UI app config manager tests (langgenius#44244) * test(web): consolidate suites around real feature behavior (langgenius#44274) * fix(web): separate app dialog group and control labels (langgenius#44261) Co-authored-by: Stephen Zhou <38493346+hyoban@users.noreply.github.com> * fix(ops): bind tracing service accounts to the app workspace (langgenius#44208) * refactor(api): enable strict typing for libs unit tests (langgenius#44276) * refactor(ui): clarify dialog header close button anatomy (langgenius#44283) * fix(plugins): align provider overlays and background update feedback (langgenius#44284) * fix(web): merge parallel tool results into their own agent thoughts (langgenius#43843) Co-authored-by: Stream <Stream_2@qq.com> * test(web): exercise real workflow canvas controls and note actions (langgenius#44287) * test(web): cover node context menu clicks and drop hooks-store facade mocks (langgenius#44288) * fix(web): label the Notion page search field (langgenius#44290) * ci: enable Ruff B903 (langgenius#44117) Co-authored-by: Codex <codex@openai.com> * refactor(web): migrate Mermaid diagrams to Pele (langgenius#44293) * fix(tests): satisfy Ruff B903 for hit-test fake (langgenius#44299) Co-authored-by: mac <mac@macdeMacBook-Pro.local> * refactor(api): enable strict typing for configs unit tests (langgenius#44294) Co-authored-by: Asuka Minato <i@asukaminato.eu.org> * refactor(api): bring vector store provider sources under type checking (langgenius#44237) Co-authored-by: Asuka Minato <i@asukaminato.eu.org> * ci: enable Ruff PT011 (langgenius#44122) Co-authored-by: Codex <codex@openai.com> * ci: enable Ruff E402 (langgenius#44123) Co-authored-by: Codex <codex@openai.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * refactor: migrate Dataset to TypeBase (langgenius#40817) Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Codex <codex@openai.com> * ci: enable Ruff F841 (langgenius#44115) Co-authored-by: Codex <codex@openai.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix: honor RTF Unicode fallback lengths in skill attachments (langgenius#43789) Co-authored-by: LimbC-C <329404569+LimbC-C@users.noreply.github.com> * chore(deps): bump patch and minor pnpm catalog dependencies (langgenius#44319) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * chore(deps): drop unused postcss-selector-parser overrides (langgenius#43292) * fix: preserve DOCX paragraph text in skill attachments (langgenius#43718) Co-authored-by: LimbC-C <329404569+LimbC-C@users.noreply.github.com> * feat(cli): let agents build Dify apps with difyctl and an embedded skill (langgenius#43819) * refactor(api): enable strict typing for easy UI dataset and prompt template tests (langgenius#44320) * fix(api): require a Tencent vector database name and type-check the provider (langgenius#44325) * fix(web): open command menu instantly with a lighter backdrop (langgenius#44330) * fix(cli): serialize token file updates (langgenius#44329) Co-authored-by: mac <mac@macdeMacBook-Pro.local> * fix(web): parse destructured and multi-line main signatures in Code node (langgenius#44046) Co-authored-by: Stream <Stream_2@qq.com> * refactor(web): simplify Mermaid preview layout and interactions (langgenius#44335) * fix(web): stabilize Logs loading and conversation dialogs (langgenius#44338) * fix(web): improve app access point accessibility (langgenius#44220) Co-authored-by: lyzno1 <92089059+lyzno1@users.noreply.github.com> * fix(vdb): restore TiDB on Qdrant full-text query filtering (langgenius#44339) * fix(web): remove redundant plugin permission success toast (langgenius#44342) * fix(web): handle default model form submission feedback (langgenius#44345) * fix(web): save the shown timezone on new schedule trigger nodes (langgenius#43532) * test(web): exercise variable assignment with real workflow stores (langgenius#44349) * fix(api): initialize default LLMs during onboarding (langgenius#44350) * fix: replace str(e) with generic messages in error responses (langgenius#43049) Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * ci: enable Ruff B904 (langgenius#44121) Co-authored-by: Codex <codex@openai.com> Co-authored-by: hjlarry <hjlarry@163.com> * refactor(api): enable strict typing for tool encryption tests (langgenius#44348) * refactor(api): enable strict typing for data source auth tests (langgenius#44347) * refactor(workflow): adopt Graphon 0.8 execution orchestration (langgenius#40277) Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * test(web): verify canvas updates and debounced variable edits (langgenius#44361) * refactor(api): enable strict typing for file fetcher, common controller and app factory tests (langgenius#44379) * refactor(api): enable strict typing for unstructured extractor tests (langgenius#44380) * fix(vdb): balance multi-keyword Qdrant results (langgenius#44352) Co-authored-by: mac <mac@macdeMacBook-Pro.local> * fix(cli): accept BOM-prefixed JSON input (langgenius#44386) Co-authored-by: mac <mac@macdeMacBook-Pro.local> * chore(deps): bump aiohttp from 3.14.3 to 3.14.4 in /api (langgenius#44387) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Yunlu Wen <yunlu.wen@dify.ai> * refactor(api): enable strict typing for remaining libs unit tests (langgenius#44388) * refactor(api): enable strict typing for storage unit tests (langgenius#44389) * feat: add reusable network access group APIs (langgenius#41025) Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: CodingOnStar <hanxujiang@dify.com> Co-authored-by: hjlarry <hjlarry@163.com> Co-authored-by: yyh <92089059+lyzno1@users.noreply.github.com> Co-authored-by: yyh <yuanyouhuilyz@gmail.com> * feat: confirm clearing default models and refresh values on open (langgenius#44354) Co-authored-by: yyh <yuanyouhuilyz@gmail.com> * fix(cli): change local YAML files only through a locked update (langgenius#44375) * chore(i18n): sync translations with en-US (langgenius#44397) Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> * fix: retain model selector focus after clearing defaults (langgenius#44399) * fix(dataset): batch segment and document cleanup with retries (langgenius#38519) Co-authored-by: hjlarry <hjlarry@163.com> * test(web): exercise workflow actions against real stores (langgenius#44381) * fix(web): upgrade TanStack Hotkeys and isolate search commands (langgenius#44401) * fix(web): parse Python Code node parameters with commas (langgenius#44337) Co-authored-by: mac <mac@macdeMacBook-Pro.local> * refactor(tooling): centralize lint and format maintenance (langgenius#44404) * refactor(web): unify app metadata forms and dialog ownership (langgenius#44405) * refactor(tooling): migrate remaining sources to TypeScript (langgenius#44410) * fix(web): improve app deploy accessibility (langgenius#44378) Co-authored-by: yyh <yuanyouhuilyz@gmail.com> * fix(e2e): seed workspace defaults and refresh post-merge filters (langgenius#44412) * chore: add frontend code owner backups and refresh coverage (langgenius#44413) * fix(agent): finalize run as failed when run_started cannot be appended (langgenius#43959) * refactor(web): use generated oRPC query keys (langgenius#44415) * fix: keep archive deletion loading until completion (langgenius#44203) * refactor(web): remove redundant annotation list success toasts (langgenius#44031) * fix(web): apply log annotations to the displayed branch (langgenius#43238) * feat: optimize access token ui (langgenius#44422) * fix(agent): use Redis 6.0-compatible event replay (langgenius#44420) * test(api): isolate Celery initialization app state (langgenius#44433) * refactor(web): migrate console API helpers to generated contracts (langgenius#44430) * refactor(web): query installation bootstrap status (langgenius#44382) * fix(workflow): track human input forms by execution identity (langgenius#42819) * refactor(api): enable strict typing for rate limit test fixtures (langgenius#44391) * refactor(api): enable strict typing for core helper tests (langgenius#44390) * chore(web): guard handwritten requests with native lint rules (langgenius#44436) * fix(nodejs-client): reject streamed API errors in toText (langgenius#44199) Co-authored-by: Stream <Stream_2@qq.com> * fix(cli): load PowerShell module in rate-limit test (langgenius#44439) * fix(api): write built-in document metadata in a single format (langgenius#44218) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Stream <Stream_2@qq.com> * feat(workflow): execute workflow tools as nested containers (langgenius#42820) Co-authored-by: WH-2099 <wh2099@pm.me> * feat(workflow): expose authorized nested tool traces (langgenius#42821) Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * feat(workflow): add nested tool trace drilldown (langgenius#42822) * fix(tracing): exclude called tool internals from external exports (langgenius#42823) * chore(web): replace deprecated third-party APIs (langgenius#44466) * fix(plugin): pin daemon dispatches to package identifiers (langgenius#44396) * fix(web): enforce schema depth limits through nested arrays (langgenius#44295) * feat: network access group add rbac check (langgenius#44464) * fix(api): validate builtin tool credentials outside the create lock (langgenius#44371) Co-authored-by: Stream <Stream_2@qq.com> * fix(trigger): stop leaking internal exception text from webhook 500 responses (langgenius#44395) Co-authored-by: Stream <Stream_2@qq.com> * fix(web): preserve Studio list filters across navigation (langgenius#44429) Co-authored-by: Stream <Stream_2@qq.com> * test(web): wait for goto-anything focus (langgenius#44454) Co-authored-by: mac <mac@macdeMacBook-Pro.local> * test(web): exercise workflow configuration and controls with real stores (langgenius#44471) * test(web): exercise workflow controls and access points through real owners (langgenius#44423) * fix(agent): attribute nested tool activity to its source (langgenius#42824) * fix(cli): respect cancellation during device authorization retries (langgenius#44315) Co-authored-by: huyengiang101086-spec <270684046+huyengiang101086-spec@users.noreply.github.com> * feat(cli): send a folder as one part per file (langgenius#44356) Co-authored-by: yunlu.wen <yunlu.wen@dify.ai> * fix(web): handle autofilled Web App login credentials (langgenius#44474) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(api): handle non-object JSON auth error bodies (langgenius#44470) * refactor: migrate agent models to TypeBase (langgenius#40816) Co-authored-by: Codex <codex@openai.com> * refactor(api): type-check vector store provider unit tests (langgenius#44458) * refactor(api): enable strict typing for utils unit tests (langgenius#44331) * test(web): replace node action mocks with real canvas behavior (langgenius#44495) * fix(web): enforce focus style ownership and simplify invite recipients (langgenius#44504) * fix: improve customization settings accessibility (langgenius#44492) * fix(web): label workspace default model selectors (langgenius#44500) * refactor(ui): split toast stories and align app toaster naming (langgenius#44510) * chore(weaviate): bump bundled Weaviate to 1.39.13 (CVE-2026-111943) (langgenius#44508) * chore: bump Node.js runtime to 24.22.1 (langgenius#44511) * feat(tracing): export Agent app and Workflow Agent execution trees (langgenius#44144) Co-authored-by: yyh <yuanyouhuilyz@gmail.com> * feat(tracing): configure Agent tracing and link workflow runs to traces (langgenius#44186) Co-authored-by: Yansong Zhang <916125788@qq.com> * fix(web): make document metadata panel scrollable (langgenius#43621) * test: split Build exit scenarios to reduce timeout flakiness (langgenius#44519) * chore(web): improve Billing settings accessibility (langgenius#44487) Co-authored-by: yyh <92089059+lyzno1@users.noreply.github.com> * fix(deps): upgrade certifi and pillow (langgenius#44524) * refactor(api): detach console app trigger management (langgenius#44457) * refactor(web): highlight markdown code blocks with @pierre/highlights (langgenius#44522) * fix(api): enforce cloud app quotas on DSL imports (langgenius#44525) * perf(api): skip saved prompts when loading chat history (langgenius#44521) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * chore: improve Members settings accessibility (langgenius#44484) * fix(web): preserve inline agent layout and clarify configure ownership (langgenius#44534) Co-authored-by: hjlarry <hjlarry@163.com> * fix: improve archived logs accessibility (langgenius#44535) Co-authored-by: yyh <yuanyouhuilyz@gmail.com> * fix: improve Preferences accessibility (langgenius#44539) * fix: improve IP Policies accessibility (langgenius#44548) * fix: preserve knowledge sidebar when adding files (langgenius#44552) * fix: improve sort control accessibility and type safety (langgenius#44564) * chore: type-check with tsrs (langgenius#44562) * fix(api): stop leaking Redis result connections from fire-and-forget groups (langgenius#44551) Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix(api): upgrade NLTK to 3.10.4 (langgenius#44581) * feat(agent): edit config prompts through the sandbox CLI (langgenius#44561) * chore: port Document to TypeBase (langgenius#36084) Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Codex <codex@openai.com> * feat: KnowledgeFS and New Knowledge (langgenius#44165) Co-authored-by: Jyong <76649700+JohnJyong@users.noreply.github.com> Co-authored-by: hjlarry <hjlarry@163.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: zhaohao1004 <zhaohao1004@gmail.com> Co-authored-by: yyh <yuanyouhuilyz@gmail.com> Co-authored-by: FFXN <lizy@dify.ai> * refactor: migrate CustomizedSnippet to TypeBase (langgenius#40818) Co-authored-by: Codex <codex@openai.com> * fix(php-sdk): preserve custom API base URL paths (langgenius#44569) * fix(api): combine UTF-16 surrogate pairs in RTF extraction (langgenius#44565) Co-authored-by: jayachandra2003 <jayachandravennam.jc@email.com> * chore(i18n): sync translations with en-US (langgenius#44566) Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> * refactor(ui): align floating positioning with Base UI (langgenius#44588) * chore(i18n): sync translations with en-US (langgenius#44595) Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> * chore(deps): bump certifi from 2026.4.22 to 2026.10.19 in /dify-agent (langgenius#44462) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(web): avoid redundant document enable success toast (langgenius#44594) * test(web): replace workflow owner doubles with real canvas behavior (langgenius#44590) * chore(release): prepare version 1.18.0 (langgenius#44546) * Exclude generated Vercel deployment cache from source checks --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: yyh <yuanyouhuilyz@gmail.com> Co-authored-by: Yunlu Wen <yunlu.wen@dify.ai> Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: gongfpp <1360187968@qq.com> Co-authored-by: yyh <92089059+lyzno1@users.noreply.github.com> Co-authored-by: Asuka Minato <i@asukaminato.eu.org> Co-authored-by: Codex <codex@openai.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: D41910 <158550716+D41910@users.noreply.github.com> Co-authored-by: D41910 <d41910@users.noreply.github.com> Co-authored-by: leilei3167 <imleilei123@gmail.com> Co-authored-by: 非法操作 <hjlarry@163.com> Co-authored-by: Shreyansh Jain <shreyanshjain646@gmail.com> Co-authored-by: crazywoola <427733928@qq.com> Co-authored-by: 呆萌闷油瓶 <253605712@qq.com> Co-authored-by: Power <26699525@qq.com> Co-authored-by: Eddy ZHANG <eddy.zhang24@gmail.com> Co-authored-by: Lokesh Chauhan <lokesh0186@gmail.com> Co-authored-by: Xiyuan Chen <52963600+GareArc@users.noreply.github.com> Co-authored-by: 盐粒 Yanli <yanli@dify.ai> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Azusa010 <m3171470760@gmail.com> Co-authored-by: mika <spacexstarship01@outlook.com> Co-authored-by: mac <mac@macdeMacBook-Pro.local> Co-authored-by: Yueliup <127648758+Yueliup@users.noreply.github.com> Co-authored-by: Stephen Zhou <hi@hyoban.cc> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Matt Van Horn <mvanhorn@users.noreply.github.com> Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com> Co-authored-by: Stream <Stream_2@qq.com> Co-authored-by: 林玮 (Jade Lin) <linw1995@icloud.com> Co-authored-by: xjh <87483213+xiajiahang@users.noreply.github.com> Co-authored-by: Temitope Kadri <147322025+TemitopeKadri@users.noreply.github.com> Co-authored-by: lorenzozane <w2898683706@gmail.com> Co-authored-by: Yann Roberto <165009858+shoyann@users.noreply.github.com> Co-authored-by: David Allada <davidanilallada@gmail.com> Co-authored-by: huyengiang101086-spec <huyengiang101086@gmail.com> Co-authored-by: huyengiang101086-spec <270684046+huyengiang101086-spec@users.noreply.github.com> Co-authored-by: LimbC-C <limbcc2333@gmail.com> Co-authored-by: LimbC-C <329404569+LimbC-C@users.noreply.github.com> Co-authored-by: CRYPTONIKAV <29835619+CRYPTONIKAV@users.noreply.github.com> Co-authored-by: Stephen Zhou <38493346+hyoban@users.noreply.github.com> Co-authored-by: Liu Ziming <liuziming.lzm@alibaba-inc.com> Co-authored-by: Metehan Biçer <metehanbicer006@gmail.com> Co-authored-by: mechmaster20 <srujan.gowni@iitgn.ac.in> Co-authored-by: Denis Ermakov <ide404@gmail.com> Co-authored-by: Wu Tianwei <30284043+WTW0313@users.noreply.github.com> Co-authored-by: Juhyuk choi <246447183+JHC56@users.noreply.github.com> Co-authored-by: -LAN- <laipz8200@outlook.com> Co-authored-by: zyssyz123 <916125788@qq.com> Co-authored-by: CodingOnStar <hanxujiang@dify.com> Co-authored-by: yyh <yuanyouhuilyz@gmail.com> Co-authored-by: Joel <iamjoel007@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Alexey Shabalin <a.shabalin@gmail.com> Co-authored-by: Codada <108800975+Redestiny@users.noreply.github.com> Co-authored-by: wangxiaolei <fatelei@gmail.com> Co-authored-by: 青阳寻雪 <142769065+lulalalual@users.noreply.github.com> Co-authored-by: Tianyu Cai <cai18633758993@gmail.com> Co-authored-by: WH-2099 <wh2099@pm.me> Co-authored-by: Miyar <14232275+gakugaku@users.noreply.github.com> Co-authored-by: xhdnoah <40939515+xhdnoah@users.noreply.github.com> Co-authored-by: Duda Nogueira <dudanogueira@gmail.com> Co-authored-by: zhsama <torvalds@linux.do> Co-authored-by: Mesrop Harutyunyan <104313591+mesrop2008@users.noreply.github.com> Co-authored-by: Takuya <83127305+Takuya-ops@users.noreply.github.com> Co-authored-by: Jyong <76649700+JohnJyong@users.noreply.github.com> Co-authored-by: zhaohao1004 <zhaohao1004@gmail.com> Co-authored-by: FFXN <lizy@dify.ai> Co-authored-by: Winoren <158550716+Winoren@users.noreply.github.com> Co-authored-by: Jaya Chandra Vennam <149901816+jayachandra2003@users.noreply.github.com> Co-authored-by: jayachandra2003 <jayachandravennam.jc@email.com> Co-authored-by: ZengLiangliang <zll21377105@126.com> Co-authored-by: Alec Whitters <alecwhitters@Alecs-MacBook-Pro-26.local>

Enterprise admin needs a cross-workspace view of Studio-visible apps to assemble its app management pages. Non-built-in environments, their deployment status and invocation metrics stay in enterprise.
Generated with Devin
Important
Fixes #<issue number>.Summary
Screenshots
Checklist
make lint && make type-check(backend) andvp staged(frontend) to appease the lint gods