@rackbops/docket-types 0.21.0 → 0.23.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.
Files changed (42) hide show
  1. package/README.md +56 -0
  2. package/dist/index.d.ts +8 -6
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +8 -6
  5. package/dist/index.js.map +1 -1
  6. package/dist/news.d.ts +52 -0
  7. package/dist/news.d.ts.map +1 -1
  8. package/dist/news.js +243 -24
  9. package/dist/news.js.map +1 -1
  10. package/dist/research-answer.d.ts +138 -7
  11. package/dist/research-answer.d.ts.map +1 -1
  12. package/dist/research-answer.js +167 -12
  13. package/dist/research-answer.js.map +1 -1
  14. package/dist/research-social.d.ts +108 -0
  15. package/dist/research-social.d.ts.map +1 -0
  16. package/dist/research-social.js +320 -0
  17. package/dist/research-social.js.map +1 -0
  18. package/dist/research.d.ts +28 -0
  19. package/dist/research.d.ts.map +1 -1
  20. package/dist/research.js +55 -16
  21. package/dist/research.js.map +1 -1
  22. package/dist/social-links.d.ts +30 -0
  23. package/dist/social-links.d.ts.map +1 -0
  24. package/dist/social-links.js +129 -0
  25. package/dist/social-links.js.map +1 -0
  26. package/dist/want-ebay.d.ts +6 -3
  27. package/dist/want-ebay.d.ts.map +1 -1
  28. package/dist/want-ebay.js +77 -30
  29. package/dist/want-ebay.js.map +1 -1
  30. package/dist/want-sources.d.ts +21 -0
  31. package/dist/want-sources.d.ts.map +1 -1
  32. package/dist/want-sources.js +7 -0
  33. package/dist/want-sources.js.map +1 -1
  34. package/dist/wantjudge.d.ts +32 -3
  35. package/dist/wantjudge.d.ts.map +1 -1
  36. package/dist/wantjudge.js +207 -14
  37. package/dist/wantjudge.js.map +1 -1
  38. package/dist/wantlist.d.ts +7 -0
  39. package/dist/wantlist.d.ts.map +1 -1
  40. package/dist/wantlist.js +1 -0
  41. package/dist/wantlist.js.map +1 -1
  42. package/package.json +2 -2
@@ -6,13 +6,36 @@
6
6
  * carry an instruction; the most it can do here is be quoted as text.
7
7
  */
8
8
  import { clean, ZWSP } from "@rackbops/docket-core";
9
+ import { type SocialPlatform } from "./social-links.js";
9
10
  /** The cleaner lives in core, so the dispatcher's own messages use it too; re-exported here. */
10
11
  export { clean, ZWSP };
11
12
  /** One claim and the pages it rests on. */
12
13
  export interface ResearchFinding {
13
14
  claim: string;
14
- /** http(s) URLs the run says it opened. */
15
+ /**
16
+ * http(s) URLs the run says it opened; a social post link as one post (`canonicalSocialUrl`,
17
+ * 0.23.0), so a repost counts once.
18
+ */
15
19
  sources: string[];
20
+ /**
21
+ * The platform the sources are posts on (0.23.0), as the run set it or as every source's host
22
+ * says; absent for a web page. The two fields below are kept only with it.
23
+ */
24
+ platform?: SocialPlatform;
25
+ /** When the post was published, as the run read it: an instant, "about <date>", or "undated". */
26
+ publishedAt?: string;
27
+ /** `read`: the transcript, the comments or the post itself was opened; `snippet`: a caption or a search result only. */
28
+ evidence?: "read" | "snippet";
29
+ }
30
+ /** What a run did on one platform (0.23.0): the DM's "Social:" line is built from these. */
31
+ export declare const COVERAGE_STATUSES: readonly ["searched", "empty", "unavailable", "skipped"];
32
+ export type CoverageStatus = (typeof COVERAGE_STATUSES)[number];
33
+ export interface Coverage {
34
+ /** The platform's id, lower-cased: youtube, tiktok, instagram, bluesky, reddit, or another. */
35
+ platform: string;
36
+ status: CoverageStatus;
37
+ /** A few words: what was found, or why not. */
38
+ note?: string;
16
39
  }
17
40
  /**
18
41
  * A page the run needed but could not open (0.9.0): refused, a 403, a CAPTCHA, a sign-in wall.
@@ -31,6 +54,11 @@ export interface ResearchAnswer {
31
54
  uncertain: string[];
32
55
  /** Pages the run needed but could not open; absent when there were none. Never rendered. */
33
56
  blocked?: BlockedPage[];
57
+ /**
58
+ * What the run did on each social platform (0.23.0); absent when none was in scope. Rendered
59
+ * as the DM's "Social:" line.
60
+ */
61
+ coverage?: Coverage[];
34
62
  }
35
63
  export declare const MAX_SUMMARY_CHARS = 1200;
36
64
  export declare const MAX_CLAIM_CHARS = 400;
@@ -42,6 +70,13 @@ export declare const MAX_UNCERTAIN_CHARS = 300;
42
70
  export declare const MAX_BLOCKED = 6;
43
71
  export declare const MAX_BLOCKED_SITE_CHARS = 100;
44
72
  export declare const MAX_BLOCKED_WHY_CHARS = 200;
73
+ /** A post's `publishedAt` as kept: an instant, "about 2026-10-19" or "undated" all fit. */
74
+ export declare const MAX_PUBLISHED_CHARS = 40;
75
+ export declare const MAX_COVERAGE = 8;
76
+ export declare const MAX_COVERAGE_PLATFORM_CHARS = 30;
77
+ export declare const MAX_COVERAGE_NOTE_CHARS = 120;
78
+ /** The DM's "Social:" line, kept whole like the "Couldn't open:" tail, so it is bounded here. */
79
+ export declare const MAX_COVERAGE_LINE_CHARS = 500;
45
80
  /** Discord's DM limit is 2000 characters; the rest is headroom for the host's own framing. */
46
81
  export declare const MAX_MESSAGE_CHARS = 1900;
47
82
  /** The JSON schema the research run answers in: the spike's (docket-runner spike/cases.json). */
@@ -64,9 +99,23 @@ export declare const ANSWER_SCHEMA: {
64
99
  readonly type: "array";
65
100
  readonly items: {
66
101
  readonly type: "string";
67
- readonly description: "A URL you opened.";
102
+ readonly description: "A URL you opened; for a post marked snippet, the post's own page.";
68
103
  };
69
104
  };
105
+ readonly platform: {
106
+ readonly type: "string";
107
+ readonly enum: readonly ["youtube", "tiktok", "instagram", "bluesky"];
108
+ readonly description: string;
109
+ };
110
+ readonly publishedAt: {
111
+ readonly type: "string";
112
+ readonly description: string;
113
+ };
114
+ readonly evidence: {
115
+ readonly type: "string";
116
+ readonly enum: readonly ["read", "snippet"];
117
+ readonly description: string;
118
+ };
70
119
  };
71
120
  readonly required: readonly ["claim", "sources"];
72
121
  };
@@ -99,6 +148,29 @@ export declare const ANSWER_SCHEMA: {
99
148
  readonly required: readonly ["site", "why"];
100
149
  };
101
150
  };
151
+ readonly coverage: {
152
+ readonly type: "array";
153
+ readonly description: string;
154
+ readonly items: {
155
+ readonly type: "object";
156
+ readonly properties: {
157
+ readonly platform: {
158
+ readonly type: "string";
159
+ readonly description: "youtube, tiktok, instagram, bluesky or reddit.";
160
+ };
161
+ readonly status: {
162
+ readonly type: "string";
163
+ readonly enum: readonly ["searched", "empty", "unavailable", "skipped"];
164
+ readonly description: string;
165
+ };
166
+ readonly note: {
167
+ readonly type: "string";
168
+ readonly description: "A few words: what was found, or why not.";
169
+ };
170
+ };
171
+ readonly required: readonly ["platform", "status"];
172
+ };
173
+ };
102
174
  };
103
175
  readonly required: readonly ["summary", "findings", "uncertain"];
104
176
  };
