Skip to content

fix(api): preserve timestamp ties in message pagination - #44023

Merged
Stream29 merged 1 commit into
langgenius:mainfrom
mikamikasuki:fix/message-cursor-timestamp-ties-43341
Oct 15, 2026
Merged

Stream29 merged 1 commit into
langgenius:mainfrom
mikamikasuki:fix/message-cursor-timestamp-ties-43341

Conversation

@mikamikasuki

Copy link
Copy Markdown
Contributor

Summary

Use (created_at, id) as a stable cursor and ordering for saved-message and installed-app message pagination. This keeps rows with equal timestamps from disappearing between pages while preserving the current page order.

Fixes #44022

Related: #43341 (the two repository paths fixed here are additional to its listed endpoints).

Validation

  • Both focused regression tests failed on upstream main before the fix; both repository test modules pass after it (35 passed).
  • uv run --project api --no-sync pytest -o addopts='' api/tests/unit_tests/repositories/test_saved_message_repository.py api/tests/unit_tests/repositories/test_installed_app_message_repository.py -q
  • uv run --project api --dev ruff check and ruff format --check on the four changed files.
  • uv run --project api --dev pyrefly check api/repositories/saved_message_repository.py api/repositories/installed_app_message_repository.py (0 diagnostics).
  • git diff --check

Checklist

  • I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!)
  • I've verified the change and added or updated tests where meaningful regression risk justifies coverage.

From Codex

@ghfind-review ghfind-review Bot added the review: high ghfind author score; see https://ghfind.com label Oct 13, 2026
@github-actions github-actions Bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Oct 13, 2026

@Stream29 Stream29 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@github-actions

Copy link
Copy Markdown
Contributor

Pyrefly Diff

base → PR
--- /tmp/pyrefly_base.txt	2026-10-15 10:08:21.959839999 +0000
+++ /tmp/pyrefly_pr.txt	2026-10-15 10:08:12.875722059 +0000
@@ -1280,20 +1280,36 @@
    --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:114:20
 ERROR Argument `Literal['normal']` is not assignable to parameter `status` with type `SQLCoreOperations[TenantStatus] | TenantStatus` in function `models.account.Tenant.__init__` [bad-argument-type]
    --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:124:20
+ERROR Argument `IndexTechniqueType | None` is not assignable to parameter `indexing_technique` with type `str` in function `celery.app.task.Task.__call__` [bad-argument-type]
+   --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:296:32
 ERROR Argument `str | None` is not assignable to parameter `doc_form` with type `str` in function `celery.app.task.Task.__call__` [bad-argument-type]
    --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:299:22
+ERROR Argument `IndexTechniqueType | None` is not assignable to parameter `indexing_technique` with type `str` in function `celery.app.task.Task.__call__` [bad-argument-type]
+   --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:420:32
 ERROR Argument `str | None` is not assignable to parameter `doc_form` with type `str` in function `celery.app.task.Task.__call__` [bad-argument-type]
    --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:423:22
+ERROR Argument `IndexTechniqueType | None` is not assignable to parameter `indexing_technique` with type `str` in function `celery.app.task.Task.__call__` [bad-argument-type]
+   --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:496:36
 ERROR Argument `str | None` is not assignable to parameter `doc_form` with type `str` in function `celery.app.task.Task.__call__` [bad-argument-type]
    --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:499:26
+ERROR Argument `IndexTechniqueType | None` is not assignable to parameter `indexing_technique` with type `str` in function `celery.app.task.Task.__call__` [bad-argument-type]
+   --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:553:32
 ERROR Argument `str | None` is not assignable to parameter `doc_form` with type `str` in function `celery.app.task.Task.__call__` [bad-argument-type]
    --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:556:22
+ERROR Argument `IndexTechniqueType | None` is not assignable to parameter `indexing_technique` with type `str` in function `celery.app.task.Task.__call__` [bad-argument-type]
+   --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:639:36
 ERROR Argument `str | None` is not assignable to parameter `doc_form` with type `str` in function `celery.app.task.Task.__call__` [bad-argument-type]
    --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:642:26
+ERROR Argument `IndexTechniqueType | None` is not assignable to parameter `indexing_technique` with type `str` in function `celery.app.task.Task.__call__` [bad-argument-type]
+   --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:752:32
 ERROR Argument `str | None` is not assignable to parameter `doc_form` with type `str` in function `celery.app.task.Task.__call__` [bad-argument-type]
    --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:755:22
+ERROR Argument `IndexTechniqueType | None` is not assignable to parameter `indexing_technique` with type `str` in function `celery.app.task.Task.__call__` [bad-argument-type]
+   --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:846:32
 ERROR Argument `str | None` is not assignable to parameter `doc_form` with type `str` in function `celery.app.task.Task.__call__` [bad-argument-type]
    --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:849:22
+ERROR Argument `IndexTechniqueType | None` is not assignable to parameter `indexing_technique` with type `str` in function `celery.app.task.Task.__call__` [bad-argument-type]
+    --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:1000:32
 ERROR Argument `str | None` is not assignable to parameter `doc_form` with type `str` in function `celery.app.task.Task.__call__` [bad-argument-type]
     --> tests/test_containers_integration_tests/tasks/test_clean_dataset_task.py:1003:22
 ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
@@ -1607,15 +1623,15 @@
 ERROR `str` is not assignable to dict key `strategy` with type `bool | list[Unknown]` [bad-assignment]
    --> tests/unit_tests/controllers/console/app/test_app_response_models.py:446:34
 ERROR Cannot index into `object` [bad-index]
-   --> tests/unit_tests/controllers/console/app/test_audio.py:133:12
-ERROR Cannot index into `object` [bad-index]
    --> tests/unit_tests/controllers/console/app/test_audio.py:134:12
 ERROR Cannot index into `object` [bad-index]
    --> tests/unit_tests/controllers/console/app/test_audio.py:135:12
 ERROR Cannot index into `object` [bad-index]
-   --> tests/unit_tests/controllers/console/app/test_audio.py:136:21
+   --> tests/unit_tests/controllers/console/app/test_audio.py:136:12
+ERROR Cannot index into `object` [bad-index]
+   --> tests/unit_tests/controllers/console/app/test_audio.py:137:21
 ERROR Cannot index into `object` [bad-index]
-   --> tests/unit_tests/controllers/console/app/test_audio.py:149:17
+   --> tests/unit_tests/controllers/console/app/test_audio.py:150:17
 ERROR Argument `Literal['550e8400-e29b-41d4-a716-446655440000']` is not assignable to parameter `message_id` with type `UUID` in function `controllers.console.app.message._get_message_detail` [bad-argument-type]
    --> tests/unit_tests/controllers/console/app/test_message_api.py:182:20
 ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
