Skip to content

feat(conversations): complete OpenAI-compatible lifecycle - #576

Merged
SantiagoDePolonia merged 4 commits into
mainfrom
feat/conversations2
Jul 22, 2026
Merged

feat(conversations): complete OpenAI-compatible lifecycle#576
SantiagoDePolonia merged 4 commits into
mainfrom
feat/conversations2

Conversation

@SantiagoDePolonia

@SantiagoDePolonia SantiagoDePolonia commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • complete the OpenAI-compatible Conversations lifecycle, including create, retrieve, metadata merge, delete, item create/list/retrieve/delete, pagination, and include projections
  • integrate gateway-managed conversations with Responses multi-turn execution for native and translated providers, including streaming persistence and lossless reasoning/provider fields
  • persist conversations atomically across memory, SQLite, PostgreSQL, and MongoDB with duplicate-ID protection, concurrent metadata merging, item deletion, TTL retention, and exact memory accounting
  • preserve opaque JSON values without float64 precision loss and ensure non-streaming response item IDs exactly match the persisted IDs clients can retrieve later
  • document the routes and regenerate Swagger/OpenAPI output

QA findings fixed

  • PostgreSQL metadata updates failed because jsonb_object_length is unavailable; validation now counts jsonb_object_keys
  • concurrent appends could persist duplicate item IDs; uniqueness checks are now part of each atomic store operation
  • memory reads raced with item appends and append size accounting drifted; snapshots are cloned under the lock and measured exactly
  • reused or absent provider item IDs could make returned IDs differ from stored IDs; IDs are finalized before the response is emitted
  • unknown large JSON integers could be rounded during normalization/projection/replay; known-field mutation now retains raw unknown values
  • non-streaming conversation persistence failures were silently logged after provider success; they now return an explicit OpenAI-compatible 500

Validation

  • make test-all
  • make test-race
  • make lint
  • make fix-check
  • make mod-check
  • make build
  • PostgreSQL and MongoDB integration scenarios with concurrent metadata/item writers and direct database assertions
  • OpenAI SDK and curl multi-turn lifecycle validation against a running GoModel instance

Notes

The current persistent representation remains a conversation snapshot with an item array. A normalized conversation_items table/collection would be a separate scaling-oriented follow-up rather than part of this compatibility change.

Summary by CodeRabbit

  • New Features
    • Added full conversation item management under the Conversations “items” routes (create/list with cursor pagination & ordering, retrieve, delete).
    • Item listings support include projections for returned fields.
    • Conversation metadata updates now merge provided keys into existing metadata.
  • Bug Fixes
    • Improved duplicate item-ID handling and standardized errors for invalid cursors and missing items.
    • Enhanced lossless replay/normalization of provider/reasoning fields, including very large numeric values.
  • Documentation
    • Updated API docs and OpenAPI spec for metadata merge semantics and the new items endpoints/schemas.
  • Tests
    • Expanded end-to-end and integration coverage for items, pagination, projections, concurrency, and JSON round-tripping behavior.

Copilot AI review requested due to automatic review settings July 22, 2026 12:38

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@SantiagoDePolonia, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 22 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: e3081393-a695-4224-9c26-bce77f191c97

📥 Commits

Reviewing files that changed from the base of the PR and between 1227876 and e2077e5.

📒 Files selected for processing (3)
  • docs/advanced/conversations-api.mdx
  • internal/server/conversation_persisting_stream.go
  • internal/server/conversation_persisting_stream_test.go
📝 Walkthrough

Walkthrough

The PR adds OpenAI-compatible conversation-item CRUD and pagination APIs, changes metadata updates to merge keys, strengthens storage concurrency and size enforcement, preserves unknown JSON fields and numeric values, and adds unit, end-to-end, and PostgreSQL/MongoDB integration coverage.

Changes

Conversation feature

