@hasna/experts 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -13
- package/dist/cli/index.js +1842 -74
- package/dist/connectors.d.ts +63 -4
- package/dist/connectors.d.ts.map +1 -1
- package/dist/contacts.d.ts +96 -0
- package/dist/contacts.d.ts.map +1 -0
- package/dist/crawl.d.ts +1 -0
- package/dist/crawl.d.ts.map +1 -1
- package/dist/db.d.ts +97 -2
- package/dist/db.d.ts.map +1 -1
- package/dist/embed.d.ts +57 -0
- package/dist/embed.d.ts.map +1 -0
- package/dist/enrich.d.ts +81 -1
- package/dist/enrich.d.ts.map +1 -1
- package/dist/format.d.ts +4 -1
- package/dist/format.d.ts.map +1 -1
- package/dist/identity.d.ts +23 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1544 -21
- package/dist/score.d.ts +25 -0
- package/dist/score.d.ts.map +1 -0
- package/dist/sdk.d.ts +26 -1
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +12 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +960 -14
- package/dist/sources/adplist.d.ts +43 -0
- package/dist/sources/adplist.d.ts.map +1 -0
- package/dist/sources/clarity.d.ts +37 -0
- package/dist/sources/clarity.d.ts.map +1 -0
- package/dist/sources/common.d.ts +14 -0
- package/dist/sources/common.d.ts.map +1 -0
- package/dist/sources/glg.d.ts +36 -0
- package/dist/sources/glg.d.ts.map +1 -0
- package/dist/sources/index.d.ts +5 -1
- package/dist/sources/index.d.ts.map +1 -1
- package/dist/sources/mentorcruise.d.ts +47 -0
- package/dist/sources/mentorcruise.d.ts.map +1 -0
- package/dist/sync.d.ts +71 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/types.d.ts +34 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/score.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authority / relevance scoring — a single composite rank so results aren't
|
|
3
|
+
* sorted by one axis. Pure and deterministic, so it's easy to test and tune.
|
|
4
|
+
*/
|
|
5
|
+
import type { Expert } from "./types";
|
|
6
|
+
export interface ScoreWeights {
|
|
7
|
+
rating: number;
|
|
8
|
+
reviews: number;
|
|
9
|
+
followers: number;
|
|
10
|
+
featured: number;
|
|
11
|
+
verified: number;
|
|
12
|
+
recency: number;
|
|
13
|
+
}
|
|
14
|
+
export declare const DEFAULT_WEIGHTS: ScoreWeights;
|
|
15
|
+
export interface ScoreInputs {
|
|
16
|
+
followers?: number;
|
|
17
|
+
/** Days since most recent tweet (smaller = fresher). */
|
|
18
|
+
daysSinceLastTweet?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Composite 0..100 authority score. Combines rating, review volume, social
|
|
22
|
+
* reach, featured/verified flags, and recency of activity.
|
|
23
|
+
*/
|
|
24
|
+
export declare function authorityScore(e: Expert, inputs?: ScoreInputs, weights?: ScoreWeights): number;
|
|
25
|
+
//# sourceMappingURL=score.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../src/score.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,MAAM,EAAY,MAAM,SAAS,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,eAAe,EAAE,YAO7B,CAAC;AAMF,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAE,WAAgB,EAAE,OAAO,GAAE,YAA8B,GAAG,MAAM,CAkBnH"}
|
package/dist/sdk.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* importing the storage layer. It mirrors the read endpoints exposed by
|
|
7
7
|
* `src/server`.
|
|
8
8
|
*/
|
|
9
|
-
import type { Expert, Topic, Tweet, XProfile } from "./types";
|
|
9
|
+
import type { Expert, Topic, Tweet, XProfile, Contact, Video } from "./types";
|
|
10
10
|
export interface ExpertsClientOptions {
|
|
11
11
|
/** Base URL of an `experts-serve` instance. */
|
|
12
12
|
baseUrl?: string;
|
|
@@ -38,6 +38,7 @@ export interface RelatedMatch {
|
|
|
38
38
|
export interface ExpertDetail extends Expert {
|
|
39
39
|
xProfile: XProfile | null;
|
|
40
40
|
tweets: Tweet[];
|
|
41
|
+
contacts: Contact[];
|
|
41
42
|
}
|
|
42
43
|
/** Minimal, dependency-free client for the open-experts HTTP API. */
|
|
43
44
|
export declare class ExpertsClient {
|
|
@@ -62,6 +63,28 @@ export declare class ExpertsClient {
|
|
|
62
63
|
source?: string;
|
|
63
64
|
limit?: number;
|
|
64
65
|
}): Promise<Expert[]>;
|
|
66
|
+
/** Natural-language semantic search ("who can help with X"). */
|
|
67
|
+
ask(query: string, opts?: {
|
|
68
|
+
source?: string;
|
|
69
|
+
limit?: number;
|
|
70
|
+
}): Promise<{
|
|
71
|
+
expert: Expert;
|
|
72
|
+
score: number;
|
|
73
|
+
}[]>;
|
|
74
|
+
/** Ranked, person-deduplicated shortlist for a problem brief. */
|
|
75
|
+
brief(text: string, opts?: {
|
|
76
|
+
source?: string;
|
|
77
|
+
limit?: number;
|
|
78
|
+
}): Promise<{
|
|
79
|
+
expert: Expert;
|
|
80
|
+
score: number;
|
|
81
|
+
why: string[];
|
|
82
|
+
}[]>;
|
|
83
|
+
persons(): Promise<{
|
|
84
|
+
experts: number;
|
|
85
|
+
persons: number;
|
|
86
|
+
duplicated: number;
|
|
87
|
+
}>;
|
|
65
88
|
/** Need-based knowledge-graph search. */
|
|
66
89
|
find(needs: string[], opts?: {
|
|
67
90
|
matchAll?: boolean;
|
|
@@ -74,6 +97,8 @@ export declare class ExpertsClient {
|
|
|
74
97
|
get expert(): {
|
|
75
98
|
get: (source: string, idOrSlug: string) => Promise<ExpertDetail>;
|
|
76
99
|
tweets: (source: string, idOrSlug: string, limit?: number) => Promise<Tweet[]>;
|
|
100
|
+
contacts: (source: string, idOrSlug: string) => Promise<Contact[]>;
|
|
101
|
+
videos: (source: string, idOrSlug: string, limit?: number) => Promise<Video[]>;
|
|
77
102
|
};
|
|
78
103
|
topics(source?: string): Promise<(Topic & {
|
|
79
104
|
source: string;
|
package/dist/sdk.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk.js
CHANGED
|
@@ -61,6 +61,15 @@ class ExpertsClient {
|
|
|
61
61
|
search(query, opts = {}) {
|
|
62
62
|
return this.get("/experts", { q: query, source: opts.source, limit: opts.limit });
|
|
63
63
|
}
|
|
64
|
+
ask(query, opts = {}) {
|
|
65
|
+
return this.get("/ask", { q: query, source: opts.source, limit: opts.limit });
|
|
66
|
+
}
|
|
67
|
+
brief(text, opts = {}) {
|
|
68
|
+
return this.get("/brief", { q: text, source: opts.source, limit: opts.limit });
|
|
69
|
+
}
|
|
70
|
+
persons() {
|
|
71
|
+
return this.get("/persons");
|
|
72
|
+
}
|
|
64
73
|
find(needs, opts = {}) {
|
|
65
74
|
return this.get("/find", {
|
|
66
75
|
needs: needs.join(","),
|
|
@@ -77,7 +86,9 @@ class ExpertsClient {
|
|
|
77
86
|
get expert() {
|
|
78
87
|
return {
|
|
79
88
|
get: (source, idOrSlug) => this.get(`/experts/${encodeURIComponent(source)}/${encodeURIComponent(idOrSlug)}`),
|
|
80
|
-
tweets: (source, idOrSlug, limit) => this.get(`/experts/${encodeURIComponent(source)}/${encodeURIComponent(idOrSlug)}/tweets`, { limit })
|
|
89
|
+
tweets: (source, idOrSlug, limit) => this.get(`/experts/${encodeURIComponent(source)}/${encodeURIComponent(idOrSlug)}/tweets`, { limit }),
|
|
90
|
+
contacts: (source, idOrSlug) => this.get(`/experts/${encodeURIComponent(source)}/${encodeURIComponent(idOrSlug)}/contacts`),
|
|
91
|
+
videos: (source, idOrSlug, limit) => this.get(`/experts/${encodeURIComponent(source)}/${encodeURIComponent(idOrSlug)}/videos`, { limit })
|
|
81
92
|
};
|
|
82
93
|
}
|
|
83
94
|
topics(source) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,SAAS,EAAmC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,SAAS,EAAmC,MAAM,OAAO,CAAC;AA2BnE,wBAAgB,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,QAAQ,CA6I5D;AAED,wBAAsB,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAuDhF;AAED,wBAAgB,WAAW,CAAC,IAAI,SAAO,EAAE,IAAI,SAAS,wBAUrD"}
|