@wrenautomation/birdwatch 0.30.11 → 0.31.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.
@@ -9,6 +9,11 @@
9
9
  * (`GET $url/api/sites/web/fetch?url=&from=`, a bearer token); `ingressLadderClient` for the
10
10
  * Restate ingress the desk worker sits behind (`POST $url/desk/call`, the same bearer).
11
11
  */
12
+ /**
13
+ * How long one worker call may take. A desk flow runs at a person's pace: a LinkedIn post
14
+ * search of 50 took 195 s on 2026-11-03, so three minutes cut it off after the cap was spent.
15
+ */
16
+ export declare const WORKER_WAIT_MS = 600000;
12
17
  import { type LadderClient, type LadderTier } from "@wrenautomation/read/fetch";
13
18
  import { type Media, type Reader } from "../document/index.js";
14
19
  import type { Source } from "../engine/ports.js";
@@ -32,11 +37,15 @@ export declare function httpLadderClient(o: {
32
37
  fetchFn?: typeof fetch;
33
38
  }): LadderClient;
34
39
  /**
35
- * The Restate ingress wire to an autobrowse worker: `POST $url/$service/call` with the site
36
- * call as its body, the way wren's CLI reaches the desk. `service` is `desk` (the Mac) or
37
- * `sites` (a box); `caller` names who asks, for the worker's per-caller usage. Restate answers a
38
- * refused call as `{"code":429,"message":"…"}` under that status: a 429 is the ladder's "cap".
39
- * A coded refusal adds `"metadata":{"code":"need_login"}`.
40
+ * The Restate ingress wire to an autobrowse worker: the site call as the body of `POST
41
+ * $url/$service/call/send`, the way wren's CLI reaches the desk, then `GET
42
+ * $url/restate/invocation/$id/output` every few seconds until the answer is in. Sent, not held:
43
+ * a desk flow runs for minutes, a held request dies on the way (a proxy's idle cut, undici's
44
+ * five-minute wait for headers), and Restate retries a cut flow on its own, so the answer
45
+ * lands whichever try finishes. `service` is `desk` (the Mac) or `sites` (a box); `caller`
46
+ * names who asks, for the worker's per-caller usage. Restate answers a refused call as
47
+ * `{"code":429,"message":"…"}` under that status: a 429 is the ladder's "cap". A coded refusal
48
+ * adds `"metadata":{"code":"need_login"}`.
40
49
  */
41
50
  export declare function ingressLadderClient(o: {
42
51
  url: string;
@@ -44,4 +53,6 @@ export declare function ingressLadderClient(o: {
44
53
  service?: string;
45
54
  caller?: string;
46
55
  fetchFn?: typeof fetch;
56
+ /** For tests: the wait between polls. */
57
+ sleepFn?: (ms: number) => Promise<void>;
47
58
  }): LadderClient;
@@ -9,6 +9,17 @@
9
9
  * (`GET $url/api/sites/web/fetch?url=&from=`, a bearer token); `ingressLadderClient` for the
10
10
  * Restate ingress the desk worker sits behind (`POST $url/desk/call`, the same bearer).
11
11
  */
12
+ /**
13
+ * How long one worker call may take. A desk flow runs at a person's pace: a LinkedIn post
14
+ * search of 50 took 195 s on 2026-11-03, so three minutes cut it off after the cap was spent.
15
+ */
16
+ export const WORKER_WAIT_MS = 600_000;
17
+ /** One short request: the send, a poll. */
18
+ const SEND_WAIT_MS = 30_000;
19
+ /** Between polls of a running invocation. */
20
+ const POLL_MS = 5_000;
21
+ /** Restate's answer for an invocation still running. */
22
+ const NOT_DONE = 470;
12
23
  import { Transient } from "@wrenautomation/models";
13
24
  import { fetchLadder } from "@wrenautomation/read/fetch";
14
25
  import { defaultReaders } from "../document/index.js";
@@ -92,7 +103,7 @@ export function httpLadderClient(o) {
92
103
  ...(o.token ? { authorization: `Bearer ${o.token}` } : {}),
93
104
  },
94
105
  ...(read ? {} : { body: JSON.stringify(input ?? {}) }),
95
- signal: AbortSignal.timeout(180_000),
106
+ signal: AbortSignal.timeout(WORKER_WAIT_MS),
96
107
  });
97
108
  const text = await res.text();
98
109
  const body = text ? JSON.parse(text) : null;
@@ -105,26 +116,48 @@ export function httpLadderClient(o) {
105
116
  };
106
117
  }
107
118
  /**
108
- * The Restate ingress wire to an autobrowse worker: `POST $url/$service/call` with the site
109
- * call as its body, the way wren's CLI reaches the desk. `service` is `desk` (the Mac) or
110
- * `sites` (a box); `caller` names who asks, for the worker's per-caller usage. Restate answers a
111
- * refused call as `{"code":429,"message":"…"}` under that status: a 429 is the ladder's "cap".
112
- * A coded refusal adds `"metadata":{"code":"need_login"}`.
119
+ * The Restate ingress wire to an autobrowse worker: the site call as the body of `POST
120
+ * $url/$service/call/send`, the way wren's CLI reaches the desk, then `GET
121
+ * $url/restate/invocation/$id/output` every few seconds until the answer is in. Sent, not held:
122
+ * a desk flow runs for minutes, a held request dies on the way (a proxy's idle cut, undici's
123
+ * five-minute wait for headers), and Restate retries a cut flow on its own, so the answer
124
+ * lands whichever try finishes. `service` is `desk` (the Mac) or `sites` (a box); `caller`
125
+ * names who asks, for the worker's per-caller usage. Restate answers a refused call as
126
+ * `{"code":429,"message":"…"}` under that status: a 429 is the ladder's "cap". A coded refusal
127
+ * adds `"metadata":{"code":"need_login"}`.
113
128
  */
