@wrenautomation/birdwatch 0.31.1 → 0.32.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.
@@ -1,11 +1,13 @@
1
1
  /**
2
- * yt-dlp as a source: `ytsearchN:<terms>` for hits (what the listing shows for free), and a
3
- * YouTube video read whole (captions, else Gemini hears it) as one document. Other hosts' videos
4
- * need the watcher's keys: not here yet. Metered: a read without captions costs a model call.
2
+ * YouTube as a source. Hits: the Data API when there is a key (search, a channel's uploads,
3
+ * exact counts), else yt-dlp's listings. An open reads the captions with yt-dlp, no model (the
4
+ * API gives no captions for others' videos). `youtubeSee` reads what a video shows, only on the
5
+ * agent's ask. Other hosts' posts list through yt-dlp.
5
6
  */
6
- import { flatPlaylist, pageInfo, readYoutube } from "@wrenautomation/read/video";
7
+ import { flatPlaylist, pageInfo, readYoutube, seeYoutube, } from "@wrenautomation/read/video";
7
8
  import { youtubeId } from "../engine/canonical.js";
8
9
  import { metricsOf } from "./metrics.js";
10
+ import { QuotaSpent } from "./youtube-api.js";
9
11
  /** The model, with the sum of what its calls cost; undefined once a call came back unpriced. */
