@traqr/memory 0.2.23 → 0.2.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/classification-ceiling.test.js +73 -1
- package/dist/lib/classification-ceiling.test.js.map +1 -1
- package/dist/lib/classification-enforcement.integration.test.d.ts +31 -0
- package/dist/lib/classification-enforcement.integration.test.js +233 -0
- package/dist/lib/classification-enforcement.integration.test.js.map +1 -0
- package/dist/lib/memory.d.ts +5 -2
- package/dist/lib/memory.js +3 -2
- package/dist/lib/memory.js.map +1 -1
- package/dist/lib/retrieval.d.ts +19 -0
- package/dist/lib/retrieval.js +36 -2
- package/dist/lib/retrieval.js.map +1 -1
- package/dist/routes/browse.d.ts +7 -0
- package/dist/routes/browse.js +51 -7
- package/dist/routes/browse.js.map +1 -1
- package/dist/routes/crud.js +22 -1
- package/dist/routes/crud.js.map +1 -1
- package/dist/vectordb/index.d.ts +11 -0
- package/dist/vectordb/index.js +13 -0
- package/dist/vectordb/index.js.map +1 -1
- package/dist/vectordb/postgres.d.ts +17 -2
- package/dist/vectordb/postgres.js +25 -5
- package/dist/vectordb/postgres.js.map +1 -1
- package/dist/vectordb/supabase.d.ts +7 -2
- package/dist/vectordb/supabase.js +13 -5
- package/dist/vectordb/supabase.js.map +1 -1
- package/dist/vectordb/types.d.ts +7 -1
- package/dist/vectordb/types.js +18 -0
- package/dist/vectordb/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
*
|
|
13
13
|
* Run: npx tsx packages/memory/src/lib/classification-ceiling.test.ts
|
|
14
14
|
*/
|
|
15
|
-
import { applyClassificationCeiling } from './retrieval.js';
|
|
15
|
+
import { applyClassificationCeiling, allowedClassificationsForCeiling, resolveClassificationCeiling, } from './retrieval.js';
|
|
16
|
+
import { exceedsClassificationCeiling } from '../vectordb/types.js';
|
|
16
17
|
let passed = 0;
|
|
17
18
|
let failed = 0;
|
|
18
19
|
function assert(label, condition) {
|
|
@@ -92,6 +93,77 @@ console.log('\n--- applyClassificationCeiling (TD-810) ---');
|
|
|
92
93
|
assert('unknown classification fails closed (dropped even at admin)', !ids.includes('bogus'));
|
|
93
94
|
assert('known row alongside unknown still kept', ids.includes('pub') && out.length === 1);
|
|
94
95
|
}
|
|
96
|
+
// ===========================================================================
|
|
97
|
+
// TD-883: browse + getById direct-retrieval ceilings.
|
|
98
|
+
// The browse route filters at the DB via allowedClassificationsForCeiling;
|
|
99
|
+
// the getById path redacts over-tier rows via exceedsClassificationCeiling.
|
|
100
|
+
// These pure helpers back both surfaces, so pinning them pins the behavior.
|
|
101
|
+
// ===========================================================================
|
|
102
|
+
console.log('\n--- allowedClassificationsForCeiling (TD-883 browse) ---');
|
|
103
|
+
// (a) browse summaries drop over-tier rows under exploration, keep public+internal.
|
|
104
|
+
{
|
|
105
|
+
const allowed = allowedClassificationsForCeiling('exploration');
|
|
106
|
+
assert('exploration → allowed list defined', !!allowed);
|
|
107
|
+
assert('exploration allows public', !!allowed?.includes('public'));
|
|
108
|
+
assert('exploration allows internal', !!allowed?.includes('internal'));
|
|
109
|
+
assert('exploration drops confidential', !allowed?.includes('confidential'));
|
|
110
|
+
assert('exploration drops restricted', !allowed?.includes('restricted'));
|
|
111
|
+
assert('exploration allowed count is 2', allowed?.length === 2);
|
|
112
|
+
// 'internal' is in-tier → NULL rows (which hydrate to 'internal') are admitted.
|
|
113
|
+
assert('exploration admits NULL rows (internal in tier)', !!allowed?.includes('internal'));
|
|
114
|
+
}
|
|
115
|
+
// (b) browse with no accessLevel = unchanged (undefined → caller skips filter).
|
|
116
|
+
{
|
|
117
|
+
const allowed = allowedClassificationsForCeiling();
|
|
118
|
+
assert('no accessLevel → undefined (no DB filter, unchanged behavior)', allowed === undefined);
|
|
119
|
+
assert('no ceiling resolved when neither arg given', resolveClassificationCeiling() === undefined);
|
|
120
|
+
}
|
|
121
|
+
// standard ceiling allows public/internal/confidential, drops restricted.
|
|
122
|
+
{
|
|
123
|
+
const allowed = allowedClassificationsForCeiling('standard');
|
|
124
|
+
assert('standard allows confidential', !!allowed?.includes('confidential'));
|
|
125
|
+
assert('standard drops restricted', !allowed?.includes('restricted'));
|
|
126
|
+
assert('standard allowed count is 3', allowed?.length === 3);
|
|
127
|
+
}
|
|
128
|
+
// maxClassification overrides accessLevel (admin → internal ceiling).
|
|
129
|
+
{
|
|
130
|
+
const allowed = allowedClassificationsForCeiling('admin', 'internal');
|
|
131
|
+
assert('override: admin+internal allows only public+internal', allowed?.length === 2 && !allowed?.includes('confidential'));
|
|
132
|
+
}
|
|
133
|
+
// confidential ceiling: NULL rows still admitted (internal < confidential).
|
|
134
|
+
{
|
|
135
|
+
const allowed = allowedClassificationsForCeiling('standard');
|
|
136
|
+
assert('confidential ceiling still admits NULL (internal in tier)', !!allowed?.includes('internal'));
|
|
137
|
+
}
|
|
138
|
+
console.log('\n--- exceedsClassificationCeiling (TD-883 getById) ---');
|
|
139
|
+
// (c) getById returns null for over-tier under a ceiling.
|
|
140
|
+
{
|
|
141
|
+
assert('confidential exceeds exploration ceiling → redacted', exceedsClassificationCeiling('confidential', 'exploration') === true);
|
|
142
|
+
assert('restricted exceeds exploration ceiling → redacted', exceedsClassificationCeiling('restricted', 'exploration') === true);
|
|
143
|
+
}
|
|
144
|
+
// (c) getById returns the row when in-tier.
|
|
145
|
+
{
|
|
146
|
+
assert('public in-tier at exploration → kept', exceedsClassificationCeiling('public', 'exploration') === false);
|
|
147
|
+
assert('internal in-tier at exploration → kept', exceedsClassificationCeiling('internal', 'exploration') === false);
|
|
148
|
+
assert('confidential in-tier at standard → kept', exceedsClassificationCeiling('confidential', 'standard') === false);
|
|
149
|
+
}
|
|
150
|
+
// (c) getById returns the row with no ceiling (no opts → never exceeds).
|
|
151
|
+
{
|
|
152
|
+
assert('no ceiling → restricted never redacted', exceedsClassificationCeiling('restricted') === false);
|
|
153
|
+
assert('no ceiling → undefined classification never redacted', exceedsClassificationCeiling(undefined) === false);
|
|
154
|
+
}
|
|
155
|
+
// undefined classification treated as public (kept) even at lowest tier.
|
|
156
|
+
{
|
|
157
|
+
assert('undefined classification at exploration → kept (public)', exceedsClassificationCeiling(undefined, 'exploration') === false);
|
|
158
|
+
}
|
|
159
|
+
// maxClassification overrides accessLevel in the getById predicate too.
|
|
160
|
+
{
|
|
161
|
+
assert('admin+internal ceiling redacts confidential', exceedsClassificationCeiling('confidential', 'admin', 'internal') === true);
|
|
162
|
+
}
|
|
163
|
+
// fail-closed: unknown classification string is redacted (exceeds) even at admin.
|
|
164
|
+
{
|
|
165
|
+
assert('unknown classification fails closed → redacted', exceedsClassificationCeiling('topsecret', 'admin') === true);
|
|
166
|
+
}
|
|
95
167
|
console.log(`\n${'='.repeat(50)}`);
|
|
96
168
|
console.log(`Results: ${passed} passed, ${failed} failed`);
|
|
97
169
|
if (failed > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classification-ceiling.test.js","sourceRoot":"","sources":["../../src/lib/classification-ceiling.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"classification-ceiling.test.js","sourceRoot":"","sources":["../../src/lib/classification-ceiling.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classification Enforcement — LIVE-PATH integration + arg-passing contract (TD-885).
|
|
3
|
+
*
|
|
4
|
+
* The TD-810/883 unit tests (classification-ceiling.test.ts) pin the pure
|
|
5
|
+
* helpers in ISOLATION. But BOTH real leaks in that saga were *integration*
|
|
6
|
+
* bugs the helpers-in-isolation structurally cannot catch:
|
|
7
|
+
*
|
|
8
|
+
* - TD-810 commit-1: bm25/temporal/graph strategies + the getById hydration
|
|
9
|
+
* of bm25/graph-only hits were classification-BLIND. The helper was correct;
|
|
10
|
+
* searchMemoriesV2 just didn't invoke a ceiling on those rows. Closed by the
|
|
11
|
+
* defense-in-depth post-filter at the end of searchMemoriesV2.
|
|
12
|
+
* - TD-810 commit-2 (f233ff40): PostgresVectorProvider.search() passed only 8
|
|
13
|
+
* positional args, omitting arg 9 (p_max_classification) → the DB defaulted
|
|
14
|
+
* it to 'restricted' (= show-all). The helper was never even reached.
|
|
15
|
+
*
|
|
16
|
+
* This file is the live-path regression guard TD-810 acceptance item 4 asked
|
|
17
|
+
* for. Two sections:
|
|
18
|
+
* 1. INTEGRATION — drive searchMemoriesV2 through a fake VectorDBProvider that
|
|
19
|
+
* yields over-tier rows across the semantic + bm25 + graph paths (the last
|
|
20
|
+
* two via the classification-blind getById hydration), assert the live path
|
|
21
|
+
* returns ZERO over-tier rows at the exploration ceiling. Catches commit-1.
|
|
22
|
+
* 2. CONTRACT — capture the positional args PostgresVectorProvider.search()
|
|
23
|
+
* passes to query() via a fake pool, assert p_max_classification rides in
|
|
24
|
+
* arg 9 (single-project) / arg 12 (cross-project). Catches commit-2 — no DB.
|
|
25
|
+
*
|
|
26
|
+
* Hermetic: EMBEDDING_PROVIDER=none (no network), fake provider + fake pool
|
|
27
|
+
* (no DB). Matches the tsx-script convention of classification-ceiling.test.ts.
|
|
28
|
+
*
|
|
29
|
+
* Run: npx tsx packages/memory/src/lib/classification-enforcement.integration.test.ts
|
|
30
|
+
*/
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classification Enforcement — LIVE-PATH integration + arg-passing contract (TD-885).
|
|
3
|
+
*
|
|
4
|
+
* The TD-810/883 unit tests (classification-ceiling.test.ts) pin the pure
|
|
5
|
+
* helpers in ISOLATION. But BOTH real leaks in that saga were *integration*
|
|
6
|
+
* bugs the helpers-in-isolation structurally cannot catch:
|
|
7
|
+
*
|
|
8
|
+
* - TD-810 commit-1: bm25/temporal/graph strategies + the getById hydration
|
|
9
|
+
* of bm25/graph-only hits were classification-BLIND. The helper was correct;
|
|
10
|
+
* searchMemoriesV2 just didn't invoke a ceiling on those rows. Closed by the
|
|
11
|
+
* defense-in-depth post-filter at the end of searchMemoriesV2.
|
|
12
|
+
* - TD-810 commit-2 (f233ff40): PostgresVectorProvider.search() passed only 8
|
|
13
|
+
* positional args, omitting arg 9 (p_max_classification) → the DB defaulted
|
|
14
|
+
* it to 'restricted' (= show-all). The helper was never even reached.
|
|
15
|
+
*
|
|
16
|
+
* This file is the live-path regression guard TD-810 acceptance item 4 asked
|
|
17
|
+
* for. Two sections:
|
|
18
|
+
* 1. INTEGRATION — drive searchMemoriesV2 through a fake VectorDBProvider that
|
|
19
|
+
* yields over-tier rows across the semantic + bm25 + graph paths (the last
|
|
20
|
+
* two via the classification-blind getById hydration), assert the live path
|
|
21
|
+
* returns ZERO over-tier rows at the exploration ceiling. Catches commit-1.
|
|
22
|
+
* 2. CONTRACT — capture the positional args PostgresVectorProvider.search()
|
|
23
|
+
* passes to query() via a fake pool, assert p_max_classification rides in
|
|
24
|
+
* arg 9 (single-project) / arg 12 (cross-project). Catches commit-2 — no DB.
|
|
25
|
+
*
|
|
26
|
+
* Hermetic: EMBEDDING_PROVIDER=none (no network), fake provider + fake pool
|
|
27
|
+
* (no DB). Matches the tsx-script convention of classification-ceiling.test.ts.
|
|
28
|
+
*
|
|
29
|
+
* Run: npx tsx packages/memory/src/lib/classification-enforcement.integration.test.ts
|
|
30
|
+
*/
|
|
31
|
+
// MUST be set before any embedding call. getEmbeddingProvider() reads this at
|
|
32
|
+
// call-time and returns the network-free NullEmbeddingProvider (embedding: []).
|
|
33
|
+
process.env.EMBEDDING_PROVIDER = 'none';
|
|
34
|
+
import { searchMemoriesV2 } from './retrieval.js';
|
|
35
|
+
import { setVectorDB, resetVectorDB } from '../vectordb/index.js';
|
|
36
|
+
import { PostgresVectorProvider, setPostgresPool, resetPostgresPool } from '../vectordb/postgres.js';
|
|
37
|
+
let passed = 0;
|
|
38
|
+
let failed = 0;
|
|
39
|
+
function assert(label, condition) {
|
|
40
|
+
if (condition) {
|
|
41
|
+
console.log(` PASS ${label}`);
|
|
42
|
+
passed++;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
console.log(` FAIL ${label}`);
|
|
46
|
+
failed++;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
// Test fixtures: minimal Memory / MemorySearchResult rows by classification.
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
function mem(id, classification) {
|
|
53
|
+
return {
|
|
54
|
+
id,
|
|
55
|
+
content: `content-${id}`,
|
|
56
|
+
classification,
|
|
57
|
+
tags: [],
|
|
58
|
+
contextTags: [],
|
|
59
|
+
sourceType: 'manual',
|
|
60
|
+
sourceProject: 'test',
|
|
61
|
+
originalConfidence: 0.9,
|
|
62
|
+
lastValidated: new Date(0),
|
|
63
|
+
relatedTo: [],
|
|
64
|
+
isContradiction: false,
|
|
65
|
+
isArchived: false,
|
|
66
|
+
durability: 'permanent',
|
|
67
|
+
embeddingModel: 'none',
|
|
68
|
+
embeddingModelVersion: 'v1',
|
|
69
|
+
createdAt: new Date(0),
|
|
70
|
+
updatedAt: new Date(0),
|
|
71
|
+
timesReturned: 0,
|
|
72
|
+
timesCited: 0,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function searchRow(id, classification) {
|
|
76
|
+
return { ...mem(id, classification), currentConfidence: 0.9, similarity: 0.5, relevanceScore: 0.5 };
|
|
77
|
+
}
|
|
78
|
+
// ===========================================================================
|
|
79
|
+
// 1. INTEGRATION — searchMemoriesV2 live path drops over-tier rows (commit-1).
|
|
80
|
+
// ===========================================================================
|
|
81
|
+
//
|
|
82
|
+
// Fake provider yields over-tier rows across all three active strategies:
|
|
83
|
+
// - semantic → sem-int (internal, kept) + sem-conf (confidential, DROP)
|
|
84
|
+
// these land in semanticFullResults → hydrated via semanticMap
|
|
85
|
+
// - bm25 → bm25-pub (public, kept) + bm25-restr (restricted, DROP)
|
|
86
|
+
// NEW ids not in semantic → hydrated via the BLIND getById path
|
|
87
|
+
// - graph → graph-conf (confidential, DROP)
|
|
88
|
+
// NEW id → also via the BLIND getById path
|
|
89
|
+
// At exploration the ceiling is 'internal', so only public+internal survive.
|
|
90
|
+
console.log('\n--- searchMemoriesV2 live-path classification enforcement (TD-885 / TD-810 commit-1) ---');
|
|
91
|
+
// Rows that arrive ONLY via bm25/graph must be hydrated by getById (the path
|
|
92
|
+
// that was classification-blind in commit-1, now backstopped by the post-filter).
|
|
93
|
+
const byId = {
|
|
94
|
+
'bm25-pub': mem('bm25-pub', 'public'),
|
|
95
|
+
'bm25-restr': mem('bm25-restr', 'restricted'),
|
|
96
|
+
'graph-conf': mem('graph-conf', 'confidential'),
|
|
97
|
+
};
|
|
98
|
+
const getByIdCalls = [];
|
|
99
|
+
// FIDELITY NOTE (TD-885): this fake emits over-tier rows ONLY from the retrieval
|
|
100
|
+
// paths searchMemoriesV2 dispatches today — search (semantic), bm25Search,
|
|
101
|
+
// graphSearch, and the getById hydration of bm25/graph-only hits. The "0 over-tier
|
|
102
|
+
// rows across every path" assertion is only as complete as this fixture. If a new
|
|
103
|
+
// retrieval strategy is added to searchMemoriesV2, emit an over-tier row for it
|
|
104
|
+
// here too (see the matching note at retrieval.ts step 3) — else this guard passes
|
|
105
|
+
// blind to the new path.
|
|
106
|
+
const fakeProvider = {
|
|
107
|
+
async search() {
|
|
108
|
+
return [searchRow('sem-int', 'internal'), searchRow('sem-conf', 'confidential')];
|
|
109
|
+
},
|
|
110
|
+
async bm25Search() {
|
|
111
|
+
return [
|
|
112
|
+
{ id: 'bm25-pub', content: 'content-bm25-pub', bm25Score: 1 },
|
|
113
|
+
{ id: 'bm25-restr', content: 'content-bm25-restr', bm25Score: 1 },
|
|
114
|
+
];
|
|
115
|
+
},
|
|
116
|
+
async graphSearch() {
|
|
117
|
+
return [{ id: 'graph-conf', content: 'content-graph-conf', graphScore: 1, edgeType: 'related', depth: 1 }];
|
|
118
|
+
},
|
|
119
|
+
async temporalSearch() {
|
|
120
|
+
return [];
|
|
121
|
+
},
|
|
122
|
+
async getById(id) {
|
|
123
|
+
getByIdCalls.push(id);
|
|
124
|
+
return byId[id] ?? null;
|
|
125
|
+
},
|
|
126
|
+
async bumpReturned() {
|
|
127
|
+
/* no-op */
|
|
128
|
+
},
|
|
129
|
+
async citeMemory() {
|
|
130
|
+
/* no-op */
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
{
|
|
134
|
+
setVectorDB(fakeProvider);
|
|
135
|
+
let results = [];
|
|
136
|
+
try {
|
|
137
|
+
results = await searchMemoriesV2('classification regression probe', {
|
|
138
|
+
accessLevel: 'exploration',
|
|
139
|
+
strategies: ['semantic', 'bm25', 'graph'], // force all 3 (skip detectStrategies)
|
|
140
|
+
entityIds: ['seed-1'], // non-empty → graph seeds present + skips findEntitiesInQuery (no network)
|
|
141
|
+
limit: 10,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
finally {
|
|
145
|
+
resetVectorDB();
|
|
146
|
+
}
|
|
147
|
+
const ids = results.map((r) => r.id);
|
|
148
|
+
const overTier = results.filter((r) => r.classification === 'confidential' || r.classification === 'restricted');
|
|
149
|
+
assert('live path returns ZERO over-tier rows at exploration (the leak both fixes closed)', overTier.length === 0);
|
|
150
|
+
assert('in-tier internal row (semantic) survives', ids.includes('sem-int'));
|
|
151
|
+
assert('in-tier public row (bm25, getById-hydrated) survives', ids.includes('bm25-pub'));
|
|
152
|
+
assert('confidential semantic row dropped', !ids.includes('sem-conf'));
|
|
153
|
+
assert('restricted bm25 row dropped (its getById hydration was classification-blind)', !ids.includes('bm25-restr'));
|
|
154
|
+
assert('confidential graph row dropped', !ids.includes('graph-conf'));
|
|
155
|
+
// Prove the blind getById hydration path (commit-1's leak surface) was ACTUALLY
|
|
156
|
+
// exercised — otherwise the test could pass without touching the bug class.
|
|
157
|
+
assert('getById hydration ran for bm25/graph-only hits (commit-1 leak path exercised)', getByIdCalls.length >= 2);
|
|
158
|
+
assert('exactly the two in-tier rows survive', results.length === 2);
|
|
159
|
+
}
|
|
160
|
+
// ===========================================================================
|
|
161
|
+
// 2. CONTRACT — PostgresVectorProvider.search() arg passing (commit-2).
|
|
162
|
+
// ===========================================================================
|
|
163
|
+
//
|
|
164
|
+
// commit-2: the single-project branch passed 8 args, omitting arg 9
|
|
165
|
+
// (p_max_classification) → DB defaulted it to 'restricted' = unfiltered.
|
|
166
|
+
// We capture the args via a fake pool and assert the security params ride in
|
|
167
|
+
// the correct positions. No live DB.
|
|
168
|
+
console.log('\n--- PostgresVectorProvider.search() arg-passing contract (TD-885 / TD-810 commit-2) ---');
|
|
169
|
+
const captured = [];
|
|
170
|
+
const fakePool = {
|
|
171
|
+
async query(sql, params) {
|
|
172
|
+
captured.push({ sql, params });
|
|
173
|
+
return { rows: [] };
|
|
174
|
+
},
|
|
175
|
+
async end() {
|
|
176
|
+
/* no-op */
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
{
|
|
180
|
+
setPostgresPool(fakePool);
|
|
181
|
+
const pg = new PostgresVectorProvider();
|
|
182
|
+
try {
|
|
183
|
+
// -- single-project branch: SELECT * FROM search_memories($1..$10)
|
|
184
|
+
captured.length = 0;
|
|
185
|
+
await pg.search('q', { accessLevel: 'exploration' });
|
|
186
|
+
{
|
|
187
|
+
const last = captured[captured.length - 1];
|
|
188
|
+
assert('single-project branch calls search_memories', last.sql.includes('search_memories(') && !last.sql.includes('cross_project'));
|
|
189
|
+
assert('single-project passes 10 positional args (commit-2 bug passed 8)', last.params.length === 10);
|
|
190
|
+
assert('arg 9 (p_max_classification) = internal for exploration', last.params[8] === 'internal');
|
|
191
|
+
assert('arg 10 (p_client_namespace) = null when unset', last.params[9] === null);
|
|
192
|
+
}
|
|
193
|
+
// -- cross-project branch: SELECT * FROM search_memories_cross_project($1..$13)
|
|
194
|
+
captured.length = 0;
|
|
195
|
+
await pg.search('q', { accessLevel: 'standard', sourceProject: 'proj-x' });
|
|
196
|
+
{
|
|
197
|
+
const last = captured[captured.length - 1];
|
|
198
|
+
assert('cross-project branch calls search_memories_cross_project', last.sql.includes('search_memories_cross_project('));
|
|
199
|
+
assert('cross-project passes 13 positional args', last.params.length === 13);
|
|
200
|
+
assert('arg 12 (p_max_classification) = confidential for standard', last.params[11] === 'confidential');
|
|
201
|
+
assert('arg 13 (p_client_namespace) = null when unset', last.params[12] === null);
|
|
202
|
+
}
|
|
203
|
+
// -- fail-safe default: no accessLevel → 'restricted' (= byte-identical to the
|
|
204
|
+
// pre-TD-810 default; the commit-2 fix preserves this for no-ceiling callers).
|
|
205
|
+
captured.length = 0;
|
|
206
|
+
await pg.search('q', {});
|
|
207
|
+
{
|
|
208
|
+
const last = captured[captured.length - 1];
|
|
209
|
+
assert('no accessLevel → arg 9 defaults to restricted (fail-safe parity with pre-TD-810)', last.params[8] === 'restricted');
|
|
210
|
+
}
|
|
211
|
+
// -- explicit maxClassification overrides accessLevel in the arg too.
|
|
212
|
+
captured.length = 0;
|
|
213
|
+
await pg.search('q', { accessLevel: 'admin', maxClassification: 'internal' });
|
|
214
|
+
{
|
|
215
|
+
const last = captured[captured.length - 1];
|
|
216
|
+
assert('explicit maxClassification overrides accessLevel in arg 9 (admin+internal → internal)', last.params[8] === 'internal');
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
finally {
|
|
220
|
+
resetPostgresPool();
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
// ---------------------------------------------------------------------------
|
|
224
|
+
console.log(`\n${'='.repeat(50)}`);
|
|
225
|
+
console.log(`Results: ${passed} passed, ${failed} failed`);
|
|
226
|
+
if (failed > 0) {
|
|
227
|
+
console.log('CLASSIFICATION-ENFORCEMENT INTEGRATION TESTS FAILED');
|
|
228
|
+
process.exit(1);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
console.log('All classification-enforcement integration tests passed!');
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=classification-enforcement.integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classification-enforcement.integration.test.js","sourceRoot":"","sources":["../../src/lib/classification-enforcement.integration.test.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/memory.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Wraps the vectordb abstraction with convenience functions.
|
|
6
6
|
*/
|
|
7
7
|
import { type EmbeddingHealthStatus } from './embeddings.js';
|
|
8
|
-
import type { Memory, MemoryInput, MemorySearchResult, MemoryUpdate, MemoryExport, SearchOptions, MemoryCategory } from '../vectordb/types.js';
|
|
8
|
+
import type { Memory, MemoryInput, MemorySearchResult, MemoryUpdate, MemoryExport, SearchOptions, MemoryCategory, MemoryAccessLevel, MemoryClassification } from '../vectordb/types.js';
|
|
9
9
|
export type { Memory, MemoryInput, MemorySearchResult, MemoryUpdate, MemoryExport, SearchOptions, MemoryCategory, };
|
|
10
10
|
export declare function storeMemory(input: MemoryInput): Promise<Memory>;
|
|
11
11
|
export type TriageZone = 'noop' | 'add' | 'borderline';
|
|
@@ -42,7 +42,10 @@ export declare function triageAndStore(input: MemoryInput, options?: TriageOptio
|
|
|
42
42
|
/** Backward-compatible alias for triageAndStore */
|
|
43
43
|
export declare function storeWithDedup(input: MemoryInput, _dedupThreshold?: number): Promise<TriageResult>;
|
|
44
44
|
export declare function searchMemories(query: string, options?: SearchOptions): Promise<MemorySearchResult[]>;
|
|
45
|
-
export declare function getMemory(id: string
|
|
45
|
+
export declare function getMemory(id: string, opts?: {
|
|
46
|
+
accessLevel?: MemoryAccessLevel;
|
|
47
|
+
maxClassification?: MemoryClassification;
|
|
48
|
+
}): Promise<Memory | null>;
|
|
46
49
|
/**
|
|
47
50
|
* Record a citation (TD-817): increments times_cited, sets last_cited_at,
|
|
48
51
|
* and resets the decay timer (last_validated). Call when an agent explicitly
|
package/dist/lib/memory.js
CHANGED
|
@@ -235,9 +235,10 @@ export async function searchMemories(query, options = {}) {
|
|
|
235
235
|
const db = getVectorDB();
|
|
236
236
|
return db.search(query, options);
|
|
237
237
|
}
|
|
238
|
-
export async function getMemory(id) {
|
|
238
|
+
export async function getMemory(id, opts) {
|
|
239
239
|
const db = getVectorDB();
|
|
240
|
-
|
|
240
|
+
// TD-883: thread the optional classification ceiling. No opts → unchanged.
|
|
241
|
+
return db.getById(id, opts);
|
|
241
242
|
}
|
|
242
243
|
/**
|
|
243
244
|
* Record a citation (TD-817): increments times_cited, sets last_cited_at,
|
package/dist/lib/memory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/lib/memory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/lib/memory.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/retrieval.d.ts
CHANGED
|
@@ -66,6 +66,25 @@ export declare function reciprocalRankFusion(strategyResults: StrategyResult[],
|
|
|
66
66
|
export declare function applyClassificationCeiling<T extends {
|
|
67
67
|
classification?: MemoryClassification;
|
|
68
68
|
}>(results: T[], accessLevel?: MemoryAccessLevel, maxClassification?: MemoryClassification): T[];
|
|
69
|
+
/**
|
|
70
|
+
* Resolve the effective classification ceiling for a caller.
|
|
71
|
+
*
|
|
72
|
+
* Explicit maxClassification wins; else derive from accessLevel; else undefined
|
|
73
|
+
* (= no ceiling, fail-safe). Shared by every surface that filters on the
|
|
74
|
+
* accessLevel/maxClassification pair (search, browse, getById) so the mapping
|
|
75
|
+
* lives in exactly one place (TD-883).
|
|
76
|
+
*/
|
|
77
|
+
export declare function resolveClassificationCeiling(accessLevel?: MemoryAccessLevel, maxClassification?: MemoryClassification): MemoryClassification | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* The list of classification values at or below a ceiling, for DB-level
|
|
80
|
+
* `.in('classification', ...)` filtering (TD-883 browse surface).
|
|
81
|
+
*
|
|
82
|
+
* No ceiling → undefined (caller must skip filtering → unchanged behavior).
|
|
83
|
+
* NOTE: a NULL classification column hydrates to 'internal' (rowToMemory's
|
|
84
|
+
* `?? 'internal'`), so callers filtering at the DB must additionally admit NULL
|
|
85
|
+
* rows whenever 'internal' is in this list — `.in()` alone never matches NULL.
|
|
86
|
+
*/
|
|
87
|
+
export declare function allowedClassificationsForCeiling(accessLevel?: MemoryAccessLevel, maxClassification?: MemoryClassification): MemoryClassification[] | undefined;
|
|
69
88
|
/**
|
|
70
89
|
* Detect which search strategies should be activated for a query.
|
|
71
90
|
* Semantic + BM25 always run. Temporal activates on date patterns.
|
package/dist/lib/retrieval.js
CHANGED
|
@@ -73,8 +73,7 @@ export function reciprocalRankFusion(strategyResults, k = 60, topN = 20) {
|
|
|
73
73
|
export function applyClassificationCeiling(results, accessLevel, maxClassification) {
|
|
74
74
|
// Resolve the ceiling. Explicit maxClassification wins; else derive from
|
|
75
75
|
// accessLevel; else no ceiling → fail-safe pass-through.
|
|
76
|
-
const ceiling = maxClassification
|
|
77
|
-
(accessLevel ? ACCESS_LEVEL_MAX_CLASSIFICATION[accessLevel] : undefined);
|
|
76
|
+
const ceiling = resolveClassificationCeiling(accessLevel, maxClassification);
|
|
78
77
|
if (!ceiling)
|
|
79
78
|
return results;
|
|
80
79
|
const ceilingRank = CLASSIFICATION_RANK[ceiling];
|
|
@@ -87,6 +86,34 @@ export function applyClassificationCeiling(results, accessLevel, maxClassificati
|
|
|
87
86
|
return rank <= ceilingRank;
|
|
88
87
|
});
|
|
89
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Resolve the effective classification ceiling for a caller.
|
|
91
|
+
*
|
|
92
|
+
* Explicit maxClassification wins; else derive from accessLevel; else undefined
|
|
93
|
+
* (= no ceiling, fail-safe). Shared by every surface that filters on the
|
|
94
|
+
* accessLevel/maxClassification pair (search, browse, getById) so the mapping
|
|
95
|
+
* lives in exactly one place (TD-883).
|
|
96
|
+
*/
|
|
97
|
+
export function resolveClassificationCeiling(accessLevel, maxClassification) {
|
|
98
|
+
return (maxClassification ??
|
|
99
|
+
(accessLevel ? ACCESS_LEVEL_MAX_CLASSIFICATION[accessLevel] : undefined));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The list of classification values at or below a ceiling, for DB-level
|
|
103
|
+
* `.in('classification', ...)` filtering (TD-883 browse surface).
|
|
104
|
+
*
|
|
105
|
+
* No ceiling → undefined (caller must skip filtering → unchanged behavior).
|
|
106
|
+
* NOTE: a NULL classification column hydrates to 'internal' (rowToMemory's
|
|
107
|
+
* `?? 'internal'`), so callers filtering at the DB must additionally admit NULL
|
|
108
|
+
* rows whenever 'internal' is in this list — `.in()` alone never matches NULL.
|
|
109
|
+
*/
|
|
110
|
+
export function allowedClassificationsForCeiling(accessLevel, maxClassification) {
|
|
111
|
+
const ceiling = resolveClassificationCeiling(accessLevel, maxClassification);
|
|
112
|
+
if (!ceiling)
|
|
113
|
+
return undefined;
|
|
114
|
+
const ceilingRank = CLASSIFICATION_RANK[ceiling];
|
|
115
|
+
return Object.keys(CLASSIFICATION_RANK).filter((cls) => CLASSIFICATION_RANK[cls] <= ceilingRank);
|
|
116
|
+
}
|
|
90
117
|
// ---------------------------------------------------------------------------
|
|
91
118
|
// Strategy Detection (TD-159)
|
|
92
119
|
// ---------------------------------------------------------------------------
|
|
@@ -288,6 +315,13 @@ export async function searchMemoriesV2(query, options = {}) {
|
|
|
288
315
|
const embeddingStr = formatEmbeddingForPgVector(embeddingResult.embedding);
|
|
289
316
|
// 3. Run active strategies in parallel
|
|
290
317
|
// Keep full semantic results for hydration + BM25 content for reranking
|
|
318
|
+
//
|
|
319
|
+
// TD-885 regression-guard fidelity: the classification post-filter (step 6.5)
|
|
320
|
+
// is exercised end-to-end by classification-enforcement.integration.test.ts via
|
|
321
|
+
// a fake provider that emits over-tier rows from EACH strategy below. If you add
|
|
322
|
+
// a NEW retrieval strategy here, add a fake over-tier row for it in that test's
|
|
323
|
+
// fakeProvider — otherwise its "0 over-tier rows across every path" assertion
|
|
324
|
+
// passes blind to the new path, and a classification leak ships green.
|
|
291
325
|
let semanticFullResults = [];
|
|
292
326
|
let bm25ContentMap = new Map();
|
|
293
327
|
const strategyPromises = [];
|