@@ -1726,8 +1742,6 @@
    --> tests/unit_tests/controllers/console/workspace/test_endpoint.py:561:46
 ERROR Argument `Literal['team']` is not assignable to parameter `plan` with type `CloudPlan | None` in function `services.workspace.contracts.EffectiveCreditPool.__init__` [bad-argument-type]
    --> tests/unit_tests/controllers/console/workspace/test_model_providers.py:258:18
-ERROR `in` is not supported between `Literal['knowledge-retrieval']` and `object` [not-iterable]
-   --> tests/unit_tests/controllers/console/workspace/test_snippets.py:213:12
 ERROR Missing argument `tenant_model` in function `protected_view` [missing-argument]
    --> tests/unit_tests/controllers/inner_api/plugin/test_plugin_wraps.py:257:40
 ERROR Missing argument `user_model` in function `protected_view` [missing-argument]
@@ -2149,79 +2163,89 @@
 ERROR `in` is not supported between `Literal['Question: What is Python?']` and `None` [not-iterable]
    --> tests/unit_tests/core/agent/test_cot_completion_agent_runner.py:180:16
 ERROR `Literal[0]` is not assignable to attribute `prompt_price` with type `Decimal` [bad-assignment]
-  --> tests/unit_tests/core/agent/test_fc_agent_runner.py:49:26
+  --> tests/unit_tests/core/agent/test_fc_agent_runner.py:43:26
 ERROR `Literal[0]` is not assignable to attribute `completion_price` with type `Decimal` [bad-assignment]
-  --> tests/unit_tests/core/agent/test_fc_agent_runner.py:50:30
+  --> tests/unit_tests/core/agent/test_fc_agent_runner.py:44:30
 ERROR `Literal[0]` is not assignable to attribute `total_price` with type `Decimal` [bad-assignment]
-  --> tests/unit_tests/core/agent/test_fc_agent_runner.py:51:25
+  --> tests/unit_tests/core/agent/test_fc_agent_runner.py:45:25
 ERROR Missing argument `session` in function `core.agent.base_agent_runner.BaseAgentRunner.__init__` [missing-argument]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:190:37
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:145:37
 ERROR Object of class `FunctionCallAgentRunner` has no attribute `session` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:222:5
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:177:5
 ERROR Object of class `FunctionCallAgentRunner` has no attribute `session` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:233:9
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:188:9
+ERROR Argument `DummyChunk` is not assignable to parameter `llm_result_chunk` with type `LLMResultChunk` in function `core.agent.fc_agent_runner.FunctionCallAgentRunner.check_tool_calls` [bad-argument-type]
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:200:40
+ERROR Argument `DummyResult` is not assignable to parameter `llm_result` with type `LLMResult` in function `core.agent.fc_agent_runner.FunctionCallAgentRunner.check_blocking_tool_calls` [bad-argument-type]
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:205:49
+ERROR Argument `DummyChunk` is not assignable to parameter `llm_result_chunk` with type `LLMResultChunk` in function `core.agent.fc_agent_runner.FunctionCallAgentRunner.extract_tool_calls` [bad-argument-type]
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:221:43
+ERROR Argument `DummyChunk` is not assignable to parameter `llm_result_chunk` with type `LLMResultChunk` in function `core.agent.fc_agent_runner.FunctionCallAgentRunner.extract_tool_calls` [bad-argument-type]
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:232:43
+ERROR Argument `DummyResult` is not assignable to parameter `llm_result` with type `LLMResult` in function `core.agent.fc_agent_runner.FunctionCallAgentRunner.extract_blocking_tool_calls` [bad-argument-type]
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:243:52
 ERROR Argument `None` is not assignable to parameter `query` with type `str` in function `core.agent.fc_agent_runner.FunctionCallAgentRunner._organize_user_query` [bad-argument-type]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:334:46
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:279:46
 ERROR Object of class `FunctionCallAgentRunner` has no attribute `session` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:402:58
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:354:58
 ERROR Object of class `FunctionCallAgentRunner` has no attribute `session` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:450:19
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:402:19
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:507:9
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:459:9
 ERROR Object of class `FunctionCallAgentRunner` has no attribute `session` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:509:35
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:461:35
 ERROR Object of class `FunctionType` has no attribute `call_args` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:511:33
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:463:33
 ERROR Object of class `FunctionType` has no attribute `call_args` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:512:33
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:464:33
 ERROR Object of class `FunctionType` has no attribute `call_args` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:513:16
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:465:16
 ERROR Object of class `FunctionType` has no attribute `assert_called` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:518:9
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:470:9
 ERROR Object of class `FunctionType` has no attribute `call_args_list` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:520:23
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:472:23
 ERROR Object of class `FunctionCallAgentRunner` has no attribute `session` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:526:19
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:478:19
 ERROR Argument `list[TextPromptMessageContent]` is not assignable to parameter `content` with type `str | None` in function `DummyMessage.__init__` [bad-argument-type]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:543:57
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:495:57
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:549:9
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:501:9
 ERROR Argument `list[TextPromptMessageContent]` is not assignable to parameter `content` with type `str | None` in function `DummyMessage.__init__` [bad-argument-type]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:565:57
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:517:57
 ERROR Object of class `FunctionType` has no attribute `side_effect` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:573:9
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:525:9
 ERROR Object of class `FunctionCallAgentRunner` has no attribute `session` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:575:35
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:527:35
 ERROR Argument `list[TextPromptMessageContent]` is not assignable to parameter `content` with type `str | None` in function `DummyMessage.__init__` [bad-argument-type]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:581:46
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:533:46
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:584:9
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:536:9
 ERROR Object of class `FunctionCallAgentRunner` has no attribute `session` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:586:35
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:538:35
 ERROR Object of class `FunctionType` has no attribute `call_args` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:588:16
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:540:16
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:604:9
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:556:9
 ERROR Object of class `FunctionCallAgentRunner` has no attribute `session` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:615:35
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:567:35
 ERROR Object of class `FunctionType` has no attribute `side_effect` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:631:9
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:583:9
 ERROR Object of class `FunctionCallAgentRunner` has no attribute `session` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:633:35
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:585:35
 ERROR Object of class `FunctionType` has no attribute `side_effect` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:648:9
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:600:9
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:653:9
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:605:9
 ERROR Object of class `FunctionCallAgentRunner` has no attribute `session` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:662:35
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:614:35
 ERROR Object of class `FunctionType` has no attribute `call_args_list` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:668:25
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:620:25
 ERROR Object of class `NoneType` has no attribute `max_iteration` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:672:9
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:624:9
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:684:9
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:636:9
 ERROR Object of class `FunctionCallAgentRunner` has no attribute `session` [missing-attribute]
-   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:687:29
+   --> tests/unit_tests/core/agent/test_fc_agent_runner.py:639:29
 ERROR Missing argument `description` in function `core.agent.plugin_entities.AgentStrategyEntity.__init__` [missing-argument]
    --> tests/unit_tests/core/agent/test_plugin_entities.py:292:32
 ERROR Argument `dict[str, dict[str, str]]` is not assignable to parameter `config` with type `AppModelConfigDict` in function `core.app.app_config.easy_ui_based_app.agent.manager.AgentConfigManager.convert` [bad-argument-type]
@@ -2626,6 +2650,36 @@
    --> tests/unit_tests/core/app/apps/agent_app/test_runtime_request_builder.py:688:16
 ERROR Object of class `NoneType` has no attribute `writable` [missing-attribute]
    --> tests/unit_tests/core/app/apps/agent_app/test_runtime_request_builder.py:689:16
+ERROR Argument `dict[str, dict[str, str]]` is not assignable to parameter `override_config_dict` with type `AppModelConfigDict | None` in function `core.app.apps.agent_chat.app_config_manager.AgentChatAppConfigManager.get_app_config` [bad-argument-type]
+  --> tests/unit_tests/core/app/apps/agent_chat/test_agent_chat_app_config_manager.py:86:34
+ERROR Argument `dict[str, bool]` is not assignable to parameter `annotation_reply` with type `AnnotationReplyDisabledConfig | AnnotationReplyEnabledConfig | None` in function `core.app.apps.agent_chat.app_config_manager.AgentChatAppConfigManager.get_app_config` [bad-argument-type]
+   --> tests/unit_tests/core/app/apps/agent_chat/test_agent_chat_app_config_manager.py:126:30
+ERROR Argument `dict[str, bool]` is not assignable to parameter `annotation_reply` with type `AnnotationReplyDisabledConfig | AnnotationReplyEnabledConfig | None` in function `core.app.apps.agent_chat.app_config_manager.AgentChatAppConfigManager.get_app_config` [bad-argument-type]
+   --> tests/unit_tests/core/app/apps/agent_chat/test_agent_chat_app_config_manager.py:163:30
+ERROR Class member `RecordingQueueManager.publish_error` overrides parent class `MessageBasedAppQueueManager` in an inconsistent manner [bad-override-param-name]
+  --> tests/unit_tests/core/app/apps/agent_chat/test_agent_chat_app_generator.py:65:9
+ERROR Class member `RecordingQueueManager.publish_error` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
+  --> tests/unit_tests/core/app/apps/agent_chat/test_agent_chat_app_generator.py:65:9
+ERROR Class member `RecordingThread.start` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
+  --> tests/unit_tests/core/app/apps/agent_chat/test_agent_chat_app_generator.py:75:9
+ERROR Class member `FailingRunner.run` overrides parent class `AgentChatAppRunner` in an inconsistent manner [bad-override]
+   --> tests/unit_tests/core/app/apps/agent_chat/test_agent_chat_app_generator.py:123:13
+ERROR Class member `FailingRunner.run` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
+   --> tests/unit_tests/core/app/apps/agent_chat/test_agent_chat_app_generator.py:123:13
+ERROR No matching overload found for function `core.app.apps.agent_chat.app_generator.AgentChatAppGenerator.generate` called with arguments: (session=Session, app_model=App, user=Account, args=dict[str, dict[@_, @_]], invoke_from=Literal[InvokeFrom.WEB_APP]) [no-matching-overload]
+   --> tests/unit_tests/core/app/apps/agent_chat/test_agent_chat_app_generator.py:217:31
+ERROR No matching overload found for function `core.app.apps.agent_chat.app_generator.AgentChatAppGenerator.generate` called with arguments: (session=Session, app_model=App, user=Account, args=dict[str, dict[@_, @_] | int], invoke_from=Literal[InvokeFrom.WEB_APP]) [no-matching-overload]
+   --> tests/unit_tests/core/app/apps/agent_chat/test_agent_chat_app_generator.py:229:31
+ERROR No matching overload found for function `core.app.apps.agent_chat.app_generator.AgentChatAppGenerator.generate` called with arguments: (session=Session, app_model=App, user=Account, args=dict[str, dict[@_, @_] | str | dict[str, dict[str, str]]], invoke_from=Literal[InvokeFrom.WEB_APP]) [no-matching-overload]
+   --> tests/unit_tests/core/app/apps/agent_chat/test_agent_chat_app_generator.py:245:31
+ERROR Argument `object` is not assignable to parameter `obj` with type `(...) -> Any` in function `inspect.signature` [bad-argument-type]
+   --> tests/unit_tests/core/app/apps/agent_chat/test_agent_chat_app_generator.py:325:27
+ERROR Object of class `FunctionType` has no attribute `assert_called_once` [missing-attribute]
+   --> tests/unit_tests/core/app/apps/agent_chat/test_agent_chat_app_runner.py:121:9
+ERROR Object of class `FunctionType` has no attribute `assert_called_once` [missing-attribute]
+   --> tests/unit_tests/core/app/apps/agent_chat/test_agent_chat_app_runner.py:158:9
+ERROR Object of class `FunctionType` has no attribute `assert_called_once` [missing-attribute]
+   --> tests/unit_tests/core/app/apps/agent_chat/test_agent_chat_app_runner.py:290:9
 ERROR Cannot index into `str` [bad-index]
    --> tests/unit_tests/core/app/apps/agent_chat/test_agent_chat_generate_response_converter.py:158:16
 ERROR Cannot index into `str` [bad-index]
@@ -2692,6 +2746,14 @@
   --> tests/unit_tests/core/app/apps/common/test_workflow_response_converter_resumption.py:33:37
 ERROR Object of class `NoneType` has no attribute `data` [missing-attribute]
    --> tests/unit_tests/core/app/apps/common/test_workflow_response_converter_truncation.py:593:16
+ERROR Class member `RecordingDatasetRetrieval.retrieve` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
+  --> tests/unit_tests/core/app/apps/completion/test_app_runner.py:88:9
+ERROR Class member `RecordingModelInstance.invoke_llm` overrides parent class `ModelInstance` in an inconsistent manner [bad-override]
+  --> tests/unit_tests/core/app/apps/completion/test_app_runner.py:99:9
+ERROR Class member `RecordingModelInstance.invoke_llm` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
+  --> tests/unit_tests/core/app/apps/completion/test_app_runner.py:99:9
+ERROR Class member `RecordingModelManager.get_model_instance` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
+   --> tests/unit_tests/core/app/apps/completion/test_app_runner.py:111:9
 ERROR Argument `dict[str, dict[str, str]]` is not assignable to parameter `override_config_dict` with type `AppModelConfigDict | None` in function `core.app.apps.completion.app_config_manager.CompletionAppConfigManager.get_app_config` [bad-argument-type]
   --> tests/unit_tests/core/app/apps/completion/test_completion_app_config_manager.py:47:34
 ERROR Argument `dict[str, bool]` is not assignable to parameter `annotation_reply` with type `AnnotationReplyDisabledConfig | AnnotationReplyEnabledConfig | None` in function `core.app.apps.completion.app_config_manager.CompletionAppConfigManager.get_app_config` [bad-argument-type]
@@ -3266,6 +3328,48 @@
    --> tests/unit_tests/core/datasource/entities/test_datasource_entities.py:268:12
 ERROR Object of type `ToolInvokeMessage.BlobChunkMessage | ToolInvokeMessage.BlobMessage | ToolInvokeMessage.FileMessage | ToolInvokeMessage.JsonMessage | ToolInvokeMessage.LogMessage | ToolInvokeMessage.RetrieverResourceMessage | ToolInvokeMessage.TextMessage | ToolInvokeMessage.VariableMessage | None` has no attribute `json_object` [missing-attribute]
    --> tests/unit_tests/core/datasource/entities/test_datasource_entities.py:271:12
+ERROR Argument `Literal['image']` is not assignable to parameter `type` with type `FileType | SQLCoreOperations[FileType]` in function `models.model.MessageFile.__init__` [bad-argument-type]
+  --> tests/unit_tests/core/datasource/test_datasource_file_manager.py:46:14
+ERROR Argument `Literal['remote_url']` is not assignable to parameter `transfer_method` with type `FileTransferMethod | SQLCoreOperations[FileTransferMethod]` in function `models.model.MessageFile.__init__` [bad-argument-type]
+  --> tests/unit_tests/core/datasource/test_datasource_file_manager.py:47:25
+ERROR Argument `Generator[Unknown] | None` is not assignable to parameter `iterable` with type `Iterable[Unknown]` in function `list.__init__` [bad-argument-type]
+   --> tests/unit_tests/core/datasource/test_datasource_file_manager.py:322:21
+ERROR Object of class `FunctionType` has no attribute `assert_called_once` [missing-attribute]
+   --> tests/unit_tests/core/datasource/test_datasource_manager.py:163:5
+ERROR Argument `Literal['unsupported']` is not assignable to parameter `datasource_type` with type `DatasourceProviderType` in function `core.datasource.datasource_manager.DatasourceManager.get_datasource_plugin_provider` [bad-argument-type]
+   --> tests/unit_tests/core/datasource/test_datasource_manager.py:254:29
+ERROR Argument `GetOnlineDocumentPageContentRequest` is not assignable to parameter `datasource_param` with type `DatasourceParameter | None` in function `core.datasource.datasource_manager.DatasourceManager.stream_online_results` [bad-argument-type]
+   --> tests/unit_tests/core/datasource/test_datasource_manager.py:292:26
+ERROR Object of type `ToolInvokeMessage.BlobChunkMessage | ToolInvokeMessage.BlobMessage | ToolInvokeMessage.FileMessage | ToolInvokeMessage.JsonMessage | ToolInvokeMessage.LogMessage | ToolInvokeMessage.RetrieverResourceMessage | ToolInvokeMessage.TextMessage | ToolInvokeMessage.VariableMessage | None` has no attribute `text` [missing-attribute]
+   --> tests/unit_tests/core/datasource/test_datasource_manager.py:298:12
+ERROR Argument `GetOnlineDocumentPageContentRequest` is not assignable to parameter `datasource_param` with type `DatasourceParameter | None` in function `core.datasource.datasource_manager.DatasourceManager.stream_online_results` [bad-argument-type]
+   --> tests/unit_tests/core/datasource/test_datasource_manager.py:318:26
+ERROR Object of type `ToolInvokeMessage.BlobChunkMessage | ToolInvokeMessage.BlobMessage | ToolInvokeMessage.FileMessage | ToolInvokeMessage.JsonMessage | ToolInvokeMessage.LogMessage | ToolInvokeMessage.RetrieverResourceMessage | ToolInvokeMessage.TextMessage | ToolInvokeMessage.VariableMessage | None` has no attribute `text` [missing-attribute]
+   --> tests/unit_tests/core/datasource/test_datasource_manager.py:325:13
+ERROR Argument `OnlineDriveDownloadFileRequest` is not assignable to parameter `online_drive_request` with type `OnlineDriveDownloadFileParam | None` in function `core.datasource.datasource_manager.DatasourceManager.stream_online_results` [bad-argument-type]
+   --> tests/unit_tests/core/datasource/test_datasource_manager.py:385:30
+ERROR Object of type `ToolInvokeMessage.BlobChunkMessage | ToolInvokeMessage.BlobMessage | ToolInvokeMessage.FileMessage | ToolInvokeMessage.JsonMessage | ToolInvokeMessage.LogMessage | ToolInvokeMessage.RetrieverResourceMessage | ToolInvokeMessage.TextMessage | ToolInvokeMessage.VariableMessage | None` has no attribute `text` [missing-attribute]
+   --> tests/unit_tests/core/datasource/test_datasource_manager.py:391:13
+ERROR Argument `GetOnlineDocumentPageContentRequest` is not assignable to parameter `datasource_param` with type `DatasourceParameter | None` in function `core.datasource.datasource_manager.DatasourceManager.stream_node_events` [bad-argument-type]
+   --> tests/unit_tests/core/datasource/test_datasource_manager.py:432:30
+ERROR Argument `GetOnlineDocumentPageContentRequest` is not assignable to parameter `datasource_param` with type `DatasourceParameter | None` in function `core.datasource.datasource_manager.DatasourceManager.stream_node_events` [bad-argument-type]
+   --> tests/unit_tests/core/datasource/test_datasource_manager.py:517:30
+ERROR Argument `GetOnlineDocumentPageContentRequest` is not assignable to parameter `datasource_param` with type `DatasourceParameter | None` in function `core.datasource.datasource_manager.DatasourceManager.stream_node_events` [bad-argument-type]
+   --> tests/unit_tests/core/datasource/test_datasource_manager.py:566:34
+ERROR Argument `OnlineDriveDownloadFileRequest` is not assignable to parameter `online_drive_request` with type `OnlineDriveDownloadFileParam | None` in function `core.datasource.datasource_manager.DatasourceManager.stream_node_events` [bad-argument-type]
+   --> tests/unit_tests/core/datasource/test_datasource_manager.py:610:34
+ERROR Object of class `NoneType` has no attribute `storage_key` [missing-attribute]
+   --> tests/unit_tests/core/datasource/test_datasource_manager.py:669:12
+ERROR Argument `list[FromClause]` is not assignable to parameter `tables` with type `Sequence[Table] | None` in function `sqlalchemy.sql.schema.MetaData.create_all` [bad-argument-type]
+  --> tests/unit_tests/core/datasource/test_notion_provider.py:51:56
+ERROR Argument `Document` is not assignable to parameter `document_model` with type `StoredDocumentExtractionInput | None` in function `core.rag.extractor.notion_extractor.NotionExtractor.update_last_edited_time` [bad-argument-type]
+   --> tests/unit_tests/core/datasource/test_notion_provider.py:844:48
+ERROR Argument `Document` is not assignable to parameter `document_model` with type `StoredDocumentExtractionInput | None` in function `core.rag.extractor.notion_extractor.NotionExtractor.__init__` [bad-argument-type]
+   --> tests/unit_tests/core/datasource/test_notion_provider.py:886:28
+ERROR Argument `Document` is not assignable to parameter `document_model` with type `StoredDocumentExtractionInput | None` in function `core.rag.extractor.notion_extractor.NotionExtractor.__init__` [bad-argument-type]
+   --> tests/unit_tests/core/datasource/test_notion_provider.py:957:28
+ERROR `in` is not supported between `Literal['Single Page']` and `None` [not-iterable]
+    --> tests/unit_tests/core/datasource/test_website_crawl.py:1009:16
 ERROR `None` is not subscriptable [unsupported-operation]
    --> tests/unit_tests/core/entities/test_entities_provider_configuration.py:622:12
 ERROR Could not find name `Mock` [unknown-name]
@@ -3295,11 +3399,11 @@
 ERROR Argument `list[@_]` is not assignable to parameter `schema` with type `dict[str, Any]` in function `core.llm_generator.output_parser.structured_output.convert_boolean_to_string` [bad-argument-type]
    --> tests/unit_tests/core/llm_generator/output_parser/test_structured_output.py:101:35
 ERROR `in` is not supported between `Literal['Existing system prompt']` and `None` [not-iterable]
-   --> tests/unit_tests/core/llm_generator/output_parser/test_structured_output.py:281:16
+   --> tests/unit_tests/core/llm_generator/output_parser/test_structured_output.py:221:16
 ERROR `in` is not supported between `str` and `None` [not-iterable]
-   --> tests/unit_tests/core/llm_generator/output_parser/test_structured_output.py:282:16
+   --> tests/unit_tests/core/llm_generator/output_parser/test_structured_output.py:222:16
 ERROR `in` is not supported between `str` and `None` [not-iterable]
-   --> tests/unit_tests/core/llm_generator/output_parser/test_structured_output.py:293:16
+   --> tests/unit_tests/core/llm_generator/output_parser/test_structured_output.py:233:16
 ERROR Argument `() -> Session` is not assignable to parameter `session_factory` with type `sessionmaker[@_]` in function `sqlalchemy.orm.scoping.scoped_session.__init__` [bad-argument-type]
   --> tests/unit_tests/core/llm_generator/test_llm_generator.py:43:31
 ERROR Object of class `NoneType` has no attribute `split` [missing-attribute]
@@ -3598,6 +3702,10 @@
    --> tests/unit_tests/core/plugin/test_plugin_runtime.py:439:20
 ERROR `in` is not supported between `Literal['Service temporarily unavailable']` and `None` [not-iterable]
    --> tests/unit_tests/core/plugin/test_plugin_runtime.py:456:20
+ERROR Argument `list[SystemPromptMessage | UserPromptMessage]` is not assignable to parameter `prompt_messages` with type `list[PromptMessage]` in function `core.prompt.agent_history_prompt_transform.AgentHistoryPromptTransform.__init__` [bad-argument-type]
+  --> tests/unit_tests/core/prompt/test_agent_history_prompt_transform.py:47:25
+ERROR Argument `list[AssistantPromptMessage | SystemPromptMessage | ToolPromptMessage | UserPromptMessage]` is not assignable to parameter `history_messages` with type `list[PromptMessage]` in function `core.prompt.agent_history_prompt_transform.AgentHistoryPromptTransform.__init__` [bad-argument-type]
+  --> tests/unit_tests/core/prompt/test_agent_history_prompt_transform.py:48:26
 ERROR Argument `list[MockMessage]` is not assignable to parameter `messages` with type `Sequence[Message]` in function `core.prompt.utils.extract_thread_messages.extract_thread_messages` [bad-argument-type]
   --> tests/unit_tests/core/prompt/test_extract_thread_messages.py:54:38
 ERROR Argument `list[MockMessage]` is not assignable to parameter `messages` with type `Sequence[Message]` in function `core.prompt.utils.extract_thread_messages.extract_thread_messages` [bad-argument-type]
@@ -3622,6 +3730,14 @@
    --> tests/unit_tests/core/prompt/test_extract_thread_messages.py:127:13
 ERROR Argument `list[MockMessage]` is not assignable to parameter `messages` with type `Sequence[Message]` in function `core.prompt.utils.extract_thread_messages.extract_thread_messages` [bad-argument-type]
    --> tests/unit_tests/core/prompt/test_extract_thread_messages.py:134:38
+ERROR Argument `list[UserPromptMessage]` is not assignable to parameter `prompt_messages` with type `list[PromptMessage]` in function `core.prompt.prompt_transform.PromptTransform._calculate_rest_token` [bad-argument-type]
+   --> tests/unit_tests/core/prompt/test_prompt_transform.py:135:48
+ERROR Argument `list[UserPromptMessage]` is not assignable to parameter `prompt_messages` with type `list[PromptMessage]` in function `core.prompt.prompt_transform.PromptTransform._append_chat_histories` [bad-argument-type]
+   --> tests/unit_tests/core/prompt/test_prompt_transform.py:221:29
+ERROR `Literal[1]` is not assignable to dict value type `str` [bad-assignment]
+   --> tests/unit_tests/core/prompt/test_simple_prompt_transform.py:218:22
+ERROR `Literal[1]` is not assignable to dict value type `str` [bad-assignment]
+   --> tests/unit_tests/core/prompt/test_simple_prompt_transform.py:231:22
 ERROR Argument `dict[str, str]` is not assignable to parameter `reranking_model` with type `RerankingModelDict | None` in function `core.rag.data_post_processor.data_post_processor.DataPostProcessor.__init__` [bad-argument-type]
   --> tests/unit_tests/core/rag/data_post_processor/test_data_post_processor.py:28:37
 ERROR Argument `dict[str, str]` is not assignable to parameter `weights` with type `WeightsDict | None` in function `core.rag.data_post_processor.data_post_processor.DataPostProcessor.__init__` [bad-argument-type]
@@ -3653,35 +3769,35 @@
 ERROR Object of class `NoneType` has no attribute `indexing_status` [missing-attribute]
    --> tests/unit_tests/core/rag/indexing/test_index_processor.py:237:16
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1270:9
+    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1213:9
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1327:9
+    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1270:9
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1375:9
+    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1318:9
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1422:9
+    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1365:9
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1458:9
+    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1401:9
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1492:9
+    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1435:9
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1535:9
+    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1478:9
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1569:9
+    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1512:9
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1662:9
+    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1604:9
 ERROR Object of class `FunctionType` has no attribute `assert_called_once` [missing-attribute]
-    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1679:9
+    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1621:9
 ERROR Object of class `FunctionType` has no attribute `call_args` [missing-attribute]
-    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1680:16
+    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1622:16
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1707:9
+    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1649:9
 ERROR Object of class `FunctionType` has no attribute `call_count` [missing-attribute]
-    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1724:16
+    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1666:16
 ERROR Object of class `FunctionType` has no attribute `side_effect` [missing-attribute]
-    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1814:9
+    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1755:9
 ERROR Object of class `FunctionType` has no attribute `return_value` [missing-attribute]
-    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1847:9
+    --> tests/unit_tests/core/rag/rerank/test_reranker.py:1788:9
 ERROR Argument `_FakeFlaskApp` is not assignable to parameter `flask_app` with type `Flask` in function `core.rag.retrieval.dataset_retrieval.DatasetRetrieval._run_retriever_thread` [bad-argument-type]
     --> tests/unit_tests/core/rag/retrieval/test_dataset_retrieval.py:3754:27
 ERROR Argument `_FakeFlaskApp` is not assignable to parameter `flask_app` with type `Flask` in function `core.rag.retrieval.dataset_retrieval.DatasetRetrieval._run_retriever_thread_safely` [bad-argument-type]
@@ -3762,6 +3878,286 @@
    --> tests/unit_tests/core/repositories/test_sqlalchemy_workflow_execution_repository.py:301:33
 ERROR `None` is not assignable to attribute `_creator_user_role` with type `CreatorUserRole` [bad-assignment]
    --> tests/unit_tests/core/repositories/test_sqlalchemy_workflow_execution_repository.py:306:35
+ERROR Cannot index into `bool` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:42:16
+ERROR Cannot index into `float` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:42:16
+ERROR Cannot index into `int` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:42:16
+ERROR Cannot index into `list[Any]` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:42:16
+ERROR Cannot index into `str` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:42:16
+ERROR `None` is not subscriptable [unsupported-operation]
+  --> tests/unit_tests/core/schemas/test_resolver.py:42:16
+ERROR Cannot index into `bool` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:43:16
+ERROR Cannot index into `float` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:43:16
+ERROR Cannot index into `int` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:43:16
+ERROR Cannot index into `list[Any]` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:43:16
+ERROR Cannot index into `str` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:43:16
+ERROR `None` is not subscriptable [unsupported-operation]
+  --> tests/unit_tests/core/schemas/test_resolver.py:43:16
+ERROR Cannot index into `bool` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:44:31
+ERROR Cannot index into `float` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:44:31
+ERROR Cannot index into `int` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:44:31
+ERROR Cannot index into `list[Any]` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:44:31
+ERROR Cannot index into `str` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:44:31
+ERROR `None` is not subscriptable [unsupported-operation]
+  --> tests/unit_tests/core/schemas/test_resolver.py:44:31
+ERROR `not in` is not supported between `Literal['$id']` and `bool` [not-iterable]
+  --> tests/unit_tests/core/schemas/test_resolver.py:48:16
+ERROR `not in` is not supported between `Literal['$id']` and `float` [not-iterable]
+  --> tests/unit_tests/core/schemas/test_resolver.py:48:16
+ERROR `not in` is not supported between `Literal['$id']` and `int` [not-iterable]
+  --> tests/unit_tests/core/schemas/test_resolver.py:48:16
+ERROR `not in` is not supported between `Literal['$id']` and `None` [not-iterable]
+  --> tests/unit_tests/core/schemas/test_resolver.py:48:16
+ERROR `not in` is not supported between `Literal['$schema']` and `bool` [not-iterable]
+  --> tests/unit_tests/core/schemas/test_resolver.py:49:16
+ERROR `not in` is not supported between `Literal['$schema']` and `float` [not-iterable]
+  --> tests/unit_tests/core/schemas/test_resolver.py:49:16
+ERROR `not in` is not supported between `Literal['$schema']` and `int` [not-iterable]
+  --> tests/unit_tests/core/schemas/test_resolver.py:49:16
+ERROR `not in` is not supported between `Literal['$schema']` and `None` [not-iterable]
+  --> tests/unit_tests/core/schemas/test_resolver.py:49:16
+ERROR `not in` is not supported between `Literal['version']` and `bool` [not-iterable]
+  --> tests/unit_tests/core/schemas/test_resolver.py:50:16
+ERROR `not in` is not supported between `Literal['version']` and `float` [not-iterable]
+  --> tests/unit_tests/core/schemas/test_resolver.py:50:16
+ERROR `not in` is not supported between `Literal['version']` and `int` [not-iterable]
+  --> tests/unit_tests/core/schemas/test_resolver.py:50:16
+ERROR `not in` is not supported between `Literal['version']` and `None` [not-iterable]
+  --> tests/unit_tests/core/schemas/test_resolver.py:50:16
+ERROR Cannot index into `bool` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:65:16
+ERROR Cannot index into `float` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:65:16
+ERROR Cannot index into `int` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:65:16
+ERROR Cannot index into `list[Any]` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:65:16
+ERROR Cannot index into `str` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:65:16
+ERROR `None` is not subscriptable [unsupported-operation]
+  --> tests/unit_tests/core/schemas/test_resolver.py:65:16
+ERROR Cannot index into `bool` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:66:30
+ERROR Cannot index into `float` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:66:30
+ERROR Cannot index into `int` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:66:30
+ERROR Cannot index into `list[Any]` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:66:30
+ERROR Cannot index into `str` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:66:30
+ERROR `None` is not subscriptable [unsupported-operation]
+  --> tests/unit_tests/core/schemas/test_resolver.py:66:30
+ERROR Cannot index into `bool` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:91:16
+ERROR Cannot index into `float` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:91:16
+ERROR Cannot index into `int` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:91:16
+ERROR Cannot index into `list[Any]` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:91:16
+ERROR Cannot index into `str` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:91:16
+ERROR `None` is not subscriptable [unsupported-operation]
+  --> tests/unit_tests/core/schemas/test_resolver.py:91:16
+ERROR Cannot index into `bool` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:92:16
+ERROR Cannot index into `float` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:92:16
+ERROR Cannot index into `int` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:92:16
+ERROR Cannot index into `list[Any]` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:92:16
+ERROR Cannot index into `str` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:92:16
+ERROR `None` is not subscriptable [unsupported-operation]
+  --> tests/unit_tests/core/schemas/test_resolver.py:92:16
+ERROR Cannot index into `bool` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:95:24
+ERROR Cannot index into `float` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:95:24
+ERROR Cannot index into `int` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:95:24
+ERROR Cannot index into `list[Any]` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:95:24
+ERROR Cannot index into `str` [bad-index]
+  --> tests/unit_tests/core/schemas/test_resolver.py:95:24
+ERROR `None` is not subscriptable [unsupported-operation]
+  --> tests/unit_tests/core/schemas/test_resolver.py:95:24
+ERROR Cannot index into `bool` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:112:16
+ERROR Cannot index into `float` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:112:16
+ERROR Cannot index into `int` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:112:16
+ERROR Cannot index into `list[Any]` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:112:16
+ERROR Cannot index into `str` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:112:16
+ERROR `None` is not subscriptable [unsupported-operation]
+   --> tests/unit_tests/core/schemas/test_resolver.py:112:16
+ERROR Cannot index into `bool` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:115:16
+ERROR Cannot index into `float` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:115:16
+ERROR Cannot index into `int` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:115:16
+ERROR Cannot index into `list[Any]` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:115:16
+ERROR Cannot index into `str` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:115:16
+ERROR `None` is not subscriptable [unsupported-operation]
+   --> tests/unit_tests/core/schemas/test_resolver.py:115:16
+ERROR Cannot index into `bool` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:116:16
+ERROR Cannot index into `float` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:116:16
+ERROR Cannot index into `int` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:116:16
+ERROR Cannot index into `list[Any]` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:116:16
+ERROR Cannot index into `str` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:116:16
+ERROR `None` is not subscriptable [unsupported-operation]
+   --> tests/unit_tests/core/schemas/test_resolver.py:116:16
+ERROR Cannot index into `bool` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:133:16
+ERROR Cannot index into `float` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:133:16
+ERROR Cannot index into `int` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:133:16
+ERROR Cannot index into `list[Any]` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:133:16
+ERROR Cannot index into `str` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:133:16
+ERROR `None` is not subscriptable [unsupported-operation]
+   --> tests/unit_tests/core/schemas/test_resolver.py:133:16
+ERROR Cannot index into `bool` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:134:16
+ERROR Cannot index into `float` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:134:16
+ERROR Cannot index into `int` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:134:16
+ERROR Cannot index into `list[Any]` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:134:16
+ERROR Cannot index into `str` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:134:16
+ERROR `None` is not subscriptable [unsupported-operation]
+   --> tests/unit_tests/core/schemas/test_resolver.py:134:16
+ERROR Cannot index into `bool` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:135:16
+ERROR Cannot index into `float` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:135:16
+ERROR Cannot index into `int` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:135:16
+ERROR Cannot index into `list[Any]` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:135:16
+ERROR Cannot index into `str` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:135:16
+ERROR `None` is not subscriptable [unsupported-operation]
+   --> tests/unit_tests/core/schemas/test_resolver.py:135:16
+ERROR Cannot index into `bool` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:136:16
+ERROR Cannot index into `float` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:136:16
+ERROR Cannot index into `int` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:136:16
+ERROR Cannot index into `list[Any]` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:136:16
+ERROR Cannot index into `str` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:136:16
+ERROR `None` is not subscriptable [unsupported-operation]
+   --> tests/unit_tests/core/schemas/test_resolver.py:136:16
+ERROR Cannot index into `bool` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:150:16
+ERROR Cannot index into `float` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:150:16
+ERROR Cannot index into `int` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:150:16
+ERROR Cannot index into `list[Any]` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:150:16
+ERROR Cannot index into `str` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:150:16
+ERROR `in` is not supported between `Literal['$circular_ref']` and `bool` [not-iterable]
+   --> tests/unit_tests/core/schemas/test_resolver.py:170:16
+ERROR `in` is not supported between `Literal['$circular_ref']` and `float` [not-iterable]
+   --> tests/unit_tests/core/schemas/test_resolver.py:170:16
+ERROR `in` is not supported between `Literal['$circular_ref']` and `int` [not-iterable]
+   --> tests/unit_tests/core/schemas/test_resolver.py:170:16
+ERROR `in` is not supported between `Literal['$circular_ref']` and `None` [not-iterable]
+   --> tests/unit_tests/core/schemas/test_resolver.py:170:16
+ERROR Cannot index into `bool` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:182:16
+ERROR Cannot index into `float` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:182:16
+ERROR Cannot index into `int` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:182:16
+ERROR Cannot index into `list[Any]` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:182:16
+ERROR Cannot index into `str` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:182:16
+ERROR `None` is not subscriptable [unsupported-operation]
+   --> tests/unit_tests/core/schemas/test_resolver.py:182:16
+ERROR Argument `Exception` is not assignable to parameter `object` with type `bool | dict[str, Any] | float | int | list[Any] | str | None` in function `list.append` [bad-argument-type]
+   --> tests/unit_tests/core/schemas/test_resolver.py:233:32
+ERROR Cannot index into `bool` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:273:16
+ERROR Cannot index into `float` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:273:16
+ERROR Cannot index into `int` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:273:16
+ERROR Cannot index into `list[Any]` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:273:16
+ERROR Cannot index into `str` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:273:16
+ERROR `None` is not subscriptable [unsupported-operation]
+   --> tests/unit_tests/core/schemas/test_resolver.py:273:16
+ERROR Cannot index into `bool` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:274:27
+ERROR Cannot index into `float` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:274:27
+ERROR Cannot index into `int` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:274:27
+ERROR Cannot index into `list[Any]` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:274:27
+ERROR Cannot index into `str` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:274:27
+ERROR `None` is not subscriptable [unsupported-operation]
+   --> tests/unit_tests/core/schemas/test_resolver.py:274:27
+ERROR Cannot set item in `str` [unsupported-operation]
+   --> tests/unit_tests/core/schemas/test_resolver.py:593:13
+ERROR Cannot index into `str` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:594:23
+ERROR Cannot index into `bool` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:667:13
+ERROR Cannot index into `str` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:667:13
+ERROR Cannot set item in `str` [unsupported-operation]
+   --> tests/unit_tests/core/schemas/test_resolver.py:667:13
+ERROR Cannot set item in `dict[str, str]` [unsupported-operation]
+   --> tests/unit_tests/core/schemas/test_resolver.py:667:51
+ERROR `dict[@_, @_]` is not assignable to dict value type `str` [bad-assignment]
+   --> tests/unit_tests/core/schemas/test_resolver.py:667:84
+ERROR Cannot index into `bool` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:668:23
+ERROR Cannot index into `str` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:668:23
+ERROR Cannot index into `str` [bad-index]
+   --> tests/unit_tests/core/schemas/test_resolver.py:668:23
 ERROR Argument `Literal[core.entities.provider_entities.ProviderQuotaType.TRIAL]` is not assignable to parameter `quota_type` with type `models.enums.ProviderQuotaType | SQLCoreOperations[models.enums.ProviderQuotaType | None] | None` in function `models.provider.Provider.__init__` [bad-argument-type]
    --> tests/unit_tests/core/test_provider_manager.py:114:20
 ERROR Argument `Literal['llm']` is not assignable to parameter `model_type` with type `ModelType | SQLCoreOperations[ModelType]` in function `models.provider.ProviderModelSetting.__init__` [bad-argument-type]
@@ -4071,67 +4467,67 @@
 ERROR Class member `MockLLMNode._run` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
    --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:164:9
 ERROR Class member `MockAgentNode.version` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:254:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:257:9
 ERROR Class member `MockAgentNode._run` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:258:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:261:9
 ERROR Class member `MockToolNode.version` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:306:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:309:9
 ERROR Class member `MockToolNode._run` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:310:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:313:9
 ERROR Class member `MockKnowledgeRetrievalNode.version` overrides parent class `KnowledgeRetrievalNode` in an inconsistent manner [bad-override]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:359:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:362:9
 ERROR Class member `MockKnowledgeRetrievalNode.version` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:359:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:362:9
 ERROR Class member `MockKnowledgeRetrievalNode._run` overrides parent class `KnowledgeRetrievalNode` in an inconsistent manner [bad-override]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:363:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:366:9
 ERROR Class member `MockKnowledgeRetrievalNode._run` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:363:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:366:9
 ERROR Class member `MockHttpRequestNode.version` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:416:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:419:9
 ERROR Class member `MockHttpRequestNode._run` overrides parent class `HttpRequestNode` in an inconsistent manner [bad-override]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:420:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:423:9
 ERROR Class member `MockHttpRequestNode._run` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:420:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:423:9
 ERROR Class member `MockQuestionClassifierNode.version` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:469:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:472:9
 ERROR Class member `MockQuestionClassifierNode._run` overrides parent class `QuestionClassifierNode` in an inconsistent manner [bad-override]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:473:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:476:9
 ERROR Class member `MockQuestionClassifierNode._run` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:473:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:476:9
 ERROR Class member `MockParameterExtractorNode.version` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:517:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:520:9
 ERROR Class member `MockParameterExtractorNode._run` overrides parent class `ParameterExtractorNode` in an inconsistent manner [bad-override]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:521:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:524:9
 ERROR Class member `MockParameterExtractorNode._run` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:521:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:524:9
 ERROR Class member `MockDocumentExtractorNode.version` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:567:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:570:9
 ERROR Class member `MockDocumentExtractorNode._run` overrides parent class `DocumentExtractorNode` in an inconsistent manner [bad-override]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:571:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:574:9
 ERROR Class member `MockDocumentExtractorNode._run` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:571:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:574:9
 ERROR Class member `MockIterationNode.version` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:622:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:625:9
 ERROR Class member `MockLoopNode.version` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:631:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:634:9
 ERROR Class member `MockTemplateTransformNode.version` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:640:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:643:9
 ERROR Class member `MockTemplateTransformNode._run` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:644:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:647:9
 ERROR Class member `MockCodeNode.version` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:726:9
+   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:729:9
 ERROR Class member `MockCodeNode._run` overrides a member in a parent class but is missing an `@override` decorator [missing-override-decorator]
-   --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:730:9
+   --> tests/uni\n\n... (truncated) ...

@github-actions

Copy link
Copy Markdown
Contributor

Pyrefly Type Coverage

Metric Base PR Delta
Type coverage 74.88% 74.10% -0.77%
Strict coverage 74.54% 73.76% -0.78%
Typed symbols 61,245 60,122 -1,123
Untyped symbols 20,642 21,107 +465
Modules 3771 3746 -25

@codecov

codecov Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 88.92%. Comparing base (cc4aaeb) to head (c152c01).
⚠️ Report is 76 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #44023      +/-   ##
==========================================
+ Coverage   79.84%   88.92%   +9.08%     
==========================================
  Files        5247     5327      +80     
  Lines      311056   328948   +17892     
  Branches    64724    65846    +1122     
==========================================
+ Hits       248363   292524   +44161     
+ Misses      58555    31234   -27321     
- Partials     4138     5190    +1052     
Flag Coverage Δ
api 88.48% <100.00%> (+16.61%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@Stream29
Stream29 added this pull request to the merge queue Oct 15, 2026
Merged via the queue into langgenius:main with commit 310c2e3 Oct 15, 2026
42 checks passed
Awhitter added a commit to Awhitter/dify that referenced this pull request Oct 25, 2026
* 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review: high ghfind author score; see https://ghfind.com size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Message pagination can omit rows with tied timestamps

2 participants