10
12
  export function pricedOf(m) {
11
13
  let sum = 0;
@@ -97,24 +99,24 @@ export function ytdlpSource(o) {
97
99
  const list = o.list ?? flatPlaylist;
98
100
  const read = o.read ?? readYoutube;
99
101
  const info = o.info ?? pageInfo;
100
- let video;
101
- const videoModel = (make) => {
102
- video ??= make();
103
- return video;
104
- };
102
+ const warn = o.warn ?? ((l) => console.error(l));
105
103
  const pause = o.pause ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
106
- // one read at a time, a gap between: the open step runs 4 at once
107
- let line = Promise.resolve();
108
- let first = true;
109
- const inLine = (fn) => {
110
- const next = line.then(async () => {
111
- if (!first)
112
- await pause(OPEN_GAP_MS);
113
- first = false;
114
- return fn();
115
- });
116
- line = next.catch(() => undefined);
117
- return next;
104
+ const inLine = queue(pause);
105
+ // the day's quota spent: yt-dlp for the rest of this process
106
+ let api = o.api;
107
+ const viaApi = async (call) => {
108
+ if (!api)
109
+ return null;
110
+ try {
111
+ return await call(api);
112
+ }
113
+ catch (err) {
114
+ if (!(err instanceof QuotaSpent))
115
+ throw err;
116
+ warn(`${err.message}: yt-dlp lists YouTube from now on`);
117
+ api = undefined;
118
+ return null;
119
+ }
118
120
  };
119
121
  return {
120
122
  name: "youtube",
@@ -123,12 +125,21 @@ export function ytdlpSource(o) {
123
125
  // YouTube's own search knows no other site.
124
126
  keeps: (site) => /(^|\.)(youtube\.com|youtu\.be)$/i.test(site),
125
127
  async search(q) {
126
- const entries = await list(o.ytDlp, `ytsearch${o.n ?? 10}:${q.terms}`);
128
+ const n = o.n ?? 10;
129
+ const got = await viaApi((a) => a.search(q.terms, n));
130
+ if (got)
131
+ return got;
132
+ const entries = await list(o.ytDlp, `ytsearch${n}:${q.terms}`);
127
133
  return entries.map((e) => entryHit(e)).filter((h) => h !== null);
128
134
  },
129
135
  follows: (as, url) => as === "posts" && postsOf(url) !== null,
130
136
  async follow(_as, url, n) {
131
137
  let at = postsOf(url);
138
+ if (at === "video" || at?.site === "youtube") {
139
+ const got = await viaApi((a) => a.uploads(url, n));
140
+ if (got)
141
+ return got;
142
+ }
132
143
  if (at === "video") {
133
144
  const v = await info(o.ytDlp, url);
134
145
  const channel = [v.channel_url, v.uploader_url].find((x) => typeof x === "string");
@@ -148,20 +159,60 @@ export function ytdlpSource(o) {
148
159
  .filter((h) => h !== null);
149
160
  },
150
161
  opens: isYoutube,
151
- open: (h) => inLine(() => openOne(h)),
162
+ // captions only, free: what the screen shows is `youtubeSee`, on the agent's ask
163
+ open: (h) => inLine(async () => {
164
+ if (!isYoutube(h.url))
165
+ throw new Error(`youtube: not a YouTube page: ${h.url}`);
166
+ const doc = videoDocument(await read(h.url, { ytDlp: o.ytDlp }));
167
+ Object.defineProperty(doc, "usd", { value: 0, enumerable: false });
168
+ return doc;
169
+ }),
170
+ };
171
+ }
172
+ /** One call at a time, a gap between: the open step runs 4 at once. */
173
+ function queue(pause) {
174
+ let line = Promise.resolve();
175
+ let first = true;
176
+ return (fn) => {
177
+ const next = line.then(async () => {
178
+ if (!first)
179
+ await pause(OPEN_GAP_MS);
180
+ first = false;
181
+ return fn();
182
+ });
183
+ line = next.catch(() => undefined);
184
+ return next;
185
+ };
186
+ }
187
+ /**
188
+ * What a YouTube video shows, on the agent's ask only (`open --see`): the video downloaded, every
189
+ * frame read by `eye` (Claude: its text and what it shows). A hit with no document gets its
190
+ * words too: the captions, else `ear` hears the audio. The eye's calls are priced; an ear's are
191
+ * not, so a heard read is unpriced.
192
+ */
193
+ export function youtubeSee(o) {
194
+ const see = o.see ?? seeYoutube;
195
+ const inLine = queue(o.pause ?? ((ms) => new Promise((r) => setTimeout(r, ms))));
196
+ return {
197
+ name: "youtube-see",
198
+ kind: "open",
199
+ cost: "metered",
200
+ asked: true,
201
+ opens: isYoutube,
202
+ open: (h, opt) => inLine(async () => {
203
+ const priced = pricedOf(o.eye);
204
+ const r = await see(h.url, {
205
+ ytDlp: o.ytDlp,
206
+ eye: priced.model,
207
+ words: !opt?.read,
208
+ ...(o.ear ? { ear: o.ear } : {}),
209
+ });
210
+ const doc = videoDocument(r);
211
+ const usd = r.heard ? undefined : priced.usd();
212
+ if (usd !== undefined)
213
+ Object.defineProperty(doc, "usd", { value: usd, enumerable: false });
214
+ return doc;
215
+ }),
152
216
  };
153
- async function openOne(h) {
154
- if (!isYoutube(h.url))
155
- throw new Error(`youtube: not a YouTube page: ${h.url}`);
156
- const model = o.video ? await videoModel(o.video) : null;
157
- const priced = model ? pricedOf(model) : null;
158
- const doc = videoDocument(await read(h.url, { ytDlp: o.ytDlp, ...(priced ? { video: priced.model } : {}) }));
159
- // captions: free; heard: the model's priced calls; an unpriced call leaves it unpriced
160
- const usd = priced ? priced.usd() : 0;
161
- // hidden: the spend reads it, the stored document never carries it
162
- if (usd !== undefined)
163
- Object.defineProperty(doc, "usd", { value: usd, enumerable: false });
164
- return doc;
165
- }
166
217
  }
167
218
  //# sourceMappingURL=ytdlp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ytdlp.js","sourceRoot":"","sources":["../../src/sources/ytdlp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ytdlp.js","sourceRoot":"","sources":["../../src/sources/ytdlp.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrenautomation/birdwatch",
3
- "version": "0.31.1",
3
+ "version": "0.32.1",
4
4
  "description": "Research from the open web, driven by an agent one step per command: plan, search, triage, open, extract behind a quote gate, check, review, every record in a ledger. The agent decides; the engine runs the fixed steps. The ask and plan files, the document side (Document, Finding, Proof, the claim extractor), the sources (SearXNG, Exa, Perplexity, Hacker News, Google, arXiv, YouTube, Reddit, LinkedIn, Facebook, the fetch ladder) and the ledger. One CLI, `birdwatch`, with the readers of @wrenautomation/read on it.",
5
5
  "license": "PolyForm-Strict-1.0.0",
6
6
  "repository": {
@@ -54,8 +54,8 @@
54
54
  "minisearch": "7.2.0",
55
55
  "ulid": "3.0.2",
56
56
  "zod": "4.6.5",
57
- "@wrenautomation/models": "0.31.1",
58
- "@wrenautomation/read": "0.31.1"
57
+ "@wrenautomation/models": "0.32.1",
58
+ "@wrenautomation/read": "0.32.1"
59
59
  },
60
60
  "scripts": {
61
61
  "typecheck": "tsc --noEmit",