@@ -107,9 +179,19 @@ export declare function safeUrl(value: unknown): string | null;
107
179
  /**
108
180
  * The answer in `value`, capped and cleaned, or null when it is not one. A claim with no usable
109
181
  * source is not a finding: it moves to `uncertain`, marked, since every claim a reader might act
110
- * on needs a source the run opened.
182
+ * on needs a source the run opened. A source on a social platform is kept as one post
183
+ * (`canonicalSocialUrl`), so a `youtu.be` link and its watch page are one (0.23.0).
111
184
  */
112
185
  export declare function parseAnswer(value: unknown): ResearchAnswer | null;
186
+ /**
187
+ * The coverage rows in `value` (0.23.0), cleaned: a lower-cased one-line platform id, a status in
188
+ * `COVERAGE_STATUSES`, a one-line note when given; the first row per platform, at most
189
+ * `MAX_COVERAGE`. A row with no platform or an unknown status is dropped; anything not a list is
190
+ * none.
191
+ */
192
+ export declare function parseCoverage(value: unknown): Coverage[];
193
+ /** A claim as compared for repeats: case, spacing and a trailing stop do not count. */
194
+ export declare function sameClaim(claim: string): string;
113
195
  /**
114
196
  * The blocked pages in `value`, cleaned: a one-line site and reason, the URL only when `safeUrl`
115
197
  * takes it, at most `MAX_BLOCKED`. An entry with no site is dropped; anything not a list is none.
@@ -162,9 +244,23 @@ export declare const REVIEW_SCHEMA: {
162
244
  readonly type: "array";
163
245
  readonly items: {
164
246
  readonly type: "string";
165
- readonly description: "A URL you opened.";
247
+ readonly description: "A URL you opened; for a post marked snippet, the post's own page.";
166
248
  };
167
249
  };
250
+ readonly platform: {
251
+ readonly type: "string";
252
+ readonly enum: readonly ["youtube", "tiktok", "instagram", "bluesky"];
253
+ readonly description: string;
254
+ };
255
+ readonly publishedAt: {
256
+ readonly type: "string";
257
+ readonly description: string;
258
+ };
259
+ readonly evidence: {
260
+ readonly type: "string";
261
+ readonly enum: readonly ["read", "snippet"];
262
+ readonly description: string;
263
+ };
168
264
  };
169
265
  readonly required: readonly ["claim", "sources"];
170
266
  };
@@ -197,6 +293,29 @@ export declare const REVIEW_SCHEMA: {
197
293
  readonly required: readonly ["site", "why"];
198
294
  };
199
295
  };
296
+ readonly coverage: {
297
+ readonly type: "array";
298
+ readonly description: string;
299
+ readonly items: {
300
+ readonly type: "object";
301
+ readonly properties: {
302
+ readonly platform: {
303
+ readonly type: "string";
304
+ readonly description: "youtube, tiktok, instagram, bluesky or reddit.";
305
+ };
306
+ readonly status: {
307
+ readonly type: "string";
308
+ readonly enum: readonly ["searched", "empty", "unavailable", "skipped"];
309
+ readonly description: string;
310
+ };
311
+ readonly note: {
312
+ readonly type: "string";
313
+ readonly description: "A few words: what was found, or why not.";
314
+ };
315
+ };
316
+ readonly required: readonly ["platform", "status"];
317
+ };
318
+ };
200
319
  };
201
320
  readonly required: readonly ["summary", "findings", "uncertain"];
202
321
  readonly description: "The corrected answer, on revise only; left out on approve and reject.";
@@ -213,11 +332,23 @@ export declare const REVIEW_SCHEMA: {
213
332
  export declare function parseReview(value: unknown, draft?: ResearchAnswer): Review | null;
214
333
  /** Lines as one DM of at most `MAX_MESSAGE_CHARS`, whole lines dropped from the end. */
215
334
  export declare function fitMessage(lines: string[]): string;
