@clay-design-system/kb 0.0.0-stage → 0.14.1
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/contract.d.ts +227 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +134 -0
- package/dist/contract.js.map +1 -0
- package/dist/core/memory.d.ts +20 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +23 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/model.d.ts +47 -0
- package/dist/core/model.d.ts.map +1 -0
- package/dist/core/model.js +21 -0
- package/dist/core/model.js.map +1 -0
- package/dist/core/prose.d.ts +40 -0
- package/dist/core/prose.d.ts.map +1 -0
- package/dist/core/prose.js +106 -0
- package/dist/core/prose.js.map +1 -0
- package/dist/core/query.d.ts +87 -0
- package/dist/core/query.d.ts.map +1 -0
- package/dist/core/query.js +637 -0
- package/dist/core/query.js.map +1 -0
- package/dist/core/rank.d.ts +123 -0
- package/dist/core/rank.d.ts.map +1 -0
- package/dist/core/rank.js +429 -0
- package/dist/core/rank.js.map +1 -0
- package/dist/core/route-email.d.ts +48 -0
- package/dist/core/route-email.d.ts.map +1 -0
- package/dist/core/route-email.js +172 -0
- package/dist/core/route-email.js.map +1 -0
- package/dist/core/route.d.ts +431 -0
- package/dist/core/route.d.ts.map +1 -0
- package/dist/core/route.js +1769 -0
- package/dist/core/route.js.map +1 -0
- package/dist/core/search.d.ts +64 -0
- package/dist/core/search.d.ts.map +1 -0
- package/dist/core/search.js +123 -0
- package/dist/core/search.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/snapshot-email.json +1 -0
- package/dist/snapshot-foundations.json +1 -0
- package/dist/snapshot-web.json +1 -0
- package/package.json +28 -3
- package/README.md +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/core/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The search ranking core, shared by `clay search` and @clay-design-system/kb (packages/kb/src/core/search.ts, in-memory
|
|
3
|
+
* index) and the registry query layer (kb/registry/query.ts, SQLite postings; kb/registry/rank.ts re-exports this file). One copy of the analyzer, the BM25F arithmetic and the priors, so the
|
|
4
|
+
* two can never rank differently (Clay Registry schema decision S4; gate: identical top-10 incl. scores).
|
|
5
|
+
*
|
|
6
|
+
* Parity rules (pinned by scripts/registry/registry.test.ts):
|
|
7
|
+
* 1. one analyzer: `terms()`, `STOP`, `SYNONYMS`, `stem()` live here only;
|
|
8
|
+
* 2. query terms first, then synonyms at weight 0.5 only for terms not already present; scores sum per term in that
|
|
9
|
+
* insertion order and per field in `FIELDS` order;
|
|
10
|
+
* 3. n, document frequency and average field lengths come from the unfiltered channel (web · email · all),
|
|
11
|
+
* background units included;
|
|
12
|
+
* 4. filters apply after scoring; a `kind` filter also switches off registry damping;
|
|
13
|
+
* 5. priors in a fixed order, round to 3 decimals, sort by score desc then id asc (byte order), cut to k.
|
|
14
|
+
*
|
|
15
|
+
* Fields and weights: id ×4 · summary ×3 · entities ×2.5 · topic ×2 · when/notWhen ×1 · body ×1.
|
|
16
|
+
* Tokens: lower-cased, stemmed, camelCase and kebab-case compounds kept whole AND split
|
|
17
|
+
* (`FeaturesSection` → featuressection, features, section; `tab-cards-carousel` → tabcardscarousel, tab, card, carousel).
|
|
18
|
+
* Priors: background units are excluded unless asked for; bulk registries (token / asset) are damped unless the query is
|
|
19
|
+
* about tokens / icons / logos; skill and page records (the tooling, not the design system) yield ×0.7 unless the query
|
|
20
|
+
* asks for a skill / workflow or names the record (N12); a section, layout, component or item named in the query boosts
|
|
21
|
+
* the units about it.
|
|
22
|
+
*/
|
|
23
|
+
export declare const FIELDS: readonly ["id", "summary", "entities", "topic", "when", "body"];
|
|
24
|
+
export type Field = (typeof FIELDS)[number];
|
|
25
|
+
export declare const WEIGHT: Record<Field, number>;
|
|
26
|
+
export declare const B: Record<Field, number>;
|
|
27
|
+
export declare const K1 = 1.2;
|
|
28
|
+
/** N12: the score factor for skill / page records a query does not ask for (Elior, 2026-10-18: 0.7). */
|
|
29
|
+
export declare const TOOL_PRIOR = 0.7;
|
|
30
|
+
/** Light stemmer: folds plurals and -ing/-ed (K4). Shared with the kb:lint prose checks. */
|
|
31
|
+
export declare function stem(w: string): string;
|
|
32
|
+
/** Query-side expansions (weight 0.5): the vocabulary agents use vs the one units use. */
|
|
33
|
+
export declare const SYNONYMS: Record<string, string[]>;
|
|
34
|
+
/**
|
|
35
|
+
* An item count the query asks a layout to hold ("seven tabs", "9 cards", "3 items"): K5 (K4 QA note 1) — item-count
|
|
36
|
+
* fit breaks ties between sibling layouts, as the route's candidate table already does.
|
|
37
|
+
*/
|
|
38
|
+
export declare function queryCount(q: string): number | null;
|
|
39
|
+
/** Split text into search terms. */
|
|
40
|
+
export declare function terms(text: string): string[];
|
|
41
|
+
/** The text of each BM25F field of a unit / record (entities contribute their names, not their kinds). */
|
|
42
|
+
export declare function fieldText(u: {
|
|
43
|
+
id: string;
|
|
44
|
+
summary: string;
|
|
45
|
+
entities: string[];
|
|
46
|
+
topic: string;
|
|
47
|
+
when?: string | null;
|
|
48
|
+
notWhen?: string | null;
|
|
49
|
+
body: string;
|
|
50
|
+
}): Record<Field, string>;
|
|
51
|
+
/** Query term → weight: query terms at 1, then synonym terms at 0.5 when not already present (insertion order matters). */
|
|
52
|
+
export declare function queryTerms(query: string): Map<string, number>;
|
|
53
|
+
export interface SearchOptions {
|
|
54
|
+
k?: number;
|
|
55
|
+
kind?: string[];
|
|
56
|
+
scope?: string[];
|
|
57
|
+
stage?: string[];
|
|
58
|
+
mode?: 'A' | 'B';
|
|
59
|
+
/** Entity ids (`section:FeaturesSection`); a unit matches when it carries any of them. */
|
|
60
|
+
entity?: string[];
|
|
61
|
+
authority?: string[];
|
|
62
|
+
includeBackground?: boolean;
|
|
63
|
+
}
|
|
64
|
+
export interface SearchHit {
|
|
65
|
+
id: string;
|
|
66
|
+
score: number;
|
|
67
|
+
kind: string;
|
|
68
|
+
authority: string;
|
|
69
|
+
summary: string;
|
|
70
|
+
/** K11: near-duplicate asset units folded into this hit (file-level variants of one registry entry). */
|
|
71
|
+
aliases?: string[];
|
|
72
|
+
}
|
|
73
|
+
/** A search's channel (K7): the corpus its IDF and field-length averages come from. */
|
|
74
|
+
export type Channel = 'web' | 'email' | 'all';
|
|
75
|
+
export declare function channelOf(scope?: string[]): Channel;
|
|
76
|
+
/** Scopes a search covers when the caller names none (email units need `scope: ['email']` or `['all']`). */
|
|
77
|
+
export declare const DEFAULT_SCOPES: string[];
|
|
78
|
+
export interface ChannelStats {
|
|
79
|
+
n: number;
|
|
80
|
+
avg: Record<Field, number>;
|
|
81
|
+
}
|
|
82
|
+
/** What ranking reads of a unit / record. */
|
|
83
|
+
export interface Rankable {
|
|
84
|
+
id: string;
|
|
85
|
+
kind: string;
|
|
86
|
+
/** Finer class (asset → icon, …): a `kind` filter matches it too (`kind: ['icon']`). */
|
|
87
|
+
subkind?: string | null;
|
|
88
|
+
scope: string;
|
|
89
|
+
authority: string;
|
|
90
|
+
status: string;
|
|
91
|
+
summary: string;
|
|
92
|
+
stages: string[];
|
|
93
|
+
modes?: string[] | null;
|
|
94
|
+
entities: string[];
|
|
95
|
+
facts?: unknown;
|
|
96
|
+
}
|
|
97
|
+
export declare function passes(u: Rankable, o: SearchOptions): boolean;
|
|
98
|
+
/** One posting: document index and term frequency per field (FIELDS order). */
|
|
99
|
+
export type Posting = [doc: number, tf: number[]];
|
|
100
|
+
/**
|
|
101
|
+
* BM25F raw scores. `postingsFor(term)` returns the term's postings already restricted to the channel; `len(doc)` the
|
|
102
|
+
* doc's analyzed field lengths. Returns doc → raw score, accumulated in query-term order.
|
|
103
|
+
*/
|
|
104
|
+
export declare function bm25f(qTerms: Map<string, number>, stats: ChannelStats, postingsFor: (term: string) => Posting[], len: (doc: number) => Record<Field, number>): Map<number, number>;
|
|
105
|
+
/** Entity ids named in a query: section/component/item names, layout values (`tabs-stroke`). */
|
|
106
|
+
export declare function queryEntities(entityNames: Map<string, string[]>, q: string): string[];
|
|
107
|
+
/** The entity kinds whose names feed query boosts, and the name a boost matches (last segment, lower-case). */
|
|
108
|
+
export declare function entityNameOf(e: string): string | null;
|
|
109
|
+
/**
|
|
110
|
+
* Apply filters and priors to raw scores, then sort, fold asset twins and cut (parity steps 4 and 5 in the header).
|
|
111
|
+
* `bodyOf(id)` returns an asset record's body (the K11 fold reads its registry keys); both the file index and the registry
|
|
112
|
+
* pass one, so the two paths fold identically.
|
|
113
|
+
*/
|
|
114
|
+
export declare function rank(query: string, scored: Iterable<[Rankable, number]>, opts: SearchOptions, entityNames: Map<string, string[]>, bodyOf?: (id: string) => string | undefined): SearchHit[];
|
|
115
|
+
/**
|
|
116
|
+
* K11: one hit per asset. The KB carries a registry-level unit per logo (`asset.logo.integration.zoom`, every exact key
|
|
117
|
+
* listed) and a file-level unit per SVG (`asset.integration-logo.zoom`, `asset.customer-logo.adevinta-black`) whose
|
|
118
|
+
* `Use:` key is one of those keys. When both match, the file-level hit is folded into the registry hit (named as an
|
|
119
|
+
* alias), so a multi-brand query is not crowded out by near-duplicates. The registry hit keeps the better score.
|
|
120
|
+
* `hits` is sorted; `bodyOf(id)` is only asked for asset hits.
|
|
121
|
+
*/
|
|
122
|
+
export declare function foldAssetAliases(hits: SearchHit[], bodyOf: (id: string) => string | undefined): SearchHit[];
|
|
123
|
+
//# sourceMappingURL=rank.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rank.d.ts","sourceRoot":"","sources":["../../src/core/rank.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The search ranking core, shared by `clay search` and @clay-design-system/kb (packages/kb/src/core/search.ts, in-memory
|
|
3
|
+
* index) and the registry query layer (kb/registry/query.ts, SQLite postings; kb/registry/rank.ts re-exports this file). One copy of the analyzer, the BM25F arithmetic and the priors, so the
|
|
4
|
+
* two can never rank differently (Clay Registry schema decision S4; gate: identical top-10 incl. scores).
|
|
5
|
+
*
|
|
6
|
+
* Parity rules (pinned by scripts/registry/registry.test.ts):
|
|
7
|
+
* 1. one analyzer: `terms()`, `STOP`, `SYNONYMS`, `stem()` live here only;
|
|
8
|
+
* 2. query terms first, then synonyms at weight 0.5 only for terms not already present; scores sum per term in that
|
|
9
|
+
* insertion order and per field in `FIELDS` order;
|
|
10
|
+
* 3. n, document frequency and average field lengths come from the unfiltered channel (web · email · all),
|
|
11
|
+
* background units included;
|
|
12
|
+
* 4. filters apply after scoring; a `kind` filter also switches off registry damping;
|
|
13
|
+
* 5. priors in a fixed order, round to 3 decimals, sort by score desc then id asc (byte order), cut to k.
|
|
14
|
+
*
|
|
15
|
+
* Fields and weights: id ×4 · summary ×3 · entities ×2.5 · topic ×2 · when/notWhen ×1 · body ×1.
|
|
16
|
+
* Tokens: lower-cased, stemmed, camelCase and kebab-case compounds kept whole AND split
|
|
17
|
+
* (`FeaturesSection` → featuressection, features, section; `tab-cards-carousel` → tabcardscarousel, tab, card, carousel).
|
|
18
|
+
* Priors: background units are excluded unless asked for; bulk registries (token / asset) are damped unless the query is
|
|
19
|
+
* about tokens / icons / logos; skill and page records (the tooling, not the design system) yield ×0.7 unless the query
|
|
20
|
+
* asks for a skill / workflow or names the record (N12); a section, layout, component or item named in the query boosts
|
|
21
|
+
* the units about it.
|
|
22
|
+
*/
|
|
23
|
+
export const FIELDS = ['id', 'summary', 'entities', 'topic', 'when', 'body'];
|
|
24
|
+
export const WEIGHT = {
|
|
25
|
+
id: 4,
|
|
26
|
+
summary: 3,
|
|
27
|
+
entities: 2.5,
|
|
28
|
+
topic: 2,
|
|
29
|
+
when: 1,
|
|
30
|
+
body: 1,
|
|
31
|
+
};
|
|
32
|
+
export const B = {
|
|
33
|
+
id: 0.3,
|
|
34
|
+
summary: 0.5,
|
|
35
|
+
entities: 0.3,
|
|
36
|
+
topic: 0.3,
|
|
37
|
+
when: 0.6,
|
|
38
|
+
body: 0.75,
|
|
39
|
+
};
|
|
40
|
+
export const K1 = 1.2;
|
|
41
|
+
/** N12: the score factor for skill / page records a query does not ask for (Elior, 2026-10-18: 0.7). */
|
|
42
|
+
export const TOOL_PRIOR = 0.7;
|
|
43
|
+
/* ── Analyzer ──────────────────────────────────────────────────────────────────────────────── */
|
|
44
|
+
/** Light stemmer: folds plurals and -ing/-ed (K4). Shared with the kb:lint prose checks. */
|
|
45
|
+
export function stem(w) {
|
|
46
|
+
if (/^\d/.test(w))
|
|
47
|
+
return w;
|
|
48
|
+
let s = w;
|
|
49
|
+
if (s.length > 4 && s.endsWith('ies'))
|
|
50
|
+
s = `${s.slice(0, -3)}y`;
|
|
51
|
+
else if (s.length > 3 &&
|
|
52
|
+
s.endsWith('s') &&
|
|
53
|
+
!s.endsWith('ss') &&
|
|
54
|
+
!s.endsWith('us') &&
|
|
55
|
+
!s.endsWith('is'))
|
|
56
|
+
s = s.slice(0, -1);
|
|
57
|
+
if (s.length > 5 && s.endsWith('ing'))
|
|
58
|
+
s = restoreE(s.slice(0, -3));
|
|
59
|
+
else if (s.length > 4 && s.endsWith('ed'))
|
|
60
|
+
s = s.slice(0, -2);
|
|
61
|
+
return s;
|
|
62
|
+
}
|
|
63
|
+
/** "naming" → "nam" → "name" (so it meets "names" → "name"); "running" → "runn" → "run". K4. */
|
|
64
|
+
function restoreE(s) {
|
|
65
|
+
if (/([b-df-hj-np-tv-z])\1$/.test(s) && !/(?:ll|ss|zz)$/.test(s))
|
|
66
|
+
return s.slice(0, -1);
|
|
67
|
+
if (s.length <= 4 && /[b-df-hj-np-tv-z][aeiou][b-df-hj-np-tvz]$/.test(s))
|
|
68
|
+
return `${s}e`;
|
|
69
|
+
return s;
|
|
70
|
+
}
|
|
71
|
+
const STOP = new Set(('a an and are as at be been but by can could did do does for from had has have how i if in into is it its me my of on or our ' +
|
|
72
|
+
'should so than that the their them then there these they this those to too was we were what when where which while who why will ' +
|
|
73
|
+
'with would you your use used using get page pages need needs want any all also just one two only very about there here does').split(' '));
|
|
74
|
+
/** Query-side expansions (weight 0.5): the vocabulary agents use vs the one units use. */
|
|
75
|
+
export const SYNONYMS = {
|
|
76
|
+
tap: ['touch', 'target'],
|
|
77
|
+
touch: ['tap', 'target'],
|
|
78
|
+
cta: ['button', 'action'],
|
|
79
|
+
button: ['cta'],
|
|
80
|
+
gray: ['grey'],
|
|
81
|
+
muted: ['grey', 'tint', 'theme'],
|
|
82
|
+
hero: ['headersection'],
|
|
83
|
+
faq: ['faqsection'],
|
|
84
|
+
testimonial: ['testimonialssection', 'quote'],
|
|
85
|
+
quote: ['testimonial'],
|
|
86
|
+
logos: ['logo', 'customerlogosection'],
|
|
87
|
+
marquee: ['logo', 'customerlogosection', 'autoscroll'],
|
|
88
|
+
widow: ['orphan', 'balance', 'nbsp'],
|
|
89
|
+
contrast: ['wcag', 'aa'],
|
|
90
|
+
breakpoint: ['mq', 'media'],
|
|
91
|
+
video: ['mediaslot', 'autoplay'],
|
|
92
|
+
limit: ['char', 'chars'],
|
|
93
|
+
chars: ['limit'],
|
|
94
|
+
characters: ['char', 'limit'],
|
|
95
|
+
stat: ['brand_stats', 'number'],
|
|
96
|
+
stats: ['brand_stats', 'number'],
|
|
97
|
+
padding: ['spacing'],
|
|
98
|
+
colour: ['color'],
|
|
99
|
+
pmm: ['mode-b', 'modeb'],
|
|
100
|
+
mode: ['mode-b'],
|
|
101
|
+
asset: ['media'],
|
|
102
|
+
image: ['media', 'mediaslot'],
|
|
103
|
+
screenshot: ['media', 'mediaslot'],
|
|
104
|
+
placeholder: ['placeholderlabel', 'mediaslot'],
|
|
105
|
+
nav: ['navbarmenu', 'navbar'],
|
|
106
|
+
navbar: ['navbarmenu'],
|
|
107
|
+
footer: ['footersection'],
|
|
108
|
+
pill: ['tab'],
|
|
109
|
+
accordion: ['accordion-media-right', 'numbered-accordion'],
|
|
110
|
+
'two-column': ['split', 'side'],
|
|
111
|
+
// K5: brief vocabulary (the bench briefs write "Eyebrow:", "Sub-heading:", "Lead:") vs the prop names units use.
|
|
112
|
+
eyebrow: ['topic', 'minititle', 'topiclabel', 'sectiontopic', 'tagline'],
|
|
113
|
+
subheadline: ['description', 'subheading'],
|
|
114
|
+
subheading: ['description', 'subheadline'],
|
|
115
|
+
subtitle: ['description'],
|
|
116
|
+
body: ['description'],
|
|
117
|
+
tinted: ['muted', 'tint'],
|
|
118
|
+
shortest: ['min', 'minimum'],
|
|
119
|
+
longest: ['max', 'maximum'],
|
|
120
|
+
marketer: ['pmm'],
|
|
121
|
+
letterboxed: ['contain'],
|
|
122
|
+
'side-by-side': ['split'],
|
|
123
|
+
};
|
|
124
|
+
const COUNT_WORDS = {
|
|
125
|
+
two: 2,
|
|
126
|
+
three: 3,
|
|
127
|
+
four: 4,
|
|
128
|
+
five: 5,
|
|
129
|
+
six: 6,
|
|
130
|
+
seven: 7,
|
|
131
|
+
eight: 8,
|
|
132
|
+
nine: 9,
|
|
133
|
+
ten: 10,
|
|
134
|
+
eleven: 11,
|
|
135
|
+
twelve: 12,
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* An item count the query asks a layout to hold ("seven tabs", "9 cards", "3 items"): K5 (K4 QA note 1) — item-count
|
|
139
|
+
* fit breaks ties between sibling layouts, as the route's candidate table already does.
|
|
140
|
+
*/
|
|
141
|
+
export function queryCount(q) {
|
|
142
|
+
const m = /\b(\d{1,2}|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve)\s+(?:[a-z-]+\s+){0,2}?(?:tabs?|items?|cards?|entries|steps?|logos?|features?|quotes?|stats?|pillars?|columns?)\b/i.exec(q);
|
|
143
|
+
if (!m)
|
|
144
|
+
return null;
|
|
145
|
+
const n = /^\d+$/.test(m[1]) ? Number(m[1]) : COUNT_WORDS[m[1].toLowerCase()];
|
|
146
|
+
return n >= 1 && n <= 24 ? n : null;
|
|
147
|
+
}
|
|
148
|
+
const REGISTRY_INTENT = /\b(?:tokens?|var\(|--clay|hex|colou?r value|icons?|logos?|keys?|illustrations?|agent images?|shapes?|svg)\b/i;
|
|
149
|
+
/** Split text into search terms. */
|
|
150
|
+
export function terms(text) {
|
|
151
|
+
const out = [];
|
|
152
|
+
const t = text.replace(/`/g, ' ');
|
|
153
|
+
for (const raw of t.split(/[^A-Za-z0-9_\-.:]+/)) {
|
|
154
|
+
if (!raw)
|
|
155
|
+
continue;
|
|
156
|
+
for (const piece of raw.split(/[.:]+/)) {
|
|
157
|
+
if (!piece)
|
|
158
|
+
continue;
|
|
159
|
+
const lower = piece.toLowerCase().replace(/^-+|-+$/g, '');
|
|
160
|
+
if (!lower)
|
|
161
|
+
continue;
|
|
162
|
+
const parts = lower.split(/[-_]+/).filter(Boolean);
|
|
163
|
+
// camelCase parts (FeaturesSection → features, section)
|
|
164
|
+
const camel = piece
|
|
165
|
+
.replace(/^-+/, '')
|
|
166
|
+
.split(/[-_]+/)
|
|
167
|
+
.flatMap((p) => p.split(/(?<=[a-z0-9])(?=[A-Z])/));
|
|
168
|
+
const add = (w) => {
|
|
169
|
+
if (w.length < 2 && !/^\d$/.test(w))
|
|
170
|
+
return;
|
|
171
|
+
if (STOP.has(w))
|
|
172
|
+
return;
|
|
173
|
+
out.push(stem(w));
|
|
174
|
+
};
|
|
175
|
+
if (parts.length > 1)
|
|
176
|
+
out.push(parts.join(''));
|
|
177
|
+
for (const p of new Set([...parts, ...camel.map((c) => c.toLowerCase())]))
|
|
178
|
+
add(p);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return out;
|
|
182
|
+
}
|
|
183
|
+
/** The text of each BM25F field of a unit / record (entities contribute their names, not their kinds). */
|
|
184
|
+
export function fieldText(u) {
|
|
185
|
+
return {
|
|
186
|
+
id: u.id,
|
|
187
|
+
summary: u.summary,
|
|
188
|
+
entities: u.entities.map((e) => e.split(':').slice(1).join(' ')).join(' '),
|
|
189
|
+
topic: u.topic,
|
|
190
|
+
when: `${u.when ?? ''} ${u.notWhen ?? ''}`,
|
|
191
|
+
body: u.body,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
/** Query term → weight: query terms at 1, then synonym terms at 0.5 when not already present (insertion order matters). */
|
|
195
|
+
export function queryTerms(query) {
|
|
196
|
+
const qTerms = new Map();
|
|
197
|
+
for (const t of terms(query))
|
|
198
|
+
qTerms.set(t, Math.max(qTerms.get(t) ?? 0, 1));
|
|
199
|
+
for (const raw of query.toLowerCase().split(/[^a-z0-9-]+/)) {
|
|
200
|
+
for (const s of SYNONYMS[raw] ?? [])
|
|
201
|
+
for (const t of terms(s))
|
|
202
|
+
if (!qTerms.has(t))
|
|
203
|
+
qTerms.set(t, 0.5);
|
|
204
|
+
}
|
|
205
|
+
return qTerms;
|
|
206
|
+
}
|
|
207
|
+
export function channelOf(scope) {
|
|
208
|
+
if (!scope?.length)
|
|
209
|
+
return 'web';
|
|
210
|
+
if (scope.includes('all') ||
|
|
211
|
+
(scope.includes('email') && scope.some((x) => x === 'web' || x === 'ds')))
|
|
212
|
+
return 'all';
|
|
213
|
+
return scope.includes('email') ? 'email' : 'web';
|
|
214
|
+
}
|
|
215
|
+
/** Scopes a search covers when the caller names none (email units need `scope: ['email']` or `['all']`). */
|
|
216
|
+
export const DEFAULT_SCOPES = ['web', 'ds', 'shared'];
|
|
217
|
+
export function passes(u, o) {
|
|
218
|
+
if (u.authority === 'background' && !o.includeBackground && !o.authority?.includes('background'))
|
|
219
|
+
return false;
|
|
220
|
+
if (o.kind?.length && !o.kind.includes(u.kind) && !(u.subkind && o.kind.includes(u.subkind)))
|
|
221
|
+
return false;
|
|
222
|
+
// K7: email is a separate channel — a search without a scope covers web + ds + shared; `scope: ['email']` (the email
|
|
223
|
+
// routes, `clay search --scope email`) or `['all']` opts in.
|
|
224
|
+
const scopes = o.scope?.length ? o.scope : DEFAULT_SCOPES;
|
|
225
|
+
if (!scopes.includes('all') && !scopes.includes(u.scope))
|
|
226
|
+
return false;
|
|
227
|
+
if (o.authority?.length && !o.authority.includes(u.authority))
|
|
228
|
+
return false;
|
|
229
|
+
if (o.stage?.length && !u.stages.some((s) => o.stage.includes(s)))
|
|
230
|
+
return false;
|
|
231
|
+
if (o.mode && u.modes && !u.modes.includes(o.mode))
|
|
232
|
+
return false;
|
|
233
|
+
if (o.entity?.length && !u.entities.some((e) => o.entity.includes(e)))
|
|
234
|
+
return false;
|
|
235
|
+
return true;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* BM25F raw scores. `postingsFor(term)` returns the term's postings already restricted to the channel; `len(doc)` the
|
|
239
|
+
* doc's analyzed field lengths. Returns doc → raw score, accumulated in query-term order.
|
|
240
|
+
*/
|
|
241
|
+
export function bm25f(qTerms, stats, postingsFor, len) {
|
|
242
|
+
const scores = new Map();
|
|
243
|
+
for (const [t, qw] of qTerms) {
|
|
244
|
+
const p = postingsFor(t);
|
|
245
|
+
if (!p.length)
|
|
246
|
+
continue;
|
|
247
|
+
const idf = Math.log(1 + (stats.n - p.length + 0.5) / (p.length + 0.5));
|
|
248
|
+
for (const [di, row] of p) {
|
|
249
|
+
const l = len(di);
|
|
250
|
+
let tf = 0;
|
|
251
|
+
FIELDS.forEach((f, fi) => {
|
|
252
|
+
if (!row[fi])
|
|
253
|
+
return;
|
|
254
|
+
tf += (WEIGHT[f] * row[fi]) / (1 - B[f] + (B[f] * l[f]) / stats.avg[f]);
|
|
255
|
+
});
|
|
256
|
+
scores.set(di, (scores.get(di) ?? 0) + qw * idf * (tf / (K1 + tf)));
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return scores;
|
|
260
|
+
}
|
|
261
|
+
/** Entity ids named in a query: section/component/item names, layout values (`tabs-stroke`). */
|
|
262
|
+
export function queryEntities(entityNames, q) {
|
|
263
|
+
const out = new Set();
|
|
264
|
+
const words = q.split(/[^A-Za-z0-9-]+/).filter(Boolean);
|
|
265
|
+
for (const raw of words) {
|
|
266
|
+
if (raw.length < 3)
|
|
267
|
+
continue;
|
|
268
|
+
for (const e of entityNames.get(raw.toLowerCase()) ?? [])
|
|
269
|
+
out.add(e);
|
|
270
|
+
}
|
|
271
|
+
// Names written as words: "feature item" → FeatureItem, "trust stat card" → TrustStatCard (K5).
|
|
272
|
+
for (let i = 0; i < words.length; i++) {
|
|
273
|
+
for (const n of [2, 3]) {
|
|
274
|
+
if (i + n > words.length)
|
|
275
|
+
continue;
|
|
276
|
+
const joined = words
|
|
277
|
+
.slice(i, i + n)
|
|
278
|
+
.join('')
|
|
279
|
+
.toLowerCase();
|
|
280
|
+
for (const e of entityNames.get(joined) ?? [])
|
|
281
|
+
out.add(e);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return [...out];
|
|
285
|
+
}
|
|
286
|
+
/** The entity kinds whose names feed query boosts, and the name a boost matches (last segment, lower-case). */
|
|
287
|
+
export function entityNameOf(e) {
|
|
288
|
+
const [kind, ...rest] = e.split(':');
|
|
289
|
+
if (!['section', 'component', 'layout', 'item'].includes(kind))
|
|
290
|
+
return null;
|
|
291
|
+
return rest[rest.length - 1].toLowerCase();
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Apply filters and priors to raw scores, then sort, fold asset twins and cut (parity steps 4 and 5 in the header).
|
|
295
|
+
* `bodyOf(id)` returns an asset record's body (the K11 fold reads its registry keys); both the file index and the registry
|
|
296
|
+
* pass one, so the two paths fold identically.
|
|
297
|
+
*/
|
|
298
|
+
export function rank(query, scored, opts, entityNames, bodyOf) {
|
|
299
|
+
const k = opts.k ?? 10;
|
|
300
|
+
const registryIntent = REGISTRY_INTENT.test(query);
|
|
301
|
+
const named = new Set(queryEntities(entityNames, query));
|
|
302
|
+
const count = queryCount(query);
|
|
303
|
+
const tokenIntent = /\btokens?\b|--clay|var\(/i.test(query);
|
|
304
|
+
// N12: skill and page records describe the tooling around Clay, not the design system; they yield unless the query asks
|
|
305
|
+
// for a skill / workflow or names the record itself (`ds-convert`, `AllSections`).
|
|
306
|
+
const toolIntent = /\bskills?\b|\bslash commands?\b|\bworkflows?\b|\bpipelines?\b/i.test(query);
|
|
307
|
+
const qWords = ` ${query.toLowerCase().replace(/[^a-z0-9-]+/g, ' ')} `;
|
|
308
|
+
// "how many … fit / hold": a capacity question about a layout. "how long / shortest / max chars": a copy-limit question
|
|
309
|
+
// (unless it asks what to do about it — "should I", "block", "flag": that is a policy question).
|
|
310
|
+
// "should I … / which wins / block or warn": a decision, answered by a policy (or a procedure), not a fact unit.
|
|
311
|
+
const decisionIntent = /\bshould i\b|\bwhich (?:rule|one) wins\b|\bwins?\b|\bblock or\b|\bor (?:just )?(?:flag|warn)\b/i.test(query);
|
|
312
|
+
// "take" is a capacity question only with a count ("can X take nine tabs"); "what does `options` take" asks for a
|
|
313
|
+
// prop's shape, which a layout unit doesn't answer (K11 C1).
|
|
314
|
+
const capacityIntent = /\bhow many\b|\b(?:fit|fits|hold|holds)\b/i.test(query) ||
|
|
315
|
+
(/\btakes?\b/i.test(query) && count != null);
|
|
316
|
+
const limitIntent = /\b(?:how long|shortest|longest|minimum|maximum|length|max|min|chars?|characters?)\b/i.test(query) && !/\bshould\b|\bblock\b|\bflag\b|\bwarn\b|\bwins?\b/i.test(query);
|
|
317
|
+
const qSet = new Set(queryTerms(query).keys());
|
|
318
|
+
const hits = [];
|
|
319
|
+
for (const [u, raw] of scored) {
|
|
320
|
+
if (!passes(u, opts))
|
|
321
|
+
continue;
|
|
322
|
+
let s = raw;
|
|
323
|
+
if (!registryIntent && !opts.kind?.length && (u.kind === 'token' || u.kind === 'asset'))
|
|
324
|
+
s *= 0.4;
|
|
325
|
+
// A query that literally asks for a token wants a token unit, not the prose about colour tiers.
|
|
326
|
+
if (u.kind === 'token' && tokenIntent)
|
|
327
|
+
s *= 2;
|
|
328
|
+
if ((u.kind === 'skill' || u.kind === 'page') &&
|
|
329
|
+
!opts.kind?.length &&
|
|
330
|
+
!toolIntent &&
|
|
331
|
+
!qWords.includes(` ${u.id.slice(u.id.indexOf('.') + 1).toLowerCase()} `))
|
|
332
|
+
s *= TOOL_PRIOR;
|
|
333
|
+
if (u.authority === 'guidance')
|
|
334
|
+
s *= 0.85;
|
|
335
|
+
if (u.status === 'deprecated')
|
|
336
|
+
s *= 0.5;
|
|
337
|
+
if (capacityIntent && u.kind === 'layout')
|
|
338
|
+
s *= 1.3;
|
|
339
|
+
if (decisionIntent && (u.kind === 'policy' || u.kind === 'procedure'))
|
|
340
|
+
s *= 1.4;
|
|
341
|
+
if (limitIntent && (u.kind === 'limit' || u.kind === 'item-type'))
|
|
342
|
+
s *= 1.4;
|
|
343
|
+
if (count != null && u.kind === 'layout') {
|
|
344
|
+
const r = u.facts?.items;
|
|
345
|
+
if (r && (r.min != null || r.max != null))
|
|
346
|
+
s *= (r.max == null || count <= r.max) && (r.min == null || count >= r.min) ? 1.35 : 0.85;
|
|
347
|
+
}
|
|
348
|
+
// Generic over specific: a token whose name carries qualifiers the query never mentions (`--clay-web-features-section-card-radius`
|
|
349
|
+
// for "card radius token") yields to the plain one (`--clay-card-radius`).
|
|
350
|
+
if (u.kind === 'token') {
|
|
351
|
+
const extra = new Set(terms(u.id.replace(/^token\./, '')).filter((t) => !qSet.has(t) && t !== 'clay'));
|
|
352
|
+
s *= 0.85 ** Math.min(extra.size, 6);
|
|
353
|
+
}
|
|
354
|
+
// K11: an asset whose own name is a word of the query (`zoom` → the zoom logo, not the zoom-in icon) ranks first.
|
|
355
|
+
if (u.kind === 'asset' &&
|
|
356
|
+
qWords.includes(` ${u.id.slice(u.id.lastIndexOf('.') + 1).toLowerCase()} `))
|
|
357
|
+
s *= 1.5;
|
|
358
|
+
if (named.size) {
|
|
359
|
+
const own = u.entities.filter((e) => named.has(e));
|
|
360
|
+
if (own.some((e) => e.startsWith('layout:')))
|
|
361
|
+
s *= 1.6;
|
|
362
|
+
else if (own.length)
|
|
363
|
+
s *= 1.3;
|
|
364
|
+
}
|
|
365
|
+
hits.push({
|
|
366
|
+
id: u.id,
|
|
367
|
+
score: Math.round(s * 1000) / 1000,
|
|
368
|
+
kind: u.kind,
|
|
369
|
+
authority: u.authority,
|
|
370
|
+
summary: u.summary,
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
hits.sort((a, b) => b.score - a.score || (a.id < b.id ? -1 : 1));
|
|
374
|
+
return (bodyOf ? foldAssetAliases(hits, bodyOf) : hits).slice(0, k);
|
|
375
|
+
}
|
|
376
|
+
/** Registry access expressions an asset body names in code spans: `integrationSvgMap['zoom']`, `productSvgByProduct['x']['y.svg']`. */
|
|
377
|
+
function assetKeys(body) {
|
|
378
|
+
if (!body)
|
|
379
|
+
return [];
|
|
380
|
+
return [...body.matchAll(/`(\w+(?:\[['"][^'"`]+['"]\])+)`/g)].map((m) => m[1]);
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* K11: one hit per asset. The KB carries a registry-level unit per logo (`asset.logo.integration.zoom`, every exact key
|
|
384
|
+
* listed) and a file-level unit per SVG (`asset.integration-logo.zoom`, `asset.customer-logo.adevinta-black`) whose
|
|
385
|
+
* `Use:` key is one of those keys. When both match, the file-level hit is folded into the registry hit (named as an
|
|
386
|
+
* alias), so a multi-brand query is not crowded out by near-duplicates. The registry hit keeps the better score.
|
|
387
|
+
* `hits` is sorted; `bodyOf(id)` is only asked for asset hits.
|
|
388
|
+
*/
|
|
389
|
+
export function foldAssetAliases(hits, bodyOf) {
|
|
390
|
+
if (!hits.some((h) => h.kind === 'asset'))
|
|
391
|
+
return hits;
|
|
392
|
+
const keysOf = new Map();
|
|
393
|
+
const keys = (id) => {
|
|
394
|
+
let k = keysOf.get(id);
|
|
395
|
+
if (!k)
|
|
396
|
+
keysOf.set(id, (k = assetKeys(bodyOf(id))));
|
|
397
|
+
return k;
|
|
398
|
+
};
|
|
399
|
+
const owner = new Map();
|
|
400
|
+
for (const h of hits) {
|
|
401
|
+
if (h.kind !== 'asset' || !h.id.startsWith('asset.logo.'))
|
|
402
|
+
continue;
|
|
403
|
+
// A key two registry units list (`jira` lists the jira-bitbucket file too) belongs to the more specific one.
|
|
404
|
+
const ks = keys(h.id);
|
|
405
|
+
for (const key of ks) {
|
|
406
|
+
const cur = owner.get(key);
|
|
407
|
+
if (!cur || keys(cur.id).length > ks.length)
|
|
408
|
+
owner.set(key, h);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
if (!owner.size)
|
|
412
|
+
return hits;
|
|
413
|
+
const folded = new Set();
|
|
414
|
+
for (const h of hits) {
|
|
415
|
+
if (h.kind !== 'asset' || h.id.startsWith('asset.logo.'))
|
|
416
|
+
continue;
|
|
417
|
+
const ks = keys(h.id);
|
|
418
|
+
const reg = ks.length ? owner.get(ks[0]) : undefined;
|
|
419
|
+
if (!reg || !ks.every((k) => owner.get(k) === reg))
|
|
420
|
+
continue;
|
|
421
|
+
reg.aliases = [...(reg.aliases ?? []), h.id];
|
|
422
|
+
reg.score = Math.max(reg.score, h.score);
|
|
423
|
+
folded.add(h);
|
|
424
|
+
}
|
|
425
|
+
const out = hits.filter((h) => !folded.has(h));
|
|
426
|
+
out.sort((a, b) => b.score - a.score || (a.id < b.id ? -1 : 1));
|
|
427
|
+
return out;
|
|
428
|
+
}
|
|
429
|
+
//# sourceMappingURL=rank.js.map
|