mirror of
https://github.com/docmost/docmost.git
synced 2026-08-25 15:57:11 +08:00
* feat(ai): add AI_VECTOR_DRIVER and turbopuffer configuration * feat(ai): carry workspace and target space ids on vector lifecycle events * feat(ai): add vector driver interface and turbopuffer request helpers * feat(ai): add pgvector driver behind the vector driver interface * refactor(ai): route vector reads and writes through the vector driver * feat(ai): add turbopuffer vector driver * feat(ai): rebuild turbopuffer namespaces when the embedding model changes * feat(ai): warm the vector namespace cache on session start * fix(ai): harden turbopuffer misconfiguration and reset failure paths * fix(ai): collapse blank-line runs in extracted page text * fix(ai): skip full re-embed when ai search is re-enabled within the delete grace window * sync * fix(ai): store real embedding dimensions instead of serialized vector length * fix(ai): filter search hits by the page's current space at query time * fix(ai): retry the page moved-to-space vector patch job * sync * feat(ai): pre-warm the vector namespace * fix(ai): pass AI_VECTOR_DRIVER through the client build config
15 lines
383 B
TypeScript
15 lines
383 B
TypeScript
import { collapseBlankLines } from './text.utils';
|
|
|
|
describe('collapseBlankLines', () => {
|
|
it.each([
|
|
['a\n\n\n\nb', 'a\n\nb'],
|
|
['a\n\nb', 'a\n\nb'],
|
|
['a\nb', 'a\nb'],
|
|
['\n\n\n\na\n\n\n', '\n\na\n\n'],
|
|
['no newlines', 'no newlines'],
|
|
['', ''],
|
|
])('collapses %j to %j', (input, expected) => {
|
|
expect(collapseBlankLines(input)).toBe(expected);
|
|
});
|
|
});
|