@kybernesis/brain-core 0.14.0 → 0.15.0
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 +17 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/queue.d.ts +23 -2
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +67 -4
- package/dist/queue.js.map +1 -1
- package/dist/store-conversation.d.ts +16 -1
- package/dist/store-conversation.d.ts.map +1 -1
- package/dist/store-conversation.js +58 -17
- package/dist/store-conversation.js.map +1 -1
- package/dist/vectors.d.ts +20 -0
- package/dist/vectors.d.ts.map +1 -1
- package/dist/vectors.js +59 -0
- package/dist/vectors.js.map +1 -1
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -36,6 +36,19 @@ await hybridSearch(tenant, 'what did we decide about Q3?');
|
|
|
36
36
|
await getEntityContext(tenant, 'Ada');
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
+
Prefer one object per brain? Wrap a tenant once with `createLocalBrainProvider` — a
|
|
40
|
+
bound-tenant facade over the same operations, so you don't thread `tenant` through every call:
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
import { createLocalBrainProvider } from '@kybernesis/brain-core';
|
|
44
|
+
|
|
45
|
+
const brain = createLocalBrainProvider(tenant);
|
|
46
|
+
await brain.remember({ prompt, response, channel: 'chat' });
|
|
47
|
+
await brain.query('what did we decide about Q3?');
|
|
48
|
+
await brain.graph();
|
|
49
|
+
await brain.stats();
|
|
50
|
+
```
|
|
51
|
+
|
|
39
52
|
## The three seams
|
|
40
53
|
|
|
41
54
|
The kernel is wired through three module-level setters. Each degrades gracefully when unset.
|
|
@@ -58,6 +71,10 @@ A flat set of async functions over a `TenantContext`, grouped by subsystem:
|
|
|
58
71
|
- **Vectors** — `indexChunk`, `semanticSearch`, `vectorStats` (need the embedding seam).
|
|
59
72
|
- **Retrieval** — `hybridSearch`, `factFirstSearch`, `formatRecall`.
|
|
60
73
|
- **Sleep** — `runSleepCycleNow`, `recoverStaleSleepRuns` (background consolidation/reasoning).
|
|
74
|
+
- **BrainProvider facade** — `createLocalBrainProvider(t)` returns a bound-tenant
|
|
75
|
+
[`BrainProvider`](../brain-contracts) (Layer-2, ADR-0016): the same operations as one async
|
|
76
|
+
object, with no `TenantContext` threaded per call. The high-level seam a future remote
|
|
77
|
+
provider also implements.
|
|
61
78
|
|
|
62
79
|
All schemas, field shapes, and constants come from
|
|
63
80
|
[`@kybernesis/brain-contracts`](../brain-contracts).
|
package/dist/index.d.ts
CHANGED
|
@@ -9,8 +9,8 @@ export { sanitizeFtsQuery } from './fts-sanitizer.js';
|
|
|
9
9
|
export { setStorageProvider, resetStorageProvider, storageProviderIsExplicit, getStorage, } from './storage.js';
|
|
10
10
|
export { setLLMProvider, resetLLMProvider, llmAvailable, callClaude, callClaudeJSON, } from './claude-call.js';
|
|
11
11
|
export type { LLMProvider, ClaudeCallOpts } from './claude-call.js';
|
|
12
|
-
export { indexChunk, semanticSearch, vectorStats, setEmbeddingProvider, resetEmbeddingProvider, embeddingAvailable, EMBEDDING_DIM, } from './vectors.js';
|
|
13
|
-
export type { SearchResult, IndexChunkMeta, EmbeddingProvider, IndexChunkResult, } from './vectors.js';
|
|
12
|
+
export { indexChunk, indexChunks, semanticSearch, vectorStats, setEmbeddingProvider, resetEmbeddingProvider, embeddingAvailable, EMBEDDING_DIM, } from './vectors.js';
|
|
13
|
+
export type { SearchResult, IndexChunkMeta, EmbeddingProvider, IndexChunkResult, IndexChunkInput, } from './vectors.js';
|
|
14
14
|
export { runSleepCycleNow, recoverStaleSleepRuns, DEFAULT_CONFIG as SLEEP_DEFAULT_CONFIG, } from './sleep/index.js';
|
|
15
15
|
export type { SleepConfig, RunMetrics as SleepRunMetrics } from './sleep/index.js';
|
|
16
16
|
export { jaccardSimilarity, jaccardSimilarityArrays } from './sleep/utils/jaccard.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,EAC5B,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,SAAS,EACT,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EACL,UAAU,EAAE,cAAc,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ export { ensureFactsTable, storeFact, retractFact, reinforceFact, getFactById, g
|
|
|
5
5
|
export { sanitizeFtsQuery } from './fts-sanitizer.js';
|
|
6
6
|
export { setStorageProvider, resetStorageProvider, storageProviderIsExplicit, getStorage, } from './storage.js';
|
|
7
7
|
export { setLLMProvider, resetLLMProvider, llmAvailable, callClaude, callClaudeJSON, } from './claude-call.js';
|
|
8
|
-
export { indexChunk, semanticSearch, vectorStats, setEmbeddingProvider, resetEmbeddingProvider, embeddingAvailable, EMBEDDING_DIM, } from './vectors.js';
|
|
8
|
+
export { indexChunk, indexChunks, semanticSearch, vectorStats, setEmbeddingProvider, resetEmbeddingProvider, embeddingAvailable, EMBEDDING_DIM, } from './vectors.js';
|
|
9
9
|
export { runSleepCycleNow, recoverStaleSleepRuns, DEFAULT_CONFIG as SLEEP_DEFAULT_CONFIG, } from './sleep/index.js';
|
|
10
10
|
export { jaccardSimilarity, jaccardSimilarityArrays } from './sleep/utils/jaccard.js';
|
|
11
11
|
export { runReasoningStep } from './sleep/steps/reasoning.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,eAAe,GAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,EAC5B,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,SAAS,EACT,UAAU,GACX,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,UAAU,EAAE,cAAc,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/queue.d.ts
CHANGED
|
@@ -5,9 +5,30 @@
|
|
|
5
5
|
* tenant's serial channel. better-sqlite3 + WAL is multi-reader-safe but
|
|
6
6
|
* single-writer — concurrent writes risk corruption. This queue makes the
|
|
7
7
|
* "daemon is the sole writer per tenant" invariant load-bearing in code.
|
|
8
|
+
*
|
|
9
|
+
* Each job is now BOUNDED by a timeout (KYB-181): a job that never settles
|
|
10
|
+
* (hung LLM/embed/DB await) is evicted — its promise rejects, the tail
|
|
11
|
+
* advances, depth decrements — so the queue keeps draining instead of
|
|
12
|
+
* freezing the tenant forever.
|
|
13
|
+
*
|
|
14
|
+
* The job receives an AbortSignal that fires on eviction. Honoring it
|
|
15
|
+
* (polling `signal.aborted` between steps) NARROWS the window in which a
|
|
16
|
+
* detached, evicted job could still write — it does NOT cancel an in-flight
|
|
17
|
+
* await, so a genuinely hung SDK call runs on until it settles on its own,
|
|
18
|
+
* and a write can still land inside the await that was in flight when the
|
|
19
|
+
* timer fired. better-sqlite3 writes are synchronous, so the residual is at
|
|
20
|
+
* worst a logical out-of-order/duplicate write, never corruption. Threading
|
|
21
|
+
* the signal into the SDK calls for true cancellation is deferred (see the
|
|
22
|
+
* KYB-181 spec "one caveat that matters").
|
|
8
23
|
*/
|
|
9
|
-
type Job<T> = () => Promise<T>;
|
|
10
|
-
|
|
24
|
+
type Job<T> = (signal: AbortSignal) => Promise<T>;
|
|
25
|
+
interface EnqueueOptions {
|
|
26
|
+
/** For logs/telemetry, e.g. "watched-folder:CONTEXT.md". */
|
|
27
|
+
label?: string;
|
|
28
|
+
/** Override the per-job timeout for this call; default JOB_TIMEOUT_MS. */
|
|
29
|
+
timeoutMs?: number;
|
|
30
|
+
}
|
|
31
|
+
export declare function enqueueWrite<T>(slug: string, job: Job<T>, opts?: EnqueueOptions): Promise<T>;
|
|
11
32
|
export declare function queueDepth(slug: string): number;
|
|
12
33
|
export {};
|
|
13
34
|
//# sourceMappingURL=queue.d.ts.map
|
package/dist/queue.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAElD,UAAU,cAAc;IACtB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoCD,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EACX,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,CAAC,CAAC,CAwCZ;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C"}
|
package/dist/queue.js
CHANGED
|
@@ -5,19 +5,82 @@
|
|
|
5
5
|
* tenant's serial channel. better-sqlite3 + WAL is multi-reader-safe but
|
|
6
6
|
* single-writer — concurrent writes risk corruption. This queue makes the
|
|
7
7
|
* "daemon is the sole writer per tenant" invariant load-bearing in code.
|
|
8
|
+
*
|
|
9
|
+
* Each job is now BOUNDED by a timeout (KYB-181): a job that never settles
|
|
10
|
+
* (hung LLM/embed/DB await) is evicted — its promise rejects, the tail
|
|
11
|
+
* advances, depth decrements — so the queue keeps draining instead of
|
|
12
|
+
* freezing the tenant forever.
|
|
13
|
+
*
|
|
14
|
+
* The job receives an AbortSignal that fires on eviction. Honoring it
|
|
15
|
+
* (polling `signal.aborted` between steps) NARROWS the window in which a
|
|
16
|
+
* detached, evicted job could still write — it does NOT cancel an in-flight
|
|
17
|
+
* await, so a genuinely hung SDK call runs on until it settles on its own,
|
|
18
|
+
* and a write can still land inside the await that was in flight when the
|
|
19
|
+
* timer fired. better-sqlite3 writes are synchronous, so the residual is at
|
|
20
|
+
* worst a logical out-of-order/duplicate write, never corruption. Threading
|
|
21
|
+
* the signal into the SDK calls for true cancellation is deferred (see the
|
|
22
|
+
* KYB-181 spec "one caveat that matters").
|
|
8
23
|
*/
|
|
9
24
|
const queues = new Map();
|
|
10
|
-
|
|
25
|
+
// Generous: a big file does many sequential embeds pre-KYB-182. After KYB-182
|
|
26
|
+
// (batched embeds) jobs are fast and this is huge headroom.
|
|
27
|
+
const DEFAULT_JOB_TIMEOUT_MS = 90_000;
|
|
28
|
+
// Node's setTimeout silently wraps any delay > 2^31-1 (~24.85 days) to 1ms —
|
|
29
|
+
// so an operator setting a "very large to effectively disable" value would
|
|
30
|
+
// instead evict every job on the first tick. Clamp to the ceiling.
|
|
31
|
+
const MAX_JOB_TIMEOUT_MS = 2_147_483_647;
|
|
32
|
+
/**
|
|
33
|
+
* Normalize a caller/env-supplied timeout: reject non-finite, ≤0 and sub-1ms
|
|
34
|
+
* (which floor to 0 and then clamp to 1ms — a near-instant eviction footgun),
|
|
35
|
+
* and cap oversized values at Node's setTimeout ceiling. Both the env default
|
|
36
|
+
* and the per-call `opts.timeoutMs` override route through this so the two
|
|
37
|
+
* entry points agree on what a bad value does.
|
|
38
|
+
*/
|
|
39
|
+
function normalizeTimeout(raw, fallback) {
|
|
40
|
+
if (raw === undefined || !Number.isFinite(raw))
|
|
41
|
+
return fallback;
|
|
42
|
+
const floored = Math.floor(raw);
|
|
43
|
+
if (floored < 1)
|
|
44
|
+
return fallback;
|
|
45
|
+
return Math.min(floored, MAX_JOB_TIMEOUT_MS);
|
|
46
|
+
}
|
|
47
|
+
const JOB_TIMEOUT_MS = normalizeTimeout(Number(process.env.BRAIN_QUEUE_JOB_TIMEOUT_MS), DEFAULT_JOB_TIMEOUT_MS);
|
|
48
|
+
export function enqueueWrite(slug, job, opts = {}) {
|
|
11
49
|
const state = queues.get(slug) ?? { tail: Promise.resolve(), depth: 0 };
|
|
12
50
|
state.depth += 1;
|
|
51
|
+
const timeoutMs = normalizeTimeout(opts.timeoutMs, JOB_TIMEOUT_MS);
|
|
52
|
+
const label = opts.label ?? 'write';
|
|
13
53
|
const run = state.tail.then(() => {
|
|
14
|
-
|
|
15
|
-
|
|
54
|
+
const ac = new AbortController();
|
|
55
|
+
let timer;
|
|
56
|
+
const timeout = new Promise((_, reject) => {
|
|
57
|
+
timer = setTimeout(() => {
|
|
58
|
+
ac.abort(); // ask the job to stop before its next DB write
|
|
59
|
+
// Carry slug+label on the Error itself, not just the log line below,
|
|
60
|
+
// so a caller that catches/re-logs it can still name the stuck job.
|
|
61
|
+
reject(new Error(`job evicted after ${timeoutMs}ms [${slug}/${label}]`));
|
|
62
|
+
}, timeoutMs);
|
|
63
|
+
timer.unref?.();
|
|
64
|
+
});
|
|
65
|
+
return Promise.race([job(ac.signal), timeout])
|
|
66
|
+
.catch((err) => {
|
|
67
|
+
// KYB-183 seed: structured, says WHICH job hung — the diagnostic we
|
|
68
|
+
// lacked on 2026-06-30.
|
|
69
|
+
console.warn('[brain-core/queue] write failed/evicted', {
|
|
70
|
+
slug,
|
|
71
|
+
label,
|
|
72
|
+
timeoutMs,
|
|
73
|
+
err: String(err),
|
|
74
|
+
});
|
|
16
75
|
throw err;
|
|
17
|
-
})
|
|
76
|
+
})
|
|
77
|
+
.finally(() => {
|
|
78
|
+
if (timer)
|
|
79
|
+
clearTimeout(timer);
|
|
18
80
|
state.depth -= 1;
|
|
19
81
|
});
|
|
20
82
|
});
|
|
83
|
+
// tail advances even on evict → the queue can never wedge behind a hung job.
|
|
21
84
|
state.tail = run.catch(() => undefined);
|
|
22
85
|
queues.set(slug, state);
|
|
23
86
|
return run;
|
package/dist/queue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,10 +13,25 @@ export declare function filterNoiseEntities(entities: Array<{
|
|
|
13
13
|
type: string;
|
|
14
14
|
}>;
|
|
15
15
|
export type { ConversationInput };
|
|
16
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Returns true if a storeConversation call is winning the tenant's write
|
|
18
|
+
* queue race.
|
|
19
|
+
*
|
|
20
|
+
* CAVEAT (KYB-181): depth is decremented when a job settles OR is evicted for
|
|
21
|
+
* timing out. An evicted job is detached and may still be mid-run — it polls
|
|
22
|
+
* `signal.aborted` between steps but cannot cancel an in-flight await — so
|
|
23
|
+
* `isStoreActive` returning false means "no job is winning the race," NOT a
|
|
24
|
+
* hard guarantee that no writer is in flight. A consumer gating a
|
|
25
|
+
* read-after-write, snapshot, sleep cycle or shutdown/flush on this should
|
|
26
|
+
* treat it as best-effort, not a barrier, for the (rare) post-eviction window.
|
|
27
|
+
*/
|
|
17
28
|
export declare function isStoreActive(t: TenantContext): boolean;
|
|
18
29
|
export declare function storeConversation(t: TenantContext, input: ConversationInput, options?: {
|
|
19
30
|
entityStoplist?: string[];
|
|
20
31
|
skipEmbeddings?: boolean;
|
|
21
32
|
}): Promise<void>;
|
|
33
|
+
export declare function storeConversationImpl(t: TenantContext, input: ConversationInput, options: {
|
|
34
|
+
entityStoplist?: string[];
|
|
35
|
+
skipEmbeddings?: boolean;
|
|
36
|
+
}, signal?: AbortSignal): Promise<void>;
|
|
22
37
|
//# sourceMappingURL=store-conversation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-conversation.d.ts","sourceRoot":"","sources":["../src/store-conversation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAoCpF,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/C,aAAa,GAAE,MAAM,EAAO,GAC3B,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAUvC;AAoCD,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAWlC
|
|
1
|
+
{"version":3,"file":"store-conversation.d.ts","sourceRoot":"","sources":["../src/store-conversation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAoCpF,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/C,aAAa,GAAE,MAAM,EAAO,GAC3B,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAUvC;AAoCD,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAWlC;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAEvD;AAID,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,aAAa,EAChB,KAAK,EAAE,iBAAiB,EACxB,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GACpE,OAAO,CAAC,IAAI,CAAC,CAUf;AAID,wBAAsB,qBAAqB,CACzC,CAAC,EAAE,aAAa,EAChB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,EAOhE,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA2Kf"}
|
|
@@ -10,7 +10,7 @@ import { enqueueWrite, queueDepth } from './queue.js';
|
|
|
10
10
|
import { addConversationToTimeline, findRecentDuplicate, incrementTimelineEventCount } from './timeline.js';
|
|
11
11
|
import { findOrCreateEntity, addEntityMention, linkEntitiesWithType } from './entity-graph.js';
|
|
12
12
|
import { extractRelationships } from './relationship-extractor.js';
|
|
13
|
-
import { indexChunk } from './vectors.js';
|
|
13
|
+
import { indexChunk, indexChunks } from './vectors.js';
|
|
14
14
|
import { extractFactsRealtime } from './fact-extractor.js';
|
|
15
15
|
// ─── Noise entity filtering ────────────────────────────────────────────────────
|
|
16
16
|
const NOISE_ENTITY_PATTERNS = [
|
|
@@ -88,15 +88,39 @@ function channelToSourceType(channel) {
|
|
|
88
88
|
default: return 'chat';
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
-
/**
|
|
91
|
+
/**
|
|
92
|
+
* Returns true if a storeConversation call is winning the tenant's write
|
|
93
|
+
* queue race.
|
|
94
|
+
*
|
|
95
|
+
* CAVEAT (KYB-181): depth is decremented when a job settles OR is evicted for
|
|
96
|
+
* timing out. An evicted job is detached and may still be mid-run — it polls
|
|
97
|
+
* `signal.aborted` between steps but cannot cancel an in-flight await — so
|
|
98
|
+
* `isStoreActive` returning false means "no job is winning the race," NOT a
|
|
99
|
+
* hard guarantee that no writer is in flight. A consumer gating a
|
|
100
|
+
* read-after-write, snapshot, sleep cycle or shutdown/flush on this should
|
|
101
|
+
* treat it as best-effort, not a barrier, for the (rare) post-eviction window.
|
|
102
|
+
*/
|
|
92
103
|
export function isStoreActive(t) {
|
|
93
104
|
return queueDepth(t.slug) > 0;
|
|
94
105
|
}
|
|
95
106
|
// ─── Main ─────────────────────────────────────────────────────────────────────
|
|
96
107
|
export function storeConversation(t, input, options = {}) {
|
|
97
|
-
|
|
108
|
+
// Label the queued job with the source file (when present) so an eviction
|
|
109
|
+
// log names WHICH ingest hung (KYB-181 diagnostic).
|
|
110
|
+
const fp = input.metadata?.['file_path'];
|
|
111
|
+
const label = typeof fp === 'string' ? `${input.channel}:${fp}` : input.channel;
|
|
112
|
+
return enqueueWrite(t.slug, (signal) => storeConversationImpl(t, input, options, signal), { label });
|
|
98
113
|
}
|
|
99
|
-
|
|
114
|
+
// Exported for the abort-guard test only (proves a pre-aborted job performs
|
|
115
|
+
// no DB writes); NOT re-exported from index.ts, so it is not public surface.
|
|
116
|
+
export async function storeConversationImpl(t, input, options,
|
|
117
|
+
// Fires if the write queue evicts this job for running too long (KYB-181).
|
|
118
|
+
// Polled before each DB-write step so a detached, post-eviction job SKIPS
|
|
119
|
+
// its remaining writes at each step boundary. This narrows — does not close
|
|
120
|
+
// — the window: an abort that fires mid-await still lets that step's write
|
|
121
|
+
// land (the signal isn't threaded into the awaited SDK/DB calls). Residual
|
|
122
|
+
// is a logical out-of-order write, never corruption (sync sqlite writes).
|
|
123
|
+
signal) {
|
|
100
124
|
const conversationId = randomUUID();
|
|
101
125
|
const timestamp = input.timestamp || new Date().toISOString();
|
|
102
126
|
const sourcePath = `channel://${input.channel}/${conversationId}`;
|
|
@@ -146,6 +170,11 @@ async function storeConversationImpl(t, input, options) {
|
|
|
146
170
|
const sessionDate = dateMatch ? dateMatch[1].trim() : '';
|
|
147
171
|
const fullTitle = sessionDate ? `[${input.channel}] ${sessionDate} — ${title}` : `[${input.channel}] ${title}`;
|
|
148
172
|
const recentHours = input.channel === 'heartbeat' ? 24 : 0.033;
|
|
173
|
+
// Eviction guard: Step 1's extraction is the most likely hang. If the queue
|
|
174
|
+
// already evicted us, stop before any DB write so we don't interleave with
|
|
175
|
+
// the job that was let through.
|
|
176
|
+
if (signal?.aborted)
|
|
177
|
+
return;
|
|
149
178
|
try {
|
|
150
179
|
// file_path rows skip the title-window duplicate check: the dual-key
|
|
151
180
|
// upsert IS their dedup, and the increment-only path would silently drop
|
|
@@ -163,21 +192,23 @@ async function storeConversationImpl(t, input, options) {
|
|
|
163
192
|
catch (err) {
|
|
164
193
|
console.warn('[brain-core/store-conversation] timeline failed', { err: String(err) });
|
|
165
194
|
}
|
|
166
|
-
// Step 2b: Segment-level vector indexing (best-effort)
|
|
167
|
-
|
|
195
|
+
// Step 2b: Segment-level vector indexing (best-effort, batched — KYB-182)
|
|
196
|
+
// One embedBatch round-trip for all segments instead of N sequential embeds
|
|
197
|
+
// (an 18KB file was ~72 sequential calls). The eviction guard is checked
|
|
198
|
+
// once before the batch; the batch is a single operation, so there is no
|
|
199
|
+
// mid-loop window to re-check.
|
|
200
|
+
if (!options.skipEmbeddings && !signal?.aborted) {
|
|
168
201
|
try {
|
|
169
202
|
const segs = segmentText(fullText, 250, 50);
|
|
170
203
|
if (segs.length > 1) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
catch { /* best-effort */ }
|
|
180
|
-
}
|
|
204
|
+
await indexChunks(t, segs.map((seg) => ({
|
|
205
|
+
content: seg.text,
|
|
206
|
+
meta: {
|
|
207
|
+
ts: timestamp,
|
|
208
|
+
source: `${sourcePath}/seg_${seg.index}`,
|
|
209
|
+
origin_id: `${conversationId}_seg_${seg.index}`,
|
|
210
|
+
},
|
|
211
|
+
})));
|
|
181
212
|
}
|
|
182
213
|
}
|
|
183
214
|
catch (err) {
|
|
@@ -185,9 +216,15 @@ async function storeConversationImpl(t, input, options) {
|
|
|
185
216
|
}
|
|
186
217
|
}
|
|
187
218
|
// Step 3: Entity graph
|
|
219
|
+
if (signal?.aborted)
|
|
220
|
+
return;
|
|
188
221
|
try {
|
|
189
222
|
const entityMap = new Map();
|
|
190
223
|
for (const entity of entities) {
|
|
224
|
+
// Per-iteration guard: a large entity set can span many awaited writes;
|
|
225
|
+
// bail mid-loop if evicted (matches the Step-2b embed loop).
|
|
226
|
+
if (signal?.aborted)
|
|
227
|
+
break;
|
|
191
228
|
try {
|
|
192
229
|
const dbEntity = await findOrCreateEntity(t, entity.name, entity.type, timestamp);
|
|
193
230
|
entityMap.set(entity.name, dbEntity.id);
|
|
@@ -198,6 +235,8 @@ async function storeConversationImpl(t, input, options) {
|
|
|
198
235
|
}
|
|
199
236
|
}
|
|
200
237
|
for (const rel of relationships) {
|
|
238
|
+
if (signal?.aborted)
|
|
239
|
+
break;
|
|
201
240
|
try {
|
|
202
241
|
const srcId = entityMap.get(rel.source.name);
|
|
203
242
|
const tgtId = entityMap.get(rel.target.name);
|
|
@@ -218,6 +257,8 @@ async function storeConversationImpl(t, input, options) {
|
|
|
218
257
|
console.warn('[brain-core/store-conversation] entity graph failed', { err: String(err) });
|
|
219
258
|
}
|
|
220
259
|
// Step 3b: Real-time fact extraction (best-effort)
|
|
260
|
+
if (signal?.aborted)
|
|
261
|
+
return;
|
|
221
262
|
try {
|
|
222
263
|
await extractFactsRealtime(t, conversationId, fullText, {
|
|
223
264
|
entities: entityNames,
|
|
@@ -229,7 +270,7 @@ async function storeConversationImpl(t, input, options) {
|
|
|
229
270
|
}
|
|
230
271
|
catch { /* fact extraction is best-effort */ }
|
|
231
272
|
// Step 4: Parent-level embedding (only if no segments)
|
|
232
|
-
if (!options.skipEmbeddings && fullText.length <= 250) {
|
|
273
|
+
if (!options.skipEmbeddings && fullText.length <= 250 && !signal?.aborted) {
|
|
233
274
|
try {
|
|
234
275
|
await indexChunk(t, fullText, { ts: timestamp, source: sourcePath, origin_id: conversationId });
|
|
235
276
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-conversation.js","sourceRoot":"","sources":["../src/store-conversation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,kFAAkF;AAElF,MAAM,qBAAqB,GAAa;IACtC,8EAA8E;IAC9E,wEAAwE;IACxE,4EAA4E;IAC5E,iEAAiE;IACjE,kDAAkD;IAClD,iEAAiE;IACjE,YAAY;IACZ,OAAO;IACP,UAAU;IACV,mDAAmD;IACnD,kBAAkB;IAClB,kDAAkD;IAClD,kBAAkB;CACnB,CAAC;AAEF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM;IAClD,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;IACvD,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO;IACzD,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW;IAC/D,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY;IAC9C,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS;CACxC,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB,CACjC,QAA+C,EAC/C,gBAA0B,EAAE;IAE5B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACjE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACrC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACzC,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iFAAiF;AAEjF,SAAS,WAAW,CAAC,IAAY,EAAE,WAAW,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE;IAChE,IAAI,IAAI,CAAC,MAAM,IAAI,WAAW;QAAE,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5D,MAAM,IAAI,GAA2C,EAAE,CAAC;IACxD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,GAAG,GAAG,KAAK,GAAG,WAAW,CAAC;QAC9B,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;YAC1C,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YACzC,IAAI,EAAE,GAAG,WAAW,GAAG,GAAG;gBAAE,GAAG,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;iBAC5C,IAAI,EAAE,GAAG,WAAW,GAAG,GAAG;gBAAE,GAAG,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1D,KAAK,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC;QAC3B,KAAK,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACnC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,GAAG,GAAG;YAAE,MAAM;IACjD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAWD,SAAS,mBAAmB,CAAC,OAAe;IAC1C,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,UAAU,CAAC,CAAC,OAAO,aAAa,CAAC;QACtC,KAAK,WAAW,CAAC,CAAC,OAAO,WAAW,CAAC;QACrC,KAAK,gBAAgB,CAAC,CAAC,OAAO,gBAAgB,CAAC;QAC/C,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC;IACzB,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,CAAgB;IAC5C,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,iBAAiB,CAC/B,CAAgB,EAChB,KAAwB,EACxB,UAAmE,EAAE;IAErE,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,CAAgB,EAChB,KAAwB,EACxB,OAAgE;IAEhE,MAAM,cAAc,GAAG,UAAU,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9D,MAAM,UAAU,GAAG,aAAa,KAAK,CAAC,OAAO,IAAI,cAAc,EAAE,CAAC;IAClE,MAAM,QAAQ,GAAG,SAAS,KAAK,CAAC,MAAM,kBAAkB,KAAK,CAAC,QAAQ,EAAE,CAAC;IACzE,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,UAA4C,CAAC,IAAI,IAAI,CAAC;IAEjG,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAA4B,CAAC;IAC/D,wEAAwE;IACxE,2EAA2E;IAC3E,oEAAoE;IACpE,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,KAAK,MAAM;QAC3C,CAAC,CAAC;YACE,SAAS,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAW,CAAC,CAAC,CAAC,SAAS;YAC1F,YAAY,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAW,CAAC,CAAC,CAAC,SAAS;SACpG;QACH,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,WAAW,GAAG;QAClB,UAAU,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAW,CAAC,CAAC,CAAC,SAAS;QAC7F,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,MAAM,CAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QAC7H,cAAc,EAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,QAAQ;YACxD,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAmD;YAC1E,CAAC,CAAC,SAAS;QACb,aAAa,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAW,CAAC,CAAC,CAAC,SAAS;QACtG,UAAU,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAW,CAAC,CAAC,CAAC,SAAS;KAC9F,CAAC;IAEF,2CAA2C;IAC3C,IAAI,QAAQ,GAA0C,EAAE,CAAC;IACzD,IAAI,aAAa,GAMZ,EAAE,CAAC;IAER,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC3D,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC/B,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,0DAA0D,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,wBAAwB;IACxB,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACvE,aAAa,GAAG,aAAa,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CACtG,CAAC;IACF,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE7E,mBAAmB;IACnB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3F,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,WAAW,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;IAC/G,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAE/D,IAAI,CAAC;QACH,qEAAqE;QACrE,yEAAyE;QACzE,yEAAyE;QACzE,MAAM,QAAQ,GAAG,UAAU,EAAE,SAAS;YACpC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,MAAM,mBAAmB,CAAC,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACzD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,2BAA2B,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,MAAM,yBAAyB,CAC7B,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EACnD,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EACnD,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,CACzC,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,uDAAuD;IACvD,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,IAAI,CAAC;wBACH,MAAM,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE;4BAC5B,EAAE,EAAE,SAAS;4BACb,MAAM,EAAE,GAAG,UAAU,QAAQ,GAAG,CAAC,KAAK,EAAE;4BACxC,SAAS,EAAE,GAAG,cAAc,QAAQ,GAAG,CAAC,KAAK,EAAE;yBAChD,CAAC,CAAC;oBACL,CAAC;oBAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,yDAAyD,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC5C,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAa,EAAE,SAAS,CAAC,CAAC;gBAC3F,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACxC,MAAM,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,cAAc,EAAE,UAAU,EAC/D,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,0CAA0C,MAAM,CAAC,IAAI,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrG,CAAC;QACH,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC7C,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;oBACtC,MAAM,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;wBAC1C,YAAY,EAAE,GAAG,CAAC,YAAqB;wBACvC,UAAU,EAAE,GAAG,CAAC,UAAU;wBAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;qBACzB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,oDAAoD,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,qDAAqD,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,mDAAmD;IACnD,IAAI,CAAC;QACH,MAAM,oBAAoB,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE;YACtD,QAAQ,EAAE,WAAW;YACrB,UAAU;YACV,SAAS;YACT,UAAU;YACV,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC,CAAC,oCAAoC,CAAC,CAAC;IAEhD,uDAAuD;IACvD,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;QAClG,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,kDAAkD,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"store-conversation.js","sourceRoot":"","sources":["../src/store-conversation.ts"],"names":[],"mappings":"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"}
|
package/dist/vectors.d.ts
CHANGED
|
@@ -19,6 +19,13 @@ export interface EmbeddingProvider {
|
|
|
19
19
|
* resolves its per-agent key/client from `t` (see 0.8.0 kickoff §4.5).
|
|
20
20
|
*/
|
|
21
21
|
embed(t: TenantContext, text: string): Promise<number[] | null>;
|
|
22
|
+
/**
|
|
23
|
+
* Optional (KYB-182): embed many texts in ONE (or few) provider round-trips
|
|
24
|
+
* and return vectors positionally aligned with `texts` (null per failed
|
|
25
|
+
* item). When absent, indexChunks falls back to sequential `embed` — so this
|
|
26
|
+
* is a pure throughput capability, never a correctness dependency.
|
|
27
|
+
*/
|
|
28
|
+
embedBatch?(t: TenantContext, texts: string[]): Promise<Array<number[] | null>>;
|
|
22
29
|
}
|
|
23
30
|
export declare function setEmbeddingProvider(p: EmbeddingProvider): void;
|
|
24
31
|
export declare function resetEmbeddingProvider(): void;
|
|
@@ -33,6 +40,19 @@ export interface IndexChunkResult {
|
|
|
33
40
|
reason?: string;
|
|
34
41
|
}
|
|
35
42
|
export declare function indexChunk(t: TenantContext, content: string, meta: IndexChunkMeta): Promise<IndexChunkResult>;
|
|
43
|
+
export interface IndexChunkInput {
|
|
44
|
+
content: string;
|
|
45
|
+
meta: IndexChunkMeta;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Batch sibling of indexChunk (KYB-182): embed many chunks in ONE provider
|
|
49
|
+
* round-trip (via `embedBatch`, falling back to sequential `embed` if the
|
|
50
|
+
* provider lacks it) and bulk-write the vectors. Semantically identical to
|
|
51
|
+
* calling indexChunk in a loop — same dedup (`origin_id`), same capping, same
|
|
52
|
+
* per-chunk result — just without N sequential embed round-trips. Results are
|
|
53
|
+
* positionally aligned with `chunks`.
|
|
54
|
+
*/
|
|
55
|
+
export declare function indexChunks(t: TenantContext, chunks: IndexChunkInput[]): Promise<IndexChunkResult[]>;
|
|
36
56
|
export interface SearchResult {
|
|
37
57
|
id: string;
|
|
38
58
|
content: string;
|
package/dist/vectors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vectors.d.ts","sourceRoot":"","sources":["../src/vectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,aAAa,EAA2C,MAAM,6BAA6B,CAAC;AAGrG,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,KAAK,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"vectors.d.ts","sourceRoot":"","sources":["../src/vectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,aAAa,EAA2C,MAAM,6BAA6B,CAAC;AAGrG,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,KAAK,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IAChE;;;;;OAKG;IACH,UAAU,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;CACjF;AAID,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAmB;AACnF,wBAAgB,sBAAsB,IAAI,IAAI,CAAsB;AACpE,wBAAgB,kBAAkB,IAAI,OAAO,CAA+B;AAI5E,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,UAAU,CAC9B,CAAC,EAAE,aAAa,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAyB3B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,CAAC,EAAE,aAAa,EAChB,MAAM,EAAE,eAAe,EAAE,GACxB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAyC7B;AAWD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,wBAAsB,cAAc,CAClC,CAAC,EAAE,aAAa,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3C,OAAO,CAAC,YAAY,EAAE,CAAC,CA+BzB;AAED,wBAAsB,WAAW,CAC/B,CAAC,EAAE,aAAa,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAMhD"}
|
package/dist/vectors.js
CHANGED
|
@@ -43,6 +43,65 @@ export async function indexChunk(t, content, meta) {
|
|
|
43
43
|
});
|
|
44
44
|
return { indexed: true };
|
|
45
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Batch sibling of indexChunk (KYB-182): embed many chunks in ONE provider
|
|
48
|
+
* round-trip (via `embedBatch`, falling back to sequential `embed` if the
|
|
49
|
+
* provider lacks it) and bulk-write the vectors. Semantically identical to
|
|
50
|
+
* calling indexChunk in a loop — same dedup (`origin_id`), same capping, same
|
|
51
|
+
* per-chunk result — just without N sequential embed round-trips. Results are
|
|
52
|
+
* positionally aligned with `chunks`.
|
|
53
|
+
*/
|
|
54
|
+
export async function indexChunks(t, chunks) {
|
|
55
|
+
if (chunks.length === 0)
|
|
56
|
+
return [];
|
|
57
|
+
if (!_embedder)
|
|
58
|
+
return chunks.map(() => ({ indexed: false, reason: 'no embedding provider' }));
|
|
59
|
+
const vectors = getStorage().repositories.vectors;
|
|
60
|
+
if (!(await vectors.available(t))) {
|
|
61
|
+
return chunks.map(() => ({ indexed: false, reason: 'vector db unavailable' }));
|
|
62
|
+
}
|
|
63
|
+
const results = new Array(chunks.length);
|
|
64
|
+
// Resolve dedup up front so only genuinely-new chunks reach the embedder.
|
|
65
|
+
const pending = [];
|
|
66
|
+
for (let i = 0; i < chunks.length; i++) {
|
|
67
|
+
const { content, meta } = chunks[i];
|
|
68
|
+
if (meta.origin_id && (await vectors.hasOrigin(t, meta.origin_id))) {
|
|
69
|
+
results[i] = { indexed: false, reason: 'already indexed' };
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
pending.push({ i, content: content.slice(0, CONTENT_CHAR_CAP), meta });
|
|
73
|
+
}
|
|
74
|
+
if (pending.length === 0)
|
|
75
|
+
return results;
|
|
76
|
+
const embeddings = await embedMany(t, pending.map((p) => p.content));
|
|
77
|
+
for (let k = 0; k < pending.length; k++) {
|
|
78
|
+
const p = pending[k];
|
|
79
|
+
const embedding = embeddings[k];
|
|
80
|
+
if (!embedding || embedding.length !== EMBEDDING_DIM) {
|
|
81
|
+
results[p.i] = { indexed: false, reason: 'embedding failed' };
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
await vectors.insertChunk(t, {
|
|
85
|
+
embedding,
|
|
86
|
+
ts: p.meta.ts,
|
|
87
|
+
source: p.meta.source,
|
|
88
|
+
content: p.content,
|
|
89
|
+
origin_id: p.meta.origin_id,
|
|
90
|
+
});
|
|
91
|
+
results[p.i] = { indexed: true };
|
|
92
|
+
}
|
|
93
|
+
return results;
|
|
94
|
+
}
|
|
95
|
+
/** One batched embed call when the provider supports it; sequential fallback otherwise. */
|
|
96
|
+
async function embedMany(t, texts) {
|
|
97
|
+
const embedder = _embedder;
|
|
98
|
+
if (embedder.embedBatch)
|
|
99
|
+
return embedder.embedBatch(t, texts);
|
|
100
|
+
const out = [];
|
|
101
|
+
for (const text of texts)
|
|
102
|
+
out.push(await embedder.embed(t, text));
|
|
103
|
+
return out;
|
|
104
|
+
}
|
|
46
105
|
export async function semanticSearch(t, query, opts = {}) {
|
|
47
106
|
const limit = opts.limit ?? 10;
|
|
48
107
|
if (!_embedder)
|
package/dist/vectors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vectors.js","sourceRoot":"","sources":["../src/vectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,aAAa,EAAE,mBAAmB,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACrG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"vectors.js","sourceRoot":"","sources":["../src/vectors.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kybernesis/brain-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "Kernel brain methods — timeline, entity-graph, facts, vectors, retrieval, sleep",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "David Cruwys (AppyDave)",
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
"README.md"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@kybernesis/brain-contracts": "0.
|
|
31
|
-
"@kybernesis/brain-storage-sqlite": "0.
|
|
30
|
+
"@kybernesis/brain-contracts": "0.15.0",
|
|
31
|
+
"@kybernesis/brain-storage-sqlite": "0.15.0"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
|
-
"@kybernesis/brain-storage-vec": "0.
|
|
34
|
+
"@kybernesis/brain-storage-vec": "0.15.0"
|
|
35
35
|
},
|
|
36
36
|
"peerDependenciesMeta": {
|
|
37
37
|
"@kybernesis/brain-storage-vec": {
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@types/better-sqlite3": "^7.6.13",
|
|
43
43
|
"better-sqlite3": "^12.10.0",
|
|
44
|
-
"@kybernesis/brain-
|
|
45
|
-
"@kybernesis/brain-
|
|
44
|
+
"@kybernesis/brain-storage-vec": "0.15.0",
|
|
45
|
+
"@kybernesis/brain-testkit": "0.15.0"
|
|
46
46
|
},
|
|
47
47
|
"publishConfig": {
|
|
48
48
|
"access": "public"
|