Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
118638a
Rebuild events stream for subscribe on paused turns
chiragjn Oct 26, 2026
9642eb8
Merge branch 'ha/emit-pause' into cj-turn-stream-rebuild
chiragjn Oct 26, 2026
5ef2b97
Merge branch 'ha/emit-pause' into cj-turn-stream-rebuild
chiragjn Oct 27, 2026
57c5b32
Merge branch 'ha/emit-pause' into cj-turn-stream-rebuild
chiragjn Oct 27, 2026
802f5bf
Merge branch 'ha/emit-pause' into cj-turn-stream-rebuild
chiragjn Oct 27, 2026
aa7918b
fix: date session event sequence migration after pause migrations
chiragjn Oct 27, 2026
1a18530
Merge branch 'ha/emit-pause' into cj-turn-stream-rebuild
chiragjn Oct 29, 2026
9c422e3
Merge branch 'ha/emit-pause' of https://github.com/truefoundry/truefo…
chiragjn Oct 30, 2026
304b0a0
Restore an expired turn stream only while the turn is paused.
chiragjn Oct 30, 2026
6f1045f
Regenerate OpenAPI document and SDKs
trueforge-dev-bot[bot] Oct 30, 2026
45da35d
Merge branch 'ha/emit-pause' of https://github.com/truefoundry/truefo…
chiragjn Nov 2, 2026
6884632
Merge branch 'cj-turn-stream-rebuild' of https://github.com/truefound…
chiragjn Nov 2, 2026
841c805
Merge remote-tracking branch 'origin/ha/emit-pause' into cj-turn-stre…
cursoragent Nov 3, 2026
5284d4e
Subscribe to turn streams by event id (#1242)
chiragjn Nov 3, 2026
a3a6ba4
Address some review comments
chiragjn Nov 3, 2026
1c11b99
Fix turn stream resume dropping deltas and appending a stale repair.
chiragjn Nov 3, 2026
401c7c3
Regenerate OpenAPI document and SDKs
trueforge-dev-bot[bot] Nov 3, 2026
bdeceee
Repair turn streams by paging listTurnEvents ascending
chiragjn Nov 3, 2026
1071348
Throw the turn lock timeout directly from withTimeout
chiragjn Nov 3, 2026
136485d
Merge branch 'ha/emit-pause' into cj-turn-stream-rebuild
chiragjn Nov 3, 2026
5f6d7ed
Reject after_sequence_number on new-style turn streams
chiragjn Nov 4, 2026
d4f2184
Regenerate OpenAPI document and SDKs
trueforge-dev-bot[bot] Nov 4, 2026
74c1d8b
Trim subscribe API descriptions to caller contract
chiragjn Nov 4, 2026
21068a5
Regenerate OpenAPI document and SDKs
trueforge-dev-bot[bot] Nov 4, 2026
a0a11b7
Restore a missing turn stream from the whole durable log.
chiragjn Nov 5, 2026
7eddf03
Install a restored turn stream atomically and seek after-cursors back…
chiragjn Nov 5, 2026
6527f22
Log turn stream restore decisions, page queries, and timings.
chiragjn Nov 5, 2026
48a41df
Merge ha/emit-pause into cj-turn-stream-rebuild
chiragjn Nov 6, 2026
7730956
Keep interleaved model-message resumes from duplicating text.
chiragjn Nov 6, 2026
928f989
Scope resume cursors to the active turn and keep MCP auth cursors acr…
chiragjn Nov 6, 2026
365719a
Fix MCP auth wait after turn rebuild, memory ingest of paused turns, …
chiragjn Nov 6, 2026
2db18f8
Merge ha/emit-pause into cj-turn-stream-rebuild
chiragjn Nov 6, 2026
455dfb1
Send memory exchanges only once closed
chiragjn Nov 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/memory-ingest-closed-exchanges-only.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@truefoundry/trueforge': patch
---

Memory ingest sends an exchange only once it is closed, so a turn paused on the user is no longer sent early. The `pause_timeout_ms` setting in `TRUEFOUNDRY_MEMORY_SETTINGS` is removed; remove it from any existing configuration.
34 changes: 28 additions & 6 deletions .github/fern/openapi/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -11075,7 +11075,7 @@
},
"/api/v1/sessions/{session_id}/turns/{turn_id}/subscribe": {
"get": {
"description": "Subscribe to the live SSE stream for a turn. Only the session creator may subscribe. Pass `after_sequence_number` to resume after a disconnect (exclusive — events after this sequence number are replayed).",
"description": "Subscribe to the live SSE stream. Resume with from_event_id or after_event_id.",
"parameters": [
{
"description": "Session identifier.",
Expand All @@ -11101,18 +11101,40 @@
}
},
{
"description": "Exclusive resume cursor: replay only events with a sequence number greater than this value. Omit to start from the beginning of the live buffer.",
"description": "Deprecated. Rejected on new turns. Use from_event_id or after_event_id instead.",
"in": "query",
"name": "after_sequence_number",
"required": false,
"schema": {
"description": "Exclusive resume cursor: replay only events with a sequence number greater than this value. Omit to start from the beginning of the live buffer.",
"description": "Deprecated. Rejected on new turns. Use from_event_id or after_event_id instead.",
"minimum": 0,
"type": [
"integer",
"null"
]
}
},
{
"description": "Inclusive cursor. Replay starts at the entry with this event id",
"in": "query",
"name": "from_event_id",
"required": false,
"schema": {
"description": "Inclusive cursor. Replay starts at the entry with this event id",
"minLength": 1,
"type": "string"
}
},
{
"description": "Exclusive cursor. Replay starts after the last entry with this event id.",
"in": "query",
"name": "after_event_id",
"required": false,
"schema": {
"description": "Exclusive cursor. Replay starts after the last entry with this event id.",
"minLength": 1,
"type": "string"
}
}
],
"responses": {
Expand Down Expand Up @@ -11164,10 +11186,10 @@
}
}
},
"description": "Cannot subscribe — the live stream no longer exists."
"description": "The turn stream is no longer available or resumable."
}
},
"summary": "Subscribe to a running turn",
"summary": "Subscribe to a turn stream",
"tags": [
"Agent Sessions"
],
Expand All @@ -11177,7 +11199,7 @@
"x-fern-sdk-method-name": "subscribe_to_turn",
"x-fern-streaming": {
"format": "sse",
"resumable": true
"resumable": false
}
}
},
Expand Down
34 changes: 28 additions & 6 deletions docs/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -11075,7 +11075,7 @@
},
"/api/v1/sessions/{session_id}/turns/{turn_id}/subscribe": {
"get": {
"description": "Subscribe to the live SSE stream for a turn. Only the session creator may subscribe. Pass `after_sequence_number` to resume after a disconnect (exclusive — events after this sequence number are replayed).",
"description": "Subscribe to the live SSE stream. Resume with from_event_id or after_event_id.",
"parameters": [
{
"description": "Session identifier.",
Expand All @@ -11101,18 +11101,40 @@
}
},
{
"description": "Exclusive resume cursor: replay only events with a sequence number greater than this value. Omit to start from the beginning of the live buffer.",
"description": "Deprecated. Rejected on new turns. Use from_event_id or after_event_id instead.",
"in": "query",
"name": "after_sequence_number",
"required": false,
"schema": {
"description": "Exclusive resume cursor: replay only events with a sequence number greater than this value. Omit to start from the beginning of the live buffer.",
"description": "Deprecated. Rejected on new turns. Use from_event_id or after_event_id instead.",
"minimum": 0,
"type": [
"integer",
"null"
]
}
},
{
"description": "Inclusive cursor. Replay starts at the entry with this event id",
"in": "query",
"name": "from_event_id",
"required": false,
"schema": {
"description": "Inclusive cursor. Replay starts at the entry with this event id",
"minLength": 1,
"type": "string"
}
},
{
"description": "Exclusive cursor. Replay starts after the last entry with this event id.",
"in": "query",
"name": "after_event_id",
"required": false,
"schema": {
"description": "Exclusive cursor. Replay starts after the last entry with this event id.",
"minLength": 1,
"type": "string"
}
}
],
"responses": {
Expand Down Expand Up @@ -11164,10 +11186,10 @@
}
}
},
"description": "Cannot subscribe — the live stream no longer exists."
"description": "The turn stream is no longer available or resumable."
}
},
"summary": "Subscribe to a running turn",
"summary": "Subscribe to a turn stream",
"tags": [
"Agent Sessions"
],
Expand All @@ -11177,7 +11199,7 @@
"x-fern-sdk-method-name": "subscribe_to_turn",
"x-fern-streaming": {
"format": "sse",
"resumable": true
"resumable": false
}
}
},
Expand Down
Loading
Loading