Skip to content

fix(api): use batch memory ingest to prevent seq ordering race condition - #1998

Open
lanceyq wants to merge 3 commits into
release/v0.4.1from
fix/batch-memory-seq
Open

fix(api): use batch memory ingest to prevent seq ordering race condition#1998
lanceyq wants to merge 3 commits into
release/v0.4.1from
fix/batch-memory-seq

Conversation

@lanceyq

@lanceyq lanceyq commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Summary by Sourcery

引入对代理消息的批量写入和调度到记忆系统的能力,以确保顺序一致的串行排序,并减少用户与助手消息之间的竞态条件。

New Features:

  • 添加批量代理消息写入管线,在单个事务中写入消息,并执行一次滑动窗口式的调度。
  • 暴露基于 ConversationService.batch 的记忆派发 API,以及一个“即发即弃”(fire-and-forget)助手方法,用于在不阻塞聊天流程的情况下调度后台记忆任务。

Bug Fixes:

  • 通过将原先两个相互独立的“即发即弃”写入操作替换为单个批量写入,确保来自同一轮对话的用户和助手消息能够获得连续且顺序正确的记忆序列值(memory seq)。

Enhancements:

  • MemoryService 中封装新的批量记忆写入逻辑,便于上层服务集中使用。
  • 通过为暂时性的外键(ForeignKey)约束错误添加重试逻辑(例如相关消息行尚未持久化时),提升记忆写入的健壮性。
Original summary in English

Summary by Sourcery

Introduce batch ingestion and dispatch of agent messages to the memory system to ensure consistent sequential ordering and reduce race conditions between user and assistant messages.

New Features:

  • Add a batch agent message ingestion pipeline that writes messages in a single transaction and performs a single sliding-window dispatch.
  • Expose a ConversationService.batch-based memory dispatch API and a fire-and-forget helper to schedule background memory tasks without blocking chat flows.

Bug Fixes:

  • Ensure user and assistant messages from the same turn receive contiguous, correctly ordered memory seq values by replacing two independent fire-and-forget ingests with a single batch ingest.

Enhancements:

  • Wrap the new batch memory ingest in MemoryService for centralized access from higher-level services.
  • Improve robustness of memory ingestion by adding retry logic for transient ForeignKey violations when related message rows are not yet persisted.

@lanceyq
lanceyq requested a review from keeees August 11, 2026 15:01
@sourcery-ai

sourcery-ai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

审阅者指南

引入了一条新的代理消息批量写入路径,用于在单个事务中写入记忆消息,并在一次滑动窗口遍历中完成分发,从而确保用户/助手消息对的序列号严格有序分配,并围绕新 API 提供“发出即忘”(fire-and-forget)的后台分发辅助工具。

代理消息批量写入与分发的序列图

sequenceDiagram
    participant AppChatService
    participant ConversationService
    participant fire_background_memory_task
    participant MemoryService
    participant dispatcher as ingest_agent_messages
    participant Repo as MemoryMessageRepository
    participant FastWrite as safe_push_fast_write
    participant Sliding as check_sliding_window_and_dispatch

    AppChatService->>ConversationService: dispatch_memory_batch(messages, conversation)
    ConversationService->>fire_background_memory_task: fire_background_memory_task(coro)
    fire_background_memory_task-->>ConversationService: Task
    ConversationService->>MemoryService: ingest_agent_messages(conversation_id, messages, app_id, config_id, workspace_id, end_user_id)
    MemoryService->>dispatcher: ingest_agent_messages(conversation_id, messages, app_id, config_id, workspace_id, end_user_id, language)

    dispatcher->>Repo: write_batch(conversation_id, messages, end_user_id, source=AGENT)
    Repo-->>dispatcher: written[message_seq]
    dispatcher->>dispatcher: refresh_active_key(conversation_id)
    dispatcher->>dispatcher: mark_conversation_pending(conversation_id)

    loop for each written message
        dispatcher->>FastWrite: safe_push_fast_write(role, should_memorize, app_id, end_user_id, target_message, config_id, workspace_id, conversation_id, message_seq, language, source)
    end

    dispatcher->>Sliding: check_sliding_window_and_dispatch(conversation_id, config_id, end_user_id, workspace_id, language)
    Sliding-->>dispatcher: dispatch_done
    dispatcher-->>MemoryService: True
    MemoryService-->>ConversationService: True
Loading

文件级变更

变更 详情 文件
为代理消息新增批量写入流水线,在单个事务批次中写入记忆消息,对外键约束违规进行重试,并在每个批次上执行一次 fast-write 和滑动窗口分发。
  • 在 dispatcher 中实现 ingest_agent_messages,用于构造批量输入、规范化时间戳和元数据,并调用 MemoryMessageRepository.write_batch
  • 为引用消息可能尚未持久化的批次增加带指数退避的外键约束违规重试循环,在重试耗尽时记录日志。
  • 刷新 active key,将会话标记为 pending,然后对每条已写入消息执行尽力而为的 fast-write 分发,并对整批执行一次最终的滑动窗口分发。
api/app/core/memory/pipelines/dispatcher.py
MemoryService 中暴露一个高层批量写入 API,并转发至 dispatcher 层的批量写入实现。
  • MemoryService 中添加静态方法 ingest_agent_messages,与 ingest_agent_message 行为一致,但接受消息列表。
  • 将所有路由/上下文参数透传给 dispatcher.ingest_agent_messages
api/app/core/memory/memory_service.py
新增后台任务辅助工具和 ConversationService 入口点,通过新的批量写入路径将一批消息分发到记忆中。
  • 引入 fire_background_memory_task 工具,用于安全地调度“发出即忘”的协程,同时保持对 Task 的强引用以避免因垃圾回收导致的取消。
  • 添加 ConversationService.dispatch_memory_batch,用于查找当前激活的 memory 配置,并对同一会话的一组消息调用 MemoryService.ingest_agent_messages
  • 说明 dispatch_memory_batch 本身不是“发出即忘”的,调用方应将其包在 fire_background_memory_task 中或直接 await
api/app/services/conversation_service.py
将应用聊天流程改为使用新的批量 memory 分发,而非逐条同步分发,从而消除用户与助手消息之间的序列号竞争。
  • ConversationService 中引入 fire_background_memory_taskAppChatService,并在聊天流程中使用它来调度 memory 分发。
  • 用一次 dispatch_memory_batch 调用(传入同时包含用户和助手消息,并使用一致的时间戳和元数据)替换原先循环调用 dispatch_memory_sync 的逻辑。
  • 通过仍然在后台执行 memory 分发来保持流式响应能力,同时确保该消息对的序列号在单个批次中统一分配。
api/app/services/app_chat_service.py

提示与命令

与 Sourcery 交互

  • 触发新的审阅: 在 pull request 中评论 @sourcery-ai review
  • 继续讨论: 直接回复 Sourcery 的审阅评论。
  • 从审阅评论生成 GitHub issue: 在某条审阅评论下回复,请求 Sourcery 从该评论创建 issue。你也可以直接回复 @sourcery-ai issue 来基于该评论创建 issue。
  • 生成 pull request 标题: 在 pull request 标题的任意位置写上 @sourcery-ai 即可随时生成标题。也可以在 pull request 中评论 @sourcery-ai title 来(重新)生成标题。
  • 生成 pull request 摘要: 在 pull request 描述正文任意位置写上 @sourcery-ai summary,即可在对应位置生成 PR 摘要。也可以评论 @sourcery-ai summary 来(重新)生成摘要。
  • 生成审阅者指南: 在 pull request 中评论 @sourcery-ai guide,即可随时(重新)生成审阅者指南。
  • 一次性解决所有 Sourcery 评论: 在 pull request 中评论 @sourcery-ai resolve,以解决所有 Sourcery 评论。如果你已经处理完所有评论且不想再看到它们,这会很有用。
  • 忽略所有 Sourcery 审阅: 在 pull request 中评论 @sourcery-ai dismiss,以忽略所有现有的 Sourcery 审阅。特别适用于你希望基于一次全新的审阅重新开始的场景——别忘了再评论 @sourcery-ai review 以触发新的审阅!

