-
-
Notifications
You must be signed in to change notification settings - Fork 7.4k
Expand file tree
/
Copy pathget-observations-by-ids-relevance.test.ts
More file actions
114 lines (101 loc) · 3.32 KB
/
Copy pathget-observations-by-ids-relevance.test.ts
File metadata and controls
114 lines (101 loc) · 3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import { describe, it, expect, beforeEach, afterEach } from 'bun:test';
import { SessionStore } from '../../../src/services/sqlite/SessionStore.js';
describe('SessionStore.*ByIds — orderBy: "relevance" preserves caller ID order (#2153)', () => {
let store: SessionStore;
beforeEach(() => {
store = new SessionStore(':memory:');
});
afterEach(() => {
store.close();
});
it('getObservationsByIds returns rows in caller-provided ID order when orderBy is "relevance"', () => {
const sdkId = store.createSDKSession('content-relevance', 'p', 'prompt');
store.updateMemorySessionId(sdkId, 'session-relevance');
const baseTs = 1_700_000_000_000;
const inserted: number[] = [];
for (let i = 0; i < 5; i++) {
const result = store.storeObservations(
'session-relevance',
'p',
[{
type: 'test',
title: `obs-${i}`,
subtitle: null,
facts: [`fact ${i}`],
narrative: null,
concepts: [],
files_read: [],
files_modified: [],
}],
null,
i,
0,
baseTs + i * 1000,
);
inserted.push(result.observationIds[0]);
}
const callerOrder = [...inserted].reverse();
const results = store.getObservationsByIds(callerOrder, { orderBy: 'relevance' });
expect(results.map(r => r.id)).toEqual(callerOrder);
});
it('applies a relevance limit after restoring the caller-provided ID order', () => {
const sdkId = store.createSDKSession('content-relevance-limit', 'p', 'prompt');
store.updateMemorySessionId(sdkId, 'session-relevance-limit');
const baseTs = 1_700_000_000_000;
const inserted: number[] = [];
for (let i = 0; i < 5; i++) {
const result = store.storeObservations(
'session-relevance-limit',
'p',
[{
type: 'test',
title: `obs-limit-${i}`,
subtitle: null,
facts: [`fact ${i}`],
narrative: null,
concepts: [],
files_read: [],
files_modified: [],
}],
null,
i,
0,
baseTs + i * 1000,
);
inserted.push(result.observationIds[0]);
}
const callerOrder = [...inserted].reverse();
const results = store.getObservationsByIds(callerOrder, { orderBy: 'relevance', limit: 2 });
expect(results.map(r => r.id)).toEqual(callerOrder.slice(0, 2));
});
it('getObservationsByIds still respects date_desc when orderBy defaults', () => {
const sdkId = store.createSDKSession('content-date', 'p', 'prompt');
store.updateMemorySessionId(sdkId, 'session-date');
const baseTs = 1_700_000_000_000;
const inserted: number[] = [];
for (let i = 0; i < 3; i++) {
const result = store.storeObservations(
'session-date',
'p',
[{
type: 'test',
title: `obs-${i}`,
subtitle: null,
facts: [`fact ${i}`],
narrative: null,
concepts: [],
files_read: [],
files_modified: [],
}],
null,
i,
0,
baseTs + i * 1000,
);
inserted.push(result.observationIds[0]);
}
const callerOrder = [...inserted].reverse();
const results = store.getObservationsByIds(callerOrder);
expect(results.map(r => r.id)).toEqual([...inserted].reverse());
});
});