@polpo-ai/core 0.15.131 → 0.15.133
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/README.md +46 -8
- package/dist/__tests__/brain-local.test.js +106 -0
- package/dist/__tests__/brain-local.test.js.map +1 -1
- package/dist/__tests__/memory-store-policy.test.js +149 -0
- package/dist/__tests__/memory-store-policy.test.js.map +1 -1
- package/dist/__tests__/project-layout.test.js +8 -0
- package/dist/__tests__/project-layout.test.js.map +1 -1
- package/dist/adapter.d.ts +3 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/brain/contracts.d.ts.map +1 -1
- package/dist/brain/contracts.js +36 -0
- package/dist/brain/contracts.js.map +1 -1
- package/dist/brain/in-memory-store.d.ts.map +1 -1
- package/dist/brain/in-memory-store.js +102 -60
- package/dist/brain/in-memory-store.js.map +1 -1
- package/dist/brain/index.d.ts +2 -2
- package/dist/brain/index.d.ts.map +1 -1
- package/dist/brain/ports.d.ts +4 -1
- package/dist/brain/ports.d.ts.map +1 -1
- package/dist/brain/retrieval.d.ts +1 -0
- package/dist/brain/retrieval.d.ts.map +1 -1
- package/dist/brain/retrieval.js +22 -1
- package/dist/brain/retrieval.js.map +1 -1
- package/dist/brain/types.d.ts +17 -0
- package/dist/brain/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/memory/in-memory-store.d.ts +11 -2
- package/dist/memory/in-memory-store.d.ts.map +1 -1
- package/dist/memory/in-memory-store.js +143 -4
- package/dist/memory/in-memory-store.js.map +1 -1
- package/dist/memory/index.d.ts +4 -1
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +1 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/store-types.d.ts +17 -0
- package/dist/memory/store-types.d.ts.map +1 -1
- package/dist/memory/tool-settings.d.ts +27 -0
- package/dist/memory/tool-settings.d.ts.map +1 -0
- package/dist/memory/tool-settings.js +86 -0
- package/dist/memory/tool-settings.js.map +1 -0
- package/dist/memory/tool-settings.test.d.ts +2 -0
- package/dist/memory/tool-settings.test.d.ts.map +1 -0
- package/dist/memory/tool-settings.test.js +68 -0
- package/dist/memory/tool-settings.test.js.map +1 -0
- package/dist/runtime-context/composite-provider.d.ts.map +1 -1
- package/dist/runtime-context/composite-provider.js +27 -2
- package/dist/runtime-context/composite-provider.js.map +1 -1
- package/dist/runtime-context/composite-provider.test.js +20 -1
- package/dist/runtime-context/composite-provider.test.js.map +1 -1
- package/dist/semantic-retrieval.d.ts +128 -0
- package/dist/semantic-retrieval.d.ts.map +1 -0
- package/dist/semantic-retrieval.js +201 -0
- package/dist/semantic-retrieval.js.map +1 -0
- package/dist/semantic-retrieval.test.d.ts +2 -0
- package/dist/semantic-retrieval.test.d.ts.map +1 -0
- package/dist/semantic-retrieval.test.js +138 -0
- package/dist/semantic-retrieval.test.js.map +1 -0
- package/dist/types/agent.d.ts +3 -0
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/agent.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
export declare const TEXT_EMBEDDING_TASKS: readonly ["document", "query"];
|
|
2
|
+
export type TextEmbeddingTask = (typeof TEXT_EMBEDDING_TASKS)[number];
|
|
3
|
+
export interface TextEmbeddingIdentity {
|
|
4
|
+
readonly provider: string;
|
|
5
|
+
readonly model: string;
|
|
6
|
+
readonly dimensions: number;
|
|
7
|
+
readonly revision: string;
|
|
8
|
+
}
|
|
9
|
+
export interface TextEmbeddingRequest {
|
|
10
|
+
readonly texts: readonly string[];
|
|
11
|
+
readonly task: TextEmbeddingTask;
|
|
12
|
+
readonly signal?: AbortSignal;
|
|
13
|
+
}
|
|
14
|
+
export interface TextEmbeddingResult {
|
|
15
|
+
readonly vectors: readonly (readonly number[])[];
|
|
16
|
+
readonly identity: TextEmbeddingIdentity;
|
|
17
|
+
readonly usage?: unknown;
|
|
18
|
+
}
|
|
19
|
+
export interface TextEmbeddingProvider {
|
|
20
|
+
identity(): TextEmbeddingIdentity | Promise<TextEmbeddingIdentity>;
|
|
21
|
+
embed(request: TextEmbeddingRequest): Promise<TextEmbeddingResult>;
|
|
22
|
+
}
|
|
23
|
+
export interface DerivedTextEmbedding {
|
|
24
|
+
readonly corpus: string;
|
|
25
|
+
readonly recordId: string;
|
|
26
|
+
readonly contentHash: string;
|
|
27
|
+
readonly identity: TextEmbeddingIdentity;
|
|
28
|
+
readonly vector: readonly number[];
|
|
29
|
+
readonly createdAt: string;
|
|
30
|
+
}
|
|
31
|
+
export interface SemanticCandidateQuery {
|
|
32
|
+
readonly corpus: string;
|
|
33
|
+
readonly vector: readonly number[];
|
|
34
|
+
readonly identity: TextEmbeddingIdentity;
|
|
35
|
+
readonly authorizedRecordIds: readonly string[];
|
|
36
|
+
readonly limit: number;
|
|
37
|
+
readonly signal?: AbortSignal;
|
|
38
|
+
}
|
|
39
|
+
export interface SemanticCandidate {
|
|
40
|
+
readonly id: string;
|
|
41
|
+
readonly score: number;
|
|
42
|
+
}
|
|
43
|
+
export interface DerivedTextEmbeddingIndex {
|
|
44
|
+
upsert(records: readonly DerivedTextEmbedding[], options?: {
|
|
45
|
+
readonly signal?: AbortSignal;
|
|
46
|
+
}): Promise<void>;
|
|
47
|
+
delete(input: {
|
|
48
|
+
readonly corpus: string;
|
|
49
|
+
readonly recordIds: readonly string[];
|
|
50
|
+
readonly signal?: AbortSignal;
|
|
51
|
+
}): Promise<void>;
|
|
52
|
+
search(query: SemanticCandidateQuery): Promise<readonly SemanticCandidate[]>;
|
|
53
|
+
health(input: {
|
|
54
|
+
readonly corpus: string;
|
|
55
|
+
readonly identity: TextEmbeddingIdentity;
|
|
56
|
+
readonly signal?: AbortSignal;
|
|
57
|
+
}): Promise<"ready" | "degraded" | "unavailable">;
|
|
58
|
+
listMissing(input: {
|
|
59
|
+
readonly corpus: string;
|
|
60
|
+
readonly identity: TextEmbeddingIdentity;
|
|
61
|
+
readonly canonical: readonly {
|
|
62
|
+
readonly recordId: string;
|
|
63
|
+
readonly contentHash: string;
|
|
64
|
+
}[];
|
|
65
|
+
readonly signal?: AbortSignal;
|
|
66
|
+
}): Promise<readonly string[]>;
|
|
67
|
+
}
|
|
68
|
+
export type HybridRetrievalMode = "lexical" | "semantic" | "hybrid";
|
|
69
|
+
export interface RankedCandidate {
|
|
70
|
+
readonly id: string;
|
|
71
|
+
readonly score: number;
|
|
72
|
+
}
|
|
73
|
+
export interface HybridRankingResult {
|
|
74
|
+
readonly id: string;
|
|
75
|
+
readonly score: number;
|
|
76
|
+
readonly mode: HybridRetrievalMode;
|
|
77
|
+
readonly ranks: {
|
|
78
|
+
readonly lexical?: number;
|
|
79
|
+
readonly semantic?: number;
|
|
80
|
+
};
|
|
81
|
+
readonly scores: {
|
|
82
|
+
readonly lexical?: number;
|
|
83
|
+
readonly semantic?: number;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export interface HybridRetrievalPolicy {
|
|
87
|
+
readonly candidateLimit?: number;
|
|
88
|
+
readonly resultLimit?: number;
|
|
89
|
+
readonly rrfConstant?: number;
|
|
90
|
+
readonly rerankLimit?: number;
|
|
91
|
+
readonly timeoutMs?: number;
|
|
92
|
+
readonly failureMode?: "fallback" | "strict";
|
|
93
|
+
}
|
|
94
|
+
export interface NormalizedHybridRetrievalPolicy {
|
|
95
|
+
readonly candidateLimit: number;
|
|
96
|
+
readonly resultLimit: number;
|
|
97
|
+
readonly rrfConstant: number;
|
|
98
|
+
readonly rerankLimit: number;
|
|
99
|
+
readonly timeoutMs: number;
|
|
100
|
+
readonly failureMode: "fallback" | "strict";
|
|
101
|
+
}
|
|
102
|
+
export interface SemanticRetrievalEvalCase {
|
|
103
|
+
readonly id: string;
|
|
104
|
+
readonly query: string;
|
|
105
|
+
readonly relevantIds: readonly string[];
|
|
106
|
+
}
|
|
107
|
+
export interface SemanticRetrievalEvalReport {
|
|
108
|
+
readonly cases: number;
|
|
109
|
+
readonly hits: number;
|
|
110
|
+
readonly recallAtK: number;
|
|
111
|
+
readonly missedCaseIds: readonly string[];
|
|
112
|
+
}
|
|
113
|
+
export declare function normalizeHybridRetrievalPolicy(value?: HybridRetrievalPolicy): NormalizedHybridRetrievalPolicy;
|
|
114
|
+
export declare function runSemanticRetrievalEval(cases: readonly SemanticRetrievalEvalCase[], retrieve: (value: SemanticRetrievalEvalCase) => Promise<readonly string[]>): Promise<SemanticRetrievalEvalReport>;
|
|
115
|
+
export declare function normalizeTextEmbeddingIdentity(value: TextEmbeddingIdentity): TextEmbeddingIdentity;
|
|
116
|
+
export declare function textEmbeddingIdentitiesEqual(left: TextEmbeddingIdentity, right: TextEmbeddingIdentity): boolean;
|
|
117
|
+
export declare function assertTextEmbeddingResult(value: TextEmbeddingResult, options: {
|
|
118
|
+
readonly expectedCount: number;
|
|
119
|
+
readonly expectedIdentity?: TextEmbeddingIdentity;
|
|
120
|
+
}): TextEmbeddingResult;
|
|
121
|
+
export declare function cosineSimilarity(left: readonly number[], right: readonly number[]): number;
|
|
122
|
+
export declare function fuseHybridRankings(input: {
|
|
123
|
+
readonly lexical: readonly RankedCandidate[];
|
|
124
|
+
readonly semantic: readonly RankedCandidate[];
|
|
125
|
+
readonly rrfConstant?: number;
|
|
126
|
+
readonly limit?: number;
|
|
127
|
+
}): HybridRankingResult[];
|
|
128
|
+
//# sourceMappingURL=semantic-retrieval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-retrieval.d.ts","sourceRoot":"","sources":["../src/semantic-retrieval.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
export const TEXT_EMBEDDING_TASKS = ["document", "query"];
|
|
2
|
+
const MAX_IDENTITY_TEXT = 512;
|
|
3
|
+
const DEFAULT_RRF_CONSTANT = 60;
|
|
4
|
+
function boundedInteger(value, fallback, path, min, max) {
|
|
5
|
+
const resolved = value ?? fallback;
|
|
6
|
+
if (!Number.isSafeInteger(resolved) || resolved < min || resolved > max) {
|
|
7
|
+
throw new TypeError(`${path} must be an integer between ${min} and ${max}`);
|
|
8
|
+
}
|
|
9
|
+
return resolved;
|
|
10
|
+
}
|
|
11
|
+
export function normalizeHybridRetrievalPolicy(value = {}) {
|
|
12
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
13
|
+
throw new TypeError("hybrid retrieval policy must be an object");
|
|
14
|
+
}
|
|
15
|
+
const candidateLimit = boundedInteger(value.candidateLimit, 80, "candidateLimit", 1, 10_000);
|
|
16
|
+
const resultLimit = boundedInteger(value.resultLimit, 20, "resultLimit", 1, 1_000);
|
|
17
|
+
const rerankLimit = boundedInteger(value.rerankLimit, 0, "rerankLimit", 0, candidateLimit);
|
|
18
|
+
const failureMode = value.failureMode ?? "fallback";
|
|
19
|
+
if (failureMode !== "fallback" && failureMode !== "strict") {
|
|
20
|
+
throw new TypeError("failureMode must be fallback or strict");
|
|
21
|
+
}
|
|
22
|
+
return Object.freeze({
|
|
23
|
+
candidateLimit,
|
|
24
|
+
resultLimit,
|
|
25
|
+
rrfConstant: boundedInteger(value.rrfConstant, 60, "rrfConstant", 1, 10_000),
|
|
26
|
+
rerankLimit,
|
|
27
|
+
timeoutMs: boundedInteger(value.timeoutMs, 1_500, "timeoutMs", 1, 120_000),
|
|
28
|
+
failureMode,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export async function runSemanticRetrievalEval(cases, retrieve) {
|
|
32
|
+
if (!Array.isArray(cases) || typeof retrieve !== "function") {
|
|
33
|
+
throw new TypeError("semantic retrieval eval cases and retriever are required");
|
|
34
|
+
}
|
|
35
|
+
let hits = 0;
|
|
36
|
+
const missedCaseIds = [];
|
|
37
|
+
for (const [index, value] of cases.entries()) {
|
|
38
|
+
const id = requiredText(value?.id, `cases[${index}].id`);
|
|
39
|
+
requiredText(value?.query, `cases[${index}].query`);
|
|
40
|
+
if (!Array.isArray(value.relevantIds) || value.relevantIds.length === 0) {
|
|
41
|
+
throw new TypeError(`cases[${index}].relevantIds must not be empty`);
|
|
42
|
+
}
|
|
43
|
+
const relevant = new Set(value.relevantIds.map((candidate, candidateIndex) => requiredText(candidate, `cases[${index}].relevantIds[${candidateIndex}]`)));
|
|
44
|
+
const returned = await retrieve(value);
|
|
45
|
+
if (returned.some((candidate) => relevant.has(candidate)))
|
|
46
|
+
hits += 1;
|
|
47
|
+
else
|
|
48
|
+
missedCaseIds.push(id);
|
|
49
|
+
}
|
|
50
|
+
return Object.freeze({
|
|
51
|
+
cases: cases.length,
|
|
52
|
+
hits,
|
|
53
|
+
recallAtK: cases.length === 0 ? 1 : hits / cases.length,
|
|
54
|
+
missedCaseIds: Object.freeze(missedCaseIds),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function requiredText(value, path) {
|
|
58
|
+
if (typeof value !== "string")
|
|
59
|
+
throw new TypeError(`${path} must be a string`);
|
|
60
|
+
const normalized = value.trim();
|
|
61
|
+
if (!normalized || normalized.length > MAX_IDENTITY_TEXT) {
|
|
62
|
+
throw new TypeError(`${path} must contain between 1 and ${MAX_IDENTITY_TEXT} characters`);
|
|
63
|
+
}
|
|
64
|
+
return normalized;
|
|
65
|
+
}
|
|
66
|
+
export function normalizeTextEmbeddingIdentity(value) {
|
|
67
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
68
|
+
throw new TypeError("embedding identity must be an object");
|
|
69
|
+
}
|
|
70
|
+
if (!Number.isSafeInteger(value.dimensions) || value.dimensions < 1) {
|
|
71
|
+
throw new TypeError("embedding identity dimensions must be a positive integer");
|
|
72
|
+
}
|
|
73
|
+
return Object.freeze({
|
|
74
|
+
provider: requiredText(value.provider, "embedding identity provider"),
|
|
75
|
+
model: requiredText(value.model, "embedding identity model"),
|
|
76
|
+
dimensions: value.dimensions,
|
|
77
|
+
revision: requiredText(value.revision, "embedding identity revision"),
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
export function textEmbeddingIdentitiesEqual(left, right) {
|
|
81
|
+
return left.provider === right.provider
|
|
82
|
+
&& left.model === right.model
|
|
83
|
+
&& left.dimensions === right.dimensions
|
|
84
|
+
&& left.revision === right.revision;
|
|
85
|
+
}
|
|
86
|
+
export function assertTextEmbeddingResult(value, options) {
|
|
87
|
+
if (!Number.isSafeInteger(options.expectedCount) || options.expectedCount < 0) {
|
|
88
|
+
throw new TypeError("expected embedding count must be a non-negative integer");
|
|
89
|
+
}
|
|
90
|
+
if (!value || typeof value !== "object" || !Array.isArray(value.vectors)) {
|
|
91
|
+
throw new TypeError("embedding result vectors must be an array");
|
|
92
|
+
}
|
|
93
|
+
const identity = normalizeTextEmbeddingIdentity(value.identity);
|
|
94
|
+
if (options.expectedIdentity
|
|
95
|
+
&& !textEmbeddingIdentitiesEqual(identity, normalizeTextEmbeddingIdentity(options.expectedIdentity))) {
|
|
96
|
+
throw new TypeError("embedding result identity is incompatible");
|
|
97
|
+
}
|
|
98
|
+
if (value.vectors.length !== options.expectedCount) {
|
|
99
|
+
throw new TypeError("embedding result vector count is invalid");
|
|
100
|
+
}
|
|
101
|
+
const vectors = value.vectors.map((vector, index) => {
|
|
102
|
+
if (!Array.isArray(vector) || vector.length !== identity.dimensions) {
|
|
103
|
+
throw new TypeError(`embedding vector ${index} dimensions are invalid`);
|
|
104
|
+
}
|
|
105
|
+
if (!vector.every(Number.isFinite)) {
|
|
106
|
+
throw new TypeError(`embedding vector ${index} must contain finite numbers`);
|
|
107
|
+
}
|
|
108
|
+
return Object.freeze([...vector]);
|
|
109
|
+
});
|
|
110
|
+
return Object.freeze({
|
|
111
|
+
vectors: Object.freeze(vectors),
|
|
112
|
+
identity,
|
|
113
|
+
...(value.usage === undefined ? {} : { usage: value.usage }),
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
export function cosineSimilarity(left, right) {
|
|
117
|
+
if (left.length === 0 || left.length !== right.length)
|
|
118
|
+
return 0;
|
|
119
|
+
let dot = 0;
|
|
120
|
+
let leftMagnitude = 0;
|
|
121
|
+
let rightMagnitude = 0;
|
|
122
|
+
for (let index = 0; index < left.length; index += 1) {
|
|
123
|
+
const l = left[index];
|
|
124
|
+
const r = right[index];
|
|
125
|
+
if (!Number.isFinite(l) || !Number.isFinite(r))
|
|
126
|
+
return 0;
|
|
127
|
+
dot += l * r;
|
|
128
|
+
leftMagnitude += l * l;
|
|
129
|
+
rightMagnitude += r * r;
|
|
130
|
+
}
|
|
131
|
+
if (leftMagnitude === 0 || rightMagnitude === 0)
|
|
132
|
+
return 0;
|
|
133
|
+
const result = dot / Math.sqrt(leftMagnitude * rightMagnitude);
|
|
134
|
+
return Number.isFinite(result) ? Math.max(-1, Math.min(1, result)) : 0;
|
|
135
|
+
}
|
|
136
|
+
function normalizeRanking(value, name) {
|
|
137
|
+
if (!Array.isArray(value))
|
|
138
|
+
throw new TypeError(`${name} must be an array`);
|
|
139
|
+
const strongest = new Map();
|
|
140
|
+
for (const [index, candidate] of value.entries()) {
|
|
141
|
+
const id = requiredText(candidate?.id, `${name}[${index}].id`);
|
|
142
|
+
if (!Number.isFinite(candidate.score)) {
|
|
143
|
+
throw new TypeError(`${name}[${index}].score must be finite`);
|
|
144
|
+
}
|
|
145
|
+
const current = strongest.get(id);
|
|
146
|
+
if (current === undefined || candidate.score > current) {
|
|
147
|
+
strongest.set(id, candidate.score);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return [...strongest].map(([id, score]) => ({ id, score })).sort((left, right) => right.score - left.score || left.id.localeCompare(right.id));
|
|
151
|
+
}
|
|
152
|
+
export function fuseHybridRankings(input) {
|
|
153
|
+
const rrfConstant = input.rrfConstant ?? DEFAULT_RRF_CONSTANT;
|
|
154
|
+
if (!Number.isSafeInteger(rrfConstant) || rrfConstant < 1 || rrfConstant > 10_000) {
|
|
155
|
+
throw new TypeError("rrfConstant must be an integer between 1 and 10000");
|
|
156
|
+
}
|
|
157
|
+
const limit = input.limit ?? Number.MAX_SAFE_INTEGER;
|
|
158
|
+
if (!Number.isSafeInteger(limit) || limit < 0) {
|
|
159
|
+
throw new TypeError("limit must be a non-negative integer");
|
|
160
|
+
}
|
|
161
|
+
const lexical = normalizeRanking(input.lexical, "lexical");
|
|
162
|
+
const semantic = normalizeRanking(input.semantic, "semantic");
|
|
163
|
+
const values = new Map();
|
|
164
|
+
const add = (candidate, rank, kind) => {
|
|
165
|
+
const current = values.get(candidate.id) ?? { score: 0 };
|
|
166
|
+
current.score += 1 / (rrfConstant + rank);
|
|
167
|
+
if (kind === "lexical") {
|
|
168
|
+
current.lexicalRank = rank;
|
|
169
|
+
current.lexicalScore = candidate.score;
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
current.semanticRank = rank;
|
|
173
|
+
current.semanticScore = candidate.score;
|
|
174
|
+
}
|
|
175
|
+
values.set(candidate.id, current);
|
|
176
|
+
};
|
|
177
|
+
lexical.forEach((candidate, index) => add(candidate, index + 1, "lexical"));
|
|
178
|
+
semantic.forEach((candidate, index) => add(candidate, index + 1, "semantic"));
|
|
179
|
+
return [...values].map(([id, value]) => {
|
|
180
|
+
const mode = value.lexicalRank !== undefined && value.semanticRank !== undefined
|
|
181
|
+
? "hybrid"
|
|
182
|
+
: value.semanticRank !== undefined
|
|
183
|
+
? "semantic"
|
|
184
|
+
: "lexical";
|
|
185
|
+
return Object.freeze({
|
|
186
|
+
id,
|
|
187
|
+
score: value.score,
|
|
188
|
+
mode,
|
|
189
|
+
ranks: Object.freeze({
|
|
190
|
+
...(value.lexicalRank === undefined ? {} : { lexical: value.lexicalRank }),
|
|
191
|
+
...(value.semanticRank === undefined ? {} : { semantic: value.semanticRank }),
|
|
192
|
+
}),
|
|
193
|
+
scores: Object.freeze({
|
|
194
|
+
...(value.lexicalScore === undefined ? {} : { lexical: value.lexicalScore }),
|
|
195
|
+
...(value.semanticScore === undefined ? {} : { semantic: value.semanticScore }),
|
|
196
|
+
}),
|
|
197
|
+
});
|
|
198
|
+
}).sort((left, right) => right.score - left.score || left.id.localeCompare(right.id))
|
|
199
|
+
.slice(0, limit);
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=semantic-retrieval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-retrieval.js","sourceRoot":"","sources":["../src/semantic-retrieval.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-retrieval.test.d.ts","sourceRoot":"","sources":["../src/semantic-retrieval.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { assertTextEmbeddingResult, cosineSimilarity, fuseHybridRankings, normalizeHybridRetrievalPolicy, normalizeTextEmbeddingIdentity, textEmbeddingIdentitiesEqual, runSemanticRetrievalEval, } from "./semantic-retrieval.js";
|
|
3
|
+
const identity = {
|
|
4
|
+
provider: "test",
|
|
5
|
+
model: "embed-v1",
|
|
6
|
+
dimensions: 3,
|
|
7
|
+
revision: "2026-08-30",
|
|
8
|
+
};
|
|
9
|
+
describe("semantic retrieval contracts", () => {
|
|
10
|
+
it("normalizes immutable embedding identity and compares every compatibility field", () => {
|
|
11
|
+
const normalized = normalizeTextEmbeddingIdentity(identity);
|
|
12
|
+
expect(normalized).toEqual(identity);
|
|
13
|
+
expect(Object.isFrozen(normalized)).toBe(true);
|
|
14
|
+
expect(textEmbeddingIdentitiesEqual(normalized, identity)).toBe(true);
|
|
15
|
+
expect(textEmbeddingIdentitiesEqual(normalized, {
|
|
16
|
+
...identity,
|
|
17
|
+
revision: "next",
|
|
18
|
+
})).toBe(false);
|
|
19
|
+
expect(textEmbeddingIdentitiesEqual(normalized, {
|
|
20
|
+
...identity,
|
|
21
|
+
dimensions: 2,
|
|
22
|
+
})).toBe(false);
|
|
23
|
+
});
|
|
24
|
+
it.each([
|
|
25
|
+
[{ ...identity, dimensions: 0 }, "dimensions"],
|
|
26
|
+
[{ ...identity, provider: "" }, "provider"],
|
|
27
|
+
[{ ...identity, model: " " }, "model"],
|
|
28
|
+
[{ ...identity, revision: "" }, "revision"],
|
|
29
|
+
])("rejects invalid embedding identity %#", (value, field) => {
|
|
30
|
+
expect(() => normalizeTextEmbeddingIdentity(value)).toThrow(field);
|
|
31
|
+
});
|
|
32
|
+
it("validates vector count, dimensions, finite values, and identity", () => {
|
|
33
|
+
const result = assertTextEmbeddingResult({
|
|
34
|
+
vectors: [[1, 0, 0], [0, 1, 0]],
|
|
35
|
+
identity,
|
|
36
|
+
usage: { tokens: 4 },
|
|
37
|
+
}, {
|
|
38
|
+
expectedCount: 2,
|
|
39
|
+
expectedIdentity: identity,
|
|
40
|
+
});
|
|
41
|
+
expect(result.vectors).toEqual([[1, 0, 0], [0, 1, 0]]);
|
|
42
|
+
expect(Object.isFrozen(result.vectors[0])).toBe(true);
|
|
43
|
+
expect(() => assertTextEmbeddingResult({
|
|
44
|
+
vectors: [[1, 0, 0]], identity,
|
|
45
|
+
}, { expectedCount: 2, expectedIdentity: identity })).toThrow("count");
|
|
46
|
+
expect(() => assertTextEmbeddingResult({
|
|
47
|
+
vectors: [[1, 0]], identity,
|
|
48
|
+
}, { expectedCount: 1, expectedIdentity: identity })).toThrow("dimensions");
|
|
49
|
+
expect(() => assertTextEmbeddingResult({
|
|
50
|
+
vectors: [[1, Number.NaN, 0]], identity,
|
|
51
|
+
}, { expectedCount: 1, expectedIdentity: identity })).toThrow("finite");
|
|
52
|
+
expect(() => assertTextEmbeddingResult({
|
|
53
|
+
vectors: [[1, 0, 0]], identity: { ...identity, revision: "other" },
|
|
54
|
+
}, { expectedCount: 1, expectedIdentity: identity })).toThrow("identity");
|
|
55
|
+
});
|
|
56
|
+
it("calculates bounded cosine similarity without accepting malformed vectors", () => {
|
|
57
|
+
expect(cosineSimilarity([1, 0], [1, 0])).toBe(1);
|
|
58
|
+
expect(cosineSimilarity([1, 0], [-1, 0])).toBe(-1);
|
|
59
|
+
expect(cosineSimilarity([0, 0], [1, 0])).toBe(0);
|
|
60
|
+
expect(cosineSimilarity([1], [1, 0])).toBe(0);
|
|
61
|
+
expect(cosineSimilarity([Number.POSITIVE_INFINITY], [1])).toBe(0);
|
|
62
|
+
});
|
|
63
|
+
it("fuses independent rankings with RRF instead of adding incomparable scores", () => {
|
|
64
|
+
const fused = fuseHybridRankings({
|
|
65
|
+
lexical: [
|
|
66
|
+
{ id: "exact", score: 100 },
|
|
67
|
+
{ id: "both", score: 1 },
|
|
68
|
+
],
|
|
69
|
+
semantic: [
|
|
70
|
+
{ id: "paraphrase", score: 0.99 },
|
|
71
|
+
{ id: "both", score: 0.9 },
|
|
72
|
+
],
|
|
73
|
+
rrfConstant: 60,
|
|
74
|
+
});
|
|
75
|
+
expect(fused.map((result) => result.id)).toEqual([
|
|
76
|
+
"both",
|
|
77
|
+
"exact",
|
|
78
|
+
"paraphrase",
|
|
79
|
+
]);
|
|
80
|
+
expect(fused[0]).toMatchObject({
|
|
81
|
+
ranks: { lexical: 2, semantic: 2 },
|
|
82
|
+
scores: { lexical: 1, semantic: 0.9 },
|
|
83
|
+
mode: "hybrid",
|
|
84
|
+
});
|
|
85
|
+
expect(fused[1]?.score).not.toBe(100 + 0);
|
|
86
|
+
});
|
|
87
|
+
it("deduplicates candidates, uses strongest duplicate score, and orders ties by id", () => {
|
|
88
|
+
const fused = fuseHybridRankings({
|
|
89
|
+
lexical: [
|
|
90
|
+
{ id: "z", score: 1 },
|
|
91
|
+
{ id: "a", score: 1 },
|
|
92
|
+
{ id: "a", score: 4 },
|
|
93
|
+
],
|
|
94
|
+
semantic: [],
|
|
95
|
+
});
|
|
96
|
+
expect(fused.map((result) => result.id)).toEqual(["a", "z"]);
|
|
97
|
+
expect(fused[0]?.scores.lexical).toBe(4);
|
|
98
|
+
expect(fused.every((result) => result.mode === "lexical")).toBe(true);
|
|
99
|
+
});
|
|
100
|
+
it("rejects invalid ranker policy instead of producing unstable output", () => {
|
|
101
|
+
expect(() => fuseHybridRankings({
|
|
102
|
+
lexical: [],
|
|
103
|
+
semantic: [],
|
|
104
|
+
rrfConstant: 0,
|
|
105
|
+
})).toThrow("rrfConstant");
|
|
106
|
+
expect(() => fuseHybridRankings({
|
|
107
|
+
lexical: [{ id: "a", score: Number.NaN }],
|
|
108
|
+
semantic: [],
|
|
109
|
+
})).toThrow("score");
|
|
110
|
+
});
|
|
111
|
+
it("normalizes bounded hybrid policy and rejects impossible rerank limits", () => {
|
|
112
|
+
expect(normalizeHybridRetrievalPolicy()).toEqual({
|
|
113
|
+
candidateLimit: 80,
|
|
114
|
+
resultLimit: 20,
|
|
115
|
+
rrfConstant: 60,
|
|
116
|
+
rerankLimit: 0,
|
|
117
|
+
timeoutMs: 1_500,
|
|
118
|
+
failureMode: "fallback",
|
|
119
|
+
});
|
|
120
|
+
expect(() => normalizeHybridRetrievalPolicy({
|
|
121
|
+
candidateLimit: 2,
|
|
122
|
+
rerankLimit: 3,
|
|
123
|
+
})).toThrow("rerankLimit");
|
|
124
|
+
});
|
|
125
|
+
it("produces machine-readable eval metrics without source content", async () => {
|
|
126
|
+
const report = await runSemanticRetrievalEval([
|
|
127
|
+
{ id: "paraphrase", query: "money back", relevantIds: ["refund"] },
|
|
128
|
+
{ id: "missing", query: "shipping", relevantIds: ["delivery"] },
|
|
129
|
+
], async ({ id }) => id === "paraphrase" ? ["refund"] : ["other"]);
|
|
130
|
+
expect(report).toEqual({
|
|
131
|
+
cases: 2,
|
|
132
|
+
hits: 1,
|
|
133
|
+
recallAtK: 0.5,
|
|
134
|
+
missedCaseIds: ["missing"],
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
//# sourceMappingURL=semantic-retrieval.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-retrieval.test.js","sourceRoot":"","sources":["../src/semantic-retrieval.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,8BAA8B,EAC9B,8BAA8B,EAC9B,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,QAAQ,GAAG;IACf,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,UAAU;IACjB,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,YAAY;CACvB,CAAC;AAEF,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,MAAM,UAAU,GAAG,8BAA8B,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,CAAC,4BAA4B,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,CAAC,4BAA4B,CAAC,UAAU,EAAE;YAC9C,GAAG,QAAQ;YACX,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChB,MAAM,CAAC,4BAA4B,CAAC,UAAU,EAAE;YAC9C,GAAG,QAAQ;YACX,UAAU,EAAE,CAAC;SACd,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC;QACN,CAAC,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC;QAC9C,CAAC,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC;QAC3C,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC;QACtC,CAAC,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC;KAC5C,CAAC,CAAC,uCAAuC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC3D,MAAM,CAAC,GAAG,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,MAAM,GAAG,yBAAyB,CAAC;YACvC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/B,QAAQ;YACR,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;SACrB,EAAE;YACD,aAAa,EAAE,CAAC;YAChB,gBAAgB,EAAE,QAAQ;SAC3B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtD,MAAM,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC;YACrC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ;SAC/B,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC;YACrC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ;SAC5B,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC5E,MAAM,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC;YACrC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ;SACxC,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxE,MAAM,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC;YACrC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE;SACnE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,MAAM,KAAK,GAAG,kBAAkB,CAAC;YAC/B,OAAO,EAAE;gBACP,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;gBAC3B,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;aACzB;YACD,QAAQ,EAAE;gBACR,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE;gBACjC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;aAC3B;YACD,WAAW,EAAE,EAAE;SAChB,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/C,MAAM;YACN,OAAO;YACP,YAAY;SACb,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC7B,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;YAClC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE;YACrC,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,MAAM,KAAK,GAAG,kBAAkB,CAAC;YAC/B,OAAO,EAAE;gBACP,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;gBACrB,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;gBACrB,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;aACtB;YACD,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC;YAC9B,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,EAAE;YACZ,WAAW,EAAE,CAAC;SACf,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC;YAC9B,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;YACzC,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,CAAC,8BAA8B,EAAE,CAAC,CAAC,OAAO,CAAC;YAC/C,cAAc,EAAE,EAAE;YAClB,WAAW,EAAE,EAAE;YACf,WAAW,EAAE,EAAE;YACf,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,UAAU;SACxB,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,EAAE,CAAC,8BAA8B,CAAC;YAC1C,cAAc,EAAE,CAAC;YACjB,WAAW,EAAE,CAAC;SACf,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC;YAC5C,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE;YAClE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,EAAE;SAChE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,SAAS,EAAE,GAAG;YACd,aAAa,EAAE,CAAC,SAAS,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/types/agent.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ import type { BillingOwner, CostSource, CredentialType, ModelInvocationStatus, M
|
|
|
11
11
|
import type { RuntimeGuardrailAuditEvent } from "../guardrails/types.js";
|
|
12
12
|
import type { ChatInteractionSettings } from "../chat-interactions.js";
|
|
13
13
|
import type { AllowedToolsSettings } from "../tool-policy.js";
|
|
14
|
+
import type { AgentMemorySettings } from "../memory/tool-settings.js";
|
|
14
15
|
/** Reasoning level for LLM calls (maps to the provider's thinking/reasoning level). */
|
|
15
16
|
export type ReasoningLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
16
17
|
/** Agent identity — who this agent is and how it behaves */
|
|
@@ -142,6 +143,8 @@ export interface AgentConfig {
|
|
|
142
143
|
chat?: ChatInteractionSettings;
|
|
143
144
|
/** Tool capability restriction for provider Channels such as WhatsApp or Telegram. */
|
|
144
145
|
channels?: AllowedToolsSettings;
|
|
146
|
+
/** Portable typed Memory tool capability. Omitted exposes no new Memory tools. */
|
|
147
|
+
memory?: AgentMemorySettings;
|
|
145
148
|
/** Installed skill names (e.g. "find-skills", "frontend-design") */
|
|
146
149
|
skills?: string[];
|
|
147
150
|
/** MCP servers available to this agent. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/types/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4TH,6BAA6B;AAE7B,mDAAmD;AACnD,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,SAAiB;IACxD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QACvD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,SAAiB;IAC5D,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;AACnE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polpo-ai/core",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.133",
|
|
4
4
|
"description": "Pure business logic, types, schemas, and store interfaces for the Polpo AI agent orchestration platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -70,6 +70,10 @@
|
|
|
70
70
|
"types": "./dist/runtime-context/index.d.ts",
|
|
71
71
|
"import": "./dist/runtime-context/index.js"
|
|
72
72
|
},
|
|
73
|
+
"./semantic-retrieval": {
|
|
74
|
+
"types": "./dist/semantic-retrieval.d.ts",
|
|
75
|
+
"import": "./dist/semantic-retrieval.js"
|
|
76
|
+
},
|
|
73
77
|
"./steering": {
|
|
74
78
|
"types": "./dist/steering.d.ts",
|
|
75
79
|
"import": "./dist/steering.js"
|