335
+ /**
336
+ * A finding's line in a DM: the claim, for a post its platform, date and "snippet only" when it
337
+ * was not opened (0.23.0), then its first source in <...> so Discord shows the link without an
338
+ * embed.
339
+ */
340
+ export declare function findingLine(f: ResearchFinding): string;
341
+ /**
342
+ * The DM's "Social:" line (0.23.0): each platform's status, with its note in brackets, in one
343
+ * line of at most `MAX_COVERAGE_LINE_CHARS`.
344
+ */
345
+ export declare function coverageLine(coverage: readonly Coverage[]): string;
216
346
  /**
217
347
  * The DM a reviewed answer goes out as, at most `MAX_MESSAGE_CHARS`. Every piece of it was
218
- * cleaned by `parseAnswer`; the title is the owner's own and is cleaned here. `tail`, when given,
219
- * goes after the reviewer's note and is kept whole: the caller bounds it (the "couldn't open" list
220
- * and the queued line, 0.9.0). Without it the DM is what it was before 0.9.0.
348
+ * cleaned by `parseAnswer`; the title is the owner's own and is cleaned here. The "Social:" line
349
+ * (0.23.0, when the answer has `coverage`), the reviewer's note and `tail` are kept whole, in
350
+ * that order: `tail`, when given, is bounded by the caller (the "couldn't open" list and the
351
+ * queued line, 0.9.0). Without coverage or a tail the DM is what it was before 0.9.0.
221
352
  */
222
353
  export declare function renderAnswer(title: string, answer: ResearchAnswer, review: Review, tail?: string): string;
223
354
  /** Lines fitted into at most `max` characters, whole lines dropped from the end. */
@@ -1 +1 @@
1
- {"version":3,"file":"research-answer.d.ts","sourceRoot":"","sources":["../src/research-answer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"research-answer.d.ts","sourceRoot":"","sources":["../src/research-answer.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,11 @@
6
6
  * carry an instruction; the most it can do here is be quoted as text.
7
7
  */
8
8
  import { clean, ZWSP } from "@rackbops/docket-core";
9
+ import { canonicalSocialUrl, isSocialPlatform, platformName, platformOf, SOCIAL_PLATFORMS, } from "./social-links.js";
9
10
  /** The cleaner lives in core, so the dispatcher's own messages use it too; re-exported here. */
10
11
  export { clean, ZWSP };
12
+ /** What a run did on one platform (0.23.0): the DM's "Social:" line is built from these. */
13
+ export const COVERAGE_STATUSES = ["searched", "empty", "unavailable", "skipped"];
11
14
  export const MAX_SUMMARY_CHARS = 1200;
12
15
  export const MAX_CLAIM_CHARS = 400;
13
16
  export const MAX_URL_CHARS = 400;
@@ -18,6 +21,13 @@ export const MAX_UNCERTAIN_CHARS = 300;
18
21
  export const MAX_BLOCKED = 6;
19
22
  export const MAX_BLOCKED_SITE_CHARS = 100;
20
23
  export const MAX_BLOCKED_WHY_CHARS = 200;
24
+ /** A post's `publishedAt` as kept: an instant, "about 2026-10-19" or "undated" all fit. */
25
+ export const MAX_PUBLISHED_CHARS = 40;
26
+ export const MAX_COVERAGE = 8;
27
+ export const MAX_COVERAGE_PLATFORM_CHARS = 30;
28
+ export const MAX_COVERAGE_NOTE_CHARS = 120;
29
+ /** The DM's "Social:" line, kept whole like the "Couldn't open:" tail, so it is bounded here. */
30
+ export const MAX_COVERAGE_LINE_CHARS = 500;
21
31
  /** Discord's DM limit is 2000 characters; the rest is headroom for the host's own framing. */
22
32
  export const MAX_MESSAGE_CHARS = 1900;
23
33
  /** The JSON schema the research run answers in: the spike's (docket-runner spike/cases.json). */
@@ -33,7 +43,27 @@ export const ANSWER_SCHEMA = {
33
43
  claim: { type: "string" },
34
44
  sources: {
35
45
  type: "array",
36
- items: { type: "string", description: "A URL you opened." },
46
+ items: {
47
+ type: "string",
48
+ description: "A URL you opened; for a post marked snippet, the post's own page.",
49
+ },
50
+ },
51
+ platform: {
52
+ type: "string",
53
+ enum: [...SOCIAL_PLATFORMS],
54
+ description: "For a finding from a social post: the platform it is on. Leave it out for a web " +
55
+ "page.",
56
+ },
57
+ publishedAt: {
58
+ type: "string",
59
+ description: "For a finding from a post: when it was published -- the instant the platform " +
60
+ 'gave, "about <date>" worked out from a relative time, or "undated".',
61
+ },
62
+ evidence: {
63
+ type: "string",
64
+ enum: ["read", "snippet"],
65
+ description: "For a finding from a post: read when you opened the transcript, the comments or " +
66
+ "the post itself; snippet when you have only its caption or a search result.",
37
67
  },
38
68
  },
39
69
  required: ["claim", "sources"],
@@ -55,6 +85,28 @@ export const ANSWER_SCHEMA = {
55
85
  required: ["site", "why"],
56
86
  },
57
87
  },
88
+ coverage: {
89
+ type: "array",
90
+ description: "When social platforms were in scope: one entry per platform, and one for Reddit; " +
91
+ "leave it out otherwise.",
92
+ items: {
93
+ type: "object",
94
+ properties: {
95
+ platform: {
96
+ type: "string",
97
+ description: "youtube, tiktok, instagram, bluesky or reddit.",
98
+ },
99
+ status: {
100
+ type: "string",
101
+ enum: [...COVERAGE_STATUSES],
102
+ description: "searched: something found; empty: nothing found; unavailable: the call failed " +
103
+ "(say which); skipped: not searched (say why).",
104
+ },
105
+ note: { type: "string", description: "A few words: what was found, or why not." },
106
+ },
107
+ required: ["platform", "status"],
108
+ },
109
+ },
58
110
  },