自定义你的使用体验

访问你的 dashboard 来:

  • 启用或禁用审阅功能,例如 Sourcery 生成的 pull request 摘要、审阅者指南等。
  • 更改审阅语言。
  • 添加、移除或编辑自定义审阅说明。
  • 调整其他审阅设置。

获取帮助

Original review guide in English

Reviewer's Guide

Introduces a new batch ingest path for agent messages to write memory messages in a single transaction and dispatch in one sliding-window pass, ensuring strictly ordered seq assignment for user/assistant pairs and providing a fire-and-forget background dispatch helper around the new API.

Sequence diagram for batch agent message ingest and dispatch

sequenceDiagram
    participant AppChatService
    participant ConversationService
    participant fire_background_memory_task
    participant MemoryService
    participant dispatcher as ingest_agent_messages
    participant Repo as MemoryMessageRepository
    participant FastWrite as safe_push_fast_write
    participant Sliding as check_sliding_window_and_dispatch

    AppChatService->>ConversationService: dispatch_memory_batch(messages, conversation)
    ConversationService->>fire_background_memory_task: fire_background_memory_task(coro)
    fire_background_memory_task-->>ConversationService: Task
    ConversationService->>MemoryService: ingest_agent_messages(conversation_id, messages, app_id, config_id, workspace_id, end_user_id)
    MemoryService->>dispatcher: ingest_agent_messages(conversation_id, messages, app_id, config_id, workspace_id, end_user_id, language)

    dispatcher->>Repo: write_batch(conversation_id, messages, end_user_id, source=AGENT)
    Repo-->>dispatcher: written[message_seq]
    dispatcher->>dispatcher: refresh_active_key(conversation_id)
    dispatcher->>dispatcher: mark_conversation_pending(conversation_id)

    loop for each written message
        dispatcher->>FastWrite: safe_push_fast_write(role, should_memorize, app_id, end_user_id, target_message, config_id, workspace_id, conversation_id, message_seq, language, source)
    end

    dispatcher->>Sliding: check_sliding_window_and_dispatch(conversation_id, config_id, end_user_id, workspace_id, language)
    Sliding-->>dispatcher: dispatch_done
    dispatcher-->>MemoryService: True
    MemoryService-->>ConversationService: True
Loading

File-Level Changes

Change Details Files
Add batch ingest pipeline for agent messages that writes memory messages in one transactional batch, retries on FK violations, and performs fast-write plus sliding-window dispatch once per batch.
  • Implement ingest_agent_messages in the dispatcher to construct batch inputs, normalize timestamps and metadata, and call MemoryMessageRepository.write_batch.
  • Add FK-violation retry loop with exponential backoff for batches whose referenced messages may not yet be persisted, logging on exhaustion.
  • Refresh active keys, mark conversations pending, then perform best-effort fast-write dispatch per written message and a final sliding-window dispatch for the whole batch.
api/app/core/memory/pipelines/dispatcher.py
Expose a high-level batch ingest API in MemoryService that forwards to the dispatcher-level batch ingest implementation.
  • Add static method ingest_agent_messages to MemoryService mirroring ingest_agent_message but accepting a list of messages.
  • Delegate to dispatcher.ingest_agent_messages with all routing/context parameters passed through.
api/app/core/memory/memory_service.py
Add a background-task helper and a ConversationService entrypoint to dispatch a batch of messages to memory using the new batch ingest path.
  • Introduce fire_background_memory_task utility that safely schedules fire-and-forget coroutines while keeping strong Task references to avoid GC-related cancellation.
  • Add ConversationService.dispatch_memory_batch to look up the active memory config and call MemoryService.ingest_agent_messages for a list of same-conversation messages.
  • Document that dispatch_memory_batch is non-fire-and-forget and should be wrapped in fire_background_memory_task or awaited by callers.
