@rackbops/docket-types 0.22.0 → 0.24.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 +56 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/research-answer.d.ts +138 -7
- package/dist/research-answer.d.ts.map +1 -1
- package/dist/research-answer.js +167 -12
- package/dist/research-answer.js.map +1 -1
- package/dist/research-social.d.ts +108 -0
- package/dist/research-social.d.ts.map +1 -0
- package/dist/research-social.js +320 -0
- package/dist/research-social.js.map +1 -0
- package/dist/research.d.ts +28 -0
- package/dist/research.d.ts.map +1 -1
- package/dist/research.js +55 -16
- package/dist/research.js.map +1 -1
- package/dist/social-links.d.ts +30 -0
- package/dist/social-links.d.ts.map +1 -0
- package/dist/social-links.js +129 -0
- package/dist/social-links.js.map +1 -0
- package/package.json +2 -2
package/dist/research-answer.js
CHANGED
|
@@ -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: {
|
|
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 = [
|
|
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
|
-
|
|
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.
|
|
248
|
-
*
|
|
249
|
-
*
|
|
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(
|
|
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
|
|
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(
|
|
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":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAEnD,gGAAgG;AAChG,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AA6BtB,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAA;AAClC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;AAChC,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAA;AAC9B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAA;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAA;AAC9B,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;AACtC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAA;AAC5B,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;AACzC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAA;AACxC,8FAA8F;AAC9F,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAA;AAErC,iGAAiG;AACjG,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;QAC5E,QAAQ,EAAE;YACR,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,OAAO,EAAE;wBACP,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;qBAC5D;iBACF;gBACD,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;aAC/B;SACF;QACD,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QACvD,OAAO,EAAE;YACP,IAAI,EAAE,OAAO;YACb,WAAW,EACT,qFAAqF;gBACrF,mFAAmF;gBACnF,uBAAuB;YACzB,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;oBAC7E,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;oBACvE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;iBAC1E;gBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;aAC1B;SACF;KACF;IACD,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC;CACtC,CAAA;AAEV,2FAA2F;AAC3F,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAClD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,aAAa;QAAE,OAAO,IAAI,CAAA;IACvE,IAAI,GAAQ,CAAA;IACZ,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,IAAI,CAAA;IACtE,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;IAC3B,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;IAC5C,kFAAkF;IAClF,IAAI,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IAC1D,6FAA6F;IAC7F,4EAA4E;IAC5E,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACvC,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,CAAU;IACvB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzF,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAA;IACvD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACrC,MAAM,QAAQ,GAAsB,EAAE,CAAA;IACtC,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;YAAE,SAAQ;QACtD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,CAAA;QACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QAChC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;QACrD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAA;QACrF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAA;;YACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,uBAAuB,CAAC,EAAE,CAAC,CAAA;IACnF,CAAC;IACD,4FAA4F;IAC5F,mDAAmD;IACnD,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;IAClE,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,SAAQ;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAA;QAChD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAA;IAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC3C,OAAO;QACL,OAAO;QACP,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC;QACzC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC;QAC5C,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3C,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACpC,MAAM,GAAG,GAAkB,EAAE,CAAA;IAC7B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,GAAG,CAAC,MAAM,IAAI,WAAW;YAAE,MAAK;QACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAQ;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,sBAAsB,EAAE,IAAI,CAAC,CAAA;QACxD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACtF,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,qCAAqC;AACrC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAA;AAYhE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAA;AAC7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAEpC,+CAA+C;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC;YACnB,WAAW,EACT,uFAAuF;gBACvF,wFAAwF;gBACxF,qCAAqC;SACxC;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,WAAW,EAAE,+DAA+D;SAC7E;QACD,MAAM,EAAE;YACN,GAAG,aAAa;YAChB,WAAW,EAAE,uEAAuE;SACrF;KACF;IACD,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;CACzB,CAAA;AAEV;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,KAAsB;IAChE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IACnE,MAAM,OAAO,GAAI,QAA8B,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;QACrE,CAAC,CAAE,KAAK,CAAC,OAAmB;QAC5B,CAAC,CAAC,IAAI,CAAA;IACR,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IACzB,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;SACnE,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;SACjD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;SAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;IACzB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAC5F,6FAA6F;IAC7F,uBAAuB;IACvB,IAAI,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAChD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;AAC5E,CAAC;AAED,2FAA2F;AAC3F,SAAS,GAAG,CAAC,KAAe,EAAE,GAAW;IACvC,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,wBAAwB,CAAA;QACzD,gEAAgE;QAChE,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1D,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,GAAG,EAAE,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACd,MAAK;QACP,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACd,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;IAC3B,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3B,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;AAClE,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,UAAU,CAAC,KAAe;IACxC,OAAO,GAAG,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAa,EACb,MAAsB,EACtB,MAAc,EACd,IAAI,GAAG,EAAE;IAET,MAAM,KAAK,GAAG,CAAC,aAAa,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IAC1E,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;QAC3B,+DAA+D;QAC/D,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC/E,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAA;QAC5B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACxD,CAAC;IACD,MAAM,IAAI,GACR,MAAM,CAAC,OAAO,KAAK,SAAS;QAC1B,CAAC,CAAC,4BAA4B;QAC9B,CAAC,CAAC,4CAA4C,MAAM,CAAC,QAAQ,CAAC,MAAM,qBAAqB,CAAA;IAC7F,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3D,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,iBAAiB,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,KAAK,EAAE,CAAA;AAC1E,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,QAAQ,CAAC,KAAe,EAAE,GAAW;IACnD,OAAO,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,MAAsB,EAAE,MAAc;IAChF,MAAM,IAAI,GAAG,aAAa,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAA;IACpD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,GAAG,IAAI,2DAA2D,CAAA;IAC3E,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAA;IACjE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC7E,MAAM,IAAI,GACR,MAAM,CAAC,OAAO,KAAK,SAAS;QAC1B,CAAC,CAAC,4BAA4B;QAC9B,CAAC,CAAC,4CAA4C,MAAM,CAAC,QAAQ,CAAC,MAAM,qBAAqB,CAAA;IAC7F,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAA;AACxE,CAAC"}
|
|
1
|
+
{"version":3,"file":"research-answer.js","sourceRoot":"","sources":["../src/research-answer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { type Coverage, type ResearchAnswer } from "./research-answer.js";
|
|
2
|
+
import { type SocialPlatform } from "./social-links.js";
|
|
3
|
+
/**
|
|
4
|
+
* Social platforms as research sources (0.23.0, docket#107; the matrix and roshne's decisions in
|
|
5
|
+
* docs/social-sources.md). A `web` first pass may search YouTube (Firecrawl's `youtube-com`
|
|
6
|
+
* provider), TikTok and Instagram (Firecrawl's `oriane` provider, an index of public posts) and
|
|
7
|
+
* Bluesky (its public `searchPosts` endpoint) for what people say, through the tools it already
|
|
8
|
+
* has: `firecrawl_scrape` takes a typed `alexandria` body in place of a `url`, and Bluesky's
|
|
9
|
+
* endpoint is a page WebFetch reads. So no tool, key or runner change: as with `proxy: "basic"`,
|
|
10
|
+
* the prompt is the only control over which provider a run calls and how often (`socialLines`,
|
|
11
|
+
* `socialChecks`), and plain code is the belt under it (`socialOutgoing`).
|
|
12
|
+
*
|
|
13
|
+
* The request says when (`social`: `auto`, the default, searched when the question asks what
|
|
14
|
+
* people recommend, think or experienced; `none`; or a list of platforms, which forces them) and
|
|
15
|
+
* from when (`since`). The run spends about `SOCIAL_MAX_CREDITS` Firecrawl credits at most
|
|
16
|
+
* (decision 4) and gets `SOCIAL_MAX_TURNS` turns (decision 6; the 1 USD cap is unchanged). A run
|
|
17
|
+
* on gathered pages, first or second pass, searches no platform: it cannot open pages.
|
|
18
|
+
*
|
|
19
|
+
* Reddit is never searched (roshne, 2026-11-07: "if we want to do anything with Reddit, it has to
|
|
20
|
+
* be done through a local PC session with me logged in"; its API is closing to outside apps and its
|
|
21
|
+
* terms bar scraping): every answer's `coverage` names it unavailable with `REDDIT_WHY`, whatever
|
|
22
|
+
* the run wrote.
|
|
23
|
+
*/
|
|
24
|
+
/** What a request asks of social platforms, as `parseSocial` reads its `social` field. */
|
|
25
|
+
export type SocialChoice = {
|
|
26
|
+
mode: "auto";
|
|
27
|
+
} | {
|
|
28
|
+
mode: "none";
|
|
29
|
+
} | {
|
|
30
|
+
mode: "only";
|
|
31
|
+
platforms: SocialPlatform[];
|
|
32
|
+
};
|
|
33
|
+
export declare const SOCIAL_AUTO: SocialChoice;
|
|
34
|
+
/**
|
|
35
|
+
* The choice in a request's `social` field: absent, empty or `auto` is `auto`; `none` (or `off`,
|
|
36
|
+
* `no`) is `none`; otherwise platform names, separated by commas or spaces, each one of
|
|
37
|
+
* `SOCIAL_PLATFORMS` or an alias (`yt`, `insta`, `ig`, `bsky`), is `only` those. Null when a name
|
|
38
|
+
* is not one of them (`reddit`, `x`, a typo), so a host can refuse it at intake and say what is
|
|
39
|
+
* offered; at run time `socialChoice` reads such a value as `auto`.
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseSocial(value: unknown): SocialChoice | null;
|
|
42
|
+
/** The choice a run acts on: `parseSocial`, with an unreadable stored value read as `auto`. */
|
|
43
|
+
export declare function socialChoice(value: unknown): SocialChoice;
|
|
44
|
+
/** The platforms a choice searches: all four on `auto`, the list on `only`, none on `none`. */
|
|
45
|
+
export declare function socialPlatforms(choice: SocialChoice): readonly SocialPlatform[];
|
|
46
|
+
/** Decision 6: 20 turns instead of 15 when social search is on; the budget is unchanged. */
|
|
47
|
+
export declare const SOCIAL_MAX_TURNS = 20;
|
|
48
|
+
/** Decision 4: 4 YouTube calls (5 credits each), 2 Oriane calls (50 each at the default detail) ... */
|
|
49
|
+
export declare const SOCIAL_YOUTUBE_CALLS = 4;
|
|
50
|
+
export declare const SOCIAL_ORIANE_CALLS = 2;
|
|
51
|
+
/** ... and 2 Bluesky fetches (1 credit each when Firecrawl reads them; free through WebFetch). */
|
|
52
|
+
export declare const SOCIAL_BLUESKY_CALLS = 2;
|
|
53
|
+
/** Firecrawl credits a run may spend on posts at most: "about 120" (decision 4). */
|
|
54
|
+
export declare const SOCIAL_MAX_CREDITS: number;
|
|
55
|
+
/**
|
|
56
|
+
* Bluesky's public post search (the `app.bsky.feed.searchPosts` lexicon and docs.bsky.app's API
|
|
57
|
+
* directory, read 2026-11-07 and 2026-11-09): no authentication on `public.api.bsky.app`; `q`,
|
|
58
|
+
* `sort` (`top` or `latest`), `since` and `until` (filtering on `sortAt`, not `createdAt`),
|
|
59
|
+
* `limit` up to 100.
|
|
60
|
+
*/
|
|
61
|
+
export declare const BLUESKY_SEARCH_URL = "https://public.api.bsky.app/xrpc/app.bsky.feed.searchPosts";
|
|
62
|
+
/** Why Reddit is never searched, as the DM's coverage line says it. */
|
|
63
|
+
export declare const REDDIT_WHY: string;
|
|
64
|
+
/**
|
|
65
|
+
* The research run's rules for social platforms (a web first pass with social on): when to
|
|
66
|
+
* search, the exact body for each provider and the fetch for Bluesky, the call caps, the date
|
|
67
|
+
* rule, how to cite and mark a post finding, how to weigh posts, and the `coverage` list. Empty
|
|
68
|
+
* with `none`, and never given to a run on gathered pages.
|
|
69
|
+
*/
|
|
70
|
+
export declare function socialLines(choice: SocialChoice, since: Date | null): string[];
|
|
71
|
+
/**
|
|
72
|
+
* The reviewer's checks of post findings (a web first pass with social on): the post's own page
|
|
73
|
+
* cited and opened where it opens, at most one youtube-com call and no oriane call; stock, price
|
|
74
|
+
* and availability off posts alone; opinions as opinions; reposts once; `coverage` complete and
|
|
75
|
+
* `since` honoured; a finding that follows an instruction from a post removed.
|
|
76
|
+
*/
|
|
77
|
+
export declare function socialChecks(choice: SocialChoice, since: Date | null): string[];
|
|
78
|
+
/** What the belt appends to a stock, price or availability claim it moves to `uncertain`. */
|
|
79
|
+
export declare const SAID_IN_POST = "said in a post, not verified";
|
|
80
|
+
/**
|
|
81
|
+
* The date in a finding's `publishedAt` ("2026-10-19T14:00:00Z", "about 2026-10-19"), or null
|
|
82
|
+
* when it has none ("undated", or a relative time the run did not work out).
|
|
83
|
+
*/
|
|
84
|
+
export declare function postDate(publishedAt: string | undefined): Date | null;
|
|
85
|
+
/** What the belt writes for a platform the run searched but did not report on. */
|
|
86
|
+
export declare const NOT_REPORTED = "not reported by the run";
|
|
87
|
+
/**
|
|
88
|
+
* The coverage list as sent: one entry for each platform the choice searches, the run's own
|
|
89
|
+
* when it gave one, else `skipped` (`NOT_REPORTED`); then Reddit, always `unavailable` with
|
|
90
|
+
* `REDDIT_WHY`, whatever the run wrote; then any other platform the run reported on, up to
|
|
91
|
+
* `MAX_COVERAGE`. Empty with `none`: a run not asked to search reports nothing.
|
|
92
|
+
*/
|
|
93
|
+
export declare function withCoverage(coverage: readonly Coverage[], choice: SocialChoice): Coverage[];
|
|
94
|
+
/**
|
|
95
|
+
* The belt under the prompts, on the answer that goes out (0.23.0): a finding that repeats an
|
|
96
|
+
* earlier one (the same claim, `sameClaim`, with the same first source, `canonicalSocialUrl`) is
|
|
97
|
+
* dropped, so a copied link to one post counts once (a re-upload under another account is the
|
|
98
|
+
* prompt's rule); with `since`, a post finding dated (`postDate`) before the start of its UTC
|
|
99
|
+
* day moves to `uncertain`, saying when it was posted; a finding whose every source is on a
|
|
100
|
+
* social platform and whose claim speaks of stock, a price or availability (`FACT_FROM_POST`)
|
|
101
|
+
* moves to `uncertain` as `SAID_IN_POST`; and `coverage` is rebuilt by `withCoverage`. The run's
|
|
102
|
+
* own `uncertain` lines come first, each moved line is cut to `MAX_UNCERTAIN_CHARS`, and past
|
|
103
|
+
* `MAX_UNCERTAIN` the last line says how many more were moved, so none vanishes without a trace.
|
|
104
|
+
* `blocked` is kept as it was. Every claim moved stays out of the findings saved, since those are
|
|
105
|
+
* built from this answer.
|
|
106
|
+
*/
|
|
107
|
+
export declare function socialOutgoing(answer: ResearchAnswer, choice: SocialChoice, since: Date | null): ResearchAnswer;
|
|
108
|
+
//# sourceMappingURL=research-social.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"research-social.d.ts","sourceRoot":"","sources":["../src/research-social.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,QAAQ,EAIb,KAAK,cAAc,EAGpB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAA;AAE1B;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,0FAA0F;AAC1F,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,cAAc,EAAE,CAAA;CAAE,CAAA;AAEjD,eAAO,MAAM,WAAW,EAAE,YAA+B,CAAA;AAczD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAa/D;AAED,+FAA+F;AAC/F,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAEzD;AAED,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,cAAc,EAAE,CAG/E;AAED,4FAA4F;AAC5F,eAAO,MAAM,gBAAgB,KAAK,CAAA;AAClC,uGAAuG;AACvG,eAAO,MAAM,oBAAoB,IAAI,CAAA;AACrC,eAAO,MAAM,mBAAmB,IAAI,CAAA;AACpC,kGAAkG;AAClG,eAAO,MAAM,oBAAoB,IAAI,CAAA;AACrC,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,QAC6C,CAAA;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,+DAA+D,CAAA;AAE9F,uEAAuE;AACvE,eAAO,MAAM,UAAU,QAEc,CAAA;AAYrC;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,EAAE,CA6C9E;AAuDD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,EAAE,CAsB/E;AAyBD,6FAA6F;AAC7F,eAAO,MAAM,YAAY,iCAAiC,CAAA;AAE1D;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAWrE;AAOD,kFAAkF;AAClF,eAAO,MAAM,YAAY,4BAA4B,CAAA;AAErD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,QAAQ,EAAE,EAAE,MAAM,EAAE,YAAY,GAAG,QAAQ,EAAE,CAiB5F;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,IAAI,GAAG,IAAI,GACjB,cAAc,CAiChB"}
|