@signetai/core 0.147.22 → 0.148.1
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/index.js +390 -367
- package/dist/recall.d.ts +2 -1
- package/dist/recall.d.ts.map +1 -1
- package/dist/recall.js +317 -0
- package/dist/routing.d.ts +2 -1
- package/dist/routing.d.ts.map +1 -1
- package/package.json +6 -2
package/dist/index.js
CHANGED
|
@@ -7097,6 +7097,278 @@ function defaultPipelineModel(provider) {
|
|
|
7097
7097
|
return modelDefaultForProvider(provider);
|
|
7098
7098
|
}
|
|
7099
7099
|
|
|
7100
|
+
// src/recall.ts
|
|
7101
|
+
function isRecord(value) {
|
|
7102
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
7103
|
+
}
|
|
7104
|
+
function withDefined(value) {
|
|
7105
|
+
return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== undefined));
|
|
7106
|
+
}
|
|
7107
|
+
function normalizeRememberTags(tags) {
|
|
7108
|
+
if (typeof tags === "string") {
|
|
7109
|
+
const value = tags.split(",").map((tag) => tag.trim()).filter((tag) => tag.length > 0).join(",");
|
|
7110
|
+
return value.length > 0 ? value : undefined;
|
|
7111
|
+
}
|
|
7112
|
+
if (Array.isArray(tags)) {
|
|
7113
|
+
const value = tags.map((tag) => tag.trim()).filter((tag) => tag.length > 0).join(",");
|
|
7114
|
+
return value.length > 0 ? value : undefined;
|
|
7115
|
+
}
|
|
7116
|
+
return;
|
|
7117
|
+
}
|
|
7118
|
+
function normalizeRecallLimit(limit) {
|
|
7119
|
+
if (typeof limit !== "number" || !Number.isFinite(limit))
|
|
7120
|
+
return 10;
|
|
7121
|
+
return Math.min(100, Math.max(1, Math.trunc(limit)));
|
|
7122
|
+
}
|
|
7123
|
+
function partitionRecallRows(rows) {
|
|
7124
|
+
return {
|
|
7125
|
+
primary: rows.filter((row) => row.supplementary !== true),
|
|
7126
|
+
supporting: rows.filter((row) => row.supplementary === true)
|
|
7127
|
+
};
|
|
7128
|
+
}
|
|
7129
|
+
function parseRecallMeta(raw, fallbackCount) {
|
|
7130
|
+
if (!isRecord(raw)) {
|
|
7131
|
+
return {
|
|
7132
|
+
totalReturned: fallbackCount,
|
|
7133
|
+
hasSupplementary: false,
|
|
7134
|
+
noHits: fallbackCount === 0
|
|
7135
|
+
};
|
|
7136
|
+
}
|
|
7137
|
+
const totalReturned = typeof raw.totalReturned === "number" ? raw.totalReturned : fallbackCount;
|
|
7138
|
+
const hasSupplementary = raw.hasSupplementary === true;
|
|
7139
|
+
const noHits = "noHits" in raw ? raw.noHits === true : totalReturned === 0;
|
|
7140
|
+
const dedupe = isRecord(raw.dedupe) ? {
|
|
7141
|
+
enabled: raw.dedupe.enabled === true,
|
|
7142
|
+
contextEpoch: typeof raw.dedupe.contextEpoch === "number" ? raw.dedupe.contextEpoch : undefined,
|
|
7143
|
+
suppressed: typeof raw.dedupe.suppressed === "number" ? raw.dedupe.suppressed : 0,
|
|
7144
|
+
repeatedReturned: typeof raw.dedupe.repeatedReturned === "number" ? raw.dedupe.repeatedReturned : 0
|
|
7145
|
+
} : undefined;
|
|
7146
|
+
const temporal = isRecord(raw.temporal) ? raw.temporal : undefined;
|
|
7147
|
+
return { totalReturned, hasSupplementary, noHits, ...dedupe ? { dedupe } : {}, ...temporal ? { temporal } : {} };
|
|
7148
|
+
}
|
|
7149
|
+
function parseRecallPayload(raw) {
|
|
7150
|
+
const payload = isRecord(raw) ? raw : {};
|
|
7151
|
+
const results = Array.isArray(payload.results) ? payload.results : Array.isArray(payload.memories) ? payload.memories : [];
|
|
7152
|
+
const rows = results.filter(isRecord);
|
|
7153
|
+
return {
|
|
7154
|
+
query: typeof payload.query === "string" ? payload.query : undefined,
|
|
7155
|
+
method: typeof payload.method === "string" ? payload.method : undefined,
|
|
7156
|
+
rows,
|
|
7157
|
+
meta: parseRecallMeta(payload.meta, rows.length),
|
|
7158
|
+
message: typeof payload.message === "string" ? payload.message : undefined
|
|
7159
|
+
};
|
|
7160
|
+
}
|
|
7161
|
+
function applyRecallScoreThreshold(raw, minScore) {
|
|
7162
|
+
if (typeof minScore !== "number" || !Number.isFinite(minScore) || typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
7163
|
+
return raw;
|
|
7164
|
+
}
|
|
7165
|
+
const payload = raw;
|
|
7166
|
+
const rows = Array.isArray(payload.results) ? payload.results : [];
|
|
7167
|
+
const filtered = rows.filter((row) => typeof row.score !== "number" || row.score >= minScore);
|
|
7168
|
+
return {
|
|
7169
|
+
...payload,
|
|
7170
|
+
results: filtered,
|
|
7171
|
+
meta: {
|
|
7172
|
+
...isRecord(payload.meta) ? payload.meta : {},
|
|
7173
|
+
totalReturned: filtered.length,
|
|
7174
|
+
hasSupplementary: filtered.some((row) => row.supplementary === true),
|
|
7175
|
+
noHits: filtered.length === 0
|
|
7176
|
+
}
|
|
7177
|
+
};
|
|
7178
|
+
}
|
|
7179
|
+
function formatDate(value) {
|
|
7180
|
+
return typeof value === "string" && value.length > 0 ? value.slice(0, 10) : "unknown";
|
|
7181
|
+
}
|
|
7182
|
+
function formatRecallRow(row, options) {
|
|
7183
|
+
const score = typeof row.score === "number" ? `[${(row.score * 100).toFixed(0)}%] ` : "";
|
|
7184
|
+
const source = typeof row.source === "string" ? row.source : "unknown";
|
|
7185
|
+
const type = typeof row.type === "string" ? row.type : "memory";
|
|
7186
|
+
const who = typeof row.who === "string" && row.who.length > 0 ? `, by ${row.who}` : "";
|
|
7187
|
+
const createdAt = formatDate(row.created_at);
|
|
7188
|
+
const id = typeof row.id === "string" && row.id.length > 0 ? `id: ${row.id}; ` : "";
|
|
7189
|
+
const prefix = options?.includeIndex ? `${options.includeIndex}. ` : "- ";
|
|
7190
|
+
return `${prefix}${score}${id}${row.content ?? ""} (${type}, ${source}, ${createdAt}${who})`;
|
|
7191
|
+
}
|
|
7192
|
+
function temporalGroupLabel(row) {
|
|
7193
|
+
if (row.temporal_facet === "session")
|
|
7194
|
+
return "Sessions";
|
|
7195
|
+
if (row.temporal_facet === "source")
|
|
7196
|
+
return "Source Activity";
|
|
7197
|
+
if (row.temporal_facet === "occurred" || row.temporal_facet === "observed" || row.temporal_facet === "valid") {
|
|
7198
|
+
return "Events";
|
|
7199
|
+
}
|
|
7200
|
+
return "Memories Captured";
|
|
7201
|
+
}
|
|
7202
|
+
function formatTemporalDate(value) {
|
|
7203
|
+
const parsed = new Date(value);
|
|
7204
|
+
if (Number.isNaN(parsed.getTime()))
|
|
7205
|
+
return value.slice(0, 10);
|
|
7206
|
+
return parsed.toLocaleDateString("en-US", {
|
|
7207
|
+
month: "long",
|
|
7208
|
+
day: "numeric",
|
|
7209
|
+
year: "numeric",
|
|
7210
|
+
timeZone: "UTC"
|
|
7211
|
+
});
|
|
7212
|
+
}
|
|
7213
|
+
function formatTemporalRecallText(rows, meta) {
|
|
7214
|
+
const parts = [formatTemporalDate(meta.start)];
|
|
7215
|
+
const groups = new Map;
|
|
7216
|
+
for (const row of rows) {
|
|
7217
|
+
const label = temporalGroupLabel(row);
|
|
7218
|
+
groups.set(label, [...groups.get(label) ?? [], row]);
|
|
7219
|
+
}
|
|
7220
|
+
for (const label of ["Sessions", "Source Activity", "Events", "Memories Captured"]) {
|
|
7221
|
+
const group = groups.get(label);
|
|
7222
|
+
if (!group || group.length === 0)
|
|
7223
|
+
continue;
|
|
7224
|
+
parts.push("", label, ...group.map((row) => formatRecallRow(row)));
|
|
7225
|
+
}
|
|
7226
|
+
return parts.join(`
|
|
7227
|
+
`);
|
|
7228
|
+
}
|
|
7229
|
+
function formatRecallText(raw) {
|
|
7230
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
7231
|
+
return typeof raw === "string" ? raw : JSON.stringify(raw, null, 2);
|
|
7232
|
+
}
|
|
7233
|
+
const payload = raw;
|
|
7234
|
+
const parsed = parseRecallPayload(payload);
|
|
7235
|
+
if (parsed.message && parsed.rows.length === 0)
|
|
7236
|
+
return parsed.message;
|
|
7237
|
+
if (parsed.meta.noHits || parsed.rows.length === 0)
|
|
7238
|
+
return "No matching memories found.";
|
|
7239
|
+
const { primary, supporting } = partitionRecallRows(parsed.rows);
|
|
7240
|
+
if (parsed.meta.temporal?.mode === "timeline")
|
|
7241
|
+
return formatTemporalRecallText(primary, parsed.meta.temporal);
|
|
7242
|
+
const noun = parsed.meta.totalReturned === 1 ? "memory" : "memories";
|
|
7243
|
+
const parts = payload.aggregate?.partial === true && typeof payload.aggregate.message === "string" ? [
|
|
7244
|
+
payload.aggregate.message,
|
|
7245
|
+
"",
|
|
7246
|
+
`Found ${parsed.meta.totalReturned} ${noun}${parsed.method ? ` (${parsed.method})` : ""}.`
|
|
7247
|
+
] : [`Found ${parsed.meta.totalReturned} ${noun}${parsed.method ? ` (${parsed.method})` : ""}.`];
|
|
7248
|
+
if (primary.length > 0) {
|
|
7249
|
+
parts.push("", "Primary matches:", ...primary.map((row) => formatRecallRow(row)));
|
|
7250
|
+
}
|
|
7251
|
+
if (supporting.length > 0) {
|
|
7252
|
+
parts.push("", "Supporting context:", ...supporting.map((row) => formatRecallRow(row)));
|
|
7253
|
+
}
|
|
7254
|
+
return parts.join(`
|
|
7255
|
+
`);
|
|
7256
|
+
}
|
|
7257
|
+
function buildRecallRequestBody(query, options = {}) {
|
|
7258
|
+
return withDefined({
|
|
7259
|
+
query,
|
|
7260
|
+
keywordQuery: options.keywordQuery ?? options.keyword_query,
|
|
7261
|
+
limit: normalizeRecallLimit(options.limit),
|
|
7262
|
+
project: options.project,
|
|
7263
|
+
type: options.type,
|
|
7264
|
+
tags: options.tags,
|
|
7265
|
+
who: options.who,
|
|
7266
|
+
pinned: options.pinned === true ? true : undefined,
|
|
7267
|
+
importance_min: options.importance_min,
|
|
7268
|
+
since: options.since,
|
|
7269
|
+
until: options.until,
|
|
7270
|
+
time: options.time,
|
|
7271
|
+
expand: options.expand === true ? true : undefined,
|
|
7272
|
+
agentId: options.agentId ?? options.agent_id ?? options.contextAgentId,
|
|
7273
|
+
sessionKey: options.sessionKey ?? options.session_key,
|
|
7274
|
+
includeRecalled: options.includeRecalled === true || options.include_recalled === true ? true : undefined,
|
|
7275
|
+
scope: options.scope,
|
|
7276
|
+
sourceOnly: options.sourceOnly === true || options.source_only === true ? true : undefined,
|
|
7277
|
+
aggregate: options.aggregate === true ? true : undefined,
|
|
7278
|
+
aggregateBudget: options.aggregateBudget ?? options.aggregate_budget,
|
|
7279
|
+
saveAggregate: options.saveAggregate === false || options.save_aggregate === false ? false : options.saveAggregate === true || options.save_aggregate === true ? true : undefined
|
|
7280
|
+
});
|
|
7281
|
+
}
|
|
7282
|
+
function normalizeStructuredMemoryPayload(value) {
|
|
7283
|
+
if (!isRecord(value))
|
|
7284
|
+
return value;
|
|
7285
|
+
const aspects = value.aspects;
|
|
7286
|
+
if (!Array.isArray(aspects))
|
|
7287
|
+
return value;
|
|
7288
|
+
return {
|
|
7289
|
+
...value,
|
|
7290
|
+
aspects: aspects.map((aspect) => {
|
|
7291
|
+
if (!isRecord(aspect))
|
|
7292
|
+
return aspect;
|
|
7293
|
+
if (typeof aspect.entityName === "string" && Array.isArray(aspect.attributes))
|
|
7294
|
+
return aspect;
|
|
7295
|
+
if (typeof aspect.entity === "string" && typeof aspect.aspect === "string" && typeof aspect.value === "string") {
|
|
7296
|
+
return {
|
|
7297
|
+
entityName: aspect.entity,
|
|
7298
|
+
aspect: aspect.aspect,
|
|
7299
|
+
attributes: [
|
|
7300
|
+
withDefined({
|
|
7301
|
+
content: aspect.value,
|
|
7302
|
+
groupKey: typeof aspect.groupKey === "string" ? aspect.groupKey : undefined,
|
|
7303
|
+
claimKey: typeof aspect.claimKey === "string" ? aspect.claimKey : undefined,
|
|
7304
|
+
confidence: typeof aspect.confidence === "number" ? aspect.confidence : undefined,
|
|
7305
|
+
importance: typeof aspect.importance === "number" ? aspect.importance : undefined
|
|
7306
|
+
})
|
|
7307
|
+
]
|
|
7308
|
+
};
|
|
7309
|
+
}
|
|
7310
|
+
return aspect;
|
|
7311
|
+
})
|
|
7312
|
+
};
|
|
7313
|
+
}
|
|
7314
|
+
function buildRememberRequestBody(content, options = {}) {
|
|
7315
|
+
return withDefined({
|
|
7316
|
+
content,
|
|
7317
|
+
type: options.type,
|
|
7318
|
+
importance: options.importance,
|
|
7319
|
+
tags: normalizeRememberTags(options.tags),
|
|
7320
|
+
who: options.who,
|
|
7321
|
+
pinned: options.pinned === true ? true : undefined,
|
|
7322
|
+
sourceType: options.sourceType,
|
|
7323
|
+
sourceId: options.sourceId,
|
|
7324
|
+
sourcePath: options.sourcePath,
|
|
7325
|
+
createdAt: options.createdAt,
|
|
7326
|
+
occurredAt: options.occurredAt,
|
|
7327
|
+
observedAt: options.observedAt,
|
|
7328
|
+
validFrom: options.validFrom,
|
|
7329
|
+
validUntil: options.validUntil,
|
|
7330
|
+
sourceCreatedAt: options.sourceCreatedAt,
|
|
7331
|
+
hints: options.hints,
|
|
7332
|
+
transcript: options.transcript,
|
|
7333
|
+
structured: normalizeStructuredMemoryPayload(options.structured),
|
|
7334
|
+
agentId: options.agentId,
|
|
7335
|
+
visibility: options.visibility,
|
|
7336
|
+
mode: options.mode,
|
|
7337
|
+
idempotencyKey: options.idempotencyKey,
|
|
7338
|
+
runtimePath: options.runtimePath,
|
|
7339
|
+
harness: options.harness,
|
|
7340
|
+
source: options.source
|
|
7341
|
+
});
|
|
7342
|
+
}
|
|
7343
|
+
function withHookRecallCompat(result) {
|
|
7344
|
+
return {
|
|
7345
|
+
...result,
|
|
7346
|
+
memories: result.results,
|
|
7347
|
+
count: result.results.length,
|
|
7348
|
+
message: formatRecallText(result)
|
|
7349
|
+
};
|
|
7350
|
+
}
|
|
7351
|
+
function emptyHookRecallResponse(query, extras) {
|
|
7352
|
+
const response = {
|
|
7353
|
+
results: [],
|
|
7354
|
+
memories: [],
|
|
7355
|
+
count: 0,
|
|
7356
|
+
query,
|
|
7357
|
+
method: "hybrid",
|
|
7358
|
+
meta: {
|
|
7359
|
+
totalReturned: 0,
|
|
7360
|
+
hasSupplementary: false,
|
|
7361
|
+
noHits: true
|
|
7362
|
+
},
|
|
7363
|
+
message: "No matching memories found."
|
|
7364
|
+
};
|
|
7365
|
+
return {
|
|
7366
|
+
...response,
|
|
7367
|
+
...extras?.bypassed ? { bypassed: true } : {},
|
|
7368
|
+
...extras?.internal ? { internal: true } : {}
|
|
7369
|
+
};
|
|
7370
|
+
}
|
|
7371
|
+
|
|
7100
7372
|
// src/database.ts
|
|
7101
7373
|
import { existsSync, readdirSync } from "node:fs";
|
|
7102
7374
|
import { homedir } from "node:os";
|
|
@@ -11991,16 +12263,16 @@ var ONTOLOGY_PROPOSAL_OPERATIONS = [
|
|
|
11991
12263
|
// src/network.ts
|
|
11992
12264
|
var NETWORK_MODES = ["localhost", "tailscale"];
|
|
11993
12265
|
var LOCAL_BINDS = new Set(["127.0.0.1", "localhost", "::1", "::ffff:127.0.0.1"]);
|
|
11994
|
-
function
|
|
12266
|
+
function isRecord2(value) {
|
|
11995
12267
|
return typeof value === "object" && value !== null;
|
|
11996
12268
|
}
|
|
11997
12269
|
function normalizeNetworkMode(value) {
|
|
11998
12270
|
return value === "localhost" || value === "tailscale" ? value : null;
|
|
11999
12271
|
}
|
|
12000
12272
|
function readNetworkMode(raw) {
|
|
12001
|
-
if (!
|
|
12273
|
+
if (!isRecord2(raw))
|
|
12002
12274
|
return "localhost";
|
|
12003
|
-
if (!
|
|
12275
|
+
if (!isRecord2(raw.network))
|
|
12004
12276
|
return "localhost";
|
|
12005
12277
|
return normalizeNetworkMode(raw.network.mode) ?? "localhost";
|
|
12006
12278
|
}
|
|
@@ -12055,7 +12327,7 @@ function loadConfiguredHarnesses(agentsDir) {
|
|
|
12055
12327
|
continue;
|
|
12056
12328
|
try {
|
|
12057
12329
|
const parsed = parseSimpleYaml(readFileSync2(path, "utf-8"));
|
|
12058
|
-
if (!
|
|
12330
|
+
if (!isRecord3(parsed))
|
|
12059
12331
|
return [];
|
|
12060
12332
|
return parseHarnessList(parsed.harnesses);
|
|
12061
12333
|
} catch {
|
|
@@ -12073,7 +12345,7 @@ function parseHarnessList(value) {
|
|
|
12073
12345
|
}
|
|
12074
12346
|
return [];
|
|
12075
12347
|
}
|
|
12076
|
-
function
|
|
12348
|
+
function isRecord3(value) {
|
|
12077
12349
|
return typeof value === "object" && value !== null;
|
|
12078
12350
|
}
|
|
12079
12351
|
// src/daemon-url.ts
|
|
@@ -12275,374 +12547,102 @@ function hybridSearch(db, queryVector, queryText, options) {
|
|
|
12275
12547
|
const vectorMap = new Map(vectorResults.map((r) => [r.id, r.score]));
|
|
12276
12548
|
const keywordMap = new Map(keywordResults.map((r) => [r.id, r.score]));
|
|
12277
12549
|
const allIds = new Set([...vectorMap.keys(), ...keywordMap.keys()]);
|
|
12278
|
-
scored = [];
|
|
12279
|
-
for (const id of allIds) {
|
|
12280
|
-
const vectorScore = vectorMap.get(id) ?? 0;
|
|
12281
|
-
const keywordScore = keywordMap.get(id) ?? 0;
|
|
12282
|
-
let score;
|
|
12283
|
-
let source;
|
|
12284
|
-
if (vectorScore > 0 && keywordScore > 0) {
|
|
12285
|
-
score = alpha * vectorScore + (1 - alpha) * keywordScore;
|
|
12286
|
-
source = "hybrid";
|
|
12287
|
-
} else if (vectorScore > 0) {
|
|
12288
|
-
score = vectorScore;
|
|
12289
|
-
source = "vector";
|
|
12290
|
-
} else {
|
|
12291
|
-
score = keywordScore;
|
|
12292
|
-
source = "keyword";
|
|
12293
|
-
}
|
|
12294
|
-
if (score >= minScore) {
|
|
12295
|
-
scored.push({ id, score, source });
|
|
12296
|
-
}
|
|
12297
|
-
}
|
|
12298
|
-
scored.sort((a, b) => b.score - a.score);
|
|
12299
|
-
}
|
|
12300
|
-
const topIds = scored.slice(0, limit).map((s) => s.id);
|
|
12301
|
-
if (topIds.length === 0) {
|
|
12302
|
-
return [];
|
|
12303
|
-
}
|
|
12304
|
-
const placeholders = topIds.map(() => "?").join(", ");
|
|
12305
|
-
let typeFilter = "";
|
|
12306
|
-
const params = [...topIds];
|
|
12307
|
-
if (options?.type) {
|
|
12308
|
-
typeFilter = " AND type = ?";
|
|
12309
|
-
params.push(options.type);
|
|
12310
|
-
}
|
|
12311
|
-
const rows = db.prepare(`
|
|
12312
|
-
SELECT id, content, type, tags, confidence
|
|
12313
|
-
FROM memories
|
|
12314
|
-
WHERE id IN (${placeholders})${typeFilter}
|
|
12315
|
-
`).all(...params);
|
|
12316
|
-
const rowMap = new Map(rows.map((r) => [r.id, r]));
|
|
12317
|
-
return scored.slice(0, limit).filter((s) => rowMap.has(s.id)).map((s) => {
|
|
12318
|
-
const r = rowMap.get(s.id);
|
|
12319
|
-
if (!r)
|
|
12320
|
-
return null;
|
|
12321
|
-
return {
|
|
12322
|
-
id: s.id,
|
|
12323
|
-
content: r.content,
|
|
12324
|
-
score: Math.round(s.score * 100) / 100,
|
|
12325
|
-
type: r.type,
|
|
12326
|
-
source: s.source,
|
|
12327
|
-
tags: safeParseTags(r.tags),
|
|
12328
|
-
confidence: r.confidence
|
|
12329
|
-
};
|
|
12330
|
-
}).filter((r) => r !== null);
|
|
12331
|
-
}
|
|
12332
|
-
function hasPrepareMethod(db) {
|
|
12333
|
-
return typeof db === "object" && db !== null && "prepare" in db && typeof db.prepare === "function";
|
|
12334
|
-
}
|
|
12335
|
-
function getRawDb(db) {
|
|
12336
|
-
if (typeof db === "object" && db !== null && "db" in db && db.db !== null && hasPrepareMethod(db.db)) {
|
|
12337
|
-
return db.db;
|
|
12338
|
-
}
|
|
12339
|
-
if (hasPrepareMethod(db)) {
|
|
12340
|
-
return db;
|
|
12341
|
-
}
|
|
12342
|
-
return null;
|
|
12343
|
-
}
|
|
12344
|
-
async function search(db, options) {
|
|
12345
|
-
const { query, limit = 10, alpha = DEFAULT_HYBRID_ALPHA, minScore = 0.1, topK = 50 } = options;
|
|
12346
|
-
const rawDb = getRawDb(db);
|
|
12347
|
-
if (rawDb) {
|
|
12348
|
-
const results = hybridSearch(rawDb, null, query, {
|
|
12349
|
-
limit,
|
|
12350
|
-
alpha,
|
|
12351
|
-
minScore,
|
|
12352
|
-
topK,
|
|
12353
|
-
type: options.type
|
|
12354
|
-
});
|
|
12355
|
-
if (results.length > 0) {
|
|
12356
|
-
return results;
|
|
12357
|
-
}
|
|
12358
|
-
}
|
|
12359
|
-
try {
|
|
12360
|
-
const wrapper = db;
|
|
12361
|
-
const memories = typeof wrapper.getMemories === "function" ? wrapper.getMemories(options.type) : [];
|
|
12362
|
-
return memories.filter((m) => m.content.toLowerCase().includes(query.toLowerCase())).slice(0, limit).map((m) => ({
|
|
12363
|
-
id: m.id,
|
|
12364
|
-
content: m.content,
|
|
12365
|
-
score: 1,
|
|
12366
|
-
type: m.type,
|
|
12367
|
-
source: "keyword",
|
|
12368
|
-
tags: m.tags,
|
|
12369
|
-
confidence: m.confidence
|
|
12370
|
-
}));
|
|
12371
|
-
} catch {
|
|
12372
|
-
return [];
|
|
12373
|
-
}
|
|
12374
|
-
}
|
|
12375
|
-
// src/recall.ts
|
|
12376
|
-
function isRecord3(value) {
|
|
12377
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
12378
|
-
}
|
|
12379
|
-
function withDefined(value) {
|
|
12380
|
-
return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== undefined));
|
|
12381
|
-
}
|
|
12382
|
-
function normalizeRememberTags(tags) {
|
|
12383
|
-
if (typeof tags === "string") {
|
|
12384
|
-
const value = tags.split(",").map((tag) => tag.trim()).filter((tag) => tag.length > 0).join(",");
|
|
12385
|
-
return value.length > 0 ? value : undefined;
|
|
12386
|
-
}
|
|
12387
|
-
if (Array.isArray(tags)) {
|
|
12388
|
-
const value = tags.map((tag) => tag.trim()).filter((tag) => tag.length > 0).join(",");
|
|
12389
|
-
return value.length > 0 ? value : undefined;
|
|
12390
|
-
}
|
|
12391
|
-
return;
|
|
12392
|
-
}
|
|
12393
|
-
function normalizeRecallLimit(limit) {
|
|
12394
|
-
if (typeof limit !== "number" || !Number.isFinite(limit))
|
|
12395
|
-
return 10;
|
|
12396
|
-
return Math.min(100, Math.max(1, Math.trunc(limit)));
|
|
12397
|
-
}
|
|
12398
|
-
function partitionRecallRows(rows) {
|
|
12399
|
-
return {
|
|
12400
|
-
primary: rows.filter((row) => row.supplementary !== true),
|
|
12401
|
-
supporting: rows.filter((row) => row.supplementary === true)
|
|
12402
|
-
};
|
|
12403
|
-
}
|
|
12404
|
-
function parseRecallMeta(raw, fallbackCount) {
|
|
12405
|
-
if (!isRecord3(raw)) {
|
|
12406
|
-
return {
|
|
12407
|
-
totalReturned: fallbackCount,
|
|
12408
|
-
hasSupplementary: false,
|
|
12409
|
-
noHits: fallbackCount === 0
|
|
12410
|
-
};
|
|
12411
|
-
}
|
|
12412
|
-
const totalReturned = typeof raw.totalReturned === "number" ? raw.totalReturned : fallbackCount;
|
|
12413
|
-
const hasSupplementary = raw.hasSupplementary === true;
|
|
12414
|
-
const noHits = "noHits" in raw ? raw.noHits === true : totalReturned === 0;
|
|
12415
|
-
const dedupe = isRecord3(raw.dedupe) ? {
|
|
12416
|
-
enabled: raw.dedupe.enabled === true,
|
|
12417
|
-
contextEpoch: typeof raw.dedupe.contextEpoch === "number" ? raw.dedupe.contextEpoch : undefined,
|
|
12418
|
-
suppressed: typeof raw.dedupe.suppressed === "number" ? raw.dedupe.suppressed : 0,
|
|
12419
|
-
repeatedReturned: typeof raw.dedupe.repeatedReturned === "number" ? raw.dedupe.repeatedReturned : 0
|
|
12420
|
-
} : undefined;
|
|
12421
|
-
const temporal = isRecord3(raw.temporal) ? raw.temporal : undefined;
|
|
12422
|
-
return { totalReturned, hasSupplementary, noHits, ...dedupe ? { dedupe } : {}, ...temporal ? { temporal } : {} };
|
|
12423
|
-
}
|
|
12424
|
-
function parseRecallPayload(raw) {
|
|
12425
|
-
const payload = isRecord3(raw) ? raw : {};
|
|
12426
|
-
const results = Array.isArray(payload.results) ? payload.results : Array.isArray(payload.memories) ? payload.memories : [];
|
|
12427
|
-
const rows = results.filter(isRecord3);
|
|
12428
|
-
return {
|
|
12429
|
-
query: typeof payload.query === "string" ? payload.query : undefined,
|
|
12430
|
-
method: typeof payload.method === "string" ? payload.method : undefined,
|
|
12431
|
-
rows,
|
|
12432
|
-
meta: parseRecallMeta(payload.meta, rows.length),
|
|
12433
|
-
message: typeof payload.message === "string" ? payload.message : undefined
|
|
12434
|
-
};
|
|
12435
|
-
}
|
|
12436
|
-
function applyRecallScoreThreshold(raw, minScore) {
|
|
12437
|
-
if (typeof minScore !== "number" || !Number.isFinite(minScore) || typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
12438
|
-
return raw;
|
|
12439
|
-
}
|
|
12440
|
-
const payload = raw;
|
|
12441
|
-
const rows = Array.isArray(payload.results) ? payload.results : [];
|
|
12442
|
-
const filtered = rows.filter((row) => typeof row.score !== "number" || row.score >= minScore);
|
|
12443
|
-
return {
|
|
12444
|
-
...payload,
|
|
12445
|
-
results: filtered,
|
|
12446
|
-
meta: {
|
|
12447
|
-
totalReturned: filtered.length,
|
|
12448
|
-
hasSupplementary: filtered.some((row) => row.supplementary === true),
|
|
12449
|
-
noHits: filtered.length === 0,
|
|
12450
|
-
...isRecord3(payload.meta) && isRecord3(payload.meta.dedupe) ? { dedupe: payload.meta.dedupe } : {},
|
|
12451
|
-
...isRecord3(payload.meta) && isRecord3(payload.meta.temporal) ? { temporal: payload.meta.temporal } : {}
|
|
12452
|
-
}
|
|
12453
|
-
};
|
|
12454
|
-
}
|
|
12455
|
-
function formatDate(value) {
|
|
12456
|
-
return typeof value === "string" && value.length > 0 ? value.slice(0, 10) : "unknown";
|
|
12457
|
-
}
|
|
12458
|
-
function formatRecallRow(row, options) {
|
|
12459
|
-
const score = typeof row.score === "number" ? `[${(row.score * 100).toFixed(0)}%] ` : "";
|
|
12460
|
-
const source = typeof row.source === "string" ? row.source : "unknown";
|
|
12461
|
-
const type = typeof row.type === "string" ? row.type : "memory";
|
|
12462
|
-
const who = typeof row.who === "string" && row.who.length > 0 ? `, by ${row.who}` : "";
|
|
12463
|
-
const createdAt = formatDate(row.created_at);
|
|
12464
|
-
const id = typeof row.id === "string" && row.id.length > 0 ? `id: ${row.id}; ` : "";
|
|
12465
|
-
const prefix = options?.includeIndex ? `${options.includeIndex}. ` : "- ";
|
|
12466
|
-
return `${prefix}${score}${id}${row.content ?? ""} (${type}, ${source}, ${createdAt}${who})`;
|
|
12467
|
-
}
|
|
12468
|
-
function temporalGroupLabel(row) {
|
|
12469
|
-
if (row.temporal_facet === "session")
|
|
12470
|
-
return "Sessions";
|
|
12471
|
-
if (row.temporal_facet === "source")
|
|
12472
|
-
return "Source Activity";
|
|
12473
|
-
if (row.temporal_facet === "occurred" || row.temporal_facet === "observed" || row.temporal_facet === "valid") {
|
|
12474
|
-
return "Events";
|
|
12550
|
+
scored = [];
|
|
12551
|
+
for (const id of allIds) {
|
|
12552
|
+
const vectorScore = vectorMap.get(id) ?? 0;
|
|
12553
|
+
const keywordScore = keywordMap.get(id) ?? 0;
|
|
12554
|
+
let score;
|
|
12555
|
+
let source;
|
|
12556
|
+
if (vectorScore > 0 && keywordScore > 0) {
|
|
12557
|
+
score = alpha * vectorScore + (1 - alpha) * keywordScore;
|
|
12558
|
+
source = "hybrid";
|
|
12559
|
+
} else if (vectorScore > 0) {
|
|
12560
|
+
score = vectorScore;
|
|
12561
|
+
source = "vector";
|
|
12562
|
+
} else {
|
|
12563
|
+
score = keywordScore;
|
|
12564
|
+
source = "keyword";
|
|
12565
|
+
}
|
|
12566
|
+
if (score >= minScore) {
|
|
12567
|
+
scored.push({ id, score, source });
|
|
12568
|
+
}
|
|
12569
|
+
}
|
|
12570
|
+
scored.sort((a, b) => b.score - a.score);
|
|
12475
12571
|
}
|
|
12476
|
-
|
|
12572
|
+
const topIds = scored.slice(0, limit).map((s) => s.id);
|
|
12573
|
+
if (topIds.length === 0) {
|
|
12574
|
+
return [];
|
|
12575
|
+
}
|
|
12576
|
+
const placeholders = topIds.map(() => "?").join(", ");
|
|
12577
|
+
let typeFilter = "";
|
|
12578
|
+
const params = [...topIds];
|
|
12579
|
+
if (options?.type) {
|
|
12580
|
+
typeFilter = " AND type = ?";
|
|
12581
|
+
params.push(options.type);
|
|
12582
|
+
}
|
|
12583
|
+
const rows = db.prepare(`
|
|
12584
|
+
SELECT id, content, type, tags, confidence
|
|
12585
|
+
FROM memories
|
|
12586
|
+
WHERE id IN (${placeholders})${typeFilter}
|
|
12587
|
+
`).all(...params);
|
|
12588
|
+
const rowMap = new Map(rows.map((r) => [r.id, r]));
|
|
12589
|
+
return scored.slice(0, limit).filter((s) => rowMap.has(s.id)).map((s) => {
|
|
12590
|
+
const r = rowMap.get(s.id);
|
|
12591
|
+
if (!r)
|
|
12592
|
+
return null;
|
|
12593
|
+
return {
|
|
12594
|
+
id: s.id,
|
|
12595
|
+
content: r.content,
|
|
12596
|
+
score: Math.round(s.score * 100) / 100,
|
|
12597
|
+
type: r.type,
|
|
12598
|
+
source: s.source,
|
|
12599
|
+
tags: safeParseTags(r.tags),
|
|
12600
|
+
confidence: r.confidence
|
|
12601
|
+
};
|
|
12602
|
+
}).filter((r) => r !== null);
|
|
12477
12603
|
}
|
|
12478
|
-
function
|
|
12479
|
-
|
|
12480
|
-
if (Number.isNaN(parsed.getTime()))
|
|
12481
|
-
return value.slice(0, 10);
|
|
12482
|
-
return parsed.toLocaleDateString("en-US", {
|
|
12483
|
-
month: "long",
|
|
12484
|
-
day: "numeric",
|
|
12485
|
-
year: "numeric",
|
|
12486
|
-
timeZone: "UTC"
|
|
12487
|
-
});
|
|
12604
|
+
function hasPrepareMethod(db) {
|
|
12605
|
+
return typeof db === "object" && db !== null && "prepare" in db && typeof db.prepare === "function";
|
|
12488
12606
|
}
|
|
12489
|
-
function
|
|
12490
|
-
|
|
12491
|
-
|
|
12492
|
-
for (const row of rows) {
|
|
12493
|
-
const label = temporalGroupLabel(row);
|
|
12494
|
-
groups.set(label, [...groups.get(label) ?? [], row]);
|
|
12607
|
+
function getRawDb(db) {
|
|
12608
|
+
if (typeof db === "object" && db !== null && "db" in db && db.db !== null && hasPrepareMethod(db.db)) {
|
|
12609
|
+
return db.db;
|
|
12495
12610
|
}
|
|
12496
|
-
|
|
12497
|
-
|
|
12498
|
-
if (!group || group.length === 0)
|
|
12499
|
-
continue;
|
|
12500
|
-
parts.push("", label, ...group.map((row) => formatRecallRow(row)));
|
|
12611
|
+
if (hasPrepareMethod(db)) {
|
|
12612
|
+
return db;
|
|
12501
12613
|
}
|
|
12502
|
-
return
|
|
12503
|
-
`);
|
|
12614
|
+
return null;
|
|
12504
12615
|
}
|
|
12505
|
-
function
|
|
12506
|
-
|
|
12507
|
-
|
|
12508
|
-
|
|
12509
|
-
|
|
12510
|
-
|
|
12511
|
-
|
|
12512
|
-
|
|
12513
|
-
|
|
12514
|
-
|
|
12515
|
-
|
|
12516
|
-
|
|
12517
|
-
|
|
12518
|
-
|
|
12519
|
-
const parts = payload.aggregate?.partial === true && typeof payload.aggregate.message === "string" ? [
|
|
12520
|
-
payload.aggregate.message,
|
|
12521
|
-
"",
|
|
12522
|
-
`Found ${parsed.meta.totalReturned} ${noun}${parsed.method ? ` (${parsed.method})` : ""}.`
|
|
12523
|
-
] : [`Found ${parsed.meta.totalReturned} ${noun}${parsed.method ? ` (${parsed.method})` : ""}.`];
|
|
12524
|
-
if (primary.length > 0) {
|
|
12525
|
-
parts.push("", "Primary matches:", ...primary.map((row) => formatRecallRow(row)));
|
|
12616
|
+
async function search(db, options) {
|
|
12617
|
+
const { query, limit = 10, alpha = DEFAULT_HYBRID_ALPHA, minScore = 0.1, topK = 50 } = options;
|
|
12618
|
+
const rawDb = getRawDb(db);
|
|
12619
|
+
if (rawDb) {
|
|
12620
|
+
const results = hybridSearch(rawDb, null, query, {
|
|
12621
|
+
limit,
|
|
12622
|
+
alpha,
|
|
12623
|
+
minScore,
|
|
12624
|
+
topK,
|
|
12625
|
+
type: options.type
|
|
12626
|
+
});
|
|
12627
|
+
if (results.length > 0) {
|
|
12628
|
+
return results;
|
|
12629
|
+
}
|
|
12526
12630
|
}
|
|
12527
|
-
|
|
12528
|
-
|
|
12631
|
+
try {
|
|
12632
|
+
const wrapper = db;
|
|
12633
|
+
const memories = typeof wrapper.getMemories === "function" ? wrapper.getMemories(options.type) : [];
|
|
12634
|
+
return memories.filter((m) => m.content.toLowerCase().includes(query.toLowerCase())).slice(0, limit).map((m) => ({
|
|
12635
|
+
id: m.id,
|
|
12636
|
+
content: m.content,
|
|
12637
|
+
score: 1,
|
|
12638
|
+
type: m.type,
|
|
12639
|
+
source: "keyword",
|
|
12640
|
+
tags: m.tags,
|
|
12641
|
+
confidence: m.confidence
|
|
12642
|
+
}));
|
|
12643
|
+
} catch {
|
|
12644
|
+
return [];
|
|
12529
12645
|
}
|
|
12530
|
-
return parts.join(`
|
|
12531
|
-
`);
|
|
12532
|
-
}
|
|
12533
|
-
function buildRecallRequestBody(query, options = {}) {
|
|
12534
|
-
return withDefined({
|
|
12535
|
-
query,
|
|
12536
|
-
keywordQuery: options.keywordQuery ?? options.keyword_query,
|
|
12537
|
-
limit: normalizeRecallLimit(options.limit),
|
|
12538
|
-
project: options.project,
|
|
12539
|
-
type: options.type,
|
|
12540
|
-
tags: options.tags,
|
|
12541
|
-
who: options.who,
|
|
12542
|
-
pinned: options.pinned === true ? true : undefined,
|
|
12543
|
-
importance_min: options.importance_min,
|
|
12544
|
-
since: options.since,
|
|
12545
|
-
until: options.until,
|
|
12546
|
-
time: options.time,
|
|
12547
|
-
expand: options.expand === true ? true : undefined,
|
|
12548
|
-
agentId: options.agentId ?? options.agent_id ?? options.contextAgentId,
|
|
12549
|
-
sessionKey: options.sessionKey ?? options.session_key,
|
|
12550
|
-
includeRecalled: options.includeRecalled === true || options.include_recalled === true ? true : undefined,
|
|
12551
|
-
scope: options.scope,
|
|
12552
|
-
sourceOnly: options.sourceOnly === true || options.source_only === true ? true : undefined,
|
|
12553
|
-
aggregate: options.aggregate === true ? true : undefined,
|
|
12554
|
-
aggregateBudget: options.aggregateBudget ?? options.aggregate_budget,
|
|
12555
|
-
saveAggregate: options.saveAggregate === false || options.save_aggregate === false ? false : options.saveAggregate === true || options.save_aggregate === true ? true : undefined
|
|
12556
|
-
});
|
|
12557
|
-
}
|
|
12558
|
-
function normalizeStructuredMemoryPayload(value) {
|
|
12559
|
-
if (!isRecord3(value))
|
|
12560
|
-
return value;
|
|
12561
|
-
const aspects = value.aspects;
|
|
12562
|
-
if (!Array.isArray(aspects))
|
|
12563
|
-
return value;
|
|
12564
|
-
return {
|
|
12565
|
-
...value,
|
|
12566
|
-
aspects: aspects.map((aspect) => {
|
|
12567
|
-
if (!isRecord3(aspect))
|
|
12568
|
-
return aspect;
|
|
12569
|
-
if (typeof aspect.entityName === "string" && Array.isArray(aspect.attributes))
|
|
12570
|
-
return aspect;
|
|
12571
|
-
if (typeof aspect.entity === "string" && typeof aspect.aspect === "string" && typeof aspect.value === "string") {
|
|
12572
|
-
return {
|
|
12573
|
-
entityName: aspect.entity,
|
|
12574
|
-
aspect: aspect.aspect,
|
|
12575
|
-
attributes: [
|
|
12576
|
-
withDefined({
|
|
12577
|
-
content: aspect.value,
|
|
12578
|
-
groupKey: typeof aspect.groupKey === "string" ? aspect.groupKey : undefined,
|
|
12579
|
-
claimKey: typeof aspect.claimKey === "string" ? aspect.claimKey : undefined,
|
|
12580
|
-
confidence: typeof aspect.confidence === "number" ? aspect.confidence : undefined,
|
|
12581
|
-
importance: typeof aspect.importance === "number" ? aspect.importance : undefined
|
|
12582
|
-
})
|
|
12583
|
-
]
|
|
12584
|
-
};
|
|
12585
|
-
}
|
|
12586
|
-
return aspect;
|
|
12587
|
-
})
|
|
12588
|
-
};
|
|
12589
|
-
}
|
|
12590
|
-
function buildRememberRequestBody(content, options = {}) {
|
|
12591
|
-
return withDefined({
|
|
12592
|
-
content,
|
|
12593
|
-
type: options.type,
|
|
12594
|
-
importance: options.importance,
|
|
12595
|
-
tags: normalizeRememberTags(options.tags),
|
|
12596
|
-
who: options.who,
|
|
12597
|
-
pinned: options.pinned === true ? true : undefined,
|
|
12598
|
-
sourceType: options.sourceType,
|
|
12599
|
-
sourceId: options.sourceId,
|
|
12600
|
-
sourcePath: options.sourcePath,
|
|
12601
|
-
createdAt: options.createdAt,
|
|
12602
|
-
occurredAt: options.occurredAt,
|
|
12603
|
-
observedAt: options.observedAt,
|
|
12604
|
-
validFrom: options.validFrom,
|
|
12605
|
-
validUntil: options.validUntil,
|
|
12606
|
-
sourceCreatedAt: options.sourceCreatedAt,
|
|
12607
|
-
hints: options.hints,
|
|
12608
|
-
transcript: options.transcript,
|
|
12609
|
-
structured: normalizeStructuredMemoryPayload(options.structured),
|
|
12610
|
-
agentId: options.agentId,
|
|
12611
|
-
visibility: options.visibility,
|
|
12612
|
-
mode: options.mode,
|
|
12613
|
-
idempotencyKey: options.idempotencyKey,
|
|
12614
|
-
runtimePath: options.runtimePath,
|
|
12615
|
-
harness: options.harness,
|
|
12616
|
-
source: options.source
|
|
12617
|
-
});
|
|
12618
|
-
}
|
|
12619
|
-
function withHookRecallCompat(result) {
|
|
12620
|
-
return {
|
|
12621
|
-
...result,
|
|
12622
|
-
memories: result.results,
|
|
12623
|
-
count: result.results.length,
|
|
12624
|
-
message: formatRecallText(result)
|
|
12625
|
-
};
|
|
12626
|
-
}
|
|
12627
|
-
function emptyHookRecallResponse(query, extras) {
|
|
12628
|
-
const response = {
|
|
12629
|
-
results: [],
|
|
12630
|
-
memories: [],
|
|
12631
|
-
count: 0,
|
|
12632
|
-
query,
|
|
12633
|
-
method: "hybrid",
|
|
12634
|
-
meta: {
|
|
12635
|
-
totalReturned: 0,
|
|
12636
|
-
hasSupplementary: false,
|
|
12637
|
-
noHits: true
|
|
12638
|
-
},
|
|
12639
|
-
message: "No matching memories found."
|
|
12640
|
-
};
|
|
12641
|
-
return {
|
|
12642
|
-
...response,
|
|
12643
|
-
...extras?.bypassed ? { bypassed: true } : {},
|
|
12644
|
-
...extras?.internal ? { internal: true } : {}
|
|
12645
|
-
};
|
|
12646
12646
|
}
|
|
12647
12647
|
// src/migrate.ts
|
|
12648
12648
|
async function migrate(options) {
|
|
@@ -16358,6 +16358,7 @@ var ROUTING_OPERATION_KINDS = [
|
|
|
16358
16358
|
"code_reasoning",
|
|
16359
16359
|
"memory_extraction",
|
|
16360
16360
|
"session_synthesis",
|
|
16361
|
+
"aggregate_recall",
|
|
16361
16362
|
"widget_generation",
|
|
16362
16363
|
"repair",
|
|
16363
16364
|
"os_agent"
|
|
@@ -16973,6 +16974,7 @@ function parseRoutingConfig(raw, legacyConfig) {
|
|
|
16973
16974
|
const interactive = parseWorkloadBinding(routingRaw.workloads.interactive);
|
|
16974
16975
|
const memoryExtraction = parseWorkloadBinding(routingRaw.workloads.memoryExtraction ?? routingRaw.workloads.memory_extraction);
|
|
16975
16976
|
const sessionSynthesis = parseWorkloadBinding(routingRaw.workloads.sessionSynthesis ?? routingRaw.workloads.session_synthesis);
|
|
16977
|
+
const aggregateRecall = parseWorkloadBinding(routingRaw.workloads.aggregateRecall ?? routingRaw.workloads.aggregate_recall);
|
|
16976
16978
|
const widgetGeneration = parseWorkloadBinding(routingRaw.workloads.widgetGeneration ?? routingRaw.workloads.widget_generation);
|
|
16977
16979
|
const repair = parseWorkloadBinding(routingRaw.workloads.repair);
|
|
16978
16980
|
if (defaultBinding)
|
|
@@ -16983,6 +16985,8 @@ function parseRoutingConfig(raw, legacyConfig) {
|
|
|
16983
16985
|
workloads.memoryExtraction = memoryExtraction;
|
|
16984
16986
|
if (sessionSynthesis)
|
|
16985
16987
|
workloads.sessionSynthesis = sessionSynthesis;
|
|
16988
|
+
if (aggregateRecall)
|
|
16989
|
+
workloads.aggregateRecall = aggregateRecall;
|
|
16986
16990
|
if (widgetGeneration)
|
|
16987
16991
|
workloads.widgetGeneration = widgetGeneration;
|
|
16988
16992
|
if (repair)
|
|
@@ -17021,6 +17025,8 @@ function workloadBindingForOperation(config, operation) {
|
|
|
17021
17025
|
return config.workloads?.memoryExtraction ?? config.workloads?.default;
|
|
17022
17026
|
case "session_synthesis":
|
|
17023
17027
|
return config.workloads?.sessionSynthesis ?? config.workloads?.default;
|
|
17028
|
+
case "aggregate_recall":
|
|
17029
|
+
return config.workloads?.aggregateRecall ?? config.workloads?.sessionSynthesis ?? config.workloads?.default;
|
|
17024
17030
|
case "widget_generation":
|
|
17025
17031
|
return config.workloads?.widgetGeneration ?? config.workloads?.sessionSynthesis ?? config.workloads?.default;
|
|
17026
17032
|
case "repair":
|
|
@@ -17305,9 +17311,26 @@ function resolveRoutingDecision(config, request, runtimeSnapshot) {
|
|
|
17305
17311
|
orderedTargets: pref.orderedTargets,
|
|
17306
17312
|
candidates: traces
|
|
17307
17313
|
};
|
|
17308
|
-
const
|
|
17314
|
+
const disallowedExecutors = request.operation === "aggregate_recall" ? new Set(["acpx"]) : null;
|
|
17315
|
+
const executorForCandidate = (ref) => {
|
|
17316
|
+
const parsed = parseRoutingTargetRef(ref);
|
|
17317
|
+
if (!parsed.ok)
|
|
17318
|
+
return;
|
|
17319
|
+
return config.targets[parsed.value.targetId]?.executor;
|
|
17320
|
+
};
|
|
17321
|
+
const allowed = traces.filter((candidate) => {
|
|
17322
|
+
if (!candidate.allowed)
|
|
17323
|
+
return false;
|
|
17324
|
+
if (disallowedExecutors) {
|
|
17325
|
+
const exec = executorForCandidate(candidate.targetRef);
|
|
17326
|
+
if (exec && disallowedExecutors.has(exec))
|
|
17327
|
+
return false;
|
|
17328
|
+
}
|
|
17329
|
+
return true;
|
|
17330
|
+
});
|
|
17309
17331
|
if (allowed.length === 0) {
|
|
17310
|
-
|
|
17332
|
+
const reason = disallowedExecutors ? `All routing candidates for '${request.operation}' were blocked: this operation cannot use a subprocess (ACPX) executor — it requires a direct pi-ai provider for latency.` : "All routing candidates were blocked by policy or runtime state.";
|
|
17333
|
+
return err("no-candidates", reason, {
|
|
17311
17334
|
trace
|
|
17312
17335
|
});
|
|
17313
17336
|
}
|
package/dist/recall.d.ts
CHANGED
|
@@ -119,7 +119,8 @@ export interface RecallRequestOptions {
|
|
|
119
119
|
readonly session_key?: string;
|
|
120
120
|
readonly includeRecalled?: boolean;
|
|
121
121
|
readonly include_recalled?: boolean;
|
|
122
|
-
|
|
122
|
+
/** Exact daemon memory-scope string; agent/session isolation use their dedicated fields. */
|
|
123
|
+
readonly scope?: string;
|
|
123
124
|
readonly sourceOnly?: boolean;
|
|
124
125
|
readonly source_only?: boolean;
|
|
125
126
|
readonly aggregate?: boolean;
|
package/dist/recall.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../src/recall.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../src/recall.ts"],"names":[],"mappings":"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"}
|
package/dist/recall.js
ADDED
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
function __accessProp(key) {
|
|
8
|
+
return this[key];
|
|
9
|
+
}
|
|
10
|
+
var __toESMCache_node;
|
|
11
|
+
var __toESMCache_esm;
|
|
12
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
13
|
+
var canCache = mod != null && typeof mod === "object";
|
|
14
|
+
if (canCache) {
|
|
15
|
+
var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
|
|
16
|
+
var cached = cache.get(mod);
|
|
17
|
+
if (cached)
|
|
18
|
+
return cached;
|
|
19
|
+
}
|
|
20
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
21
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
22
|
+
for (let key of __getOwnPropNames(mod))
|
|
23
|
+
if (!__hasOwnProp.call(to, key))
|
|
24
|
+
__defProp(to, key, {
|
|
25
|
+
get: __accessProp.bind(mod, key),
|
|
26
|
+
enumerable: true
|
|
27
|
+
});
|
|
28
|
+
if (canCache)
|
|
29
|
+
cache.set(mod, to);
|
|
30
|
+
return to;
|
|
31
|
+
};
|
|
32
|
+
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
33
|
+
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
34
|
+
|
|
35
|
+
// src/recall.ts
|
|
36
|
+
function isRecord(value) {
|
|
37
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
38
|
+
}
|
|
39
|
+
function withDefined(value) {
|
|
40
|
+
return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== undefined));
|
|
41
|
+
}
|
|
42
|
+
function normalizeRememberTags(tags) {
|
|
43
|
+
if (typeof tags === "string") {
|
|
44
|
+
const value = tags.split(",").map((tag) => tag.trim()).filter((tag) => tag.length > 0).join(",");
|
|
45
|
+
return value.length > 0 ? value : undefined;
|
|
46
|
+
}
|
|
47
|
+
if (Array.isArray(tags)) {
|
|
48
|
+
const value = tags.map((tag) => tag.trim()).filter((tag) => tag.length > 0).join(",");
|
|
49
|
+
return value.length > 0 ? value : undefined;
|
|
50
|
+
}
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
function normalizeRecallLimit(limit) {
|
|
54
|
+
if (typeof limit !== "number" || !Number.isFinite(limit))
|
|
55
|
+
return 10;
|
|
56
|
+
return Math.min(100, Math.max(1, Math.trunc(limit)));
|
|
57
|
+
}
|
|
58
|
+
function partitionRecallRows(rows) {
|
|
59
|
+
return {
|
|
60
|
+
primary: rows.filter((row) => row.supplementary !== true),
|
|
61
|
+
supporting: rows.filter((row) => row.supplementary === true)
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function parseRecallMeta(raw, fallbackCount) {
|
|
65
|
+
if (!isRecord(raw)) {
|
|
66
|
+
return {
|
|
67
|
+
totalReturned: fallbackCount,
|
|
68
|
+
hasSupplementary: false,
|
|
69
|
+
noHits: fallbackCount === 0
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const totalReturned = typeof raw.totalReturned === "number" ? raw.totalReturned : fallbackCount;
|
|
73
|
+
const hasSupplementary = raw.hasSupplementary === true;
|
|
74
|
+
const noHits = "noHits" in raw ? raw.noHits === true : totalReturned === 0;
|
|
75
|
+
const dedupe = isRecord(raw.dedupe) ? {
|
|
76
|
+
enabled: raw.dedupe.enabled === true,
|
|
77
|
+
contextEpoch: typeof raw.dedupe.contextEpoch === "number" ? raw.dedupe.contextEpoch : undefined,
|
|
78
|
+
suppressed: typeof raw.dedupe.suppressed === "number" ? raw.dedupe.suppressed : 0,
|
|
79
|
+
repeatedReturned: typeof raw.dedupe.repeatedReturned === "number" ? raw.dedupe.repeatedReturned : 0
|
|
80
|
+
} : undefined;
|
|
81
|
+
const temporal = isRecord(raw.temporal) ? raw.temporal : undefined;
|
|
82
|
+
return { totalReturned, hasSupplementary, noHits, ...dedupe ? { dedupe } : {}, ...temporal ? { temporal } : {} };
|
|
83
|
+
}
|
|
84
|
+
function parseRecallPayload(raw) {
|
|
85
|
+
const payload = isRecord(raw) ? raw : {};
|
|
86
|
+
const results = Array.isArray(payload.results) ? payload.results : Array.isArray(payload.memories) ? payload.memories : [];
|
|
87
|
+
const rows = results.filter(isRecord);
|
|
88
|
+
return {
|
|
89
|
+
query: typeof payload.query === "string" ? payload.query : undefined,
|
|
90
|
+
method: typeof payload.method === "string" ? payload.method : undefined,
|
|
91
|
+
rows,
|
|
92
|
+
meta: parseRecallMeta(payload.meta, rows.length),
|
|
93
|
+
message: typeof payload.message === "string" ? payload.message : undefined
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function applyRecallScoreThreshold(raw, minScore) {
|
|
97
|
+
if (typeof minScore !== "number" || !Number.isFinite(minScore) || typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
98
|
+
return raw;
|
|
99
|
+
}
|
|
100
|
+
const payload = raw;
|
|
101
|
+
const rows = Array.isArray(payload.results) ? payload.results : [];
|
|
102
|
+
const filtered = rows.filter((row) => typeof row.score !== "number" || row.score >= minScore);
|
|
103
|
+
return {
|
|
104
|
+
...payload,
|
|
105
|
+
results: filtered,
|
|
106
|
+
meta: {
|
|
107
|
+
...isRecord(payload.meta) ? payload.meta : {},
|
|
108
|
+
totalReturned: filtered.length,
|
|
109
|
+
hasSupplementary: filtered.some((row) => row.supplementary === true),
|
|
110
|
+
noHits: filtered.length === 0
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function formatDate(value) {
|
|
115
|
+
return typeof value === "string" && value.length > 0 ? value.slice(0, 10) : "unknown";
|
|
116
|
+
}
|
|
117
|
+
function formatRecallRow(row, options) {
|
|
118
|
+
const score = typeof row.score === "number" ? `[${(row.score * 100).toFixed(0)}%] ` : "";
|
|
119
|
+
const source = typeof row.source === "string" ? row.source : "unknown";
|
|
120
|
+
const type = typeof row.type === "string" ? row.type : "memory";
|
|
121
|
+
const who = typeof row.who === "string" && row.who.length > 0 ? `, by ${row.who}` : "";
|
|
122
|
+
const createdAt = formatDate(row.created_at);
|
|
123
|
+
const id = typeof row.id === "string" && row.id.length > 0 ? `id: ${row.id}; ` : "";
|
|
124
|
+
const prefix = options?.includeIndex ? `${options.includeIndex}. ` : "- ";
|
|
125
|
+
return `${prefix}${score}${id}${row.content ?? ""} (${type}, ${source}, ${createdAt}${who})`;
|
|
126
|
+
}
|
|
127
|
+
function temporalGroupLabel(row) {
|
|
128
|
+
if (row.temporal_facet === "session")
|
|
129
|
+
return "Sessions";
|
|
130
|
+
if (row.temporal_facet === "source")
|
|
131
|
+
return "Source Activity";
|
|
132
|
+
if (row.temporal_facet === "occurred" || row.temporal_facet === "observed" || row.temporal_facet === "valid") {
|
|
133
|
+
return "Events";
|
|
134
|
+
}
|
|
135
|
+
return "Memories Captured";
|
|
136
|
+
}
|
|
137
|
+
function formatTemporalDate(value) {
|
|
138
|
+
const parsed = new Date(value);
|
|
139
|
+
if (Number.isNaN(parsed.getTime()))
|
|
140
|
+
return value.slice(0, 10);
|
|
141
|
+
return parsed.toLocaleDateString("en-US", {
|
|
142
|
+
month: "long",
|
|
143
|
+
day: "numeric",
|
|
144
|
+
year: "numeric",
|
|
145
|
+
timeZone: "UTC"
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
function formatTemporalRecallText(rows, meta) {
|
|
149
|
+
const parts = [formatTemporalDate(meta.start)];
|
|
150
|
+
const groups = new Map;
|
|
151
|
+
for (const row of rows) {
|
|
152
|
+
const label = temporalGroupLabel(row);
|
|
153
|
+
groups.set(label, [...groups.get(label) ?? [], row]);
|
|
154
|
+
}
|
|
155
|
+
for (const label of ["Sessions", "Source Activity", "Events", "Memories Captured"]) {
|
|
156
|
+
const group = groups.get(label);
|
|
157
|
+
if (!group || group.length === 0)
|
|
158
|
+
continue;
|
|
159
|
+
parts.push("", label, ...group.map((row) => formatRecallRow(row)));
|
|
160
|
+
}
|
|
161
|
+
return parts.join(`
|
|
162
|
+
`);
|
|
163
|
+
}
|
|
164
|
+
function formatRecallText(raw) {
|
|
165
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
166
|
+
return typeof raw === "string" ? raw : JSON.stringify(raw, null, 2);
|
|
167
|
+
}
|
|
168
|
+
const payload = raw;
|
|
169
|
+
const parsed = parseRecallPayload(payload);
|
|
170
|
+
if (parsed.message && parsed.rows.length === 0)
|
|
171
|
+
return parsed.message;
|
|
172
|
+
if (parsed.meta.noHits || parsed.rows.length === 0)
|
|
173
|
+
return "No matching memories found.";
|
|
174
|
+
const { primary, supporting } = partitionRecallRows(parsed.rows);
|
|
175
|
+
if (parsed.meta.temporal?.mode === "timeline")
|
|
176
|
+
return formatTemporalRecallText(primary, parsed.meta.temporal);
|
|
177
|
+
const noun = parsed.meta.totalReturned === 1 ? "memory" : "memories";
|
|
178
|
+
const parts = payload.aggregate?.partial === true && typeof payload.aggregate.message === "string" ? [
|
|
179
|
+
payload.aggregate.message,
|
|
180
|
+
"",
|
|
181
|
+
`Found ${parsed.meta.totalReturned} ${noun}${parsed.method ? ` (${parsed.method})` : ""}.`
|
|
182
|
+
] : [`Found ${parsed.meta.totalReturned} ${noun}${parsed.method ? ` (${parsed.method})` : ""}.`];
|
|
183
|
+
if (primary.length > 0) {
|
|
184
|
+
parts.push("", "Primary matches:", ...primary.map((row) => formatRecallRow(row)));
|
|
185
|
+
}
|
|
186
|
+
if (supporting.length > 0) {
|
|
187
|
+
parts.push("", "Supporting context:", ...supporting.map((row) => formatRecallRow(row)));
|
|
188
|
+
}
|
|
189
|
+
return parts.join(`
|
|
190
|
+
`);
|
|
191
|
+
}
|
|
192
|
+
function buildRecallRequestBody(query, options = {}) {
|
|
193
|
+
return withDefined({
|
|
194
|
+
query,
|
|
195
|
+
keywordQuery: options.keywordQuery ?? options.keyword_query,
|
|
196
|
+
limit: normalizeRecallLimit(options.limit),
|
|
197
|
+
project: options.project,
|
|
198
|
+
type: options.type,
|
|
199
|
+
tags: options.tags,
|
|
200
|
+
who: options.who,
|
|
201
|
+
pinned: options.pinned === true ? true : undefined,
|
|
202
|
+
importance_min: options.importance_min,
|
|
203
|
+
since: options.since,
|
|
204
|
+
until: options.until,
|
|
205
|
+
time: options.time,
|
|
206
|
+
expand: options.expand === true ? true : undefined,
|
|
207
|
+
agentId: options.agentId ?? options.agent_id ?? options.contextAgentId,
|
|
208
|
+
sessionKey: options.sessionKey ?? options.session_key,
|
|
209
|
+
includeRecalled: options.includeRecalled === true || options.include_recalled === true ? true : undefined,
|
|
210
|
+
scope: options.scope,
|
|
211
|
+
sourceOnly: options.sourceOnly === true || options.source_only === true ? true : undefined,
|
|
212
|
+
aggregate: options.aggregate === true ? true : undefined,
|
|
213
|
+
aggregateBudget: options.aggregateBudget ?? options.aggregate_budget,
|
|
214
|
+
saveAggregate: options.saveAggregate === false || options.save_aggregate === false ? false : options.saveAggregate === true || options.save_aggregate === true ? true : undefined
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
function normalizeStructuredMemoryPayload(value) {
|
|
218
|
+
if (!isRecord(value))
|
|
219
|
+
return value;
|
|
220
|
+
const aspects = value.aspects;
|
|
221
|
+
if (!Array.isArray(aspects))
|
|
222
|
+
return value;
|
|
223
|
+
return {
|
|
224
|
+
...value,
|
|
225
|
+
aspects: aspects.map((aspect) => {
|
|
226
|
+
if (!isRecord(aspect))
|
|
227
|
+
return aspect;
|
|
228
|
+
if (typeof aspect.entityName === "string" && Array.isArray(aspect.attributes))
|
|
229
|
+
return aspect;
|
|
230
|
+
if (typeof aspect.entity === "string" && typeof aspect.aspect === "string" && typeof aspect.value === "string") {
|
|
231
|
+
return {
|
|
232
|
+
entityName: aspect.entity,
|
|
233
|
+
aspect: aspect.aspect,
|
|
234
|
+
attributes: [
|
|
235
|
+
withDefined({
|
|
236
|
+
content: aspect.value,
|
|
237
|
+
groupKey: typeof aspect.groupKey === "string" ? aspect.groupKey : undefined,
|
|
238
|
+
claimKey: typeof aspect.claimKey === "string" ? aspect.claimKey : undefined,
|
|
239
|
+
confidence: typeof aspect.confidence === "number" ? aspect.confidence : undefined,
|
|
240
|
+
importance: typeof aspect.importance === "number" ? aspect.importance : undefined
|
|
241
|
+
})
|
|
242
|
+
]
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
return aspect;
|
|
246
|
+
})
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
function buildRememberRequestBody(content, options = {}) {
|
|
250
|
+
return withDefined({
|
|
251
|
+
content,
|
|
252
|
+
type: options.type,
|
|
253
|
+
importance: options.importance,
|
|
254
|
+
tags: normalizeRememberTags(options.tags),
|
|
255
|
+
who: options.who,
|
|
256
|
+
pinned: options.pinned === true ? true : undefined,
|
|
257
|
+
sourceType: options.sourceType,
|
|
258
|
+
sourceId: options.sourceId,
|
|
259
|
+
sourcePath: options.sourcePath,
|
|
260
|
+
createdAt: options.createdAt,
|
|
261
|
+
occurredAt: options.occurredAt,
|
|
262
|
+
observedAt: options.observedAt,
|
|
263
|
+
validFrom: options.validFrom,
|
|
264
|
+
validUntil: options.validUntil,
|
|
265
|
+
sourceCreatedAt: options.sourceCreatedAt,
|
|
266
|
+
hints: options.hints,
|
|
267
|
+
transcript: options.transcript,
|
|
268
|
+
structured: normalizeStructuredMemoryPayload(options.structured),
|
|
269
|
+
agentId: options.agentId,
|
|
270
|
+
visibility: options.visibility,
|
|
271
|
+
mode: options.mode,
|
|
272
|
+
idempotencyKey: options.idempotencyKey,
|
|
273
|
+
runtimePath: options.runtimePath,
|
|
274
|
+
harness: options.harness,
|
|
275
|
+
source: options.source
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
function withHookRecallCompat(result) {
|
|
279
|
+
return {
|
|
280
|
+
...result,
|
|
281
|
+
memories: result.results,
|
|
282
|
+
count: result.results.length,
|
|
283
|
+
message: formatRecallText(result)
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
function emptyHookRecallResponse(query, extras) {
|
|
287
|
+
const response = {
|
|
288
|
+
results: [],
|
|
289
|
+
memories: [],
|
|
290
|
+
count: 0,
|
|
291
|
+
query,
|
|
292
|
+
method: "hybrid",
|
|
293
|
+
meta: {
|
|
294
|
+
totalReturned: 0,
|
|
295
|
+
hasSupplementary: false,
|
|
296
|
+
noHits: true
|
|
297
|
+
},
|
|
298
|
+
message: "No matching memories found."
|
|
299
|
+
};
|
|
300
|
+
return {
|
|
301
|
+
...response,
|
|
302
|
+
...extras?.bypassed ? { bypassed: true } : {},
|
|
303
|
+
...extras?.internal ? { internal: true } : {}
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
export {
|
|
307
|
+
withHookRecallCompat,
|
|
308
|
+
partitionRecallRows,
|
|
309
|
+
parseRecallPayload,
|
|
310
|
+
parseRecallMeta,
|
|
311
|
+
normalizeStructuredMemoryPayload,
|
|
312
|
+
formatRecallText,
|
|
313
|
+
emptyHookRecallResponse,
|
|
314
|
+
buildRememberRequestBody,
|
|
315
|
+
buildRecallRequestBody,
|
|
316
|
+
applyRecallScoreThreshold
|
|
317
|
+
};
|
package/dist/routing.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export declare const ROUTING_POLICY_MODES: readonly ["strict", "automatic", "hyb
|
|
|
6
6
|
export declare const ROUTING_PRIVACY_TIERS: readonly ["remote_ok", "restricted_remote", "local_only"];
|
|
7
7
|
export declare const ROUTING_REASONING_DEPTHS: readonly ["low", "medium", "high"];
|
|
8
8
|
export declare const ROUTING_COST_TIERS: readonly ["low", "medium", "high"];
|
|
9
|
-
export declare const ROUTING_OPERATION_KINDS: readonly ["default", "interactive", "tool_planning", "code_reasoning", "memory_extraction", "session_synthesis", "widget_generation", "repair", "os_agent"];
|
|
9
|
+
export declare const ROUTING_OPERATION_KINDS: readonly ["default", "interactive", "tool_planning", "code_reasoning", "memory_extraction", "session_synthesis", "aggregate_recall", "widget_generation", "repair", "os_agent"];
|
|
10
10
|
export type RoutingAccountKind = (typeof ROUTING_ACCOUNT_KINDS)[number];
|
|
11
11
|
export type RoutingTargetKind = (typeof ROUTING_TARGET_KINDS)[number];
|
|
12
12
|
export type RoutingExecutorKind = (typeof ROUTING_EXECUTOR_KINDS)[number];
|
|
@@ -144,6 +144,7 @@ export interface RoutingConfig {
|
|
|
144
144
|
readonly interactive?: RoutingWorkloadBinding;
|
|
145
145
|
readonly memoryExtraction?: RoutingWorkloadBinding;
|
|
146
146
|
readonly sessionSynthesis?: RoutingWorkloadBinding;
|
|
147
|
+
readonly aggregateRecall?: RoutingWorkloadBinding;
|
|
147
148
|
readonly widgetGeneration?: RoutingWorkloadBinding;
|
|
148
149
|
readonly repair?: RoutingWorkloadBinding;
|
|
149
150
|
};
|
package/dist/routing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAGxG,eAAO,MAAM,qBAAqB,0CAA2C,CAAC;AAC9E,eAAO,MAAM,oBAAoB,8DAA+D,CAAC;AACjG,eAAO,MAAM,sBAAsB,yIAWzB,CAAC;AACX,eAAO,MAAM,oBAAoB,4CAA6C,CAAC;AAC/E,eAAO,MAAM,qBAAqB,2DAA4D,CAAC;AAC/F,eAAO,MAAM,wBAAwB,oCAAqC,CAAC;AAC3E,eAAO,MAAM,kBAAkB,oCAAqC,CAAC;AACrE,eAAO,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@signetai/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.148.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "Core library for Signet - portable AI agent identity",
|
|
6
6
|
"type": "module",
|
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
"./llm-model-catalog": {
|
|
19
19
|
"import": "./dist/llm-model-catalog.js",
|
|
20
20
|
"types": "./dist/llm-model-catalog.d.ts"
|
|
21
|
+
},
|
|
22
|
+
"./recall": {
|
|
23
|
+
"import": "./dist/recall.js",
|
|
24
|
+
"types": "./dist/recall.d.ts"
|
|
21
25
|
}
|
|
22
26
|
},
|
|
23
27
|
"files": [
|
|
@@ -26,7 +30,7 @@
|
|
|
26
30
|
"!dist/**/__tests__/**"
|
|
27
31
|
],
|
|
28
32
|
"scripts": {
|
|
29
|
-
"build": "bun build ./src/index.ts ./src/pipeline-providers.ts ./src/llm-model-catalog.ts --outdir ./dist --target node --external better-sqlite3 && bun run build:types",
|
|
33
|
+
"build": "bun build ./src/index.ts ./src/pipeline-providers.ts ./src/llm-model-catalog.ts ./src/recall.ts --outdir ./dist --target node --external better-sqlite3 && bun run build:types",
|
|
30
34
|
"build:types": "tsc --emitDeclarationOnly --declaration --outDir dist",
|
|
31
35
|
"dev": "bun --watch src/index.ts",
|
|
32
36
|
"test": "bun test",
|