@kybernesis/brain-core 0.13.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 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).
@@ -1 +1 @@
1
- {"version":3,"file":"brain-provider.d.ts","sourceRoot":"","sources":["../src/brain-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EAgBd,MAAM,6BAA6B,CAAC;AAkBrC;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,aAAa,GAAG,aAAa,CAkIxE"}
1
+ {"version":3,"file":"brain-provider.d.ts","sourceRoot":"","sources":["../src/brain-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EAmBd,MAAM,6BAA6B,CAAC;AAoBrC;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,aAAa,GAAG,aAAa,CA+KxE"}
@@ -18,7 +18,7 @@ import { EntityTypeSchema } from '@kybernesis/brain-contracts';
18
18
  import { storeConversation } from './store-conversation.js';
19
19
  import { hybridSearch } from './hybrid-search.js';
20
20
  import { queryTimeline, getTimelineStats } from './timeline.js';
21
- import { getEntityContext, findOrCreateEntity, getEntityGraphStats, pinEntity as pinEntityById, listPinned, } from './entity-graph.js';
21
+ import { getEntityContext, findOrCreateEntity, getEntityGraphStats, getMostMentionedEntities, getTypedRelationships, pinEntity as pinEntityById, listPinned, } from './entity-graph.js';
22
22
  import { vectorStats } from './vectors.js';
23
23
  import { factsCount } from './fact-store.js';
24
24
  import { runSleepCycleNow } from './sleep/index.js';
@@ -121,6 +121,48 @@ export function createLocalBrainProvider(t) {
121
121
  last_seen: e.last_seen,
122
122
  }));
123
123
  },
124
+ async graph(opts) {
125
+ const limit = opts?.limit ?? 50;
126
+ // Nodes: the most-mentioned (most-connected) entities — the graph anchors.
127
+ // Matches KAD's GET /brain/graph `ORDER BY mention_count DESC` ordering.
128
+ const nodes = await getMostMentionedEntities(t, { limit });
129
+ const nodeIds = new Set(nodes.map((n) => n.id));
130
+ // Edges: fan out getTypedRelationships per node, reconstruct a directed
131
+ // (source_id → target_id) edge from the relationship's `direction`, and
132
+ // keep only CLOSED edges (both endpoints are nodes) so the graph is always
133
+ // drawable. Querying both endpoints yields the same edge twice (outgoing
134
+ // from source, incoming to target) — dedupe on (source, target, rel).
135
+ const perNode = await Promise.all(nodes.map((n) => getTypedRelationships(t, n.id)));
136
+ const seen = new Set();
137
+ const edges = [];
138
+ nodes.forEach((node, i) => {
139
+ for (const rel of perNode[i]) {
140
+ const neighbourId = rel.entity.id;
141
+ if (!nodeIds.has(neighbourId))
142
+ continue; // keep the graph closed
143
+ const source_id = rel.direction === 'outgoing' ? node.id : neighbourId;
144
+ const target_id = rel.direction === 'outgoing' ? neighbourId : node.id;
145
+ const key = `${source_id}:${target_id}:${rel.relationship}`;
146
+ if (seen.has(key))
147
+ continue;
148
+ seen.add(key);
149
+ edges.push({
150
+ source_id,
151
+ target_id,
152
+ relationship: rel.relationship,
153
+ confidence: rel.confidence,
154
+ ...(rel.rationale !== undefined ? { rationale: rel.rationale } : {}),
155
+ });
156
+ }
157
+ });
158
+ return { nodes, edges };
159
+ },
160
+ async listEntities(opts) {
161
+ return getMostMentionedEntities(t, {
162
+ limit: opts?.limit ?? 50,
163
+ ...(opts?.type !== undefined ? { type: opts.type } : {}),
164
+ });
165
+ },
124
166
  async stats() {
125
167
  const [tl, eg, vec, facts] = await Promise.all([
126
168
  getTimelineStats(t),
@@ -1 +1 @@
1
- {"version":3,"file":"brain-provider.js","sourceRoot":"","sources":["../src/brain-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brain-provider.js","sourceRoot":"","sources":["../src/brain-provider.ts"],"names":[],"mappings":"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"}
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';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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":"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"}
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
- export declare function enqueueWrite<T>(slug: string, job: Job<T>): Promise<T>;
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
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,KAAK,GAAG,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;AAS/B,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAcrE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C"}
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
- export function enqueueWrite(slug, job) {
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
- return job().catch((err) => {
15
- console.warn('[brain-core/queue] write failed', { slug, err: String(err) });
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
- }).finally(() => {
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;;;;;;;GAOG;AASH,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE7C,MAAM,UAAU,YAAY,CAAI,IAAY,EAAE,GAAW;IACvD,MAAM,KAAK,GAAe,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACpF,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IACjB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QAC/B,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5E,MAAM,GAAG,CAAC;QACZ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACd,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxB,OAAO,GAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;AACtC,CAAC"}
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
- /** Returns true if a storeConversation call is in progress for this tenant. */
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,+EAA+E;AAC/E,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,CAEf"}
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
- /** Returns true if a storeConversation call is in progress for this tenant. */
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
- return enqueueWrite(t.slug, () => storeConversationImpl(t, input, options));
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
- async function storeConversationImpl(t, input, options) {
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
- if (!options.skipEmbeddings) {
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
- for (const seg of segs) {
172
- try {
173
- await indexChunk(t, seg.text, {
174
- ts: timestamp,
175
- source: `${sourcePath}/seg_${seg.index}`,
176
- origin_id: `${conversationId}_seg_${seg.index}`,
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":"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"}
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;
@@ -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;CACjE;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,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"}
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)
@@ -1 +1 @@
1
- {"version":3,"file":"vectors.js","sourceRoot":"","sources":["../src/vectors.ts"],"names":[],"mappings":"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"}
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.13.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.13.0",
31
- "@kybernesis/brain-storage-sqlite": "0.13.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.13.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-testkit": "0.13.0",
45
- "@kybernesis/brain-storage-vec": "0.13.0"
44
+ "@kybernesis/brain-storage-vec": "0.15.0",
45
+ "@kybernesis/brain-testkit": "0.15.0"
46
46
  },
47
47
  "publishConfig": {
48
48
  "access": "public"