@michaelborck/honeyguide-core 0.6.0 → 0.7.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/README.md +4 -0
- package/dist/align/outcomes.d.ts +75 -0
- package/dist/align/outcomes.js +266 -0
- package/dist/align/outcomes.js.map +1 -0
- package/dist/align/reasons.d.ts +11 -0
- package/dist/align/reasons.js +84 -0
- package/dist/align/reasons.js.map +1 -0
- package/dist/annotate/ladder.d.ts +1 -1
- package/dist/annotate/ladder.js +2 -2
- package/dist/annotate/ladder.js.map +1 -1
- package/dist/annotate/ollama.d.ts +3 -1
- package/dist/annotate/ollama.js +17 -11
- package/dist/annotate/ollama.js.map +1 -1
- package/dist/batch.d.ts +0 -0
- package/dist/batch.js +0 -0
- package/dist/batch.js.map +0 -0
- package/dist/brief.d.ts +30 -0
- package/dist/brief.js +70 -0
- package/dist/brief.js.map +1 -0
- package/dist/collection.d.ts +27 -0
- package/dist/collection.js +98 -0
- package/dist/collection.js.map +1 -0
- package/dist/config.d.ts +31 -1
- package/dist/config.js +10 -0
- package/dist/config.js.map +1 -1
- package/dist/enrich/page.d.ts +0 -0
- package/dist/enrich/page.js +0 -0
- package/dist/enrich/page.js.map +0 -0
- package/dist/enrich/sourceType.d.ts +0 -0
- package/dist/enrich/sourceType.js +0 -0
- package/dist/enrich/sourceType.js.map +0 -0
- package/dist/enrich/unpaywall.d.ts +28 -0
- package/dist/enrich/unpaywall.js +36 -0
- package/dist/enrich/unpaywall.js.map +1 -0
- package/dist/export/citations.d.ts +0 -0
- package/dist/export/citations.js +0 -0
- package/dist/export/citations.js.map +0 -0
- package/dist/export/lmsHtml.d.ts +0 -0
- package/dist/export/lmsHtml.js +16 -2
- package/dist/export/lmsHtml.js.map +1 -1
- package/dist/export/markdown.d.ts +0 -0
- package/dist/export/markdown.js +11 -3
- package/dist/export/markdown.js.map +1 -1
- package/dist/index.d.ts +18 -1
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/pipeline.d.ts +2 -2
- package/dist/pipeline.js +117 -12
- package/dist/pipeline.js.map +1 -1
- package/dist/rank/decision.d.ts +59 -0
- package/dist/rank/decision.js +124 -0
- package/dist/rank/decision.js.map +1 -0
- package/dist/rank/diversity.d.ts +0 -0
- package/dist/rank/diversity.js +0 -0
- package/dist/rank/diversity.js.map +0 -0
- package/dist/rank/embeddings.d.ts +41 -0
- package/dist/rank/embeddings.js +98 -0
- package/dist/rank/embeddings.js.map +1 -0
- package/dist/rank/reranker.d.ts +21 -0
- package/dist/rank/reranker.js +30 -0
- package/dist/rank/reranker.js.map +1 -0
- package/dist/rank/semantic.d.ts +14 -0
- package/dist/rank/semantic.js +58 -0
- package/dist/rank/semantic.js.map +1 -0
- package/dist/recheck.d.ts +0 -0
- package/dist/recheck.js +0 -0
- package/dist/recheck.js.map +0 -0
- package/dist/retrieval/arxiv.d.ts +24 -0
- package/dist/retrieval/arxiv.js +94 -0
- package/dist/retrieval/arxiv.js.map +1 -0
- package/dist/retrieval/books.d.ts +0 -0
- package/dist/retrieval/books.js +0 -0
- package/dist/retrieval/books.js.map +0 -0
- package/dist/retrieval/breaker.d.ts +16 -0
- package/dist/retrieval/breaker.js +42 -0
- package/dist/retrieval/breaker.js.map +1 -0
- package/dist/retrieval/cache.d.ts +8 -0
- package/dist/retrieval/cache.js +33 -0
- package/dist/retrieval/cache.js.map +1 -0
- package/dist/retrieval/candidates.d.ts +1 -1
- package/dist/retrieval/candidates.js +31 -7
- package/dist/retrieval/candidates.js.map +1 -1
- package/dist/retrieval/counterpoint.d.ts +0 -0
- package/dist/retrieval/counterpoint.js +1 -0
- package/dist/retrieval/counterpoint.js.map +1 -1
- package/dist/retrieval/europePmc.d.ts +32 -0
- package/dist/retrieval/europePmc.js +62 -0
- package/dist/retrieval/europePmc.js.map +1 -0
- package/dist/retrieval/openalexTopical.d.ts +0 -0
- package/dist/retrieval/openalexTopical.js +0 -0
- package/dist/retrieval/openalexTopical.js.map +0 -0
- package/dist/retrieval/paperMerge.d.ts +16 -0
- package/dist/retrieval/paperMerge.js +77 -0
- package/dist/retrieval/paperMerge.js.map +1 -0
- package/dist/retrieval/papers.d.ts +10 -5
- package/dist/retrieval/papers.js +51 -32
- package/dist/retrieval/papers.js.map +1 -1
- package/dist/retrieval/podcasts.d.ts +0 -0
- package/dist/retrieval/podcasts.js +0 -0
- package/dist/retrieval/podcasts.js.map +0 -0
- package/dist/retrieval/query.d.ts +0 -0
- package/dist/retrieval/query.js +1 -0
- package/dist/retrieval/query.js.map +1 -1
- package/dist/retrieval/rateLimit.d.ts +6 -0
- package/dist/retrieval/rateLimit.js +15 -0
- package/dist/retrieval/rateLimit.js.map +1 -0
- package/dist/retrieval/search/brave.d.ts +13 -0
- package/dist/retrieval/search/brave.js +32 -0
- package/dist/retrieval/search/brave.js.map +1 -0
- package/dist/retrieval/search/index.d.ts +13 -0
- package/dist/retrieval/search/index.js +22 -0
- package/dist/retrieval/search/index.js.map +1 -0
- package/dist/retrieval/search/searxng.d.ts +14 -0
- package/dist/retrieval/search/searxng.js +24 -0
- package/dist/retrieval/search/searxng.js.map +1 -0
- package/dist/retrieval/search/serper.d.ts +14 -0
- package/dist/retrieval/search/serper.js +38 -0
- package/dist/retrieval/search/serper.js.map +1 -0
- package/dist/retrieval/search/types.d.ts +17 -0
- package/dist/retrieval/search/types.js +2 -0
- package/dist/retrieval/search/types.js.map +1 -0
- package/dist/retrieval/videos.d.ts +0 -0
- package/dist/retrieval/videos.js +0 -0
- package/dist/retrieval/videos.js.map +0 -0
- package/dist/retrieval/web.d.ts +5 -6
- package/dist/retrieval/web.js +14 -27
- package/dist/retrieval/web.js.map +1 -1
- package/dist/types.d.ts +62 -0
- package/dist/types.js +0 -0
- package/dist/types.js.map +0 -0
- package/dist/verify/verify.d.ts +11 -2
- package/dist/verify/verify.js +13 -4
- package/dist/verify/verify.js.map +1 -1
- package/package.json +1 -1
package/dist/types.d.ts
CHANGED
|
@@ -6,6 +6,15 @@ export type ResourceFormat = 'video' | 'website' | 'podcast' | 'paper' | 'white-
|
|
|
6
6
|
* resource is gone). Unverifiable resources are flagged, never hidden.
|
|
7
7
|
*/
|
|
8
8
|
export type VerificationStatus = 'verified' | 'paywalled' | 'blocked' | 'dead' | 'unverified';
|
|
9
|
+
/**
|
|
10
|
+
* How verification was established. `database` means the record came out of a
|
|
11
|
+
* database seconds earlier (existence attested); `url-check` means a live HTTP
|
|
12
|
+
* probe ran; `none` means neither could be done. The distinction matters: a
|
|
13
|
+
* database record can still sit behind a paywall.
|
|
14
|
+
*/
|
|
15
|
+
export type VerificationBasis = 'database' | 'url-check' | 'none';
|
|
16
|
+
/** Access status for a paper: freely readable, subscription, or unknown. */
|
|
17
|
+
export type AccessStatus = 'open' | 'subscription' | 'unknown';
|
|
9
18
|
export type LicensingStatus = 'oer' | 'creative-commons' | 'library-subscription' | 'link-only' | 'unknown';
|
|
10
19
|
/**
|
|
11
20
|
* Which rung of the annotation ladder produced the text (ADR-0011):
|
|
@@ -25,6 +34,37 @@ export interface Annotation {
|
|
|
25
34
|
* retrieved to challenge it (counterpoint mode, spec §3 point 3).
|
|
26
35
|
*/
|
|
27
36
|
export type Stance = 'supporting' | 'counterpoint';
|
|
37
|
+
/** Optional constraints from the interview brief (ADR-0018). */
|
|
38
|
+
export interface SearchConstraints {
|
|
39
|
+
/** Prefer freely readable papers; known subscription records are dropped. */
|
|
40
|
+
openAccessOnly?: boolean;
|
|
41
|
+
/** Formats to omit entirely (e.g. video). */
|
|
42
|
+
excludeFormats?: ResourceFormat[];
|
|
43
|
+
/** Drop resources with a known year older than this. */
|
|
44
|
+
minYear?: number;
|
|
45
|
+
}
|
|
46
|
+
/** A unit learning outcome, used for optional alignment (ADR-0017). */
|
|
47
|
+
export interface Outcome {
|
|
48
|
+
id: string;
|
|
49
|
+
text: string;
|
|
50
|
+
}
|
|
51
|
+
export type AlignmentConfidence = 'high' | 'medium' | 'low';
|
|
52
|
+
/**
|
|
53
|
+
* A proposed link between a resource and an outcome. The model proposes; the
|
|
54
|
+
* human confirms. Only confirmed alignments are exported.
|
|
55
|
+
*/
|
|
56
|
+
export interface Alignment {
|
|
57
|
+
outcomeId: string;
|
|
58
|
+
/** Copied so collections and exports are self-contained. */
|
|
59
|
+
outcomeText: string;
|
|
60
|
+
/** Choice probability or embedding similarity, 0..1. */
|
|
61
|
+
score: number;
|
|
62
|
+
confidence: AlignmentConfidence;
|
|
63
|
+
proposedBy: 'decision' | 'embeddings';
|
|
64
|
+
/** One-line "why this outcome" from the local LLM, when available. */
|
|
65
|
+
reason?: string;
|
|
66
|
+
confirmed: boolean;
|
|
67
|
+
}
|
|
28
68
|
export interface Resource {
|
|
29
69
|
stance: Stance;
|
|
30
70
|
title: string;
|
|
@@ -36,6 +76,10 @@ export interface Resource {
|
|
|
36
76
|
/** Journal, publisher or channel, when known. */
|
|
37
77
|
venue: string | null;
|
|
38
78
|
verification: VerificationStatus;
|
|
79
|
+
/** How that verification was established (database vs URL probe). */
|
|
80
|
+
verificationBasis: VerificationBasis;
|
|
81
|
+
/** Paper access status; 'unknown' for non-papers or when no signal exists. */
|
|
82
|
+
access: AccessStatus;
|
|
39
83
|
/** Consultant reports are marketing artefacts as often as evidence. */
|
|
40
84
|
commerciallyInterested: boolean;
|
|
41
85
|
licensing: LicensingStatus;
|
|
@@ -44,6 +88,8 @@ export interface Resource {
|
|
|
44
88
|
/** oEmbed or og:image URL; null when unavailable (ADR-0005). */
|
|
45
89
|
thumbnailUrl: string | null;
|
|
46
90
|
accessibilityNotes: string[];
|
|
91
|
+
/** Proposed outcome alignment, if the request supplied outcomes (ADR-0017). */
|
|
92
|
+
alignment: Alignment | null;
|
|
47
93
|
}
|
|
48
94
|
export interface SuggestRequest {
|
|
49
95
|
/** A topic string, or extracted text from an uploaded document. */
|
|
@@ -54,8 +100,24 @@ export interface SuggestRequest {
|
|
|
54
100
|
* or complicates the input's framing, clearly labelled (spec §3).
|
|
55
101
|
*/
|
|
56
102
|
counterpoint?: boolean;
|
|
103
|
+
/** Optional unit outcomes; when present the pipeline proposes alignments. */
|
|
104
|
+
outcomes?: Outcome[];
|
|
105
|
+
/** Interview brief constraints (ADR-0018). */
|
|
106
|
+
constraints?: SearchConstraints;
|
|
107
|
+
/** Teaching context from the interview; used to frame rationales. */
|
|
108
|
+
context?: string;
|
|
57
109
|
}
|
|
58
110
|
export type ComponentState = 'ok' | 'degraded' | 'unavailable';
|
|
111
|
+
/** Stages reported by the pipeline while a suggestion is running. */
|
|
112
|
+
export type PipelineStage = 'query' | 'retrieve' | 'verify' | 'rank' | 'annotate' | 'align' | 'done';
|
|
113
|
+
export interface ProgressEvent {
|
|
114
|
+
stage: PipelineStage;
|
|
115
|
+
/** Optional detail, e.g. "counterpoints" or the resource being annotated. */
|
|
116
|
+
detail?: string;
|
|
117
|
+
current?: number;
|
|
118
|
+
total?: number;
|
|
119
|
+
}
|
|
120
|
+
export type ProgressListener = (event: ProgressEvent) => void;
|
|
59
121
|
export interface SuggestResult {
|
|
60
122
|
resources: Resource[];
|
|
61
123
|
/** Health of each enrichment component for this request (ADR-0006). */
|
package/dist/types.js
CHANGED
|
File without changes
|
package/dist/types.js.map
CHANGED
|
File without changes
|
package/dist/verify/verify.d.ts
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
import type { VerificationStatus } from '../types.js';
|
|
1
|
+
import type { VerificationBasis, VerificationStatus } from '../types.js';
|
|
2
2
|
import type { Candidate } from '../retrieval/candidates.js';
|
|
3
|
+
export interface VerificationOutcome {
|
|
4
|
+
status: VerificationStatus;
|
|
5
|
+
basis: VerificationBasis;
|
|
6
|
+
}
|
|
3
7
|
/**
|
|
4
8
|
* Map cite-sight-core's UrlStatus onto Honeyguide's VerificationStatus.
|
|
5
9
|
* `unverified` means the check could not run or was inconclusive — never
|
|
6
10
|
* silently upgraded (ADR-0006).
|
|
7
11
|
*/
|
|
8
12
|
export declare function mapUrlStatus(status: string): VerificationStatus;
|
|
9
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Human label that keeps the two verification bases distinct: a database
|
|
15
|
+
* record is not the same claim as a live link.
|
|
16
|
+
*/
|
|
17
|
+
export declare function verificationText(status: VerificationStatus, basis: VerificationBasis): string;
|
|
18
|
+
export declare function verifyCandidate(candidate: Candidate): Promise<VerificationOutcome>;
|
package/dist/verify/verify.js
CHANGED
|
@@ -17,19 +17,28 @@ export function mapUrlStatus(status) {
|
|
|
17
17
|
return 'unverified';
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Human label that keeps the two verification bases distinct: a database
|
|
22
|
+
* record is not the same claim as a live link.
|
|
23
|
+
*/
|
|
24
|
+
export function verificationText(status, basis) {
|
|
25
|
+
if (status !== 'verified')
|
|
26
|
+
return status;
|
|
27
|
+
return basis === 'database' ? 'record found' : 'link live';
|
|
28
|
+
}
|
|
20
29
|
export async function verifyCandidate(candidate) {
|
|
21
30
|
// Academic-database results are existence-attested by retrieval itself:
|
|
22
31
|
// the DOI/entry came out of Crossref/OpenAlex/iTunes/Open Library seconds
|
|
23
32
|
// ago. Probing doi.org links additionally hits publisher bot-walls and
|
|
24
|
-
// reports false "blocked".
|
|
33
|
+
// reports false "blocked". The basis records that distinction.
|
|
25
34
|
if (candidate.databaseAttested)
|
|
26
|
-
return 'verified';
|
|
35
|
+
return { status: 'verified', basis: 'database' };
|
|
27
36
|
try {
|
|
28
37
|
const result = await checkUrl(candidate.url);
|
|
29
|
-
return mapUrlStatus(result.status);
|
|
38
|
+
return { status: mapUrlStatus(result.status), basis: 'url-check' };
|
|
30
39
|
}
|
|
31
40
|
catch {
|
|
32
|
-
return 'unverified';
|
|
41
|
+
return { status: 'unverified', basis: 'none' };
|
|
33
42
|
}
|
|
34
43
|
}
|
|
35
44
|
//# sourceMappingURL=verify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/verify/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/verify/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AASzD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,YAAY,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAA0B,EAC1B,KAAwB;IAExB,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC;IACzC,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAoB;IACxD,wEAAwE;IACxE,0EAA0E;IAC1E,uEAAuE;IACvE,+DAA+D;IAC/D,IAAI,SAAS,CAAC,gBAAgB;QAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IACjF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACjD,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED