@kybernesis/brain-core 0.15.0 → 0.16.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/dist/claude-call.d.ts +11 -0
- package/dist/claude-call.d.ts.map +1 -1
- package/dist/claude-call.js +41 -2
- package/dist/claude-call.js.map +1 -1
- package/dist/fact-extractor.js +1 -1
- package/dist/fact-extractor.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +4 -0
- package/dist/queue.js.map +1 -1
- package/dist/relationship-extractor.d.ts +1 -1
- package/dist/relationship-extractor.d.ts.map +1 -1
- package/dist/relationship-extractor.js +2 -4
- package/dist/relationship-extractor.js.map +1 -1
- package/dist/store-conversation.d.ts.map +1 -1
- package/dist/store-conversation.js +50 -28
- package/dist/store-conversation.js.map +1 -1
- package/dist/telemetry.d.ts +104 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +100 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/vectors.d.ts.map +1 -1
- package/dist/vectors.js +15 -1
- package/dist/vectors.js.map +1 -1
- package/package.json +6 -6
package/dist/claude-call.d.ts
CHANGED
|
@@ -13,6 +13,17 @@ export interface ClaudeCallOpts {
|
|
|
13
13
|
model?: string;
|
|
14
14
|
maxTokens?: number;
|
|
15
15
|
system?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Seam-level bound (KYB-187). Default `BRAIN_LLM_TIMEOUT_MS` or 30s. Passed
|
|
18
|
+
* DOWN to the provider (the subprocess provider kills the process) AND
|
|
19
|
+
* enforced here as a `withTimeout` backstop, so a hung/mis-wired provider
|
|
20
|
+
* can never stall an ingest — extraction just degrades to "no entities".
|
|
21
|
+
*/
|
|
22
|
+
timeoutMs?: number;
|
|
23
|
+
/** For per-tenant telemetry attribution. */
|
|
24
|
+
tenantSlug?: string;
|
|
25
|
+
/** For telemetry (e.g. 'extract-relationships'). */
|
|
26
|
+
label?: string;
|
|
16
27
|
[key: string]: unknown;
|
|
17
28
|
}
|
|
18
29
|
export interface LLMProvider {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-call.d.ts","sourceRoot":"","sources":["../src/claude-call.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"claude-call.d.ts","sourceRoot":"","sources":["../src/claude-call.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACrE;AAgCD,wBAAgB,cAAc,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,CAAmB;AACvE,wBAAgB,gBAAgB,IAAI,IAAI,CAAsB;AAE9D,gDAAgD;AAChD,wBAAgB,YAAY,IAAI,OAAO,CAA+B;AAEtE;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsBlG;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,GAAG,IAAI,EACpC,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAcnB"}
|
package/dist/claude-call.js
CHANGED
|
@@ -9,8 +9,34 @@
|
|
|
9
9
|
* setLLMProvider(createSubprocessProvider()); // at app startup
|
|
10
10
|
* resetLLMProvider(); // in afterEach
|
|
11
11
|
*/
|
|
12
|
+
import { emitTelemetry } from './telemetry.js';
|
|
12
13
|
// Module-level injectable provider (ADR-0009)
|
|
13
14
|
let _provider = null;
|
|
15
|
+
// Node coerces any setTimeout delay > 2^31-1 (or Infinity) to 1ms — so an
|
|
16
|
+
// oversized "disable the timeout" value would instead time out every call at
|
|
17
|
+
// ~1ms and silently stop all enrichment. Clamp, like queue.ts does (KYB-181).
|
|
18
|
+
const MAX_LLM_TIMEOUT_MS = 2_147_483_647;
|
|
19
|
+
function normalizeTimeout(raw, fallback) {
|
|
20
|
+
if (raw === undefined || !Number.isFinite(raw))
|
|
21
|
+
return fallback;
|
|
22
|
+
const floored = Math.floor(raw);
|
|
23
|
+
if (floored < 1)
|
|
24
|
+
return fallback;
|
|
25
|
+
return Math.min(floored, MAX_LLM_TIMEOUT_MS);
|
|
26
|
+
}
|
|
27
|
+
const DEFAULT_LLM_TIMEOUT_MS = normalizeTimeout(Number(process.env.BRAIN_LLM_TIMEOUT_MS), 30_000);
|
|
28
|
+
/** Sentinel so a seam timeout is classifiable as `stage: 'timeout'`. */
|
|
29
|
+
class LLMTimeoutError extends Error {
|
|
30
|
+
constructor(ms) { super(`llm call timed out after ${ms}ms`); this.name = 'LLMTimeoutError'; }
|
|
31
|
+
}
|
|
32
|
+
/** Reject `p` after `ms` if it hasn't settled (does not cancel the underlying work). */
|
|
33
|
+
function withTimeout(p, ms) {
|
|
34
|
+
return new Promise((resolve, reject) => {
|
|
35
|
+
const timer = setTimeout(() => reject(new LLMTimeoutError(ms)), ms);
|
|
36
|
+
timer.unref?.();
|
|
37
|
+
p.then((v) => { clearTimeout(timer); resolve(v); }, (e) => { clearTimeout(timer); reject(e); });
|
|
38
|
+
});
|
|
39
|
+
}
|
|
14
40
|
export function setLLMProvider(p) { _provider = p; }
|
|
15
41
|
export function resetLLMProvider() { _provider = null; }
|
|
16
42
|
/** Returns true when a provider is wired in. */
|
|
@@ -23,11 +49,24 @@ export function llmAvailable() { return _provider !== null; }
|
|
|
23
49
|
export async function callClaude(prompt, opts = {}) {
|
|
24
50
|
if (!_provider)
|
|
25
51
|
return null;
|
|
52
|
+
const timeoutMs = normalizeTimeout(opts.timeoutMs, DEFAULT_LLM_TIMEOUT_MS);
|
|
53
|
+
const slug = opts.tenantSlug;
|
|
54
|
+
const label = opts.label ?? 'llm';
|
|
55
|
+
const start = Date.now();
|
|
26
56
|
try {
|
|
27
|
-
|
|
57
|
+
// Pass the bound down so the provider can actually cancel (the subprocess
|
|
58
|
+
// provider kills the process on its own `timeoutMs`); withTimeout is the
|
|
59
|
+
// belt-and-braces backstop if the provider ignores it.
|
|
60
|
+
const res = await withTimeout(Promise.resolve(_provider.call(prompt, { ...opts, timeoutMs })), timeoutMs);
|
|
61
|
+
if (slug)
|
|
62
|
+
emitTelemetry({ kind: 'llm.success', slug, label, durationMs: Date.now() - start, ts: new Date().toISOString() });
|
|
63
|
+
return res;
|
|
28
64
|
}
|
|
29
65
|
catch (err) {
|
|
30
|
-
|
|
66
|
+
const stage = err instanceof LLMTimeoutError ? 'timeout' : 'error';
|
|
67
|
+
if (slug)
|
|
68
|
+
emitTelemetry({ kind: 'llm.failure', slug, label, stage, error: String(err), ts: new Date().toISOString() });
|
|
69
|
+
console.warn('[brain-core/claude-call] callClaude failed', { stage, timeoutMs, err: String(err) });
|
|
31
70
|
return null;
|
|
32
71
|
}
|
|
33
72
|
}
|
package/dist/claude-call.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-call.js","sourceRoot":"","sources":["../src/claude-call.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"claude-call.js","sourceRoot":"","sources":["../src/claude-call.ts"],"names":[],"mappings":"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"}
|
package/dist/fact-extractor.js
CHANGED
|
@@ -44,7 +44,7 @@ export async function extractFactsRealtime(t, conversationId, text, options = {}
|
|
|
44
44
|
const rawContent = text.slice(0, 2000);
|
|
45
45
|
const safeContent = rawContent.replace(/<\/conversation>/gi, '');
|
|
46
46
|
const wrapped = `<conversation>\n${safeContent}\n</conversation>`;
|
|
47
|
-
const response = await callClaude(REALTIME_FACT_PROMPT + wrapped, { maxTokens: 256 });
|
|
47
|
+
const response = await callClaude(REALTIME_FACT_PROMPT + wrapped, { maxTokens: 256, tenantSlug: t.slug, label: 'extract-facts' });
|
|
48
48
|
if (!response)
|
|
49
49
|
return 0;
|
|
50
50
|
const rawFactsRaw = extractJsonArray(response);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fact-extractor.js","sourceRoot":"","sources":["../src/fact-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAI3D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc;IACrD,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS;CACzC,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG;;;;;;;;;;;CAW5B,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,CAAgB,EAChB,cAAsB,EACtB,IAAY,EACZ,UAYI,EAAE;IAEN,MAAM,EACJ,QAAQ,GAAG,EAAE,EACb,UAAU,GAAG,cAAc,cAAc,EAAE,EAC3C,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EACpC,UAAU,GAAG,MAAM,EACnB,WAAW,GACZ,GAAG,OAAO,CAAC;IAEZ,4DAA4D;IAC5D,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAExD,MAAM,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAE1B,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,IAAI,CAAC;QACH,mEAAmE;QACnE,qEAAqE;QACrE,6CAA6C;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,mBAAmB,WAAW,mBAAmB,CAAC;QAElE,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,oBAAoB,GAAG,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"fact-extractor.js","sourceRoot":"","sources":["../src/fact-extractor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -33,6 +33,8 @@ export { hybridSearch } from './hybrid-search.js';
|
|
|
33
33
|
export type { HybridSearchResult, HybridSearchOptions } from './hybrid-search.js';
|
|
34
34
|
export { storeConversation, filterNoiseEntities, isStoreActive, } from './store-conversation.js';
|
|
35
35
|
export type { ConversationInput } from './store-conversation.js';
|
|
36
|
+
export { setTelemetryProvider, resetTelemetryProvider, getHealth, resetHealth, } from './telemetry.js';
|
|
37
|
+
export type { BrainTelemetryEvent, TelemetrySink, BrainHealth } from './telemetry.js';
|
|
36
38
|
export { formatRecall, formatTimelineRich, formatSearchRich, } from './ops.js';
|
|
37
39
|
export type { TimelineFormatOpts, SearchFormatOpts } from './ops.js';
|
|
38
40
|
export { diffFilePaths, reconcile } from './reconcile.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
@@ -18,6 +18,10 @@ export { factFirstSearch } from './fact-retrieval.js';
|
|
|
18
18
|
export { effectiveConfidence, halfLifeForCategory, FACT_HALF_LIVES_DAYS, DEFAULT_HALF_LIFE_DAYS, } from './fact-decay.js';
|
|
19
19
|
export { hybridSearch } from './hybrid-search.js';
|
|
20
20
|
export { storeConversation, filterNoiseEntities, isStoreActive, } from './store-conversation.js';
|
|
21
|
+
// ─── Health telemetry (KYB-183 local half, pulled forward by KYB-187) ─────────
|
|
22
|
+
// Cortex EMITS; the host ROUTES. setTelemetryProvider = push sink; getHealth =
|
|
23
|
+
// pull snapshot ("is this brain healthy / is its queue stalled?").
|
|
24
|
+
export { setTelemetryProvider, resetTelemetryProvider, getHealth, resetHealth, } from './telemetry.js';
|
|
21
25
|
export { formatRecall, formatTimelineRich, formatSearchRich, } from './ops.js';
|
|
22
26
|
// ─── Reconcile core (Spec C) ──────────────────────────────────────────────────
|
|
23
27
|
// The boundary: hosts walk disk + hash (contentHash); the brain answers its
|
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.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,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,CA2CZ;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C"}
|
package/dist/queue.js
CHANGED
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
* the signal into the SDK calls for true cancellation is deferred (see the
|
|
22
22
|
* KYB-181 spec "one caveat that matters").
|
|
23
23
|
*/
|
|
24
|
+
import { emitTelemetry } from './telemetry.js';
|
|
24
25
|
const queues = new Map();
|
|
25
26
|
// Generous: a big file does many sequential embeds pre-KYB-182. After KYB-182
|
|
26
27
|
// (batched embeds) jobs are fast and this is huge headroom.
|
|
@@ -56,6 +57,9 @@ export function enqueueWrite(slug, job, opts = {}) {
|
|
|
56
57
|
const timeout = new Promise((_, reject) => {
|
|
57
58
|
timer = setTimeout(() => {
|
|
58
59
|
ac.abort(); // ask the job to stop before its next DB write
|
|
60
|
+
// Structured eviction event → host telemetry (KYB-183): names WHICH
|
|
61
|
+
// job hung, so a stall is visible without reading logs.
|
|
62
|
+
emitTelemetry({ kind: 'queue.evicted', slug, label, timeoutMs, ts: new Date().toISOString() });
|
|
59
63
|
// Carry slug+label on the Error itself, not just the log line below,
|
|
60
64
|
// so a caller that catches/re-logs it can still name the stuck job.
|
|
61
65
|
reject(new Error(`job evicted after ${timeoutMs}ms [${slug}/${label}]`));
|
package/dist/queue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ export interface RelationshipExtractionResult {
|
|
|
30
30
|
* Uses Claude Haiku for fast, cost-effective extraction.
|
|
31
31
|
* `t` is accepted for signature parity with other brain-core modules.
|
|
32
32
|
*/
|
|
33
|
-
export declare function extractRelationships(
|
|
33
|
+
export declare function extractRelationships(t: TenantContext, text: string, options?: {
|
|
34
34
|
maxTokens?: number;
|
|
35
35
|
}): Promise<RelationshipExtractionResult>;
|
|
36
36
|
/** Format a relationship verb for display in recall output. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationship-extractor.d.ts","sourceRoot":"","sources":["../src/relationship-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/F,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;IAC3C,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;IAC3C,YAAY,EAAE,gBAAgB,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;IACpD,aAAa,EAAE,qBAAqB,EAAE,CAAC;CACxC;AAgED;;;;GAIG;AACH,wBAAsB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"relationship-extractor.d.ts","sourceRoot":"","sources":["../src/relationship-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/F,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;IAC3C,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;IAC3C,YAAY,EAAE,gBAAgB,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;IACpD,aAAa,EAAE,qBAAqB,EAAE,CAAC;CACxC;AAgED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,CAAC,EAAE,aAAa,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,OAAO,CAAC,4BAA4B,CAAC,CA+BvC;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,gBAAgB,EAC9B,SAAS,EAAE,UAAU,GAAG,UAAU,GACjC,MAAM,CAoBR"}
|
|
@@ -70,13 +70,11 @@ const VALID_RELATIONSHIP_TYPES = new Set([
|
|
|
70
70
|
* Uses Claude Haiku for fast, cost-effective extraction.
|
|
71
71
|
* `t` is accepted for signature parity with other brain-core modules.
|
|
72
72
|
*/
|
|
73
|
-
export async function extractRelationships(
|
|
74
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
75
|
-
_t, text, options = {}) {
|
|
73
|
+
export async function extractRelationships(t, text, options = {}) {
|
|
76
74
|
const maxTokens = options.maxTokens ?? 4096;
|
|
77
75
|
try {
|
|
78
76
|
const truncated = text.length > 4000 ? text.slice(0, 4000) + '\n\n[Text truncated...]' : text;
|
|
79
|
-
const response = await callClaude(`Extract entities and relationships from this conversation:\n\n${truncated}`, { system: EXTRACTION_PROMPT, maxTokens });
|
|
77
|
+
const response = await callClaude(`Extract entities and relationships from this conversation:\n\n${truncated}`, { system: EXTRACTION_PROMPT, maxTokens, tenantSlug: t.slug, label: 'extract-relationships' });
|
|
80
78
|
if (!response)
|
|
81
79
|
return { entities: [], relationships: [] };
|
|
82
80
|
const jsonMatch = response.match(/\{[\s\S]*\}/);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationship-extractor.js","sourceRoot":"","sources":["../src/relationship-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAgB9C,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8FAqDoE,CAAC;AAE/F,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/F,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAS;IAC/C,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS;IAC1E,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY;IACnE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS;CAC9C,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB
|
|
1
|
+
{"version":3,"file":"relationship-extractor.js","sourceRoot":"","sources":["../src/relationship-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAgB9C,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8FAqDoE,CAAC;AAE/F,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/F,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAS;IAC/C,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS;IAC1E,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY;IACnE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS;CAC9C,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,CAAgB,EAChB,IAAY,EACZ,UAAkC,EAAE;IAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9F,MAAM,QAAQ,GAAG,MAAM,UAAU,CAC/B,iEAAiE,SAAS,EAAE,EAC5E,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAC7F,CAAC;QACF,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;QAE1D,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;QAE3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAiC,CAAC;QAErE,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAC1D,CAAC;QACF,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,MAAM,CACpD,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI;YAChC,CAAC,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI;YAChC,CAAC,CAAC,YAAY,IAAI,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CACjE,CAAC;QAEF,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,uDAAuD,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,kBAAkB,CAChC,WAAmB,EACnB,YAA8B,EAC9B,SAAkC;IAElC,MAAM,OAAO,GAAqE;QAChF,OAAO,EAAQ,EAAE,QAAQ,EAAE,SAAS,EAAe,QAAQ,EAAE,gBAAgB,EAAE;QAC/E,QAAQ,EAAO,EAAE,QAAQ,EAAE,UAAU,EAAc,QAAQ,EAAE,SAAS,EAAE;QACxE,WAAW,EAAI,EAAE,QAAQ,EAAE,aAAa,EAAW,QAAQ,EAAE,0BAA0B,EAAE;QACzF,QAAQ,EAAO,EAAE,QAAQ,EAAE,UAAU,EAAc,QAAQ,EAAE,UAAU,EAAE;QACzE,OAAO,EAAQ,EAAE,QAAQ,EAAE,SAAS,EAAe,QAAQ,EAAE,gBAAgB,EAAE;QAC/E,OAAO,EAAQ,EAAE,QAAQ,EAAE,SAAS,EAAe,QAAQ,EAAE,eAAe,EAAE;QAC9E,aAAa,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAS,QAAQ,EAAE,eAAe,EAAE;QAC9E,UAAU,EAAK,EAAE,QAAQ,EAAE,eAAe,EAAS,QAAQ,EAAE,gBAAgB,EAAE;QAC/E,SAAS,EAAM,EAAE,QAAQ,EAAE,WAAW,EAAa,QAAQ,EAAE,oBAAoB,EAAE;QACnF,UAAU,EAAK,EAAE,QAAQ,EAAE,YAAY,EAAY,QAAQ,EAAE,YAAY,EAAE;QAC3E,aAAa,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAQ,QAAQ,EAAE,gBAAgB,EAAE;QAC/E,UAAU,EAAK,EAAE,QAAQ,EAAE,YAAY,EAAY,QAAQ,EAAE,YAAY,EAAE;QAC3E,IAAI,EAAW,EAAE,QAAQ,EAAE,MAAM,EAAkB,QAAQ,EAAE,YAAY,EAAE;QAC3E,UAAU,EAAK,EAAE,QAAQ,EAAE,YAAY,EAAY,QAAQ,EAAE,kBAAkB,EAAE;QACjF,OAAO,EAAQ,EAAE,QAAQ,EAAE,YAAY,EAAY,QAAQ,EAAE,UAAU,EAAE;KAC1E,CAAC;IACF,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3D,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChE,CAAC"}
|
|
@@ -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;
|
|
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;AAqCpF,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;AAKD,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,EAQhE,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA+Lf"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import { randomUUID } from 'node:crypto';
|
|
8
8
|
import { SOURCE_CONFIDENCE } from '@kybernesis/brain-contracts';
|
|
9
9
|
import { enqueueWrite, queueDepth } from './queue.js';
|
|
10
|
+
import { emitTelemetry } from './telemetry.js';
|
|
10
11
|
import { addConversationToTimeline, findRecentDuplicate, incrementTimelineEventCount } from './timeline.js';
|
|
11
12
|
import { findOrCreateEntity, addEntityMention, linkEntitiesWithType } from './entity-graph.js';
|
|
12
13
|
import { extractRelationships } from './relationship-extractor.js';
|
|
@@ -111,15 +112,17 @@ export function storeConversation(t, input, options = {}) {
|
|
|
111
112
|
const label = typeof fp === 'string' ? `${input.channel}:${fp}` : input.channel;
|
|
112
113
|
return enqueueWrite(t.slug, (signal) => storeConversationImpl(t, input, options, signal), { label });
|
|
113
114
|
}
|
|
114
|
-
// Exported for the
|
|
115
|
-
//
|
|
115
|
+
// Exported for the ingest-ordering test only (proves a pre-aborted job STILL
|
|
116
|
+
// writes its timeline row but skips enrichment, KYB-187); NOT re-exported from
|
|
117
|
+
// index.ts, so it is not public surface.
|
|
116
118
|
export async function storeConversationImpl(t, input, options,
|
|
117
119
|
// Fires if the write queue evicts this job for running too long (KYB-181).
|
|
118
|
-
//
|
|
119
|
-
//
|
|
120
|
-
//
|
|
121
|
-
//
|
|
122
|
-
// is a logical out-of-order write, never
|
|
120
|
+
// The timeline write (Step 2) is UNCONDITIONAL — the file must land even under
|
|
121
|
+
// eviction (KYB-187). Only the best-effort ENRICHMENT steps (extraction,
|
|
122
|
+
// entity graph, facts, embeds) poll `signal.aborted` and skip when evicted.
|
|
123
|
+
// The signal isn't threaded into the awaited SDK/DB calls, so a detached
|
|
124
|
+
// post-eviction job's residual is a logical out-of-order write, never
|
|
125
|
+
// corruption (sync sqlite writes).
|
|
123
126
|
signal) {
|
|
124
127
|
const conversationId = randomUUID();
|
|
125
128
|
const timestamp = input.timestamp || new Date().toISOString();
|
|
@@ -147,16 +150,32 @@ signal) {
|
|
|
147
150
|
connection_id: typeof meta['connection_id'] === 'string' ? meta['connection_id'] : undefined,
|
|
148
151
|
source_did: typeof meta['source_did'] === 'string' ? meta['source_did'] : undefined,
|
|
149
152
|
};
|
|
150
|
-
//
|
|
153
|
+
// ── Ingest ordering (KYB-187) ──────────────────────────────────────────────
|
|
154
|
+
// The 2026-06-30 drop had TWO halves: extraction (a Claude call) was UNBOUNDED
|
|
155
|
+
// and ran BEFORE an abort-guarded timeline write — so a hung extraction was
|
|
156
|
+
// evicted at 90s and the guard then skipped the write, dropping the file. Both
|
|
157
|
+
// halves are fixed:
|
|
158
|
+
// (a) extraction is now BOUNDED at the LLM seam (callClaude timeout), so it
|
|
159
|
+
// can no longer hang; and
|
|
160
|
+
// (b) the timeline write below is UNCONDITIONAL (no abort guard) — so the
|
|
161
|
+
// file ALWAYS lands, with real entities when extraction succeeds and an
|
|
162
|
+
// empty set when it times out.
|
|
163
|
+
// We write the row ONCE, with the entities we have — NOT write-empty-then-
|
|
164
|
+
// backfill: the file_path upsert overwrites entities and `last_insert_rowid()`
|
|
165
|
+
// is stale on its DO UPDATE branch, so a backfill would corrupt an unrelated
|
|
166
|
+
// row (BH-001). A single write is correct and simple.
|
|
167
|
+
// Step 1 — Extract entities + relationships (bounded LLM; best-effort).
|
|
151
168
|
let entities = [];
|
|
152
169
|
let relationships = [];
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
170
|
+
if (!signal?.aborted) {
|
|
171
|
+
try {
|
|
172
|
+
const extraction = await extractRelationships(t, fullText);
|
|
173
|
+
entities = extraction.entities;
|
|
174
|
+
relationships = extraction.relationships;
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
console.warn('[brain-core/store-conversation] entity extraction failed', { err: String(err) });
|
|
178
|
+
}
|
|
160
179
|
}
|
|
161
180
|
// Step 1b: Filter noise
|
|
162
181
|
entities = filterNoiseEntities(entities, options.entityStoplist);
|
|
@@ -164,21 +183,22 @@ signal) {
|
|
|
164
183
|
relationships = relationships.filter(r => entityNameSet.has(r.source.name.toLowerCase()) && entityNameSet.has(r.target.name.toLowerCase()));
|
|
165
184
|
const entityNames = entities.map(e => e.name);
|
|
166
185
|
const topicNames = entities.filter(e => e.type === 'topic').map(e => e.name);
|
|
167
|
-
// Step 2:
|
|
186
|
+
// Step 2 — Timeline (UNCONDITIONAL: the file MUST land — even if the job was
|
|
187
|
+
// evicted or extraction returned nothing). Written once, with whatever
|
|
188
|
+
// entities extraction produced. NOTE: on a re-ingest whose extraction failed,
|
|
189
|
+
// the upsert overwrites entities with the empty set — a quality degradation
|
|
190
|
+
// (missing graph links), never a drop; it self-heals on the next re-ingest
|
|
191
|
+
// once the LLM recovers. Landing the file is the priority.
|
|
168
192
|
const title = input.prompt.length > 100 ? input.prompt.slice(0, 97) + '...' : input.prompt;
|
|
169
193
|
const dateMatch = input.prompt.match(/^DATE:\s*(.+?)$/m);
|
|
170
194
|
const sessionDate = dateMatch ? dateMatch[1].trim() : '';
|
|
171
195
|
const fullTitle = sessionDate ? `[${input.channel}] ${sessionDate} — ${title}` : `[${input.channel}] ${title}`;
|
|
172
196
|
const recentHours = input.channel === 'heartbeat' ? 24 : 0.033;
|
|
173
|
-
|
|
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;
|
|
197
|
+
const telemetryLabel = provenance?.file_path ? `${input.channel}:${provenance.file_path}` : input.channel;
|
|
178
198
|
try {
|
|
179
|
-
// file_path rows skip the title-window duplicate check: the dual-key
|
|
180
|
-
//
|
|
181
|
-
//
|
|
199
|
+
// file_path rows skip the title-window duplicate check: the dual-key upsert
|
|
200
|
+
// IS their dedup, and the increment-only path would silently drop an edited
|
|
201
|
+
// file's new content_hash/summary (the stale-brain bug class).
|
|
182
202
|
const existing = provenance?.file_path
|
|
183
203
|
? null
|
|
184
204
|
: await findRecentDuplicate(t, fullTitle, recentHours);
|
|
@@ -188,11 +208,13 @@ signal) {
|
|
|
188
208
|
else {
|
|
189
209
|
await addConversationToTimeline(t, conversationId, sourcePath, timestamp, undefined, fullTitle, timelineSummary, entityNames, topicNames, arpMetadata, input.eventType, provenance);
|
|
190
210
|
}
|
|
211
|
+
emitTelemetry({ kind: 'store.success', slug: t.slug, label: telemetryLabel, ts: new Date().toISOString() });
|
|
191
212
|
}
|
|
192
213
|
catch (err) {
|
|
214
|
+
emitTelemetry({ kind: 'store.failure', slug: t.slug, label: telemetryLabel, error: String(err), ts: new Date().toISOString() });
|
|
193
215
|
console.warn('[brain-core/store-conversation] timeline failed', { err: String(err) });
|
|
194
216
|
}
|
|
195
|
-
// Step
|
|
217
|
+
// Step 3: Segment-level vector indexing (best-effort, batched — KYB-182)
|
|
196
218
|
// One embedBatch round-trip for all segments instead of N sequential embeds
|
|
197
219
|
// (an 18KB file was ~72 sequential calls). The eviction guard is checked
|
|
198
220
|
// once before the batch; the batch is a single operation, so there is no
|
|
@@ -215,7 +237,7 @@ signal) {
|
|
|
215
237
|
console.warn('[brain-core/store-conversation] segment indexing failed', { err: String(err) });
|
|
216
238
|
}
|
|
217
239
|
}
|
|
218
|
-
// Step
|
|
240
|
+
// Step 4: Entity graph (best-effort)
|
|
219
241
|
if (signal?.aborted)
|
|
220
242
|
return;
|
|
221
243
|
try {
|
|
@@ -256,7 +278,7 @@ signal) {
|
|
|
256
278
|
catch (err) {
|
|
257
279
|
console.warn('[brain-core/store-conversation] entity graph failed', { err: String(err) });
|
|
258
280
|
}
|
|
259
|
-
// Step
|
|
281
|
+
// Step 5: Real-time fact extraction (bounded LLM, best-effort)
|
|
260
282
|
if (signal?.aborted)
|
|
261
283
|
return;
|
|
262
284
|
try {
|
|
@@ -269,7 +291,7 @@ signal) {
|
|
|
269
291
|
});
|
|
270
292
|
}
|
|
271
293
|
catch { /* fact extraction is best-effort */ }
|
|
272
|
-
// Step
|
|
294
|
+
// Step 6: Parent-level embedding (only if no segments)
|
|
273
295
|
if (!options.skipEmbeddings && fullText.length <= 250 && !signal?.aborted) {
|
|
274
296
|
try {
|
|
275
297
|
await indexChunk(t, fullText, { ts: timestamp, source: sourcePath, origin_id: conversationId });
|
|
@@ -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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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brain health telemetry (KYB-183 local half, pulled forward by KYB-187).
|
|
3
|
+
*
|
|
4
|
+
* Cortex EMITS structured events; the host ROUTES them. Two surfaces:
|
|
5
|
+
* - PUSH: `setTelemetryProvider(sink)` — the host receives every event and
|
|
6
|
+
* decides where it goes (daemon.log locally, a metrics backend in Arcana).
|
|
7
|
+
* Injectable like the LLM/embedding seams (ADR-0009). Cortex never owns a
|
|
8
|
+
* log sink, so it stays portable across KBDE / KAD / Arcana.
|
|
9
|
+
* - PULL: `getHealth(t)` — a cheap per-tenant snapshot (queue depth, last
|
|
10
|
+
* store/embed/llm success + counts) that a host `/health` endpoint or
|
|
11
|
+
* dashboard reads to answer "is this brain healthy / is its queue stalled?"
|
|
12
|
+
* without tailing logs.
|
|
13
|
+
*
|
|
14
|
+
* The 2026-06-30 freeze took hours to diagnose because the layers that KNEW
|
|
15
|
+
* (embedder 429, hung queue job) swallowed it silently. This makes that state
|
|
16
|
+
* observable. The eviction log (KYB-181) and embedder stats (KYB-180) are the
|
|
17
|
+
* seeds this generalises.
|
|
18
|
+
*/
|
|
19
|
+
import type { TenantContext } from '@kybernesis/brain-contracts';
|
|
20
|
+
export type BrainTelemetryEvent = {
|
|
21
|
+
kind: 'queue.evicted';
|
|
22
|
+
slug: string;
|
|
23
|
+
ts: string;
|
|
24
|
+
label: string;
|
|
25
|
+
timeoutMs: number;
|
|
26
|
+
} | {
|
|
27
|
+
kind: 'store.success';
|
|
28
|
+
slug: string;
|
|
29
|
+
ts: string;
|
|
30
|
+
label: string;
|
|
31
|
+
} | {
|
|
32
|
+
kind: 'store.failure';
|
|
33
|
+
slug: string;
|
|
34
|
+
ts: string;
|
|
35
|
+
label: string;
|
|
36
|
+
error: string;
|
|
37
|
+
} | {
|
|
38
|
+
kind: 'embed.success';
|
|
39
|
+
slug: string;
|
|
40
|
+
ts: string;
|
|
41
|
+
count: number;
|
|
42
|
+
} | {
|
|
43
|
+
kind: 'embed.failure';
|
|
44
|
+
slug: string;
|
|
45
|
+
ts: string;
|
|
46
|
+
error?: string;
|
|
47
|
+
} | {
|
|
48
|
+
kind: 'llm.success';
|
|
49
|
+
slug: string;
|
|
50
|
+
ts: string;
|
|
51
|
+
label: string;
|
|
52
|
+
durationMs: number;
|
|
53
|
+
} | {
|
|
54
|
+
kind: 'llm.failure';
|
|
55
|
+
slug: string;
|
|
56
|
+
ts: string;
|
|
57
|
+
label: string;
|
|
58
|
+
stage: 'timeout' | 'error';
|
|
59
|
+
error: string;
|
|
60
|
+
};
|
|
61
|
+
/** The host implements this to route events wherever it logs/meters. */
|
|
62
|
+
export interface TelemetrySink {
|
|
63
|
+
emit(event: BrainTelemetryEvent): void;
|
|
64
|
+
}
|
|
65
|
+
/** Per-tenant rolling health snapshot (the PULL surface). */
|
|
66
|
+
export interface BrainHealth {
|
|
67
|
+
slug: string;
|
|
68
|
+
/** Live queue depth — >0 means a write is in flight / queued. */
|
|
69
|
+
queueDepth: number;
|
|
70
|
+
store: {
|
|
71
|
+
ok: number;
|
|
72
|
+
evicted: number;
|
|
73
|
+
failed: number;
|
|
74
|
+
lastSuccessAt: string | null;
|
|
75
|
+
lastEvictedAt: string | null;
|
|
76
|
+
/** The job label (channel + file_path) of the most recent eviction. */
|
|
77
|
+
lastEvictedLabel: string | null;
|
|
78
|
+
};
|
|
79
|
+
embed: {
|
|
80
|
+
ok: number;
|
|
81
|
+
failed: number;
|
|
82
|
+
lastSuccessAt: string | null;
|
|
83
|
+
};
|
|
84
|
+
llm: {
|
|
85
|
+
ok: number;
|
|
86
|
+
failed: number;
|
|
87
|
+
lastSuccessAt: string | null;
|
|
88
|
+
lastFailureAt: string | null;
|
|
89
|
+
lastFailureStage: string | null;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/** Wire a host sink to receive every emitted event (PUSH). Null clears it. */
|
|
93
|
+
export declare function setTelemetryProvider(sink: TelemetrySink | null): void;
|
|
94
|
+
export declare function resetTelemetryProvider(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Record an event: update the rolling per-tenant snapshot, then forward to the
|
|
97
|
+
* host sink. Never throws — a broken sink must not break an ingest.
|
|
98
|
+
*/
|
|
99
|
+
export declare function emitTelemetry(event: BrainTelemetryEvent): void;
|
|
100
|
+
/** A defensive copy of the tenant's health snapshot, with the LIVE queue depth. */
|
|
101
|
+
export declare function getHealth(t: TenantContext): BrainHealth;
|
|
102
|
+
/** Clear all recorded health — for tests. */
|
|
103
|
+
export declare function resetHealth(): void;
|
|
104
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACrF;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjF;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACpF;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhH,wEAAwE;AACxE,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACxC;AAED,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,uEAAuE;QACvE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;KACjC,CAAC;IACF,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACpE,GAAG,EAAE;QACH,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;KACjC,CAAC;CACH;AAID,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAAkB;AACxF,wBAAgB,sBAAsB,IAAI,IAAI,CAAkB;AAmBhE;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAsB9D;AAED,mFAAmF;AACnF,wBAAgB,SAAS,CAAC,CAAC,EAAE,aAAa,GAAG,WAAW,CASvD;AAED,6CAA6C;AAC7C,wBAAgB,WAAW,IAAI,IAAI,CAAqB"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brain health telemetry (KYB-183 local half, pulled forward by KYB-187).
|
|
3
|
+
*
|
|
4
|
+
* Cortex EMITS structured events; the host ROUTES them. Two surfaces:
|
|
5
|
+
* - PUSH: `setTelemetryProvider(sink)` — the host receives every event and
|
|
6
|
+
* decides where it goes (daemon.log locally, a metrics backend in Arcana).
|
|
7
|
+
* Injectable like the LLM/embedding seams (ADR-0009). Cortex never owns a
|
|
8
|
+
* log sink, so it stays portable across KBDE / KAD / Arcana.
|
|
9
|
+
* - PULL: `getHealth(t)` — a cheap per-tenant snapshot (queue depth, last
|
|
10
|
+
* store/embed/llm success + counts) that a host `/health` endpoint or
|
|
11
|
+
* dashboard reads to answer "is this brain healthy / is its queue stalled?"
|
|
12
|
+
* without tailing logs.
|
|
13
|
+
*
|
|
14
|
+
* The 2026-06-30 freeze took hours to diagnose because the layers that KNEW
|
|
15
|
+
* (embedder 429, hung queue job) swallowed it silently. This makes that state
|
|
16
|
+
* observable. The eviction log (KYB-181) and embedder stats (KYB-180) are the
|
|
17
|
+
* seeds this generalises.
|
|
18
|
+
*/
|
|
19
|
+
import { queueDepth } from './queue.js';
|
|
20
|
+
let _sink = null;
|
|
21
|
+
/** Wire a host sink to receive every emitted event (PUSH). Null clears it. */
|
|
22
|
+
export function setTelemetryProvider(sink) { _sink = sink; }
|
|
23
|
+
export function resetTelemetryProvider() { _sink = null; }
|
|
24
|
+
function blankHealth(slug) {
|
|
25
|
+
return {
|
|
26
|
+
slug,
|
|
27
|
+
queueDepth: 0,
|
|
28
|
+
store: { ok: 0, evicted: 0, failed: 0, lastSuccessAt: null, lastEvictedAt: null, lastEvictedLabel: null },
|
|
29
|
+
embed: { ok: 0, failed: 0, lastSuccessAt: null },
|
|
30
|
+
llm: { ok: 0, failed: 0, lastSuccessAt: null, lastFailureAt: null, lastFailureStage: null },
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const _health = new Map();
|
|
34
|
+
function ensure(slug) {
|
|
35
|
+
let h = _health.get(slug);
|
|
36
|
+
if (!h) {
|
|
37
|
+
h = blankHealth(slug);
|
|
38
|
+
_health.set(slug, h);
|
|
39
|
+
}
|
|
40
|
+
return h;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Record an event: update the rolling per-tenant snapshot, then forward to the
|
|
44
|
+
* host sink. Never throws — a broken sink must not break an ingest.
|
|
45
|
+
*/
|
|
46
|
+
export function emitTelemetry(event) {
|
|
47
|
+
const h = ensure(event.slug);
|
|
48
|
+
switch (event.kind) {
|
|
49
|
+
case 'queue.evicted':
|
|
50
|
+
h.store.evicted += 1;
|
|
51
|
+
h.store.lastEvictedAt = event.ts;
|
|
52
|
+
h.store.lastEvictedLabel = event.label;
|
|
53
|
+
break;
|
|
54
|
+
case 'store.success':
|
|
55
|
+
h.store.ok += 1;
|
|
56
|
+
h.store.lastSuccessAt = event.ts;
|
|
57
|
+
break;
|
|
58
|
+
case 'store.failure':
|
|
59
|
+
h.store.failed += 1;
|
|
60
|
+
break;
|
|
61
|
+
case 'embed.success':
|
|
62
|
+
h.embed.ok += event.count;
|
|
63
|
+
h.embed.lastSuccessAt = event.ts;
|
|
64
|
+
break;
|
|
65
|
+
case 'embed.failure':
|
|
66
|
+
h.embed.failed += 1;
|
|
67
|
+
break;
|
|
68
|
+
case 'llm.success':
|
|
69
|
+
h.llm.ok += 1;
|
|
70
|
+
h.llm.lastSuccessAt = event.ts;
|
|
71
|
+
break;
|
|
72
|
+
case 'llm.failure':
|
|
73
|
+
h.llm.failed += 1;
|
|
74
|
+
h.llm.lastFailureAt = event.ts;
|
|
75
|
+
h.llm.lastFailureStage = event.stage;
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
if (_sink) {
|
|
79
|
+
try {
|
|
80
|
+
_sink.emit(event);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
console.warn('[brain-core/telemetry] sink threw', { err: String(err) });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/** A defensive copy of the tenant's health snapshot, with the LIVE queue depth. */
|
|
88
|
+
export function getHealth(t) {
|
|
89
|
+
const h = _health.get(t.slug) ?? blankHealth(t.slug);
|
|
90
|
+
return {
|
|
91
|
+
slug: t.slug,
|
|
92
|
+
queueDepth: queueDepth(t.slug),
|
|
93
|
+
store: { ...h.store },
|
|
94
|
+
embed: { ...h.embed },
|
|
95
|
+
llm: { ...h.llm },
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/** Clear all recorded health — for tests. */
|
|
99
|
+
export function resetHealth() { _health.clear(); }
|
|
100
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|
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;
|
|
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;AAIrG,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,CA8B3B;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,CAgD7B;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
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { EMBEDDING_DIM, EMBEDDING_INPUT_CAP as CONTENT_CHAR_CAP } from '@kybernesis/brain-contracts';
|
|
14
14
|
import { getStorage } from './storage.js';
|
|
15
|
+
import { emitTelemetry } from './telemetry.js';
|
|
15
16
|
export { EMBEDDING_DIM };
|
|
16
17
|
let _embedder = null;
|
|
17
18
|
export function setEmbeddingProvider(p) { _embedder = p; }
|
|
@@ -29,11 +30,15 @@ export async function indexChunk(t, content, meta) {
|
|
|
29
30
|
}
|
|
30
31
|
const capped = content.slice(0, CONTENT_CHAR_CAP);
|
|
31
32
|
const embedding = await _embedder.embed(t, capped);
|
|
32
|
-
if (!embedding)
|
|
33
|
+
if (!embedding) {
|
|
34
|
+
emitTelemetry({ kind: 'embed.failure', slug: t.slug, ts: new Date().toISOString() });
|
|
33
35
|
return { indexed: false, reason: 'embedding failed' };
|
|
36
|
+
}
|
|
34
37
|
if (embedding.length !== EMBEDDING_DIM) {
|
|
38
|
+
emitTelemetry({ kind: 'embed.failure', slug: t.slug, ts: new Date().toISOString() });
|
|
35
39
|
return { indexed: false, reason: `expected ${EMBEDDING_DIM}-dim vector, got ${embedding.length}` };
|
|
36
40
|
}
|
|
41
|
+
emitTelemetry({ kind: 'embed.success', slug: t.slug, count: 1, ts: new Date().toISOString() });
|
|
37
42
|
await vectors.insertChunk(t, {
|
|
38
43
|
embedding,
|
|
39
44
|
ts: meta.ts,
|
|
@@ -74,11 +79,14 @@ export async function indexChunks(t, chunks) {
|
|
|
74
79
|
if (pending.length === 0)
|
|
75
80
|
return results;
|
|
76
81
|
const embeddings = await embedMany(t, pending.map((p) => p.content));
|
|
82
|
+
let okCount = 0;
|
|
83
|
+
let failCount = 0;
|
|
77
84
|
for (let k = 0; k < pending.length; k++) {
|
|
78
85
|
const p = pending[k];
|
|
79
86
|
const embedding = embeddings[k];
|
|
80
87
|
if (!embedding || embedding.length !== EMBEDDING_DIM) {
|
|
81
88
|
results[p.i] = { indexed: false, reason: 'embedding failed' };
|
|
89
|
+
failCount += 1;
|
|
82
90
|
continue;
|
|
83
91
|
}
|
|
84
92
|
await vectors.insertChunk(t, {
|
|
@@ -89,7 +97,13 @@ export async function indexChunks(t, chunks) {
|
|
|
89
97
|
origin_id: p.meta.origin_id,
|
|
90
98
|
});
|
|
91
99
|
results[p.i] = { indexed: true };
|
|
100
|
+
okCount += 1;
|
|
92
101
|
}
|
|
102
|
+
const ts = new Date().toISOString();
|
|
103
|
+
if (okCount > 0)
|
|
104
|
+
emitTelemetry({ kind: 'embed.success', slug: t.slug, count: okCount, ts });
|
|
105
|
+
if (failCount > 0)
|
|
106
|
+
emitTelemetry({ kind: 'embed.failure', slug: t.slug, ts });
|
|
93
107
|
return results;
|
|
94
108
|
}
|
|
95
109
|
/** One batched embed call when the provider supports it; sequential fallback otherwise. */
|
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;
|
|
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.16.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-
|
|
31
|
-
"@kybernesis/brain-
|
|
30
|
+
"@kybernesis/brain-storage-sqlite": "0.16.0",
|
|
31
|
+
"@kybernesis/brain-contracts": "0.16.0"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
|
-
"@kybernesis/brain-storage-vec": "0.
|
|
34
|
+
"@kybernesis/brain-storage-vec": "0.16.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-testkit": "0.16.0",
|
|
45
|
+
"@kybernesis/brain-storage-vec": "0.16.0"
|
|
46
46
|
},
|
|
47
47
|
"publishConfig": {
|
|
48
48
|
"access": "public"
|