59
111
  required: ["summary", "findings", "uncertain"],
60
112
  };
@@ -98,10 +150,39 @@ function decodeURIComponentSafe(text) {
98
150
  function isObj(v) {
99
151
  return typeof v === "object" && v !== null && !Array.isArray(v);
100
152
  }
153
+ /**
154
+ * The platform every source of a finding is on, when they agree (0.23.0); null when any is a web
155
+ * page, or they differ.
156
+ */
157
+ function platformOfAll(sources) {
158
+ const platforms = new Set(sources.map(platformOf));
159
+ const [only] = platforms;
160
+ return platforms.size === 1 && only ? only : null;
161
+ }
162
+ /**
163
+ * A finding's post fields (0.23.0): `platform` as the run set it (one of `SOCIAL_PLATFORMS`, and
164
+ * a source is on it) or as every source's host says; with one, `publishedAt` (one line, capped)
165
+ * and `evidence` when usable. A finding on web pages alone gets none, whatever the run set.
166
+ */
167
+ function postFields(f, sources) {
168
+ const given = isSocialPlatform(f.platform) && sources.some((u) => platformOf(u) === f.platform)
169
+ ? f.platform
170
+ : null;
171
+ const platform = given ?? platformOfAll(sources);
172
+ if (!platform)
173
+ return {};
174
+ const when = typeof f.publishedAt === "string" ? clean(f.publishedAt, MAX_PUBLISHED_CHARS, true) : "";
175
+ return {
176
+ platform,
177
+ ...(when.length > 0 ? { publishedAt: when } : {}),
178
+ ...(f.evidence === "read" || f.evidence === "snippet" ? { evidence: f.evidence } : {}),
179
+ };
180
+ }
101
181
  /**
102
182
  * The answer in `value`, capped and cleaned, or null when it is not one. A claim with no usable
103
183
  * source is not a finding: it moves to `uncertain`, marked, since every claim a reader might act
104
- * on needs a source the run opened.
184
+ * on needs a source the run opened. A source on a social platform is kept as one post
185
+ * (`canonicalSocialUrl`), so a `youtu.be` link and its watch page are one (0.23.0).
105
186
  */
106
187
  export function parseAnswer(value) {
107
188
  if (!isObj(value) || typeof value.summary !== "string" || !Array.isArray(value.findings)) {
@@ -119,11 +200,18 @@ export function parseAnswer(value) {
119
200
  if (claim.length === 0)
120
201
  continue;
121
202
  const raw = Array.isArray(f.sources) ? f.sources : [];
122
- const sources = [...new Set(raw.map(safeUrl).filter((u) => u !== null))];
203
+ const sources = [
204
+ ...new Set(raw
205
+ .map(safeUrl)
206
+ .filter((u) => u !== null)
207
+ .map(canonicalSocialUrl)),
208
+ ];
123
209
  if (sources.length === 0)
124
210
  unsourced.push(`${claim} (no source given)`);
125
- else
126
- findings.push({ claim, sources: sources.slice(0, MAX_SOURCES_PER_FINDING) });
211
+ else {
212
+ const kept = sources.slice(0, MAX_SOURCES_PER_FINDING);
213
+ findings.push({ claim, sources: kept, ...postFields(f, kept) });
214
+ }
127
215
  }
128
216
  // The model's own lines come first, so the cap drops markers before them: `withBarredSites`
129
217
  // reads these lines to tell a site was not opened.
@@ -138,13 +226,49 @@ export function parseAnswer(value) {
138
226
  }
139
227
  uncertain.push(...unsourced);
140
228
  const blocked = parseBlocked(value.blocked);
229
+ const coverage = parseCoverage(value.coverage);
141
230
  return {
142
231
  summary,
143
232
  findings: findings.slice(0, MAX_FINDINGS),
144
233
  uncertain: uncertain.slice(0, MAX_UNCERTAIN),
145
234
  ...(blocked.length > 0 ? { blocked } : {}),
235
+ ...(coverage.length > 0 ? { coverage } : {}),
146
236
  };
147
237
  }
238
+ /**
239
+ * The coverage rows in `value` (0.23.0), cleaned: a lower-cased one-line platform id, a status in
240
+ * `COVERAGE_STATUSES`, a one-line note when given; the first row per platform, at most
241
+ * `MAX_COVERAGE`. A row with no platform or an unknown status is dropped; anything not a list is
242
+ * none.
243
+ */
244
+ export function parseCoverage(value) {
245
+ if (!Array.isArray(value))
246
+ return [];
247
+ const out = [];
248
+ for (const c of value) {
249
+ if (out.length >= MAX_COVERAGE)
250
+ break;
251
+ if (!isObj(c) || typeof c.platform !== "string" || typeof c.status !== "string")
252
+ continue;
253
+ const platform = clean(c.platform, MAX_COVERAGE_PLATFORM_CHARS, true).toLowerCase();
254
+ const status = COVERAGE_STATUSES.includes(c.status)
255
+ ? c.status
256
+ : null;
257
+ if (platform.length === 0 || !status || out.some((o) => o.platform === platform))
258
+ continue;
259
+ const note = typeof c.note === "string" ? clean(c.note, MAX_COVERAGE_NOTE_CHARS, true) : "";
260
+ out.push({ platform, status, ...(note.length > 0 ? { note } : {}) });
261
+ }
262
+ return out;
263
+ }
264
+ /** A claim as compared for repeats: case, spacing and a trailing stop do not count. */
265
+ export function sameClaim(claim) {
266
+ return claim
267
+ .toLowerCase()
268
+ .replace(/\s+/g, " ")
269
+ .trim()
270
+ .replace(/[.!]+$/, "");
271
+ }
148
272
  /**
149
273
  * The blocked pages in `value`, cleaned: a one-line site and reason, the URL only when `safeUrl`
150
274
  * takes it, at most `MAX_BLOCKED`. An entry with no site is dropped; anything not a list is none.
@@ -242,19 +366,49 @@ function fit(lines, max) {
242
366
  export function fitMessage(lines) {
243
367
  return fit(lines, MAX_MESSAGE_CHARS);
244
368
  }
369
+ /**
370
+ * A finding's line in a DM: the claim, for a post its platform, date and "snippet only" when it
371
+ * was not opened (0.23.0), then its first source in <...> so Discord shows the link without an
372
+ * embed.
373
+ */
374
+ export function findingLine(f) {
375
+ const parts = f.platform
376
+ ? [
377
+ platformName(f.platform),
378
+ ...(f.publishedAt ? [f.publishedAt] : []),
379
+ ...(f.evidence === "snippet" ? ["snippet only"] : []),
380
+ ]
381
+ : [];
382
+ const post = parts.length > 0 ? ` (${parts.join(", ")})` : "";
383
+ return `- ${f.claim}${post} <${f.sources[0]}>`;
384
+ }
385
+ const STATUS_WORDS = {
386
+ searched: "searched",
387
+ empty: "nothing found",
388
+ unavailable: "unavailable",
389
+ skipped: "skipped",
390
+ };
391
+ /**
392
+ * The DM's "Social:" line (0.23.0): each platform's status, with its note in brackets, in one
393
+ * line of at most `MAX_COVERAGE_LINE_CHARS`.
394
+ */
395
+ export function coverageLine(coverage) {
396
+ const items = coverage.map((c) => `${platformName(c.platform)} ${STATUS_WORDS[c.status]}${c.note ? ` (${c.note})` : ""}`);
397
+ return clean(`Social: ${items.join("; ")}.`, MAX_COVERAGE_LINE_CHARS, true);
398
+ }
245
399
  /**
246
400
  * The DM a reviewed answer goes out as, at most `MAX_MESSAGE_CHARS`. Every piece of it was
247
- * cleaned by `parseAnswer`; the title is the owner's own and is cleaned here. `tail`, when given,
248
- * goes after the reviewer's note and is kept whole: the caller bounds it (the "couldn't open" list
249
- * and the queued line, 0.9.0). Without it the DM is what it was before 0.9.0.
401
+ * cleaned by `parseAnswer`; the title is the owner's own and is cleaned here. The "Social:" line
402
+ * (0.23.0, when the answer has `coverage`), the reviewer's note and `tail` are kept whole, in
403
+ * that order: `tail`, when given, is bounded by the caller (the "couldn't open" list and the
404
+ * queued line, 0.9.0). Without coverage or a tail the DM is what it was before 0.9.0.
250
405
  */
251
406
  export function renderAnswer(title, answer, review, tail = "") {
252
407
  const lines = [`Research: ${clean(title, 200, true)}`, "", answer.summary];
253
408
  if (answer.findings.length > 0) {
254
409
  lines.push("", "Findings:");
255
- // Sources in <...> so Discord shows the link without an embed.
256
410
  for (const f of answer.findings)
257
- lines.push(`- ${f.claim} <${f.sources[0]}>`);
411
+ lines.push(findingLine(f));
258
412
  }
259
413
  if (answer.uncertain.length > 0) {
260
414
  lines.push("", "Uncertain:");
@@ -264,7 +418,8 @@ export function renderAnswer(title, answer, review, tail = "") {
264
418
  const note = review.verdict === "approve"
265
419
  ? "Checked by a reviewer run."
266
420
  : `Checked and corrected by a reviewer run (${review.problems.length} problem(s) fixed).`;
267
- const after = tail.length > 0 ? `${note}\n\n${tail}` : note;
421
+ const social = answer.coverage && answer.coverage.length > 0 ? coverageLine(answer.coverage) : "";
422
+ const after = [social, note, tail].filter((s) => s.length > 0).join("\n\n");
268
423
  return `${fit(lines, MAX_MESSAGE_CHARS - after.length - 2)}\n\n${after}`;
269
424
  }
270
425
  /** Lines fitted into at most `max` characters, whole lines dropped from the end. */
@@ -283,7 +438,7 @@ export function renderUpdate(title, update, review) {
283
438
  }
284
439
  const lines = [head, "", update.summary, "", "New or corrected:"];
285
440
  for (const f of update.findings)
286
- lines.push(`- ${f.claim} <${f.sources[0]}>`);
441
+ lines.push(findingLine(f));
287
442
  const note = review.verdict === "approve"
288
443
  ? "Checked by a reviewer run."
289
444
  : `Checked and corrected by a reviewer run (${review.problems.length} problem(s) fixed).`;
@@ -1 +1 @@
1
- {"version":3,"file":"research-answer.js","sourceRoot":"","sources":["../src/research-answer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"research-answer.js","sourceRoot":"","sources":["../src/research-answer.ts"],"names":[],"mappings":"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"}