feat: queryAggregate() + HAVING, plus aggregate backfill, traversal depth/via, extraction typing (BR-ADV-FEATURES-BUN)
New report APIs:
- brain.queryAggregate(name, params) returns the clean AggregateResult[] shape
({ groupKey, metrics, count }) directly, instead of the search-Result wrapper that
find({ aggregate }) returns.
- HAVING: find({ aggregate, having }) and queryAggregate filter groups by computed
metric values (e.g. revenue > 1000), complementing where (which filters group keys).
Evaluated per group: O(groups), independent of entity count.
Fixes (all reproducible on Node; surfaced under Cortex+Bun by Memory):
- Aggregate backfill-on-define: defining an aggregate over a store that already holds
matching entities returned []. It now backfills from existing entities on first query
(storage-agnostic via getNouns), so it works under durable backends that reopen
pre-populated. groupBy:['noun'] resolves to the entity type; find({ aggregate }) rows
expose groupKey/metrics/count at the top level.
- Multi-hop find({ connected: { depth, via } }) honors depth and via at every hop
(was 1-hop only, with verb filtering applied to hop 1 only); BFS bounded by limit.
- extractEntities no longer bleeds a neighbour's type indicator across candidates; each
candidate is typed by its own span. Also fixes the "Dr." title pattern.
Adds real-embedding regression tests; full unit suite green.
This commit is contained in:
parent
513186d951
commit
1a98e4276a
9 changed files with 481 additions and 96 deletions
|
|
@ -783,6 +783,13 @@ export interface AggregateQueryParams {
|
|||
name: string
|
||||
/** Filter aggregate groups by their key values */
|
||||
where?: Record<string, unknown>
|
||||
/**
|
||||
* Filter groups by their computed METRIC values (SQL HAVING). Same BFO operators as
|
||||
* `where`, but applied to the derived metric results plus `count`, e.g.
|
||||
* `{ revenue: { greaterThan: 1000 } }`. Evaluated per group (O(groups), independent of
|
||||
* entity count), before sort/pagination.
|
||||
*/
|
||||
having?: Record<string, unknown>
|
||||
/** Sort by metric name or group key field */
|
||||
orderBy?: string
|
||||
/** Sort direction */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue