@wrenautomation/birdwatch 0.30.7 → 0.30.9
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 +3 -2
- package/dist/app/engine-cli.d.ts +1 -1
- package/dist/app/engine-cli.js +32 -4
- package/dist/app/engine-cli.js.map +1 -1
- package/dist/engine/plans/index.d.ts +1 -1
- package/dist/engine/plans/index.js +9 -8
- package/dist/engine/plans/index.js.map +1 -1
- package/dist/engine/steps.js +3 -0
- package/dist/engine/steps.js.map +1 -1
- package/dist/engine/types.d.ts +41 -0
- package/dist/engine/types.js +28 -0
- package/dist/engine/types.js.map +1 -1
- package/dist/ledger/ledger.d.ts +18 -1
- package/dist/ledger/ledger.js +58 -0
- package/dist/ledger/ledger.js.map +1 -1
- package/dist/ledger/records.d.ts +14 -0
- package/dist/sources/hn.d.ts +45 -0
- package/dist/sources/hn.js +154 -0
- package/dist/sources/hn.js.map +1 -0
- package/dist/sources/index.d.ts +6 -1
- package/dist/sources/index.js +6 -1
- package/dist/sources/index.js.map +1 -1
- package/dist/sources/linkedin.d.ts +32 -0
- package/dist/sources/linkedin.js +82 -0
- package/dist/sources/linkedin.js.map +1 -0
- package/dist/sources/metrics.d.ts +5 -0
- package/dist/sources/metrics.js +9 -0
- package/dist/sources/metrics.js.map +1 -0
- package/dist/sources/perplexity.d.ts +15 -0
- package/dist/sources/perplexity.js +55 -0
- package/dist/sources/perplexity.js.map +1 -0
- package/dist/sources/sites.js +3 -0
- package/dist/sources/sites.js.map +1 -1
- package/dist/sources/ytdlp.d.ts +1 -0
- package/dist/sources/ytdlp.js +8 -3
- package/dist/sources/ytdlp.js.map +1 -1
- package/package.json +4 -4
package/dist/engine/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"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"}
|
package/dist/ledger/ledger.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* channels and ask kinds yielded, as the yield rows. The yield is a fold over records, shared here
|
|
5
5
|
* so the files backend and a database compute the same rows (a database may do it in SQL).
|
|
6
6
|
*/
|
|
7
|
-
import type { AskKind, PlanFile, YieldRow } from "../engine/types.js";
|
|
7
|
+
import type { AskKind, LiftRow, MetricKey, PlanFile, YieldRow } from "../engine/types.js";
|
|
8
8
|
import { type From, type LedgerRecord, type RecordOf, type RecordType, type Step } from "./records.js";
|
|
9
9
|
export interface Filter {
|
|
10
10
|
run?: string;
|
|
@@ -44,3 +44,20 @@ export declare function latestCalls(records: readonly LedgerRecord[]): Map<strin
|
|
|
44
44
|
* A finding is kept unless its latest call is a drop: the gate kept it; a review or a person drops.
|
|
45
45
|
*/
|
|
46
46
|
export declare function yieldRows(records: readonly LedgerRecord[], filter?: YieldFilter): YieldRow[];
|
|
47
|
+
export interface LiftFilter {
|
|
48
|
+
/** The count compared; `likes` unless asked (a YouTube listing carries `views` only). */
|
|
49
|
+
metric?: MetricKey;
|
|
50
|
+
channel?: string;
|
|
51
|
+
source?: string;
|
|
52
|
+
/** Posts an author needs before a baseline is read: fewer, and `lift` stays null. */
|
|
53
|
+
minN?: number;
|
|
54
|
+
}
|
|
55
|
+
/** Below it an author's median is noise: one hit would be its own baseline. */
|
|
56
|
+
export declare const LIFT_MIN_N = 5;
|
|
57
|
+
/**
|
|
58
|
+
* Each hit's draw against its author's own: `lift` is the hit's count over the median of every
|
|
59
|
+
* hit of that channel that carries the count (the latest record per URL across runs, since a
|
|
60
|
+
* count moves). One author's baseline, so a big account and a small one compare by lift, not by
|
|
61
|
+
* size. `n` is the posts behind the median; under `minN` the lift is null, never 1.
|
|
62
|
+
*/
|
|
63
|
+
export declare function liftRows(records: readonly LedgerRecord[], filter?: LiftFilter): LiftRow[];
|
package/dist/ledger/ledger.js
CHANGED
|
@@ -102,4 +102,62 @@ export function yieldRows(records, filter = {}) {
|
|
|
102
102
|
kept: t.kept.size,
|
|
103
103
|
}));
|
|
104
104
|
}
|
|
105
|
+
/** Below it an author's median is noise: one hit would be its own baseline. */
|
|
106
|
+
export const LIFT_MIN_N = 5;
|
|
107
|
+
const median = (xs) => {
|
|
108
|
+
const s = [...xs].sort((a, b) => a - b);
|
|
109
|
+
const mid = s.length >> 1;
|
|
110
|
+
return s.length % 2 ? s[mid] : (s[mid - 1] + s[mid]) / 2;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Each hit's draw against its author's own: `lift` is the hit's count over the median of every
|
|
114
|
+
* hit of that channel that carries the count (the latest record per URL across runs, since a
|
|
115
|
+
* count moves). One author's baseline, so a big account and a small one compare by lift, not by
|
|
116
|
+
* size. `n` is the posts behind the median; under `minN` the lift is null, never 1.
|
|
117
|
+
*/
|
|
118
|
+
export function liftRows(records, filter = {}) {
|
|
119
|
+
const metric = filter.metric ?? "likes";
|
|
120
|
+
const minN = filter.minN ?? LIFT_MIN_N;
|
|
121
|
+
const latest = new Map();
|
|
122
|
+
for (const h of ofType([...records].sort(byTime), "hit")) {
|
|
123
|
+
if (h.metrics?.[metric] === undefined)
|
|
124
|
+
continue;
|
|
125
|
+
if (filter.source && !h.sources.includes(filter.source))
|
|
126
|
+
continue;
|
|
127
|
+
latest.set(h.key, h);
|
|
128
|
+
}
|
|
129
|
+
const byChannel = new Map();
|
|
130
|
+
for (const h of latest.values()) {
|
|
131
|
+
const c = h.channel ?? "";
|
|
132
|
+
const list = byChannel.get(c) ?? [];
|
|
133
|
+
list.push(h);
|
|
134
|
+
byChannel.set(c, list);
|
|
135
|
+
}
|
|
136
|
+
const out = [];
|
|
137
|
+
for (const [channel, hits] of byChannel) {
|
|
138
|
+
if (filter.channel && channel !== filter.channel)
|
|
139
|
+
continue;
|
|
140
|
+
const values = hits.map((h) => h.metrics?.[metric]);
|
|
141
|
+
const base = channel && hits.length >= minN ? median(values) : null;
|
|
142
|
+
for (const h of hits) {
|
|
143
|
+
const value = h.metrics?.[metric];
|
|
144
|
+
out.push({
|
|
145
|
+
url: h.url,
|
|
146
|
+
...(h.title ? { title: h.title } : {}),
|
|
147
|
+
...(channel ? { channel } : {}),
|
|
148
|
+
...(h.date ? { date: h.date } : {}),
|
|
149
|
+
sources: h.sources,
|
|
150
|
+
metric,
|
|
151
|
+
value,
|
|
152
|
+
n: channel ? hits.length : 1,
|
|
153
|
+
median: base,
|
|
154
|
+
lift: base === null ? null : base === 0 ? (value === 0 ? 1 : null) : value / base,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// the biggest lift first; a hit with no baseline last, by its raw count
|
|
159
|
+
return out.sort((a, b) => Number(b.lift !== null) - Number(a.lift !== null) ||
|
|
160
|
+
(b.lift ?? 0) - (a.lift ?? 0) ||
|
|
161
|
+
b.value - a.value);
|
|
162
|
+
}
|
|
105
163
|
//# sourceMappingURL=ledger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/ledger/ledger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/ledger/ledger.ts"],"names":[],"mappings":"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"}
|
package/dist/ledger/records.d.ts
CHANGED
|
@@ -149,6 +149,13 @@ export declare const HitRecord: z.ZodObject<{
|
|
|
149
149
|
length: z.ZodOptional<z.ZodNumber>;
|
|
150
150
|
date: z.ZodOptional<z.ZodString>;
|
|
151
151
|
snippet: z.ZodOptional<z.ZodString>;
|
|
152
|
+
metrics: z.ZodOptional<z.ZodObject<{
|
|
153
|
+
views: z.ZodOptional<z.ZodNumber>;
|
|
154
|
+
likes: z.ZodOptional<z.ZodNumber>;
|
|
155
|
+
comments: z.ZodOptional<z.ZodNumber>;
|
|
156
|
+
shares: z.ZodOptional<z.ZodNumber>;
|
|
157
|
+
saves: z.ZodOptional<z.ZodNumber>;
|
|
158
|
+
}, z.core.$strip>>;
|
|
152
159
|
sources: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
153
160
|
odds: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
|
|
154
161
|
key: z.ZodString;
|
|
@@ -876,6 +883,13 @@ export declare const LedgerRecord: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
876
883
|
length: z.ZodOptional<z.ZodNumber>;
|
|
877
884
|
date: z.ZodOptional<z.ZodString>;
|
|
878
885
|
snippet: z.ZodOptional<z.ZodString>;
|
|
886
|
+
metrics: z.ZodOptional<z.ZodObject<{
|
|
887
|
+
views: z.ZodOptional<z.ZodNumber>;
|
|
888
|
+
likes: z.ZodOptional<z.ZodNumber>;
|
|
889
|
+
comments: z.ZodOptional<z.ZodNumber>;
|
|
890
|
+
shares: z.ZodOptional<z.ZodNumber>;
|
|
891
|
+
saves: z.ZodOptional<z.ZodNumber>;
|
|
892
|
+
}, z.core.$strip>>;
|
|
879
893
|
sources: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
880
894
|
odds: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
|
|
881
895
|
key: z.ZodString;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hacker News through Algolia's HN API (hn.algolia.com, free, no key): stories for a query, a
|
|
3
|
+
* user's stories, and a thread read as data (`items/{id}`: the story and every comment nested).
|
|
4
|
+
* Each hit carries the story's points and comment count, so a thread's draw is read for free.
|
|
5
|
+
*/
|
|
6
|
+
import type { Document } from "../document/index.js";
|
|
7
|
+
import type { Source } from "../engine/ports.js";
|
|
8
|
+
import type { HitViewIn } from "../engine/types.js";
|
|
9
|
+
export declare const HN_API = "https://hn.algolia.com/api/v1";
|
|
10
|
+
interface AlgoliaStory {
|
|
11
|
+
objectID: string;
|
|
12
|
+
title?: string | null;
|
|
13
|
+
url?: string | null;
|
|
14
|
+
author?: string | null;
|
|
15
|
+
points?: number | null;
|
|
16
|
+
num_comments?: number | null;
|
|
17
|
+
created_at?: string | null;
|
|
18
|
+
story_text?: string | null;
|
|
19
|
+
}
|
|
20
|
+
interface AlgoliaItem {
|
|
21
|
+
id: number;
|
|
22
|
+
type?: string;
|
|
23
|
+
title?: string | null;
|
|
24
|
+
url?: string | null;
|
|
25
|
+
author?: string | null;
|
|
26
|
+
points?: number | null;
|
|
27
|
+
created_at?: string | null;
|
|
28
|
+
text?: string | null;
|
|
29
|
+
children?: AlgoliaItem[];
|
|
30
|
+
}
|
|
31
|
+
/** HN's comment HTML as text: paragraphs kept, links as their text, entities decoded. */
|
|
32
|
+
export declare function hnText(html: string | null | undefined): string;
|
|
33
|
+
/** The story id of a thread URL (`news.ycombinator.com/item?id=N`). */
|
|
34
|
+
export declare function hnItem(url: string): string | null;
|
|
35
|
+
/** The user of a profile URL (`news.ycombinator.com/user?id=name`). */
|
|
36
|
+
export declare function hnUser(url: string): string | null;
|
|
37
|
+
/** A story as a hit: the thread's page, since the comments are what a read is for. */
|
|
38
|
+
export declare const storyHit: (s: AlgoliaStory) => HitViewIn;
|
|
39
|
+
/** The thread as text: the story, then each comment with its depth marked. */
|
|
40
|
+
export declare function hnThreadDocument(url: string, item: AlgoliaItem): Document;
|
|
41
|
+
export declare function hn(o?: {
|
|
42
|
+
fetchFn?: typeof fetch;
|
|
43
|
+
n?: number;
|
|
44
|
+
}): Source;
|
|
45
|
+
export {};
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hacker News through Algolia's HN API (hn.algolia.com, free, no key): stories for a query, a
|
|
3
|
+
* user's stories, and a thread read as data (`items/{id}`: the story and every comment nested).
|
|
4
|
+
* Each hit carries the story's points and comment count, so a thread's draw is read for free.
|
|
5
|
+
*/
|
|
6
|
+
import { httpError, transport } from "@wrenautomation/models";
|
|
7
|
+
import { metricsOf } from "./metrics.js";
|
|
8
|
+
export const HN_API = "https://hn.algolia.com/api/v1";
|
|
9
|
+
const HN = "https://news.ycombinator.com";
|
|
10
|
+
/** Comments kept of a thread, depth first: enough to read the room. */
|
|
11
|
+
const COMMENTS = 200;
|
|
12
|
+
const ENTITIES = {
|
|
13
|
+
amp: "&",
|
|
14
|
+
lt: "<",
|
|
15
|
+
gt: ">",
|
|
16
|
+
quot: '"',
|
|
17
|
+
apos: "'",
|
|
18
|
+
nbsp: " ",
|
|
19
|
+
};
|
|
20
|
+
/** HN's comment HTML as text: paragraphs kept, links as their text, entities decoded. */
|
|
21
|
+
export function hnText(html) {
|
|
22
|
+
if (!html)
|
|
23
|
+
return "";
|
|
24
|
+
return html
|
|
25
|
+
.replace(/<p>/gi, "\n\n")
|
|
26
|
+
.replace(/<br\s*\/?>/gi, "\n")
|
|
27
|
+
.replace(/<[^>]+>/g, "")
|
|
28
|
+
.replace(/&(#x[0-9a-f]+|#\d+|[a-z]+);/gi, (m, code) => {
|
|
29
|
+
if (code[0] === "#")
|
|
30
|
+
return String.fromCodePoint(code[1]?.toLowerCase() === "x"
|
|
31
|
+
? Number.parseInt(code.slice(2), 16)
|
|
32
|
+
: Number(code.slice(1)));
|
|
33
|
+
return ENTITIES[code.toLowerCase()] ?? m;
|
|
34
|
+
})
|
|
35
|
+
.trim();
|
|
36
|
+
}
|
|
37
|
+
/** The story id of a thread URL (`news.ycombinator.com/item?id=N`). */
|
|
38
|
+
export function hnItem(url) {
|
|
39
|
+
try {
|
|
40
|
+
const u = new URL(url);
|
|
41
|
+
if (u.hostname !== "news.ycombinator.com" || u.pathname !== "/item")
|
|
42
|
+
return null;
|
|
43
|
+
const id = u.searchParams.get("id");
|
|
44
|
+
return id && /^\d+$/.test(id) ? id : null;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** The user of a profile URL (`news.ycombinator.com/user?id=name`). */
|
|
51
|
+
export function hnUser(url) {
|
|
52
|
+
try {
|
|
53
|
+
const u = new URL(url);
|
|
54
|
+
if (u.hostname !== "news.ycombinator.com" || u.pathname !== "/user")
|
|
55
|
+
return null;
|
|
56
|
+
const id = u.searchParams.get("id");
|
|
57
|
+
return id && /^[\w-]{2,15}$/.test(id) ? id : null;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/** A story as a hit: the thread's page, since the comments are what a read is for. */
|
|
64
|
+
export const storyHit = (s) => {
|
|
65
|
+
const text = hnText(s.story_text);
|
|
66
|
+
const snippet = text ? text.slice(0, 300) : s.url ? `Link: ${s.url}` : "";
|
|
67
|
+
return {
|
|
68
|
+
url: `${HN}/item?id=${s.objectID}`,
|
|
69
|
+
...(s.title ? { title: s.title } : {}),
|
|
70
|
+
...(s.author ? { channel: `hn/${s.author}` } : {}),
|
|
71
|
+
...(s.created_at ? { date: s.created_at.slice(0, 10) } : {}),
|
|
72
|
+
...(snippet ? { snippet } : {}),
|
|
73
|
+
...metricsOf({ likes: s.points, comments: s.num_comments }),
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
/** The thread as text: the story, then each comment with its depth marked. */
|
|
77
|
+
export function hnThreadDocument(url, item) {
|
|
78
|
+
const lines = [];
|
|
79
|
+
const walk = (c, depth) => {
|
|
80
|
+
if (lines.length >= COMMENTS)
|
|
81
|
+
return;
|
|
82
|
+
const text = hnText(c.text);
|
|
83
|
+
if (text)
|
|
84
|
+
lines.push(`${">".repeat(depth)}${depth ? " " : ""}${c.author ?? "[deleted]"}: ${text}`);
|
|
85
|
+
for (const k of c.children ?? [])
|
|
86
|
+
walk(k, depth + 1);
|
|
87
|
+
};
|
|
88
|
+
for (const k of item.children ?? [])
|
|
89
|
+
walk(k, 0);
|
|
90
|
+
const head = [
|
|
91
|
+
item.author ? `by ${item.author}` : "",
|
|
92
|
+
typeof item.points === "number" ? `${item.points} points` : "",
|
|
93
|
+
lines.length ? `${lines.length} comments` : "",
|
|
94
|
+
]
|
|
95
|
+
.filter(Boolean)
|
|
96
|
+
.join(" · ");
|
|
97
|
+
const body = hnText(item.text) || (item.url ? `Link: ${item.url}` : "");
|
|
98
|
+
const text = [
|
|
99
|
+
item.title ?? "",
|
|
100
|
+
head,
|
|
101
|
+
body,
|
|
102
|
+
lines.length ? `Comments:\n\n${lines.join("\n\n")}` : "",
|
|
103
|
+
]
|
|
104
|
+
.filter(Boolean)
|
|
105
|
+
.join("\n\n");
|
|
106
|
+
return {
|
|
107
|
+
url,
|
|
108
|
+
media: "text",
|
|
109
|
+
...(item.title ? { title: item.title } : {}),
|
|
110
|
+
text,
|
|
111
|
+
...(item.author ? { channel: `hn/${item.author}` } : {}),
|
|
112
|
+
...(item.created_at ? { date: item.created_at.slice(0, 10) } : {}),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export function hn(o = {}) {
|
|
116
|
+
const fetchFn = o.fetchFn ?? fetch;
|
|
117
|
+
const get = async (path) => {
|
|
118
|
+
const res = await fetchFn(`${HN_API}/${path}`, {
|
|
119
|
+
headers: { accept: "application/json" },
|
|
120
|
+
signal: AbortSignal.timeout(30_000),
|
|
121
|
+
}).catch((err) => {
|
|
122
|
+
throw transport("hn", err);
|
|
123
|
+
});
|
|
124
|
+
if (!res.ok)
|
|
125
|
+
throw httpError("hn", res);
|
|
126
|
+
return (await res.json());
|
|
127
|
+
};
|
|
128
|
+
const stories = async (path) => ((await get(path)).hits ?? [])
|
|
129
|
+
.filter((s) => typeof s.objectID === "string")
|
|
130
|
+
.map(storyHit);
|
|
131
|
+
return {
|
|
132
|
+
name: "hn",
|
|
133
|
+
kind: "both",
|
|
134
|
+
cost: "free",
|
|
135
|
+
first: true,
|
|
136
|
+
keeps: (site) => /(^|\.)ycombinator\.com$/i.test(site),
|
|
137
|
+
search: (q) => stories(`search?query=${encodeURIComponent(q.terms)}&tags=story&hitsPerPage=${o.n ?? 20}`),
|
|
138
|
+
follows: (as, url) => as === "posts" && hnUser(url) !== null,
|
|
139
|
+
follow(_as, url, n) {
|
|
140
|
+
const user = hnUser(url);
|
|
141
|
+
if (!user)
|
|
142
|
+
throw new Error(`hn: not a user's page: ${url}`);
|
|
143
|
+
return stories(`search_by_date?tags=story,author_${user}&hitsPerPage=${Math.min(n, 100)}`);
|
|
144
|
+
},
|
|
145
|
+
opens: (url) => hnItem(url) !== null,
|
|
146
|
+
async open(h) {
|
|
147
|
+
const id = hnItem(h.url);
|
|
148
|
+
if (!id)
|
|
149
|
+
throw new Error(`hn: not a thread: ${h.url}`);
|
|
150
|
+
return hnThreadDocument(h.url, await get(`items/${id}`));
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=hn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hn.js","sourceRoot":"","sources":["../../src/sources/hn.ts"],"names":[],"mappings":"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"}
|
package/dist/sources/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The sources: one file each, registered by name. `searxng` and `
|
|
2
|
+
* The sources: one file each, registered by name. `searxng`, `exa` and `perplexity` search the web, `hn`
|
|
3
|
+
* searches and reads Hacker News, `linkedin` searches posts through the desk, `arxiv`
|
|
3
4
|
* searches and reads papers, `youtube`
|
|
4
5
|
* searches and reads videos, `fetcher` and `ladder` open pages, `reddit` and `facebook` read a
|
|
5
6
|
* thread or a group post through the site's own route, `paste` is a person's list,
|
|
@@ -9,9 +10,13 @@ export * from "./arxiv.js";
|
|
|
9
10
|
export * from "./exa.js";
|
|
10
11
|
export * from "./fetcher.js";
|
|
11
12
|
export * from "./google.js";
|
|
13
|
+
export * from "./hn.js";
|
|
12
14
|
export * from "./ladder.js";
|
|
13
15
|
export * from "./ledger.js";
|
|
16
|
+
export * from "./linkedin.js";
|
|
17
|
+
export * from "./metrics.js";
|
|
14
18
|
export * from "./paste.js";
|
|
19
|
+
export * from "./perplexity.js";
|
|
15
20
|
export * from "./searxng.js";
|
|
16
21
|
export * from "./sites.js";
|
|
17
22
|
export * from "./ytdlp.js";
|
package/dist/sources/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The sources: one file each, registered by name. `searxng` and `
|
|
2
|
+
* The sources: one file each, registered by name. `searxng`, `exa` and `perplexity` search the web, `hn`
|
|
3
|
+
* searches and reads Hacker News, `linkedin` searches posts through the desk, `arxiv`
|
|
3
4
|
* searches and reads papers, `youtube`
|
|
4
5
|
* searches and reads videos, `fetcher` and `ladder` open pages, `reddit` and `facebook` read a
|
|
5
6
|
* thread or a group post through the site's own route, `paste` is a person's list,
|
|
@@ -9,9 +10,13 @@ export * from "./arxiv.js";
|
|
|
9
10
|
export * from "./exa.js";
|
|
10
11
|
export * from "./fetcher.js";
|
|
11
12
|
export * from "./google.js";
|
|
13
|
+
export * from "./hn.js";
|
|
12
14
|
export * from "./ladder.js";
|
|
13
15
|
export * from "./ledger.js";
|
|
16
|
+
export * from "./linkedin.js";
|
|
17
|
+
export * from "./metrics.js";
|
|
14
18
|
export * from "./paste.js";
|
|
19
|
+
export * from "./perplexity.js";
|
|
15
20
|
export * from "./searxng.js";
|
|
16
21
|
export * from "./sites.js";
|
|
17
22
|
export * from "./ytdlp.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LinkedIn through the desk's `linkedin` site routes, as the account the person names
|
|
3
|
+
* (`BIRDWATCH_ACCOUNTS=linkedin=linkedin@wren`): never a default, since the bare `linkedin`
|
|
4
|
+
* account is a person's own profile. Search is the posts page for a keyword (a daily cap, so only
|
|
5
|
+
* a query pinned to linkedin.com); a follow lists a member's or a company's own posts. Each hit
|
|
6
|
+
* carries the post's reactions and comment count, so an author's baseline comes for free.
|
|
7
|
+
*/
|
|
8
|
+
import type { LadderClient } from "@wrenautomation/read/fetch";
|
|
9
|
+
import type { Source } from "../engine/ports.js";
|
|
10
|
+
import type { HitViewIn } from "../engine/types.js";
|
|
11
|
+
/** A profile or Page URL: `in/<vanity>` or `company/<handle>`, the hit's channel. */
|
|
12
|
+
export declare function linkedinPage(url: string): {
|
|
13
|
+
kind: "in" | "company";
|
|
14
|
+
id: string;
|
|
15
|
+
} | null;
|
|
16
|
+
interface Post {
|
|
17
|
+
text?: string;
|
|
18
|
+
author?: string;
|
|
19
|
+
authorUrl?: string | null;
|
|
20
|
+
at?: string;
|
|
21
|
+
reactions?: number;
|
|
22
|
+
comments?: number;
|
|
23
|
+
url?: string;
|
|
24
|
+
kind?: string;
|
|
25
|
+
}
|
|
26
|
+
/** One post of a route's answer as a hit; `channel` names the author when the post does not. */
|
|
27
|
+
export declare const postHit: (p: Post, channel?: string) => HitViewIn | null;
|
|
28
|
+
export declare function linkedinSource(o: {
|
|
29
|
+
sites: LadderClient;
|
|
30
|
+
account: string;
|
|
31
|
+
}): Source;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LinkedIn through the desk's `linkedin` site routes, as the account the person names
|
|
3
|
+
* (`BIRDWATCH_ACCOUNTS=linkedin=linkedin@wren`): never a default, since the bare `linkedin`
|
|
4
|
+
* account is a person's own profile. Search is the posts page for a keyword (a daily cap, so only
|
|
5
|
+
* a query pinned to linkedin.com); a follow lists a member's or a company's own posts. Each hit
|
|
6
|
+
* carries the post's reactions and comment count, so an author's baseline comes for free.
|
|
7
|
+
*/
|
|
8
|
+
import { metricsOf } from "./metrics.js";
|
|
9
|
+
import { routeCall } from "./sites.js";
|
|
10
|
+
/** Posts per search page: the route's most. */
|
|
11
|
+
const SEARCH_MAX = 50;
|
|
12
|
+
/** The widest window the search route offers. */
|
|
13
|
+
const SINCE = "past-month";
|
|
14
|
+
/** A profile or Page URL: `in/<vanity>` or `company/<handle>`, the hit's channel. */
|
|
15
|
+
export function linkedinPage(url) {
|
|
16
|
+
try {
|
|
17
|
+
const u = new URL(url);
|
|
18
|
+
if (!/(^|\.)linkedin\.com$/i.test(u.hostname))
|
|
19
|
+
return null;
|
|
20
|
+
const m = /^\/(in|company)\/([^/?#]+)\/?/.exec(u.pathname);
|
|
21
|
+
return m?.[1] && m[2]
|
|
22
|
+
? { kind: m[1], id: decodeURIComponent(m[2]).toLowerCase() }
|
|
23
|
+
: null;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const channelOf = (page, author) => page ? `${page.kind}/${page.id}` : author;
|
|
30
|
+
const isObj = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
31
|
+
/** One post of a route's answer as a hit; `channel` names the author when the post does not. */
|
|
32
|
+
export const postHit = (p, channel) => {
|
|
33
|
+
if (!p.url)
|
|
34
|
+
return null;
|
|
35
|
+
const text = (p.text ?? "").trim();
|
|
36
|
+
const by = channel ?? channelOf(p.authorUrl ? linkedinPage(p.authorUrl) : null, p.author);
|
|
37
|
+
return {
|
|
38
|
+
url: p.url,
|
|
39
|
+
...(by ? { channel: by } : {}),
|
|
40
|
+
...(p.at ? { date: p.at.slice(0, 10) } : {}),
|
|
41
|
+
...(text ? { snippet: text.slice(0, 300) } : {}),
|
|
42
|
+
...metricsOf({ likes: p.reactions, comments: p.comments }),
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
const hitsOf = (body, key, channel) => {
|
|
46
|
+
const list = isObj(body) && Array.isArray(body[key]) ? body[key] : [];
|
|
47
|
+
return list
|
|
48
|
+
.filter((p) => key !== "activity" || p.kind === "post") // own posts only: a repost is another's draw
|
|
49
|
+
.map((p) => postHit(p, channel))
|
|
50
|
+
.filter((h) => h !== null);
|
|
51
|
+
};
|
|
52
|
+
export function linkedinSource(o) {
|
|
53
|
+
const who = `linkedin as ${o.account}`;
|
|
54
|
+
return {
|
|
55
|
+
name: "linkedin",
|
|
56
|
+
kind: "search",
|
|
57
|
+
cost: "browser",
|
|
58
|
+
keeps: (site) => /(^|\.)linkedin\.com$/i.test(site),
|
|
59
|
+
pinnedOnly: true,
|
|
60
|
+
async search(q) {
|
|
61
|
+
const input = { keywords: q.terms, max: SEARCH_MAX, since: SINCE };
|
|
62
|
+
const body = await routeCall(o.sites, who, "linkedin", "/search/results/content", input, o.account);
|
|
63
|
+
return hitsOf(body, "posts");
|
|
64
|
+
},
|
|
65
|
+
follows: (as, url) => as === "posts" && linkedinPage(url) !== null,
|
|
66
|
+
async follow(_as, url, n) {
|
|
67
|
+
const page = linkedinPage(url);
|
|
68
|
+
if (!page)
|
|
69
|
+
throw new Error(`linkedin: not a profile or Page: ${url}`);
|
|
70
|
+
const channel = channelOf(page);
|
|
71
|
+
if (page.kind === "company") {
|
|
72
|
+
const input = { company: page.id, max: Math.min(n, SEARCH_MAX) };
|
|
73
|
+
const body = await routeCall(o.sites, who, "linkedin", `/company/${page.id}/posts`, input, o.account);
|
|
74
|
+
return hitsOf(body, "posts", channel);
|
|
75
|
+
}
|
|
76
|
+
const input = { vanity: page.id, max: Math.min(n, 100) };
|
|
77
|
+
const body = await routeCall(o.sites, who, "linkedin", `/in/${page.id}/activity`, input, o.account);
|
|
78
|
+
return hitsOf(body, "activity", channel);
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=linkedin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkedin.js","sourceRoot":"","sources":["../../src/sources/linkedin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MetricKey, Metrics } from "../engine/types.js";
|
|
2
|
+
/** `{ metrics }` from the counts given, whole and present; nothing when none is. */
|
|
3
|
+
export declare const metricsOf: (counts: Partial<Record<MetricKey, number | null | undefined>>) => {
|
|
4
|
+
metrics?: Metrics;
|
|
5
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** `{ metrics }` from the counts given, whole and present; nothing when none is. */
|
|
2
|
+
export const metricsOf = (counts) => {
|
|
3
|
+
const metrics = {};
|
|
4
|
+
for (const [k, v] of Object.entries(counts))
|
|
5
|
+
if (typeof v === "number" && Number.isFinite(v) && v >= 0)
|
|
6
|
+
metrics[k] = Math.round(v);
|
|
7
|
+
return Object.keys(metrics).length ? { metrics } : {};
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/sources/metrics.ts"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,MAA6D,EACtC,EAAE;IACzB,MAAM,OAAO,GAAY,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAA6C;QACrF,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Perplexity Search: `POST https://api.perplexity.ai/search`, a key per call from the ring.
|
|
3
|
+
* Perplexity's own index, raw results with a snippet, no synthesis. Metered per request, not
|
|
4
|
+
* per token: `fast` is $1 per 1K requests (`web` $5). The answer carries no cost, so the
|
|
5
|
+
* spend takes the list price.
|
|
6
|
+
*/
|
|
7
|
+
import type { Source } from "../engine/ports.js";
|
|
8
|
+
export declare const PERPLEXITY_SEARCH = "https://api.perplexity.ai/search";
|
|
9
|
+
/** List price of one `fast` request, USD (docs.perplexity.ai/guides/pricing). */
|
|
10
|
+
export declare const PERPLEXITY_FAST_USD = 0.001;
|
|
11
|
+
export declare function perplexity(o: {
|
|
12
|
+
keys: readonly string[];
|
|
13
|
+
fetchFn?: typeof fetch;
|
|
14
|
+
n?: number;
|
|
15
|
+
}): Source;
|