api/app/services/conversation_service.py
Change app chat flow to use the new batch memory dispatch instead of per-message synchronous dispatch, eliminating seq ordering races between user and assistant messages.
  • Import fire_background_memory_task from ConversationService into AppChatService and use it to schedule memory dispatch in the chat flow.
  • Replace the loop that calls dispatch_memory_sync for user and assistant messages with a single dispatch_memory_batch call passing both messages with consistent timestamps and metadata.
  • Retain streaming responsiveness by keeping memory dispatch in the background while ensuring seq is allocated in a single batch for the pair.
api/app/services/app_chat_service.py

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sourcery-ai sourcery-ai Bot 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.

嗨,我在这里给出了一些高层次的反馈:

  • dispatch_memory_batch 中,logger.warning(..., exc_info=exc) 调用了 exc_info 时传入的是异常对象而不是布尔值/元组;这样不会记录到期望的 traceback——请改用 exc_info=True,或者传入正确的 (type, value, traceback) 元组。
  • 全局的 _BACKGROUND_MEMORY_TASKS 集合依赖任务最终完成后被移除;建议考虑针对生命周期极长或卡住的任务做保护(例如使用超时或定期清理),以避免在长时间运行的进程中集合无限增长。
  • 当没有事件循环在运行时,fire_background_memory_task 会静默地关闭协程,这可能会隐藏同步环境下的错误用法;与其丢弃这些工作,你或许应该抛出或以某种方式向调用方暴露这个错误。
供 AI 代理使用的提示
请根据这次代码评审中的评论进行修改:

## 总体评论
-`dispatch_memory_batch` 中,`logger.warning(..., exc_info=exc)` 调用了 `exc_info` 时传入的是异常对象而不是布尔值/元组;这样不会记录到期望的 traceback——请改用 `exc_info=True`,或者传入正确的 `(type, value, traceback)` 元组。
- 全局的 `_BACKGROUND_MEMORY_TASKS` 集合依赖任务最终完成后被移除;建议考虑针对生命周期极长或卡住的任务做保护(例如使用超时或定期清理),以避免在长时间运行的进程中集合无限增长。
- 当没有事件循环在运行时,`fire_background_memory_task` 会静默地关闭协程,这可能会隐藏同步环境下的错误用法;与其丢弃这些工作,你或许应该抛出或以某种方式向调用方暴露这个错误。

Sourcery 对开源项目是免费的——如果你觉得我们的评审有帮助,欢迎分享 ✨
帮我变得更有用!请在每条评论上点 👍 或 👎,我会根据你的反馈改进后续评审。
Original comment in English

Hey - I've left some high level feedback:

  • In dispatch_memory_batch, the logger.warning(..., exc_info=exc) call passes the exception object instead of a bool/tuple; this will not log the intended traceback—use exc_info=True or a proper (type, value, traceback) tuple.
  • The global _BACKGROUND_MEMORY_TASKS set relies on tasks eventually completing to be discarded; consider guarding against very long‑lived or stuck tasks (e.g., with timeouts or periodic cleanup) to avoid unbounded growth in long‑running processes.
  • fire_background_memory_task silently closes the coroutine when no event loop is running, which can hide incorrect use from synchronous contexts; you may want to raise or surface this as an error to callers instead of discarding the work.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- In `dispatch_memory_batch`, the `logger.warning(..., exc_info=exc)` call passes the exception object instead of a bool/tuple; this will not log the intended traceback—use `exc_info=True` or a proper `(type, value, traceback)` tuple.
- The global `_BACKGROUND_MEMORY_TASKS` set relies on tasks eventually completing to be discarded; consider guarding against very long‑lived or stuck tasks (e.g., with timeouts or periodic cleanup) to avoid unbounded growth in long‑running processes.
- `fire_background_memory_task` silently closes the coroutine when no event loop is running, which can hide incorrect use from synchronous contexts; you may want to raise or surface this as an error to callers instead of discarding the work.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@github-actions