114
129
  export function ingressLadderClient(o) {
115
130
  const fetchFn = o.fetchFn ?? fetch;
131
+ const sleepFn = o.sleepFn ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
116
132
  const base = o.url.replace(/\/$/, "");
117
133
  const service = o.service ?? "desk";
118
134
  const caller = o.caller ?? "birdwatch";
135
+ const headers = {
136
+ "content-type": "application/json",
137
+ ...(o.token ? { authorization: `Bearer ${o.token}` } : {}),
138
+ };
139
+ const bodyOf = async (res) => {
140
+ const text = await res.text();
141
+ try {
142
+ return { text, body: text ? JSON.parse(text) : null };
143
+ }
144
+ catch {
145
+ return { text, body: text };
146
+ }
147
+ };
148
+ const refusal = (site, method, path, res, text, body) => {
149
+ const said = body && typeof body === "object" && "message" in body
150
+ ? String(body.message)
151
+ : text || res.statusText;
152
+ // A coded refusal: autobrowse puts the access code in the terminal error's metadata.
153
+ const code = body?.metadata?.code;
154
+ return new LadderCallError(`${site} ${method} ${path}: ${res.status} ${said}`, res.status, typeof code === "string" ? code : null);
155
+ };
119
156
  return {
120
157
  async call(site, method, path, input, as) {
121
- const res = await fetchFn(`${base}/${service}/call`, {
158
+ const sent = await fetchFn(`${base}/${service}/call/send`, {
122
159
  method: "POST",
123
- headers: {
124
- "content-type": "application/json",
125
- "idempotency-key": crypto.randomUUID(),
126
- ...(o.token ? { authorization: `Bearer ${o.token}` } : {}),
127
- },
160
+ headers: { ...headers, "idempotency-key": crypto.randomUUID() },
128
161
  body: JSON.stringify({
129
162
  site,
130
163
  method,
@@ -133,25 +166,30 @@ export function ingressLadderClient(o) {
133
166
  caller,
134
167
  ...(as?.account ? { account: as.account } : {}),
135
168
  }),
136
- signal: AbortSignal.timeout(180_000),
169
+ signal: AbortSignal.timeout(SEND_WAIT_MS),
137
170
  });
138
- const text = await res.text();
139
- let body = null;
140
- try {
141
- body = text ? JSON.parse(text) : null;
142
- }
143
- catch {
144
- body = text;
171
+ const first = await bodyOf(sent);
172
+ if (!sent.ok)
173
+ throw refusal(site, method, path, sent, first.text, first.body);
174
+ const id = first.body?.invocationId;
175
+ if (typeof id !== "string")
176
+ throw new Error(`${site} ${method} ${path}: the ingress named no invocation`);
177
+ const until = Date.now() + WORKER_WAIT_MS;
178
+ for (;;) {
179
+ const res = await fetchFn(`${base}/restate/invocation/${id}/output`, {
180
+ headers,
181
+ signal: AbortSignal.timeout(SEND_WAIT_MS),
182
+ });
183
+ const { text, body } = await bodyOf(res);
184
+ if (res.ok)
185
+ return body;
186
+ // 470: the invocation runs still
187
+ if (res.status !== NOT_DONE)
188
+ throw refusal(site, method, path, res, text, body);
189
+ if (Date.now() >= until)
190
+ throw new Error(`${site} ${method} ${path}: no answer in ${WORKER_WAIT_MS / 1000} s (${id})`);
191
+ await sleepFn(POLL_MS);
145
192
  }
146
- if (!res.ok) {
147
- const said = body && typeof body === "object" && "message" in body
148
- ? String(body.message)
149
- : text || res.statusText;
150
- // A coded refusal: autobrowse puts the access code in the terminal error's metadata.
151
- const code = body?.metadata?.code;
152
- throw new LadderCallError(`${site} ${method} ${path}: ${res.status} ${said}`, res.status, typeof code === "string" ? code : null);
153
- }
154
- return body;
155
193
  },
156
194
  };
157
195
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ladder.js","sourceRoot":"","sources":["../../src/sources/ladder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ladder.js","sourceRoot":"","sources":["../../src/sources/ladder.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,11 @@
8
8
  import { metricsOf } from "./metrics.js";
9
9
  import { routeCall } from "./sites.js";
10
10
  /** Posts per search page: the route's most. */
11
- const SEARCH_MAX = 50;
11
+ /**
12
+ * Posts per page read. The flow scrolls at a person's pace: 50 took 196 s on 2026-11-03, and
13
+ * the desk's stream to Restate was cut twice past two minutes (each retry spent the cap).
14
+ */
15
+ const SEARCH_MAX = 20;
12
16
  /** The widest window the search route offers. */
13
17
  const SINCE = "past-month";
14
18
  /** A profile or Page URL: `in/<vanity>` or `company/<handle>`, the hit's channel. */
@@ -73,7 +77,7 @@ export function linkedinSource(o) {
73
77
  const body = await routeCall(o.sites, who, "linkedin", `/company/${page.id}/posts`, input, o.account);
74
78
  return hitsOf(body, "posts", channel);
75
79
  }
76
- const input = { vanity: page.id, max: Math.min(n, 100) };
80
+ const input = { vanity: page.id, max: Math.min(n, SEARCH_MAX) };
77
81
  const body = await routeCall(o.sites, who, "linkedin", `/in/${page.id}/activity`, input, o.account);
78
82
  return hitsOf(body, "activity", channel);
79
83
  },
@@ -1 +1 @@
1
- {"version":3,"file":"linkedin.js","sourceRoot":"","sources":["../../src/sources/linkedin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linkedin.js","sourceRoot":"","sources":["../../src/sources/linkedin.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.30.11",
3
+ "version": "0.31.0",
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.30.11",
58
- "@wrenautomation/read": "0.30.11"
57
+ "@wrenautomation/models": "0.31.0",
58
+ "@wrenautomation/read": "0.31.0"
59
59
  },
60
60
  "scripts": {
61
61
  "typecheck": "tsc --noEmit",