gsxdsm
b9c5df04af
FN-8791: prevent NUL-containing chat checkpoints from crashing
Prevent malformed tool output from breaking chat checkpoint persistence.
- Sanitize NUL characters at chat JSONB persistence boundaries without mutating clean values.
- Observe rejected best-effort checkpoint writes so streaming sessions do not emit unhandled rejections.
- Add PostgreSQL, dashboard, and sanitizer regression coverage with operator-facing release notes.
Files changed:
.changeset/fn-8791-chat-nul-checkpoint.md | 7 ++
.../reliability/chat-jsonb-nul-sanitization.md | 44 +++++++++++
packages/core/src/__tests__/nul-sanitize.test.ts | 21 ++++-
.../chat-store-content-search-edit.pg.test.ts | 91 +++++++++++++++++++++-
packages/core/src/async-stores/async-chat-store.ts | 61 ++++++++++-----
packages/core/src/postgres/nul-sanitize.ts | 17 ++--
.../dashboard/src/__tests__/chat-manager.test.ts | 90 +++++++++++++++++++++
packages/dashboard/src/chat.ts | 21 ++++-
8 files changed, 322 insertions(+), 30 deletions(-)
Fusion-Task-Id: FN-8791
Fusion-Task-Lineage: 51e13634-04cc-4827-b72f-f33e40760940
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-04 19:15:20 -07:00
..
2026-08-04 00:20:08 -07:00
2026-08-04 19:15:20 -07:00
2026-08-04 10:52:12 -07:00
2026-08-03 00:20:53 -07:00
2026-08-04 19:15:20 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 09:04:45 -07:00
2026-08-03 00:20:53 -07:00
2026-08-04 08:57:30 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-04 10:52:12 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 16:48:25 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 16:48:25 -07:00
2026-08-03 00:20:53 -07:00
2026-08-04 00:20:08 -07:00
2026-08-03 09:04:45 -07:00
2026-08-04 19:15:20 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-04 11:52:15 -07:00
2026-08-03 16:15:12 -07:00
2026-08-04 11:52:15 -07:00
2026-08-04 00:20:08 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-04 10:52:12 -07:00
2026-08-04 10:52:12 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-07-31 21:56:30 -07:00
2026-07-31 21:56:30 -07:00
2026-07-30 21:50:37 -07:00
2026-08-04 11:52:15 -07:00
2026-08-01 02:47:25 -07:00
2026-08-03 00:20:53 -07:00
2026-07-22 08:30:12 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 16:15:12 -07:00
2026-08-03 00:20:53 -07:00
2026-08-03 00:20:53 -07:00