github-actions Bot commented Aug 11, 2026

Copy link
Copy Markdown

API Breaking Change Report

Comparing against release/v0.4.1 baseline.

Breaking change approval label: api-breaking-approved = false.

Tool Result
oasdiff ✅ PASS
openapi-diff ✅ PASS

oasdiff

Output
No breaking changes to report, but the specs are different.
Run 'oasdiff diff' to see structural differences.

openapi-diff

Output
Unable to find image 'openapitools/openapi-diff:2.1.0-beta.11' locally
2.1.0-beta.11: Pulling from openapitools/openapi-diff
4abcf2066143: Pulling fs layer
a21a63612cbe: Pulling fs layer
92d6f603e71e: Pulling fs layer
b8be18af9f33: Pulling fs layer
704a4a6d46b8: Pulling fs layer
ffabcbe5d181: Pulling fs layer
c2a172360f79: Pulling fs layer
6b9cfc1f0b01: Pulling fs layer
397b98d1dbc3: Pulling fs layer
704a4a6d46b8: Waiting
ffabcbe5d181: Waiting
c2a172360f79: Waiting
6b9cfc1f0b01: Waiting
397b98d1dbc3: Waiting
b8be18af9f33: Waiting
4abcf2066143: Verifying Checksum
4abcf2066143: Download complete
b8be18af9f33: Verifying Checksum
b8be18af9f33: Download complete
4abcf2066143: Pull complete
a21a63612cbe: Verifying Checksum
a21a63612cbe: Download complete
92d6f603e71e: Verifying Checksum
92d6f603e71e: Download complete
ffabcbe5d181: Download complete
704a4a6d46b8: Verifying Checksum
704a4a6d46b8: Download complete
6b9cfc1f0b01: Verifying Checksum
6b9cfc1f0b01: Download complete
c2a172360f79: Verifying Checksum
c2a172360f79: Download complete
397b98d1dbc3: Verifying Checksum
397b98d1dbc3: Download complete
a21a63612cbe: Pull complete
92d6f603e71e: Pull complete
b8be18af9f33: Pull complete
704a4a6d46b8: Pull complete
ffabcbe5d181: Pull complete
c2a172360f79: Pull complete
6b9cfc1f0b01: Pull complete
397b98d1dbc3: Pull complete
Digest: sha256:6c6b662418e021d13be871dc5a2e8b09936abce02ce05d377caf426663650aa9
Status: Downloaded newer image for openapitools/openapi-diff:2.1.0-beta.11
==========================================================================
==                            API CHANGE LOG                            ==
==========================================================================
                                MemoryBear                                
--------------------------------------------------------------------------
--                              What's New                              --
--------------------------------------------------------------------------
- POST   /v1/memory/merge

--------------------------------------------------------------------------
--                            What's Changed                            --
--------------------------------------------------------------------------
- GET    /v1/app/annotations
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/app/annotations/settings
  Request:
        - Changed application/json
          Schema: Backward compatible
