@kybernesis/brain-core 0.11.0 → 0.13.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/brain-provider.d.ts +26 -0
- package/dist/brain-provider.d.ts.map +1 -0
- package/dist/brain-provider.js +149 -0
- package/dist/brain-provider.js.map +1 -0
- package/dist/fact-decay.d.ts +74 -0
- package/dist/fact-decay.d.ts.map +1 -0
- package/dist/fact-decay.js +92 -0
- package/dist/fact-decay.js.map +1 -0
- package/dist/fact-retrieval.d.ts +14 -0
- package/dist/fact-retrieval.d.ts.map +1 -1
- package/dist/fact-retrieval.js +48 -4
- package/dist/fact-retrieval.js.map +1 -1
- package/dist/hybrid-search.d.ts +2 -32
- package/dist/hybrid-search.d.ts.map +1 -1
- package/dist/hybrid-search.js +49 -3
- package/dist/hybrid-search.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/relational-intent.d.ts +43 -0
- package/dist/relational-intent.d.ts.map +1 -0
- package/dist/relational-intent.js +151 -0
- package/dist/relational-intent.js.map +1 -0
- package/dist/store-conversation.d.ts +2 -9
- package/dist/store-conversation.d.ts.map +1 -1
- package/dist/store-conversation.js.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `LocalBrainProvider` — the local half of the Layer-2 `BrainProvider` seam
|
|
3
|
+
* (ADR-0016, KYB-102).
|
|
4
|
+
*
|
|
5
|
+
* `createLocalBrainProvider(t)` returns a `BrainProvider` (the interface lives
|
|
6
|
+
* in `@kybernesis/brain-contracts`) bound to ONE tenant. Every method is a thin
|
|
7
|
+
* delegation to the matching `brain-core` free function — NO new logic, NO
|
|
8
|
+
* behaviour change, NO new runtime dependency. The provider's value is the type
|
|
9
|
+
* contract (one seam KAD/KBDE/Arcana share), not new algorithm.
|
|
10
|
+
*
|
|
11
|
+
* Write-consistency (ADR-0016): every write here is immediately readable — this
|
|
12
|
+
* is the LOCAL provider. A future `RemoteBrainProvider` may queue writes
|
|
13
|
+
* (eventually consistent); the interface JSDoc carries that caveat. This
|
|
14
|
+
* provider ignores `opts.idempotencyKey` (the single-writer queue + UNIQUE
|
|
15
|
+
* constraints already make local writes idempotent — see WriteOpts).
|
|
16
|
+
*/
|
|
17
|
+
import type { TenantContext, BrainProvider } from '@kybernesis/brain-contracts';
|
|
18
|
+
/**
|
|
19
|
+
* Build a `BrainProvider` bound to tenant `t`, backed by the local `brain-core`
|
|
20
|
+
* kernel (SQLite via the auto-defaulted Layer-3 `StorageProvider`).
|
|
21
|
+
*
|
|
22
|
+
* @param t the tenant whose brain this provider operates on (captured at
|
|
23
|
+
* construction — methods take no tenant parameter).
|
|
24
|
+
*/
|
|
25
|
+
export declare function createLocalBrainProvider(t: TenantContext): BrainProvider;
|
|
26
|
+
//# sourceMappingURL=brain-provider.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `LocalBrainProvider` — the local half of the Layer-2 `BrainProvider` seam
|
|
3
|
+
* (ADR-0016, KYB-102).
|
|
4
|
+
*
|
|
5
|
+
* `createLocalBrainProvider(t)` returns a `BrainProvider` (the interface lives
|
|
6
|
+
* in `@kybernesis/brain-contracts`) bound to ONE tenant. Every method is a thin
|
|
7
|
+
* delegation to the matching `brain-core` free function — NO new logic, NO
|
|
8
|
+
* behaviour change, NO new runtime dependency. The provider's value is the type
|
|
9
|
+
* contract (one seam KAD/KBDE/Arcana share), not new algorithm.
|
|
10
|
+
*
|
|
11
|
+
* Write-consistency (ADR-0016): every write here is immediately readable — this
|
|
12
|
+
* is the LOCAL provider. A future `RemoteBrainProvider` may queue writes
|
|
13
|
+
* (eventually consistent); the interface JSDoc carries that caveat. This
|
|
14
|
+
* provider ignores `opts.idempotencyKey` (the single-writer queue + UNIQUE
|
|
15
|
+
* constraints already make local writes idempotent — see WriteOpts).
|
|
16
|
+
*/
|
|
17
|
+
import { EntityTypeSchema } from '@kybernesis/brain-contracts';
|
|
18
|
+
import { storeConversation } from './store-conversation.js';
|
|
19
|
+
import { hybridSearch } from './hybrid-search.js';
|
|
20
|
+
import { queryTimeline, getTimelineStats } from './timeline.js';
|
|
21
|
+
import { getEntityContext, findOrCreateEntity, getEntityGraphStats, pinEntity as pinEntityById, listPinned, } from './entity-graph.js';
|
|
22
|
+
import { vectorStats } from './vectors.js';
|
|
23
|
+
import { factsCount } from './fact-store.js';
|
|
24
|
+
import { runSleepCycleNow } from './sleep/index.js';
|
|
25
|
+
/**
|
|
26
|
+
* Build a `BrainProvider` bound to tenant `t`, backed by the local `brain-core`
|
|
27
|
+
* kernel (SQLite via the auto-defaulted Layer-3 `StorageProvider`).
|
|
28
|
+
*
|
|
29
|
+
* @param t the tenant whose brain this provider operates on (captured at
|
|
30
|
+
* construction — methods take no tenant parameter).
|
|
31
|
+
*/
|
|
32
|
+
export function createLocalBrainProvider(t) {
|
|
33
|
+
return {
|
|
34
|
+
// ─ Writes ──────────────────────────────────────────────────────────────
|
|
35
|
+
async remember(input, _opts) {
|
|
36
|
+
// _opts.idempotencyKey ignored — local writes already idempotent.
|
|
37
|
+
return storeConversation(t, input);
|
|
38
|
+
},
|
|
39
|
+
async addNote(input, _opts) {
|
|
40
|
+
const type = input.type ?? 'note';
|
|
41
|
+
const title = input.title ?? 'untitled note';
|
|
42
|
+
// entities_touched: snapshot the entity count before/after so the figure
|
|
43
|
+
// comes from a brain-core free function, not a raw DB handle (no
|
|
44
|
+
// Layer-3/Database leak across the seam).
|
|
45
|
+
const before = await getEntityGraphStats(t).catch(() => ({ totalEntities: 0 }));
|
|
46
|
+
await storeConversation(t, {
|
|
47
|
+
prompt: input.content,
|
|
48
|
+
response: '',
|
|
49
|
+
channel: 'note',
|
|
50
|
+
timestamp: new Date().toISOString(),
|
|
51
|
+
eventType: type,
|
|
52
|
+
metadata: {
|
|
53
|
+
title,
|
|
54
|
+
...(input.source_path ? { source_path: input.source_path } : {}),
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
const after = await getEntityGraphStats(t).catch(() => ({ totalEntities: before.totalEntities }));
|
|
58
|
+
const entitiesTouched = Math.max(0, after.totalEntities - before.totalEntities);
|
|
59
|
+
// Length-based segment estimate (parity with KAD's CLI feedback figure).
|
|
60
|
+
const segments = Math.max(1, Math.ceil(input.content.length / 250));
|
|
61
|
+
return { ok: true, title, type, segments, entities_touched: entitiesTouched };
|
|
62
|
+
},
|
|
63
|
+
async upsertEntity(body, _opts) {
|
|
64
|
+
// FIX 2b: validate type at the seam so an invalid value throws a clean,
|
|
65
|
+
// named error here — NOT a SQLite CHECK violation surfaced from deep in
|
|
66
|
+
// the storage write path. The interface already types `type` as
|
|
67
|
+
// EntityType (compile-time guard); this guards the runtime/untyped caller.
|
|
68
|
+
const rawType = body.type ?? 'topic';
|
|
69
|
+
const parsed = EntityTypeSchema.safeParse(rawType);
|
|
70
|
+
if (!parsed.success) {
|
|
71
|
+
const allowed = EntityTypeSchema.options.join(', ');
|
|
72
|
+
throw new Error(`upsertEntity: invalid entity type ${JSON.stringify(rawType)} — allowed types: ${allowed}`);
|
|
73
|
+
}
|
|
74
|
+
const type = parsed.data;
|
|
75
|
+
// FIX 1: findOrCreateEntity matches on (normalized_name AND type), but
|
|
76
|
+
// getEntityContext matches by normalized_name/alias ONLY (type-agnostic).
|
|
77
|
+
// So `!before` would wrongly report created=false when the same name is
|
|
78
|
+
// inserted under a NEW type. Determine `created` by comparing the row id:
|
|
79
|
+
// if findOrCreateEntity returns an id that differs from any pre-existing
|
|
80
|
+
// same-name row (or there was none), it inserted.
|
|
81
|
+
const before = await getEntityContext(t, body.name);
|
|
82
|
+
const entity = await findOrCreateEntity(t, body.name, type, new Date().toISOString());
|
|
83
|
+
const created = before?.entity?.id !== entity.id;
|
|
84
|
+
return { id: String(entity.id), created };
|
|
85
|
+
},
|
|
86
|
+
async pinEntity(nameOrId, pinned, _opts) {
|
|
87
|
+
// Resolve name OR numeric id through getEntityContext (accepts string |
|
|
88
|
+
// number) — no raw DB query, no Database handle across the seam.
|
|
89
|
+
const asId = parseInt(nameOrId, 10);
|
|
90
|
+
const lookup = Number.isFinite(asId) && String(asId) === nameOrId ? asId : nameOrId;
|
|
91
|
+
const ctx = await getEntityContext(t, lookup);
|
|
92
|
+
if (!ctx)
|
|
93
|
+
return null;
|
|
94
|
+
await pinEntityById(t, ctx.entity.id, pinned);
|
|
95
|
+
return { ok: true, id: ctx.entity.id, name: ctx.entity.name, pinned };
|
|
96
|
+
},
|
|
97
|
+
// ─ Reads ───────────────────────────────────────────────────────────────
|
|
98
|
+
async query(query, opts) {
|
|
99
|
+
return hybridSearch(t, query, opts ?? {});
|
|
100
|
+
},
|
|
101
|
+
async timeline(opts) {
|
|
102
|
+
return queryTimeline(t, opts ?? {});
|
|
103
|
+
},
|
|
104
|
+
async recallEntity(name) {
|
|
105
|
+
const ctx = await getEntityContext(t, name);
|
|
106
|
+
if (!ctx)
|
|
107
|
+
return null;
|
|
108
|
+
return {
|
|
109
|
+
entity: ctx.entity,
|
|
110
|
+
mentions: ctx.mentions,
|
|
111
|
+
related_entities: ctx.relatedEntities,
|
|
112
|
+
};
|
|
113
|
+
},
|
|
114
|
+
async getPinnedEntities() {
|
|
115
|
+
const pinned = await listPinned(t);
|
|
116
|
+
return pinned.map((e) => ({
|
|
117
|
+
id: e.id,
|
|
118
|
+
name: e.name,
|
|
119
|
+
type: e.type,
|
|
120
|
+
mention_count: e.mention_count,
|
|
121
|
+
last_seen: e.last_seen,
|
|
122
|
+
}));
|
|
123
|
+
},
|
|
124
|
+
async stats() {
|
|
125
|
+
const [tl, eg, vec, facts] = await Promise.all([
|
|
126
|
+
getTimelineStats(t),
|
|
127
|
+
getEntityGraphStats(t),
|
|
128
|
+
vectorStats(t).catch(() => ({ count: 0, available: false })),
|
|
129
|
+
factsCount(t).catch(() => 0),
|
|
130
|
+
]);
|
|
131
|
+
return {
|
|
132
|
+
timeline_rows: tl.totalEvents,
|
|
133
|
+
fact_rows: facts,
|
|
134
|
+
entity_rows: eg.totalEntities,
|
|
135
|
+
vector_rows: vec.count,
|
|
136
|
+
vector_backend: vec.available ? 'sqlite-vec' : 'none',
|
|
137
|
+
};
|
|
138
|
+
},
|
|
139
|
+
// ─ Sleep ───────────────────────────────────────────────────────────────
|
|
140
|
+
async sleep(cfg) {
|
|
141
|
+
// SleepCycleConfig is the contract-level structural alias; widen to the
|
|
142
|
+
// real Partial<SleepConfig> at the call site (the contract stays decoupled
|
|
143
|
+
// from the sleep tuning knobs). The returned RunMetrics is structurally a
|
|
144
|
+
// SleepCycleMetrics.
|
|
145
|
+
return runSleepCycleNow(t, (cfg ?? {}));
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=brain-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-provider.js","sourceRoot":"","sources":["../src/brain-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-time fact-confidence decay (KYB-80).
|
|
3
|
+
*
|
|
4
|
+
* A pure scoring policy — NO schema change, NO cron. Mirrors gbrain's
|
|
5
|
+
* "Hot Memory" model: per-category exponential confidence decay, clamped to
|
|
6
|
+
* [0,1]. Recall multiplies this UNIFORMLY into every scored fact (see the
|
|
7
|
+
* single decay pass in fact-retrieval.ts/factFirstSearch) so that, all else
|
|
8
|
+
* equal, a fresh fact outranks a stale one and short-lived categories (events)
|
|
9
|
+
* fade far faster than durable ones (biographical). Applying it uniformly over
|
|
10
|
+
* all sources — not at one scoring site — is deliberate: direct, entity, scene
|
|
11
|
+
* and bridge scores share one ranking, so decaying only one source would
|
|
12
|
+
* distort their relative order.
|
|
13
|
+
*
|
|
14
|
+
* Formula: `effectiveConfidence = confidence × 2^(-age_days / halflife_days)`.
|
|
15
|
+
* NOTE this is a TRUE half-life — value is exactly 50% of `confidence` at one
|
|
16
|
+
* half-life. gbrain documents `exp(-age / halflife)`, but that form reaches
|
|
17
|
+
* 1/e (≈37%) at "halflife", i.e. its constant is really a time-constant τ, not
|
|
18
|
+
* a half-life. We keep the name honest: `FACT_HALF_LIVES_DAYS` means literal
|
|
19
|
+
* 50%-life. (Equivalent up to a ln2 rescale; values are tunable and gated on
|
|
20
|
+
* brain-bench before going default-on — see KYB-84 for the measurement path.)
|
|
21
|
+
*
|
|
22
|
+
* Age is taken from the fact's `timestamp` (assertion time, stored ISO-UTC).
|
|
23
|
+
* Reinforcement-aware decay (resetting the clock on `last_reinforced_at`) is a
|
|
24
|
+
* future extension: it needs that column threaded through the retrieval seam
|
|
25
|
+
* (RetrievalFactRow + the FTS/entity/scene/bridge queries), so it is NOT
|
|
26
|
+
* modelled here rather than advertised on a contract no caller can honor.
|
|
27
|
+
*
|
|
28
|
+
* Expiry (expires_at / is_latest) is handled upstream by the retrieval seam
|
|
29
|
+
* and the expiry sweep — intentionally NOT re-implemented here, so this stays
|
|
30
|
+
* a single-responsibility decay function.
|
|
31
|
+
*
|
|
32
|
+
* Ref: docs/research/competitors/gbrain-CONTEXT.md (Confidence decay),
|
|
33
|
+
* docs/research/gap-analysis-2026-06-12.md (finding 3), KYB-80.
|
|
34
|
+
*/
|
|
35
|
+
import type { FactCategory } from '@kybernesis/brain-contracts';
|
|
36
|
+
/** The fact attributes decay needs. A subset of the full Fact, so callers can
|
|
37
|
+
* pass a lightweight retrieval row. */
|
|
38
|
+
export interface DecayableFact {
|
|
39
|
+
confidence: number;
|
|
40
|
+
category: string;
|
|
41
|
+
/** ISO timestamp the fact was asserted. */
|
|
42
|
+
timestamp: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Per-category half-life in DAYS. Cortex's 8 fact categories mapped onto
|
|
46
|
+
* gbrain's per-kind half-lives (event 7d, commitment/preference 90d,
|
|
47
|
+
* belief/fact 365d), with two Cortex-specific calls:
|
|
48
|
+
* - `temporal` facts are explicitly time-bound → short (14d).
|
|
49
|
+
* - `opinion` sits between preference and belief (180d).
|
|
50
|
+
* Durable identity facts (biographical, relationship) and the catch-all
|
|
51
|
+
* (general) get the long 365d half-life.
|
|
52
|
+
*
|
|
53
|
+
* Keyed by `FactCategory` (the contract enum) ON PURPOSE: adding a 9th category
|
|
54
|
+
* to FactCategorySchema without giving it a half-life here is a COMPILE error,
|
|
55
|
+
* not a silent fall-through to the 365d default (which would be the least decay
|
|
56
|
+
* — the opposite of a safe default).
|
|
57
|
+
*/
|
|
58
|
+
export declare const FACT_HALF_LIVES_DAYS: Readonly<Record<FactCategory, number>>;
|
|
59
|
+
/** Half-life used for any category not in the table. */
|
|
60
|
+
export declare const DEFAULT_HALF_LIFE_DAYS = 365;
|
|
61
|
+
/** Half-life (days) for a fact category, falling back to the default for any
|
|
62
|
+
* string outside the enum (defensive — callers pass raw DB strings). */
|
|
63
|
+
export declare function halfLifeForCategory(category: string): number;
|
|
64
|
+
/**
|
|
65
|
+
* Effective (decayed) confidence of a fact at `now` (epoch ms).
|
|
66
|
+
*
|
|
67
|
+
* Returns 0 for non-positive/non-finite confidence. If the fact has no usable
|
|
68
|
+
* timestamp, or its category resolves to a non-positive/non-finite half-life,
|
|
69
|
+
* the confidence is returned undecayed (clamped) rather than thrown or turned
|
|
70
|
+
* into NaN — decay degrades gracefully to "no decay". Future-dated facts
|
|
71
|
+
* (age < 0) get no boost above their stored confidence.
|
|
72
|
+
*/
|
|
73
|
+
export declare function effectiveConfidence(fact: DecayableFact, now: number): number;
|
|
74
|
+
//# sourceMappingURL=fact-decay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fact-decay.d.ts","sourceRoot":"","sources":["../src/fact-decay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE;wCACwC;AACxC,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CASvE,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAQ1C;yEACyE;AACzE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAY5E"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-time fact-confidence decay (KYB-80).
|
|
3
|
+
*
|
|
4
|
+
* A pure scoring policy — NO schema change, NO cron. Mirrors gbrain's
|
|
5
|
+
* "Hot Memory" model: per-category exponential confidence decay, clamped to
|
|
6
|
+
* [0,1]. Recall multiplies this UNIFORMLY into every scored fact (see the
|
|
7
|
+
* single decay pass in fact-retrieval.ts/factFirstSearch) so that, all else
|
|
8
|
+
* equal, a fresh fact outranks a stale one and short-lived categories (events)
|
|
9
|
+
* fade far faster than durable ones (biographical). Applying it uniformly over
|
|
10
|
+
* all sources — not at one scoring site — is deliberate: direct, entity, scene
|
|
11
|
+
* and bridge scores share one ranking, so decaying only one source would
|
|
12
|
+
* distort their relative order.
|
|
13
|
+
*
|
|
14
|
+
* Formula: `effectiveConfidence = confidence × 2^(-age_days / halflife_days)`.
|
|
15
|
+
* NOTE this is a TRUE half-life — value is exactly 50% of `confidence` at one
|
|
16
|
+
* half-life. gbrain documents `exp(-age / halflife)`, but that form reaches
|
|
17
|
+
* 1/e (≈37%) at "halflife", i.e. its constant is really a time-constant τ, not
|
|
18
|
+
* a half-life. We keep the name honest: `FACT_HALF_LIVES_DAYS` means literal
|
|
19
|
+
* 50%-life. (Equivalent up to a ln2 rescale; values are tunable and gated on
|
|
20
|
+
* brain-bench before going default-on — see KYB-84 for the measurement path.)
|
|
21
|
+
*
|
|
22
|
+
* Age is taken from the fact's `timestamp` (assertion time, stored ISO-UTC).
|
|
23
|
+
* Reinforcement-aware decay (resetting the clock on `last_reinforced_at`) is a
|
|
24
|
+
* future extension: it needs that column threaded through the retrieval seam
|
|
25
|
+
* (RetrievalFactRow + the FTS/entity/scene/bridge queries), so it is NOT
|
|
26
|
+
* modelled here rather than advertised on a contract no caller can honor.
|
|
27
|
+
*
|
|
28
|
+
* Expiry (expires_at / is_latest) is handled upstream by the retrieval seam
|
|
29
|
+
* and the expiry sweep — intentionally NOT re-implemented here, so this stays
|
|
30
|
+
* a single-responsibility decay function.
|
|
31
|
+
*
|
|
32
|
+
* Ref: docs/research/competitors/gbrain-CONTEXT.md (Confidence decay),
|
|
33
|
+
* docs/research/gap-analysis-2026-06-12.md (finding 3), KYB-80.
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* Per-category half-life in DAYS. Cortex's 8 fact categories mapped onto
|
|
37
|
+
* gbrain's per-kind half-lives (event 7d, commitment/preference 90d,
|
|
38
|
+
* belief/fact 365d), with two Cortex-specific calls:
|
|
39
|
+
* - `temporal` facts are explicitly time-bound → short (14d).
|
|
40
|
+
* - `opinion` sits between preference and belief (180d).
|
|
41
|
+
* Durable identity facts (biographical, relationship) and the catch-all
|
|
42
|
+
* (general) get the long 365d half-life.
|
|
43
|
+
*
|
|
44
|
+
* Keyed by `FactCategory` (the contract enum) ON PURPOSE: adding a 9th category
|
|
45
|
+
* to FactCategorySchema without giving it a half-life here is a COMPILE error,
|
|
46
|
+
* not a silent fall-through to the 365d default (which would be the least decay
|
|
47
|
+
* — the opposite of a safe default).
|
|
48
|
+
*/
|
|
49
|
+
export const FACT_HALF_LIVES_DAYS = {
|
|
50
|
+
event: 7,
|
|
51
|
+
temporal: 14,
|
|
52
|
+
plan: 90,
|
|
53
|
+
preference: 90,
|
|
54
|
+
opinion: 180,
|
|
55
|
+
relationship: 365,
|
|
56
|
+
biographical: 365,
|
|
57
|
+
general: 365,
|
|
58
|
+
};
|
|
59
|
+
/** Half-life used for any category not in the table. */
|
|
60
|
+
export const DEFAULT_HALF_LIFE_DAYS = 365;
|
|
61
|
+
const MS_PER_DAY = 86_400_000;
|
|
62
|
+
function clamp01(x) {
|
|
63
|
+
return x < 0 ? 0 : x > 1 ? 1 : x;
|
|
64
|
+
}
|
|
65
|
+
/** Half-life (days) for a fact category, falling back to the default for any
|
|
66
|
+
* string outside the enum (defensive — callers pass raw DB strings). */
|
|
67
|
+
export function halfLifeForCategory(category) {
|
|
68
|
+
return FACT_HALF_LIVES_DAYS[category] ?? DEFAULT_HALF_LIFE_DAYS;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Effective (decayed) confidence of a fact at `now` (epoch ms).
|
|
72
|
+
*
|
|
73
|
+
* Returns 0 for non-positive/non-finite confidence. If the fact has no usable
|
|
74
|
+
* timestamp, or its category resolves to a non-positive/non-finite half-life,
|
|
75
|
+
* the confidence is returned undecayed (clamped) rather than thrown or turned
|
|
76
|
+
* into NaN — decay degrades gracefully to "no decay". Future-dated facts
|
|
77
|
+
* (age < 0) get no boost above their stored confidence.
|
|
78
|
+
*/
|
|
79
|
+
export function effectiveConfidence(fact, now) {
|
|
80
|
+
const c = fact.confidence;
|
|
81
|
+
if (!Number.isFinite(c) || c <= 0)
|
|
82
|
+
return 0;
|
|
83
|
+
const t = Date.parse(fact.timestamp);
|
|
84
|
+
if (!Number.isFinite(t))
|
|
85
|
+
return clamp01(c); // unparseable → no decay
|
|
86
|
+
const halflife = halfLifeForCategory(fact.category);
|
|
87
|
+
if (!(halflife > 0))
|
|
88
|
+
return clamp01(c); // guards 0 / negative / NaN half-life
|
|
89
|
+
const ageDays = Math.max(0, (now - t) / MS_PER_DAY); // clamp future-dated to 0
|
|
90
|
+
return clamp01(c * Math.pow(2, -ageDays / halflife)); // true half-life: 50% at age == halflife
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=fact-decay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fact-decay.js","sourceRoot":"","sources":["../src/fact-decay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAaH;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA2C;IAC1E,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE,EAAE;IACR,UAAU,EAAE,EAAE;IACd,OAAO,EAAE,GAAG;IACZ,YAAY,EAAE,GAAG;IACjB,YAAY,EAAE,GAAG;IACjB,OAAO,EAAE,GAAG;CACb,CAAC;AAEF,wDAAwD;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C,MAAM,UAAU,GAAG,UAAU,CAAC;AAE9B,SAAS,OAAO,CAAC,CAAS;IACxB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;yEACyE;AACzE,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,OAAO,oBAAoB,CAAC,QAAwB,CAAC,IAAI,sBAAsB,CAAC;AAClF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAmB,EAAE,GAAW;IAClE,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAE5C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB;IAErE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAsC;IAE9E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,0BAA0B;IAC/E,OAAO,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,yCAAyC;AACjG,CAAC"}
|
package/dist/fact-retrieval.d.ts
CHANGED
|
@@ -17,6 +17,11 @@ export interface FactSearchOptions {
|
|
|
17
17
|
tokenBudget?: number;
|
|
18
18
|
includeSupporting?: boolean;
|
|
19
19
|
maxSupportingPerFact?: number;
|
|
20
|
+
/** KYB-80: weight every fact's score by read-time decayed confidence
|
|
21
|
+
* (`effectiveConfidence`), applied uniformly across all sources before the
|
|
22
|
+
* final ranking. Default off — gated on brain-bench (KYB-84) before going
|
|
23
|
+
* default-on. */
|
|
24
|
+
useDecay?: boolean;
|
|
20
25
|
}
|
|
21
26
|
export interface FactSearchResult {
|
|
22
27
|
facts: Array<{
|
|
@@ -28,6 +33,11 @@ export interface FactSearchResult {
|
|
|
28
33
|
entities: string[];
|
|
29
34
|
score: number;
|
|
30
35
|
source: 'direct' | 'entity_expansion' | 'graph_expansion' | 'scene_expansion' | 'bridge';
|
|
36
|
+
/** Originating timeline event title (the relpath-bearing
|
|
37
|
+
* `[channel] File: <relpath>` string), when the fact's conversation
|
|
38
|
+
* resolves to one. Lets consumers expose the same scorable source as
|
|
39
|
+
* timeline retrieval. */
|
|
40
|
+
source_title?: string;
|
|
31
41
|
}>;
|
|
32
42
|
supporting_context: Array<{
|
|
33
43
|
content: string;
|
|
@@ -45,6 +55,10 @@ export interface FactSearchResult {
|
|
|
45
55
|
bridge_facts: number;
|
|
46
56
|
supporting_chunks: number;
|
|
47
57
|
pruned_items: number;
|
|
58
|
+
/** Returned facts with NO resolved source_title — i.e. unscorable by the
|
|
59
|
+
* source-hit bench (their title isn't a relpath). A high count flags a
|
|
60
|
+
* measurement blind spot, not necessarily bad retrieval. */
|
|
61
|
+
unscorable_facts: number;
|
|
48
62
|
};
|
|
49
63
|
}
|
|
50
64
|
export declare function factFirstSearch(t: TenantContext, query: string, options?: FactSearchOptions): Promise<FactSearchResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fact-retrieval.d.ts","sourceRoot":"","sources":["../src/fact-retrieval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"fact-retrieval.d.ts","sourceRoot":"","sources":["../src/fact-retrieval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAOjE,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;sBAGkB;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,QAAQ,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,QAAQ,CAAC;QACzF;;;kCAG0B;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IACH,kBAAkB,EAAE,KAAK,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC,CAAC;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;QACrB;;qEAE6D;QAC7D,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AA8QD,wBAAsB,eAAe,CACnC,CAAC,EAAE,aAAa,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAuK3B"}
|
package/dist/fact-retrieval.js
CHANGED
|
@@ -15,6 +15,7 @@ import { getStorage } from './storage.js';
|
|
|
15
15
|
import { ensureFactsTable, getFactsForEntity } from './fact-store.js';
|
|
16
16
|
import { semanticSearch } from './vectors.js';
|
|
17
17
|
import { sanitizeFtsQuery } from './fts-sanitizer.js';
|
|
18
|
+
import { effectiveConfidence } from './fact-decay.js';
|
|
18
19
|
// P4 tie-break: when two facts have the same score, prefer the more
|
|
19
20
|
// reliable source. Bridge (cross-cluster connector) > direct (exact-fact
|
|
20
21
|
// hit) > entity_expansion (1-hop expansion) > graph_expansion (multi-hop)
|
|
@@ -61,11 +62,14 @@ async function searchFactsDirect(t, query, limit) {
|
|
|
61
62
|
const matchedCount = ftsTokens.filter(w => contentLower.includes(w)).length;
|
|
62
63
|
const wordMatchRatio = ftsTokens.length > 0 ? matchedCount / ftsTokens.length : 0;
|
|
63
64
|
const score = 0.5 + wordMatchRatio * 0.5;
|
|
65
|
+
// `?? 0.7` (not `|| 0.7`): a fact legitimately stored at confidence 0
|
|
66
|
+
// must stay 0, not be resurrected to the default.
|
|
67
|
+
const confidence = row.confidence ?? 0.7;
|
|
64
68
|
results.push({
|
|
65
69
|
id: row.id,
|
|
66
70
|
content: row.content,
|
|
67
71
|
category: row.category || 'general',
|
|
68
|
-
confidence
|
|
72
|
+
confidence,
|
|
69
73
|
timestamp: row.timestamp,
|
|
70
74
|
entities: JSON.parse(row.entities_json || '[]'),
|
|
71
75
|
score,
|
|
@@ -235,7 +239,8 @@ function assembleContext(facts, supporting, tokenBudget) {
|
|
|
235
239
|
}
|
|
236
240
|
// ─── Main entry point ─────────────────────────────────────────────────────────
|
|
237
241
|
export async function factFirstSearch(t, query, options = {}) {
|
|
238
|
-
const { limit = 15, tokenBudget = 4000, includeSupporting = true, maxSupportingPerFact = 2, } = options;
|
|
242
|
+
const { limit = 15, tokenBudget = 4000, includeSupporting = true, maxSupportingPerFact = 2, useDecay = false, } = options;
|
|
243
|
+
const now = Date.now();
|
|
239
244
|
// Layer 1
|
|
240
245
|
const directFacts = await searchFactsDirect(t, query, limit * 2);
|
|
241
246
|
// Layer 2
|
|
@@ -266,7 +271,7 @@ export async function factFirstSearch(t, query, options = {}) {
|
|
|
266
271
|
sceneExpandedCount++;
|
|
267
272
|
allFacts.push({
|
|
268
273
|
id: n.id, content: n.content, category: n.category || 'general',
|
|
269
|
-
confidence: n.confidence
|
|
274
|
+
confidence: n.confidence ?? 0.7, timestamp: n.timestamp,
|
|
270
275
|
entities: JSON.parse(n.entities_json || '[]'),
|
|
271
276
|
score: topFact.score * 0.6, source: 'scene_expansion',
|
|
272
277
|
source_conversation_id: n.source_conversation_id ?? undefined,
|
|
@@ -302,9 +307,11 @@ export async function factFirstSearch(t, query, options = {}) {
|
|
|
302
307
|
allFacts.push({
|
|
303
308
|
id: candidate.id, content: candidate.content,
|
|
304
309
|
category: candidate.category || 'general',
|
|
305
|
-
confidence: candidate.confidence
|
|
310
|
+
confidence: candidate.confidence ?? 0.7, timestamp: candidate.timestamp,
|
|
306
311
|
entities: JSON.parse(candidate.entities_json || '[]'),
|
|
307
312
|
score: bridgeScore, source: 'bridge',
|
|
313
|
+
// carry provenance so bridge facts are scorable (source_title resolves)
|
|
314
|
+
source_conversation_id: candidate.source_conversation_id ?? undefined,
|
|
308
315
|
});
|
|
309
316
|
}
|
|
310
317
|
}
|
|
@@ -315,12 +322,48 @@ export async function factFirstSearch(t, query, options = {}) {
|
|
|
315
322
|
catch (err) {
|
|
316
323
|
console.warn('[brain-core/fact-retrieval] scene/bridge expansion failed', { err: String(err) });
|
|
317
324
|
}
|
|
325
|
+
// KYB-80: read-time confidence decay, applied UNIFORMLY over every scored
|
|
326
|
+
// source (direct / entity / graph / scene / bridge) on its own age before the
|
|
327
|
+
// final ranking. Doing it here — not at one scoring site — keeps the score
|
|
328
|
+
// formulas on a single comparable scale; decaying only the direct score would
|
|
329
|
+
// silently demote direct facts beneath undecayed expansion/bridge hits.
|
|
330
|
+
// NOTE this also scales the bridge's structural P6 boost (≥1.05) by the bridge
|
|
331
|
+
// fact's own confidence/age, so under decay a stale bridge can fall below a
|
|
332
|
+
// fresh entity hit. That's an intentional freshness re-rank, but exactly the
|
|
333
|
+
// kind of cross-source tradeoff KYB-84's brain-bench A/B must validate before
|
|
334
|
+
// this flag goes default-on. Default off until then.
|
|
335
|
+
if (useDecay) {
|
|
336
|
+
for (const f of allFacts) {
|
|
337
|
+
f.score *= effectiveConfidence({ confidence: f.confidence, category: f.category, timestamp: f.timestamp }, now);
|
|
338
|
+
}
|
|
339
|
+
// Re-rank after mutating scores so BOTH consumers below — supporting-context
|
|
340
|
+
// selection and the final topFacts slice — see the decayed order. Without
|
|
341
|
+
// this, supporting context is gathered for the pre-decay leaders.
|
|
342
|
+
allFacts.sort((a, b) => b.score - a.score);
|
|
343
|
+
}
|
|
318
344
|
// Layer 3: supporting context
|
|
319
345
|
const supporting = includeSupporting
|
|
320
346
|
? await findSupportingContext(t, allFacts.slice(0, limit), Math.min(limit, 10), maxSupportingPerFact)
|
|
321
347
|
: [];
|
|
322
348
|
// Layer 4: assemble context
|
|
323
349
|
const topFacts = allFacts.sort((a, b) => b.score - a.score).slice(0, limit);
|
|
350
|
+
// Provenance: resolve each top fact's conversation back to its originating
|
|
351
|
+
// timeline title (relpath-bearing) so callers can surface the same scorable
|
|
352
|
+
// source as timeline retrieval. Best-effort, batched over the returned set.
|
|
353
|
+
const convIds = [...new Set(topFacts.map(f => f.source_conversation_id).filter((c) => !!c))];
|
|
354
|
+
if (convIds.length > 0) {
|
|
355
|
+
try {
|
|
356
|
+
const titles = await getStorage().domain.factRetrieval.resolveSourceTitles(t, convIds);
|
|
357
|
+
for (const f of topFacts) {
|
|
358
|
+
const title = f.source_conversation_id ? titles[f.source_conversation_id] : undefined;
|
|
359
|
+
if (title)
|
|
360
|
+
f.source_title = title;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
catch (err) {
|
|
364
|
+
console.warn('[brain-core/fact-retrieval] source-title resolution failed', { err: String(err) });
|
|
365
|
+
}
|
|
366
|
+
}
|
|
324
367
|
const { assembled, tokenEstimate, pruned } = assembleContext(topFacts, supporting, tokenBudget);
|
|
325
368
|
const directCount = topFacts.filter(f => f.source === 'direct').length;
|
|
326
369
|
const expandedCount = topFacts.filter(f => f.source === 'entity_expansion').length;
|
|
@@ -343,6 +386,7 @@ export async function factFirstSearch(t, query, options = {}) {
|
|
|
343
386
|
bridge_facts: bridgeCount,
|
|
344
387
|
supporting_chunks: supporting.length,
|
|
345
388
|
pruned_items: pruned,
|
|
389
|
+
unscorable_facts: topFacts.filter(f => !f.source_title).length,
|
|
346
390
|
},
|
|
347
391
|
};
|
|
348
392
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fact-retrieval.js","sourceRoot":"","sources":["../src/fact-retrieval.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fact-retrieval.js","sourceRoot":"","sources":["../src/fact-retrieval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAkEtD,oEAAoE;AACpE,yEAAyE;AACzE,0EAA0E;AAC1E,mDAAmD;AACnD,MAAM,eAAe,GAAyC;IAC5D,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,gBAAgB,EAAE,CAAC;IACnB,eAAe,EAAE,CAAC;IAClB,eAAe,EAAE,CAAC;CACnB,CAAC;AAEF,iFAAiF;AAEjF,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,WAAW,CAAC,CAAS,EAAE,CAAS;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;IAChF,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACrD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,MAAM,EAAE,CAAC;IAAC,CAAC;IACxD,OAAO,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,gFAAgF;AAEhF,KAAK,UAAU,iBAAiB,CAAC,CAAgB,EAAE,KAAa,EAAE,KAAa;IAC7E,MAAM,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,4DAA4D;IAC5D,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAE1C,2EAA2E;IAC3E,MAAM,SAAS,GAAG,SAAS;QACzB,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACzF,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,SAAS,EAAE,CAAC;QACd,0EAA0E;QAC1E,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAClG,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/C,wEAAwE;YACxE,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC5E,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAClF,MAAM,KAAK,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,CAAC;YACzC,sEAAsE;YACtE,kDAAkD;YAClD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC;YAEzC,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS;gBACnC,UAAU;gBACV,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAa;gBAC3D,KAAK;gBACL,MAAM,EAAE,QAAQ;gBAChB,sBAAsB,EAAE,GAAG,CAAC,sBAAsB,IAAI,SAAS;aAChE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3F,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;YACjC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,SAAS;YAC7D,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;YACtC,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;gBAC/B,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;oBACpD,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;oBACzD,MAAM,GAAG,IAAI,CAAC;oBACd,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,CAAC;oBACL,OAAO,EAAE,EAAE,CAAC,OAAO;oBACnB,QAAQ,EAAE,SAAS;oBACnB,UAAU,EAAE,GAAG;oBACf,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBAC5D,QAAQ,EAAE,EAAE;oBACZ,KAAK,EAAE,aAAa;oBACpB,MAAM,EAAE,QAAQ;iBACjB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,oCAAoC,CAAC,CAAC;IAEhD,iCAAiC;IACjC,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;YAC/B,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;gBACtD,IAAI,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;oBAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC/D,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,WAAW;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,iFAAiF;AAEjF,uEAAuE;AACvE,4DAA4D;AAC5D,MAAM,oBAAoB,GAA2B,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;AAExF,KAAK,UAAU,gBAAgB,CAC7B,CAAgB,EAChB,KAAa,EACb,aAA2B,EAC3B,KAAa;IAEb,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,6EAA6E;QAC7E,4EAA4E;QAC5E,yBAAyB;QACzB,MAAM,WAAW,GAAG,MAAM,UAAU,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAEzG,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACzG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEpC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAE/F,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,eAAe,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAE1D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACtF,MAAM,OAAO,GAAG,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;YAC3D,MAAM,MAAM,GAAyB,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,CAAC;YAElG,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;gBAC7B,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;oBAAE,SAAS;gBAC1E,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;oBAAE,SAAS;gBAC7E,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG;oBAAE,SAAS;gBAE3F,QAAQ,CAAC,IAAI,CAAC;oBACZ,EAAE,EAAE,EAAE,CAAC,EAAE;oBACT,OAAO,EAAE,EAAE,CAAC,OAAO;oBACnB,QAAQ,EAAE,EAAE,CAAC,QAAQ,IAAI,SAAS;oBAClC,UAAU,EAAE,EAAE,CAAC,UAAU;oBACzB,SAAS,EAAE,EAAE,CAAC,SAAS;oBACvB,QAAQ,EAAE,EAAE,CAAC,QAAQ;oBACrB,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,IAAI,GAAG,CAAC,GAAG,OAAO;oBACnE,MAAM;oBACN,sBAAsB,EAAE,EAAE,CAAC,sBAAsB;iBAClD,CAAC,CAAC;YACL,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;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC;AAYD,KAAK,UAAU,qBAAqB,CAClC,CAAgB,EAChB,KAAmB,EACnB,QAAgB,EAChB,UAAkB;IAElB,MAAM,UAAU,GAAsB,EAAE,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9D,IAAI,CAAC,UAAU;gBAAE,SAAS;YAE1B,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,sBAAsB,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACxE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE;oBAAE,SAAS;gBAC7D,UAAU,CAAC,IAAI,CAAC;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,eAAe,EAAE,IAAI,CAAC,EAAE;oBACxB,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,uDAAuD,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,iFAAiF;AAEjF,SAAS,eAAe,CACtB,KAAmB,EACnB,UAA6B,EAC7B,WAAmB;IAEnB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAClC,MAAM,IAAI,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAEhD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,iBAAiB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1G,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,MAAM,GAAG,CAAC,GAAG,WAAW,GAAG,GAAG,EAAE,CAAC;YAAC,MAAM,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,IAAI,CAAC,CAAC;IACd,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,MAAM,IAAI,cAAc,CAAC,2BAA2B,CAAC,CAAC;QACtD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;YAChD,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,MAAM,GAAG,CAAC,GAAG,WAAW,EAAE,CAAC;gBAAC,MAAM,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YACrD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACtE,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,CAAgB,EAChB,KAAa,EACb,UAA6B,EAAE;IAE/B,MAAM,EACJ,KAAK,GAAG,EAAE,EACV,WAAW,GAAG,IAAI,EAClB,iBAAiB,GAAG,IAAI,EACxB,oBAAoB,GAAG,CAAC,EACxB,QAAQ,GAAG,KAAK,GACjB,GAAG,OAAO,CAAC;IACZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,UAAU;IACV,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAEjE,UAAU;IACV,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAE3E,mEAAmE;IACnE,oDAAoD;IACpD,sEAAsE;IACtE,MAAM,QAAQ,GAAiB,CAAC,GAAG,aAAa,EAAE,GAAG,WAAW,CAAC;SAC9D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAE9F,gDAAgD;IAChD,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC;QAC7C,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC3C,IAAI,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;YAC5C,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC;YACxE,CAAC;YACD,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,yBAAyB,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC5E,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;oBACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;wBACvB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBAClB,kBAAkB,EAAE,CAAC;wBACrB,QAAQ,CAAC,IAAI,CAAC;4BACZ,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,SAAS;4BAC/D,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS;4BACvD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,IAAI,IAAI,CAAa;4BACzD,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE,MAAM,EAAE,iBAAiB;4BACrD,sBAAsB,EAAE,CAAC,CAAC,sBAAsB,IAAI,SAAS;yBAC9D,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC;QAED,mEAAmE;QACnE,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;YACpF,IAAI,CAAC;gBACH,MAAM,gBAAgB,GAAG,MAAM,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/D,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,CAAC;oBACzC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;wBAAE,SAAS;oBACxC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC9B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,IAAI,IAAI,CAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CACpF,CAAC;oBACF,IAAI,aAAa,GAAG,CAAC,CAAC;oBACtB,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;wBAC5B,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;4BAAE,aAAa,EAAE,CAAC;oBACnE,CAAC;oBACD,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;wBACvB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;wBAC1B,WAAW,EAAE,CAAC;wBACd,sEAAsE;wBACtE,mEAAmE;wBACnE,8DAA8D;wBAC9D,kEAAkE;wBAClE,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;wBACjE,QAAQ,CAAC,IAAI,CAAC;4BACZ,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO;4BAC5C,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,SAAS;4BACzC,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS;4BACvE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,IAAI,IAAI,CAAa;4BACjE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ;4BACpC,wEAAwE;4BACxE,sBAAsB,EAAE,SAAS,CAAC,sBAAsB,IAAI,SAAS;yBACtE,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,2DAA2D,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,0EAA0E;IAC1E,8EAA8E;IAC9E,2EAA2E;IAC3E,8EAA8E;IAC9E,wEAAwE;IACxE,+EAA+E;IAC/E,4EAA4E;IAC5E,6EAA6E;IAC7E,8EAA8E;IAC9E,qDAAqD;IACrD,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,CAAC,CAAC,KAAK,IAAI,mBAAmB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;QAClH,CAAC;QACD,6EAA6E;QAC7E,0EAA0E;QAC1E,kEAAkE;QAClE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,8BAA8B;IAC9B,MAAM,UAAU,GAAG,iBAAiB;QAClC,CAAC,CAAC,MAAM,qBAAqB,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,oBAAoB,CAAC;QACrG,CAAC,CAAC,EAAE,CAAC;IAEP,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAE5E,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CACzB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5E,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACvF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACtF,IAAI,KAAK;oBAAE,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC;YACpC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,4DAA4D,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAEhG,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IACvE,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,kBAAkB,CAAC,CAAC,MAAM,CAAC;IACnF,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC,MAAM,CAAC;IAE/E,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,kBAAkB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACvC,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,eAAe,EAAE,CAAC,CAAC,eAAe;SACnC,CAAC,CAAC;QACH,iBAAiB,EAAE,SAAS;QAC5B,cAAc,EAAE,aAAa;QAC7B,KAAK,EAAE;YACL,YAAY,EAAE,WAAW;YACzB,cAAc,EAAE,aAAa;YAC7B,oBAAoB,EAAE,UAAU;YAChC,oBAAoB,EAAE,kBAAkB;YACxC,YAAY,EAAE,WAAW;YACzB,iBAAiB,EAAE,UAAU,CAAC,MAAM;YACpC,YAAY,EAAE,MAAM;YACpB,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM;SAC/D;KACF,CAAC;AACJ,CAAC"}
|
package/dist/hybrid-search.d.ts
CHANGED
|
@@ -13,37 +13,7 @@
|
|
|
13
13
|
* segment dedup — over rows the seam returns. No raw database handles here.
|
|
14
14
|
*/
|
|
15
15
|
import type { TenantContext } from '@kybernesis/brain-contracts';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
title: string;
|
|
19
|
-
content: string;
|
|
20
|
-
source_path: string;
|
|
21
|
-
timestamp: string;
|
|
22
|
-
type: string;
|
|
23
|
-
tier?: string;
|
|
24
|
-
priority?: number;
|
|
25
|
-
tags?: string[];
|
|
26
|
-
semanticScore: number;
|
|
27
|
-
metadataScore: number;
|
|
28
|
-
hybridScore: number;
|
|
29
|
-
matchType: 'semantic' | 'keyword' | 'both';
|
|
30
|
-
relatedMemories?: string[];
|
|
31
|
-
}
|
|
32
|
-
export interface HybridSearchOptions {
|
|
33
|
-
limit?: number;
|
|
34
|
-
tier?: 'hot' | 'warm' | 'archive' | 'all';
|
|
35
|
-
minPriority?: number;
|
|
36
|
-
includeRelated?: boolean;
|
|
37
|
-
semanticWeight?: number;
|
|
38
|
-
metadataWeight?: number;
|
|
39
|
-
type?: 'conversation' | 'idea' | 'file' | 'transcript' | 'note';
|
|
40
|
-
entity?: string;
|
|
41
|
-
entityMatch?: 'all' | 'any';
|
|
42
|
-
after?: Date;
|
|
43
|
-
before?: Date;
|
|
44
|
-
expandQuery?: boolean;
|
|
45
|
-
factFirst?: boolean;
|
|
46
|
-
rerank?: boolean;
|
|
47
|
-
}
|
|
16
|
+
import type { HybridSearchResult, HybridSearchOptions } from '@kybernesis/brain-contracts';
|
|
17
|
+
export type { HybridSearchResult, HybridSearchOptions };
|
|
48
18
|
export declare function hybridSearch(t: TenantContext, query: string, options?: HybridSearchOptions): Promise<HybridSearchResult[]>;
|
|
49
19
|
//# sourceMappingURL=hybrid-search.d.ts.map
|