Layer / File(s) Summary
Storage contracts and atomic mutations
internal/conversationstore/*, internal/core/conversations.go
The store interface now supports metadata merging and item deletion. Memory, MongoDB, PostgreSQL, and SQLite implementations enforce metadata limits, reject duplicate IDs, and perform item mutations atomically.
Conversation item API flow
internal/server/*, internal/core/conversations.go
Conversation items are normalized, assigned IDs, paginated, projected by include, and exposed through create, list, get, and delete routes.
Response JSON and conversation persistence
internal/core/responses*, internal/server/conversation_responses.go, internal/server/response_input_items.go
Unknown response fields and large numbers survive round trips. Persisted response items receive unique IDs, and conversation append failures propagate to the response path.
Documentation and validation
docs/*, cmd/gomodel/docs/docs.go, tests/e2e/*, tests/integration/*
OpenAPI and advanced documentation describe item routes and merge semantics. E2E and integration tests cover concurrent mutations, pagination, redaction, persistence, and cleanup.

Estimated code review effort: 5 (Critical) | ~120 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant ConversationAPI
  participant ConversationStore
  participant ResponsesAPI
  Client->>ConversationAPI: Create, list, retrieve, or delete conversation items
  ConversationAPI->>ConversationStore: Normalize and persist item mutations
  ConversationStore-->>ConversationAPI: Return updated conversation or error
  Client->>ResponsesAPI: Submit a response turn
  ResponsesAPI->>ConversationStore: Persist completed output items
  ConversationStore-->>ResponsesAPI: Return persisted item IDs
  ResponsesAPI-->>Client: Return response with committed IDs
Loading

Possibly related PRs

Suggested labels: release:feature

Suggested reviewers: copilot

Poem

I’m a rabbit with items to store,
Merging metadata through every door.
IDs hop neatly, cursors point true,
JSON keeps secrets it once knew.
With tests in a burrow, the feature takes flight! 🐇

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 10.81% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: completing the OpenAI-compatible Conversations lifecycle.
Description check ✅ Passed The description is detailed and relevant, covering changes, validation, and notes even though it doesn't use the exact template headings.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/conversations2

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@mintlify

mintlify Bot commented Jul 22, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
gomodel 🟢 Ready View Preview Jul 22, 2026, 12:38 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

Comment thread internal/conversationstore/store_mongodb.go Dismissed
Comment thread internal/conversationstore/store_mongodb.go Dismissed
Comment thread internal/conversationstore/store_mongodb.go Dismissed
Comment thread internal/conversationstore/store_mongodb.go Dismissed
Comment thread internal/conversationstore/store_mongodb.go Dismissed
Comment thread internal/conversationstore/store_mongodb.go Dismissed
Copilot AI review requested due to automatic review settings July 22, 2026 12:43

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai coderabbitai 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.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@internal/conversationstore/store_postgresql.go`:
- Around line 170-198: Update DeleteItem so the matching element lookup and
JSONB array deletion occur in the same correlated UPDATE against c.items,
avoiding a stale positional index from a separate target CTE. Preserve
expiration and first-match semantics, and add a concurrency test that deletes
two different item IDs from the same conversation and verifies neither wrong
element is removed.

In `@internal/server/conversation_item_projection.go`:
- Around line 45-51: Clamp the pagination limit in the conversation item
projection flow to the documented maximum of 100 after applying the existing
default for non-positive values. Update the limit handling near remaining and
hasMore so oversized caller values cannot request more than 100 items.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: e16e8ac0-c79f-415b-8de0-109a8de79db6

📥 Commits

Reviewing files that changed from the base of the PR and between 754cb88 and 20b4dfd.

📒 Files selected for processing (35)
  • cmd/gomodel/docs/docs.go
  • docs/advanced/api-endpoints.mdx
  • docs/advanced/conversations-api.mdx
  • docs/openapi.json
  • internal/conversationstore/store.go
  • internal/conversationstore/store_memory.go
  • internal/conversationstore/store_memory_test.go
  • internal/conversationstore/store_mongodb.go
  • internal/conversationstore/store_postgresql.go
  • internal/conversationstore/store_sqlite.go
  • internal/conversationstore/store_sqlite_test.go
  • internal/core/conversations.go
  • internal/core/conversations_test.go
  • internal/core/endpoints_test.go
  • internal/core/responses.go
  • internal/core/responses_json.go
  • internal/core/responses_json_test.go
  • internal/server/conversation_handlers.go
  • internal/server/conversation_handlers_test.go
  • internal/server/conversation_item_normalization.go
  • internal/server/conversation_item_projection.go
  • internal/server/conversation_responses.go
  • internal/server/conversation_responses_test.go
  • internal/server/http.go
  • internal/server/native_conversation_items_service.go
  • internal/server/native_conversation_service.go
  • internal/server/native_response_service.go
  • internal/server/raw_json_object.go
  • internal/server/response_input_items.go
  • internal/server/response_input_items_test.go
  • internal/server/translated_inference_service.go
  • tests/contract/testdata/golden/xai/responses.golden.json
  • tests/e2e/conversations_test.go
  • tests/integration/conversations_test.go
  • tests/integration/setup_test.go

Comment thread internal/conversationstore/store_postgresql.go
Comment thread internal/server/conversation_item_projection.go
@greptile-apps

greptile-apps Bot commented Jul 22, 2026

Copy link
Copy Markdown

Confidence Score: 4/5

Streaming completion can report success without persisting the turn, so this path should be fixed before merging.

  • Store operations otherwise preserve concurrent updates and enforce duplicate IDs consistently.
  • Non-streaming responses expose persistence failures to callers and reconcile returned item IDs.
  • Streaming persistence failures are only logged after success is delivered.
  • Heavy MongoDB contention can exhaust the fixed append retry budget.

internal/server/conversation_responses.go and internal/conversationstore/store_mongodb.go

Sequence Diagram

sequenceDiagram
    participant Client
    participant Gateway
    participant Provider
    participant Store as Conversation Store

    Client->>Gateway: Responses request with conversation ID
    Gateway->>Store: Load stored items
    Store-->>Gateway: Conversation history
    Gateway->>Provider: Request with replayed history
    Provider-->>Gateway: Response or SSE stream
    Gateway->>Store: Append input and output items
    alt Append succeeds
        Store-->>Gateway: Persisted exchange
        Gateway-->>Client: Response with stable item IDs
    else Non-streaming append fails
        Gateway-->>Client: 500 persistence error
    else Streaming append fails after completion
        Gateway->>Gateway: Log failure
        Note over Client,Store: Client saw success but history remains stale
    end
Loading

Reviews (1): Last reviewed commit: "feat(conversations): complete OpenAI-com..." | Re-trigger Greptile

Comment thread internal/server/conversation_responses.go Outdated
Comment thread internal/conversationstore/store_mongodb.go

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@internal/server/conversation_item_normalization.go`:
- Around line 80-89: Update the function-call arguments and function-call-output
output validation to use rawJSONValuePresent rather than only checking map-key
existence. Ensure explicit JSON null is rejected as missing before unmarshalling
or normalization, while preserving the existing invalid-request errors and
parameter context in the function-call normalization logic.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 6bb1a142-378a-4d00-b52e-9edf2be6ef65

📥 Commits

Reviewing files that changed from the base of the PR and between 20b4dfd and 161d147.

📒 Files selected for processing (35)
  • cmd/gomodel/docs/docs.go
  • docs/advanced/api-endpoints.mdx
  • docs/advanced/conversations-api.mdx
  • docs/openapi.json
  • internal/conversationstore/store.go
  • internal/conversationstore/store_memory.go
  • internal/conversationstore/store_memory_test.go
  • internal/conversationstore/store_mongodb.go
  • internal/conversationstore/store_postgresql.go
  • internal/conversationstore/store_sqlite.go
  • internal/conversationstore/store_sqlite_test.go
  • internal/core/conversations.go
  • internal/core/conversations_test.go
  • internal/core/endpoints_test.go
  • internal/core/responses.go
  • internal/core/responses_json.go
  • internal/core/responses_json_test.go
  • internal/server/conversation_handlers.go
  • internal/server/conversation_handlers_test.go
  • internal/server/conversation_item_normalization.go
  • internal/server/conversation_item_projection.go
  • internal/server/conversation_responses.go
  • internal/server/conversation_responses_test.go
  • internal/server/http.go
  • internal/server/native_conversation_items_service.go
  • internal/server/native_conversation_service.go
  • internal/server/native_response_service.go
  • internal/server/raw_json_object.go
  • internal/server/response_input_items.go
  • internal/server/response_input_items_test.go
  • internal/server/translated_inference_service.go
  • tests/contract/testdata/golden/xai/responses.golden.json
  • tests/e2e/conversations_test.go
  • tests/integration/conversations_test.go
  • tests/integration/setup_test.go

Comment thread internal/server/conversation_item_normalization.go
@mintlify

mintlify Bot commented Jul 22, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
gomodel 🟡 Building Jul 22, 2026, 12:38 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

Copilot AI review requested due to automatic review settings July 22, 2026 13:15

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@SantiagoDePolonia

Copy link
Copy Markdown
Contributor Author

Review disposition for 42c7ef9:\n\n- Fixed all five substantive correctness/resilience findings: PostgreSQL concurrent deletion, helper-level pagination bounds, explicit-null function fields, streamed completion persistence ordering, and MongoDB CAS contention.\n- Added focused unit tests plus a concurrent-delete integration regression; both PostgreSQL and MongoDB scenarios passed 10 repeated runs.\n- Classified CodeQL alerts 54–59 as false positives. All query keys/operators are compile-time BSON structure and request-derived data is driver-encoded only as string/scalar-array values. The CodeQL gate is now green.\n- Intentionally did not bulk-add docstrings to unexported helpers for CodeRabbit’s generic 80% heuristic; that is not a repository gate and would add low-signal comments contrary to the project’s KISS guidance.\n- The Checkov ModuleNotFoundError is in CodeRabbit’s tool environment, not this repository.\n\nAll current CI checks pass.

@SantiagoDePolonia

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
internal/server/translated_inference_service.go (1)

315-323: 🩺 Stability & Availability | 🔵 Trivial

Consider client-retry/duplicate-provider-call exposure when append fails.

Once appendResponse fails here, the provider call has already succeeded, but the client receives a 500. A client retrying on that 500 would re-invoke the (possibly costly) provider call again, since there's no idempotency-key safeguard in this path. This is a reasonable tradeoff for the persistence-correctness fix, but worth tracking as an operational risk if provider costs/side-effects are significant.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/server/translated_inference_service.go` around lines 315 - 323,
Track the post-provider persistence failure in the translated inference flow
around conversationTurnFromContext and turn.appendResponse as an operational
risk: a 500 after provider success can cause client retries to invoke the
provider again. Add or update the appropriate follow-up tracking/documentation
for an idempotency-key safeguard, without changing the existing persistence
error behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@internal/server/conversation_responses.go`:
- Around line 216-274: Update conversationPersistingStream.Read and the
surrounding persistingStream flow so the complete terminal
response.completed/response.done SSE event is buffered and parsed before any of
its bytes are returned to the caller. If conversationStreamObserver.OnJSONEvent
records an append or marshal failure, suppress the entire terminal event rather
than only subsequent reads; preserve normal streaming for non-terminal events
and successful persistence.

---

Outside diff comments:
In `@internal/server/translated_inference_service.go`:
- Around line 315-323: Track the post-provider persistence failure in the
translated inference flow around conversationTurnFromContext and
turn.appendResponse as an operational risk: a 500 after provider success can
cause client retries to invoke the provider again. Add or update the appropriate
follow-up tracking/documentation for an idempotency-key safeguard, without
changing the existing persistence error behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 30203721-0d91-4022-8fff-a48caa2a6541

📥 Commits

Reviewing files that changed from the base of the PR and between 161d147 and 42c7ef9.

📒 Files selected for processing (11)
  • internal/conversationstore/store_mongodb.go
  • internal/conversationstore/store_mongodb_test.go
  • internal/conversationstore/store_postgresql.go
  • internal/server/conversation_handlers_test.go
  • internal/server/conversation_item_normalization.go
  • internal/server/conversation_item_projection.go
  • internal/server/conversation_responses.go
  • internal/server/conversation_responses_test.go
  • internal/server/native_response_service.go
  • internal/server/translated_inference_service.go
  • tests/integration/conversations_test.go

Comment thread internal/server/conversation_responses.go Outdated
Copilot AI review requested due to automatic review settings July 22, 2026 15:52

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@SantiagoDePolonia

Copy link
Copy Markdown
Contributor Author

Follow-up review disposition (1227876):

  • Fixed the valid fragmented-SSE terminal event finding. A full terminal event is now buffered until conversation persistence succeeds, preventing any completion prefix from leaking on storage failure.
  • Documented the valid provider-retry/idempotency risk in the Conversations API guide. I did not add request deduplication here because correct deduplication requires a durable request identity and lifecycle across provider invocation and persistence; a local retry cache would create worse consistency and multi-instance behavior.

Validation: race tests, lint, go fix check, module verification, build, dashboard tests, E2E tests, contract replays, performance guard, and Mintlify validation all pass. Local disposable Mongo integration setup was blocked by Docker disk exhaustion (No space left on device); the prior PR integration run was green and the new CI run will validate this commit on a clean runner.

@coderabbitai coderabbitai 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.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/advanced/conversations-api.mdx`:
- Around line 87-93: Update the conversation persistence guidance in the
`/v1/responses` documentation to state that history inspection is not reliable
protection against duplicate retries because the successful provider call may
not have been persisted. Advise clients to avoid automatic retries or use an
independent durable idempotency mechanism, while preserving the existing
behavior description for streaming and non-streaming requests.

In `@internal/server/conversation_persisting_stream.go`:
- Around line 135-160: The conversationSSEPayload and OnJSONEvent flow must
preserve response.output JSON bytes without numeric round-tripping through
map[string]any. Decode output elements as []json.RawMessage, pass those raw
fragments unchanged to appendExchange, and add a fragmented SSE regression test
covering a large integer and unknown fields.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: f428da8e-c2a3-4c8d-b14e-dfa6a0007ced

📥 Commits

Reviewing files that changed from the base of the PR and between 42c7ef9 and 1227876.

📒 Files selected for processing (4)
  • docs/advanced/conversations-api.mdx
  • internal/server/conversation_persisting_stream.go
  • internal/server/conversation_persisting_stream_test.go
  • internal/server/conversation_responses.go
💤 Files with no reviewable changes (1)
  • internal/server/conversation_responses.go

Comment thread docs/advanced/conversations-api.mdx Outdated
Comment thread internal/server/conversation_persisting_stream.go Outdated
Copilot AI review requested due to automatic review settings July 22, 2026 16:00

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

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.

3 participants