- DELETE /v1/app/annotations/{annotation_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/app/variable
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/app/conversations
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/app/conversations/{conversation_id}/messages
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/app/messages/{message_id}/suggested
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/app/info
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/app/conversations/{conversation_id}/messages/feedbacks
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/knowledges/knowledge_graph_entity_types
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/knowledges/knowledges
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/knowledges/{knowledge_id}/knowledge_graph
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/knowledges/{knowledge_id}/knowledge_graph
  Request:
        - Changed application/json
          Schema: Backward compatible
- DELETE /v1/knowledges/{knowledge_id}/knowledge_graph
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/knowledges/check/yuque/auth
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/knowledges/check/feishu/auth
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/knowledges/{knowledge_id}/sync
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/documents/{kb_id}/documents
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/documents/{document_id}/chunks
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/files/{kb_id}/{parent_id}/files
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/files/folder
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/chunks/{kb_id}/{document_id}/previewchunks
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/chunks/{kb_id}/{document_id}/chunks
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/end_user/mapping
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/end_user/info
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory_config/read_all_config
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory_config/scenes/simple
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory_config/read_config_extracted
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory_config/read_config_forgetting
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory_config/read_config_emotion
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory_config/read_config_reflection
  Request:
        - Changed application/json
          Schema: Backward compatible
- DELETE /v1/memory_config/delete_config
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory/analytics/graph_data
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory/analytics/community_graph
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory/analytics/node_statistics
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory/analytics/user_summary
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory/analytics/memory_insight
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory/analytics/interest_distribution
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory/analytics/end_user_info
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/dashboard/end_users
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory/ontology/scenes/simple
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory/ontology/scenes
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory/ontology/classes
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/app/chat
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/app/workflow/interventions/{execution_id}/submit
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/app/files
  Request:
        - Changed multipart/form-data
          Schema: Backward compatible
- POST   /v1/app/messages/{message_id}/feedback
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/knowledges/knowledge
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/knowledges/{knowledge_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- DELETE /v1/knowledges/{knowledge_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- PUT    /v1/knowledges/{knowledge_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/documents/document
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/documents/{document_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- DELETE /v1/documents/{document_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- PUT    /v1/documents/{document_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/files/file
  Request:
        - Changed multipart/form-data
          Schema: Backward compatible
- POST   /v1/files/customtext
  Request:
        - Changed application/json
          Schema: Backward compatible
- DELETE /v1/files/{file_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- PUT    /v1/files/{file_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/chunks/{kb_id}/{document_id}/chunk
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/chunks/{kb_id}/{document_id}/chunk/batch
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/chunks/{kb_id}/{document_id}/{doc_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- DELETE /v1/chunks/{kb_id}/{document_id}/{doc_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- PUT    /v1/chunks/{kb_id}/{document_id}/{doc_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/chunks/retrieval
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/chunks/{kb_id}/import_qa
  Request:
        - Changed multipart/form-data
          Schema: Backward compatible
- POST   /v1/memory/read/sync
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/memory/read/internal
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/memory/write
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/end_user/create
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/end_user/info/update
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/memory_config/create_config
  Request:
        - Changed application/json
          Schema: Backward compatible
- PUT    /v1/memory_config/update_config
  Request:
        - Changed application/json
          Schema: Backward compatible
- PUT    /v1/memory_config/update_config_extracted
  Request:
        - Changed application/json
          Schema: Backward compatible
- PUT    /v1/memory_config/update_config_forgetting
  Request:
        - Changed application/json
          Schema: Backward compatible
- PUT    /v1/memory_config/update_config_emotion
  Request:
        - Changed application/json
          Schema: Backward compatible
- PUT    /v1/memory_config/update_config_reflection
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/memory/analytics/generate_cache
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/memory/ontology/extract
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/memory/ontology/scene
  Request:
        - Changed application/json
          Schema: Backward compatible
- DELETE /v1/memory/ontology/scene/{scene_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- PUT    /v1/memory/ontology/scene/{scene_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/memory/ontology/class
  Request:
        - Changed application/json
          Schema: Backward compatible
- GET    /v1/memory/ontology/class/{class_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- DELETE /v1/memory/ontology/class/{class_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- PUT    /v1/memory/ontology/class/{class_id}
  Request:
        - Changed application/json
          Schema: Backward compatible
- POST   /v1/memory/ontology/import
  Request:
        - Changed multipart/form-data
          Schema: Backward compatible
- POST   /v1/memory/ontology/export
  Request:
        - Changed application/json
          Schema: Backward compatible
--------------------------------------------------------------------------
--                                Result                                --
--------------------------------------------------------------------------
                   API changes are backward compatible                    
--------------------------------------------------------------------------

Gate decision

No breaking changes detected. The check passed without approval override.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant