@rackbops/docket-types 0.5.0 → 0.7.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 +39 -2
- package/dist/index.d.ts +13 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -4
- package/dist/index.js.map +1 -1
- package/dist/scout.d.ts +127 -0
- package/dist/scout.d.ts.map +1 -0
- package/dist/scout.js +313 -0
- package/dist/scout.js.map +1 -0
- package/dist/want-bgg.d.ts +40 -0
- package/dist/want-bgg.d.ts.map +1 -0
- package/dist/want-bgg.js +196 -0
- package/dist/want-bgg.js.map +1 -0
- package/dist/want-sources.d.ts +99 -0
- package/dist/want-sources.d.ts.map +1 -0
- package/dist/want-sources.js +276 -0
- package/dist/want-sources.js.map +1 -0
- package/dist/wantjudge.d.ts +111 -0
- package/dist/wantjudge.d.ts.map +1 -0
- package/dist/wantjudge.js +455 -0
- package/dist/wantjudge.js.map +1 -0
- package/dist/wantlist.d.ts +73 -0
- package/dist/wantlist.d.ts.map +1 -0
- package/dist/wantlist.js +189 -0
- package/dist/wantlist.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { type Finding, type Outcome, type RunContext, type TaskType } from "@rackbops/docket-core";
|
|
2
|
+
import { type Listing, type Source, type SourceId } from "./want-sources.js";
|
|
3
|
+
/**
|
|
4
|
+
* The want-list watcher (category 2, plan 1.2 row 2; rackbops-bot-plugins#83): one task per wanted
|
|
5
|
+
* thing, read from one source (want-sources.ts) on a `poll` schedule. Each run lists what the source
|
|
6
|
+
* has now, keeps those at or under the owner's top price, and DMs the ones it has not told them of
|
|
7
|
+
* before, up to `SHOWN_IN_DM` lines, each kept as a finding (plan 5.2), with a Done button: the
|
|
8
|
+
* thing is found, the task ends. A read that yields nothing counts as a miss, and the owner hears
|
|
9
|
+
* once, at `MISSES_BEFORE_TELLING` in a row (the price tracker's rule). Notify lane, tier 0, no
|
|
10
|
+
* model; the judged watch (wantjudge.ts) is the one that has the model look first (5.4).
|
|
11
|
+
*
|
|
12
|
+
* Built in the tracker plugin (rackbops-bot-plugins#119, tracker 0.16.0) and given to docket
|
|
13
|
+
* in 0.6.0 (plan item 104). The sources are a parameter (`wantlistType`): a host builds the type
|
|
14
|
+
* over the ones it can run.
|
|
15
|
+
*/
|
|
16
|
+
export interface WantConfig {
|
|
17
|
+
source: SourceId;
|
|
18
|
+
/** The page's address, the BGG game (an id or its address), or the inbox's key (the host's). */
|
|
19
|
+
target: string;
|
|
20
|
+
/** Only listings at or under this, in `currency` when one is set. */
|
|
21
|
+
maxPrice?: number;
|
|
22
|
+
/** Only listings in this currency; a listing that names none passes. */
|
|
23
|
+
currency?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface WantState {
|
|
26
|
+
/** `listingKey`s of the listings already DMed, newest last, at most `MAX_REPORTED`. */
|
|
27
|
+
reported: string[];
|
|
28
|
+
/** Reads in a row that yielded nothing. */
|
|
29
|
+
misses: number;
|
|
30
|
+
/** Listings DMed in all. */
|
|
31
|
+
told: number;
|
|
32
|
+
/** Whether this run of misses has been told about already: once per run, whatever the reason. */
|
|
33
|
+
warned: boolean;
|
|
34
|
+
}
|
|
35
|
+
export declare const MAX_REPORTED = 500;
|
|
36
|
+
export declare const SHOWN_IN_DM = 5;
|
|
37
|
+
/** New listings taken in one run, DMed and kept as findings; any more wait for the next run. */
|
|
38
|
+
export declare const MAX_NEW_PER_RUN = 20;
|
|
39
|
+
/** The longest DM text a type here builds; Discord's limit is 2,000. */
|
|
40
|
+
export declare const MAX_DM_CHARS = 2000;
|
|
41
|
+
/** `text`, cut to `max` with an ellipsis. */
|
|
42
|
+
export declare function clip(text: string, max?: number): string;
|
|
43
|
+
/** Text from a shop, with any address in it broken, so Discord neither links nor previews it; only the listing's own link does. */
|
|
44
|
+
export declare function inert(text: string): string;
|
|
45
|
+
export declare function wantState(value: unknown): WantState;
|
|
46
|
+
/** Whether a listing is within the owner's limits: an unknown price never passes a top price. */
|
|
47
|
+
export declare function withinLimits(l: Listing, config: WantConfig): boolean;
|
|
48
|
+
export declare function priceText(l: Listing, config: WantConfig): string;
|
|
49
|
+
/** One DM line: what, how much, its condition and seller, then the link in <...> (no embed). */
|
|
50
|
+
export declare function listingLine(l: Listing, config: WantConfig): string;
|
|
51
|
+
export declare function renderWant(title: string, taskId: string, fresh: readonly Listing[], config: WantConfig): string;
|
|
52
|
+
export declare function miss<S extends WantState>(ctx: RunContext<WantConfig>, state: S, err: unknown): Outcome;
|
|
53
|
+
/** A finding for one listing: what it is, its price, and `extra` (a verdict); keyed so it is stored once. */
|
|
54
|
+
export declare function listingFinding(l: Listing, config: WantConfig, said: string, tags?: readonly string[]): Finding;
|
|
55
|
+
/**
|
|
56
|
+
* One look at the source: either the run's outcome already (a miss, or nothing new, with the state
|
|
57
|
+
* it leaves), or the listings within the limits not told before, at most `MAX_NEW_PER_RUN`, with the
|
|
58
|
+
* state after a good read (misses cleared) for the caller to add them to. Shared by the plain watch
|
|
59
|
+
* (DMs them) and the judged one (wantjudge.ts, has the model look first).
|
|
60
|
+
*/
|
|
61
|
+
export type Polled = {
|
|
62
|
+
kind: "done";
|
|
63
|
+
outcome: Outcome;
|
|
64
|
+
} | {
|
|
65
|
+
kind: "fresh";
|
|
66
|
+
state: WantState;
|
|
67
|
+
fresh: Listing[];
|
|
68
|
+
summary: string;
|
|
69
|
+
};
|
|
70
|
+
export declare function pollWant(ctx: RunContext<WantConfig>, sources: Partial<Record<SourceId, Source>>, stored?: WantState): Promise<Polled>;
|
|
71
|
+
/** The type over `sources`: a task whose source this bot lacks (BGG without its token) counts misses. */
|
|
72
|
+
export declare function wantlistType(sources: Partial<Record<SourceId, Source>>): TaskType<WantConfig>;
|
|
73
|
+
//# sourceMappingURL=wantlist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wantlist.d.ts","sourceRoot":"","sources":["../src/wantlist.ts"],"names":[],"mappings":"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"}
|
package/dist/wantlist.js
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { defineTaskType, } from "@rackbops/docket-core";
|
|
2
|
+
import { money } from "./money.js";
|
|
3
|
+
import { MISSES_BEFORE_TELLING } from "./price.js";
|
|
4
|
+
import { BGG_ATTRIBUTION } from "./want-bgg.js";
|
|
5
|
+
import { listingKey, SourceMiss, SourceUnavailableError, } from "./want-sources.js";
|
|
6
|
+
export const MAX_REPORTED = 500;
|
|
7
|
+
export const SHOWN_IN_DM = 5;
|
|
8
|
+
/** New listings taken in one run, DMed and kept as findings; any more wait for the next run. */
|
|
9
|
+
export const MAX_NEW_PER_RUN = 20;
|
|
10
|
+
/** The longest DM text a type here builds; Discord's limit is 2,000. */
|
|
11
|
+
export const MAX_DM_CHARS = 2000;
|
|
12
|
+
/** `text`, cut to `max` with an ellipsis. */
|
|
13
|
+
export function clip(text, max = MAX_DM_CHARS) {
|
|
14
|
+
return text.length <= max ? text : `${text.slice(0, max - 3)}...`;
|
|
15
|
+
}
|
|
16
|
+
/** Text from a shop, with any address in it broken, so Discord neither links nor previews it; only the listing's own link does. */
|
|
17
|
+
export function inert(text) {
|
|
18
|
+
return text
|
|
19
|
+
.replace(/([a-z][a-z0-9+.-]*):\/\//gi, "$1:/\u200b/")
|
|
20
|
+
.replace(/\bwww\./gi, "www\u200b.");
|
|
21
|
+
}
|
|
22
|
+
export function wantState(value) {
|
|
23
|
+
const s = value;
|
|
24
|
+
if (!s || typeof s !== "object")
|
|
25
|
+
return { reported: [], misses: 0, told: 0, warned: false };
|
|
26
|
+
return {
|
|
27
|
+
reported: Array.isArray(s.reported)
|
|
28
|
+
? s.reported.filter((k) => typeof k === "string").slice(-MAX_REPORTED)
|
|
29
|
+
: [],
|
|
30
|
+
misses: typeof s.misses === "number" ? s.misses : 0,
|
|
31
|
+
told: typeof s.told === "number" ? s.told : 0,
|
|
32
|
+
warned: s.warned === true,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/** Whether a listing is within the owner's limits: an unknown price never passes a top price. */
|
|
36
|
+
export function withinLimits(l, config) {
|
|
37
|
+
if (config.currency && l.currency && l.currency !== config.currency)
|
|
38
|
+
return false;
|
|
39
|
+
if (config.maxPrice === undefined)
|
|
40
|
+
return true;
|
|
41
|
+
return l.price !== undefined && l.price <= config.maxPrice + 1e-9;
|
|
42
|
+
}
|
|
43
|
+
export function priceText(l, config) {
|
|
44
|
+
return l.price === undefined
|
|
45
|
+
? "price not shown"
|
|
46
|
+
: money(l.price, l.currency ?? config.currency ?? "");
|
|
47
|
+
}
|
|
48
|
+
/** One DM line: what, how much, its condition and seller, then the link in <...> (no embed). */
|
|
49
|
+
export function listingLine(l, config) {
|
|
50
|
+
const parts = [
|
|
51
|
+
inert(l.title),
|
|
52
|
+
priceText(l, config),
|
|
53
|
+
...(l.condition ? [inert(l.condition)] : []),
|
|
54
|
+
...(l.seller ? [`sold by ${inert(l.seller)}`] : []),
|
|
55
|
+
];
|
|
56
|
+
const via = config.source === "bgg" ? ` (${BGG_ATTRIBUTION})` : "";
|
|
57
|
+
return `- ${parts.join(" -- ")} <${l.url}>${via}`;
|
|
58
|
+
}
|
|
59
|
+
export function renderWant(title, taskId, fresh, config) {
|
|
60
|
+
const lines = [
|
|
61
|
+
`${title}: ${fresh.length === 1 ? "a new listing" : `${fresh.length} new listings`}.`,
|
|
62
|
+
];
|
|
63
|
+
for (const l of fresh.slice(0, SHOWN_IN_DM))
|
|
64
|
+
lines.push(listingLine(l, config));
|
|
65
|
+
if (fresh.length > SHOWN_IN_DM)
|
|
66
|
+
lines.push(`...and ${fresh.length - SHOWN_IN_DM} more: \`/task history ${taskId}\` lists them all.`);
|
|
67
|
+
lines.push("Press Done once you have it, and I stop looking.");
|
|
68
|
+
return clip(lines.join("\n"));
|
|
69
|
+
}
|
|
70
|
+
export function miss(ctx, state, err) {
|
|
71
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
72
|
+
const misses = state.misses + 1;
|
|
73
|
+
const tell = !state.warned && (misses >= MISSES_BEFORE_TELLING || err instanceof SourceUnavailableError);
|
|
74
|
+
const outcome = {
|
|
75
|
+
state: { ...state, misses, warned: state.warned || tell },
|
|
76
|
+
summary: `nothing read: ${reason}`,
|
|
77
|
+
};
|
|
78
|
+
if (tell) {
|
|
79
|
+
const where = ctx.config.source === "bgg"
|
|
80
|
+
? "BoardGameGeek"
|
|
81
|
+
: ctx.config.source === "inbox"
|
|
82
|
+
? "what was sent in"
|
|
83
|
+
: ctx.config.target;
|
|
84
|
+
outcome.notify = {
|
|
85
|
+
text: clip(`${ctx.task.title}: I could read no listings from ${where} ${misses === 1 ? "just now" : `${misses} times in a row`} (${reason}). ` +
|
|
86
|
+
"I keep looking; press Done to stop."),
|
|
87
|
+
actions: ["done"],
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return outcome;
|
|
91
|
+
}
|
|
92
|
+
/** A finding for one listing: what it is, its price, and `extra` (a verdict); keyed so it is stored once. */
|
|
93
|
+
export function listingFinding(l, config, said, tags = []) {
|
|
94
|
+
return {
|
|
95
|
+
text: clip(`${l.title} -- ${said}${l.condition ? ` -- ${l.condition}` : ""}`, 400),
|
|
96
|
+
source: l.url,
|
|
97
|
+
key: listingKey(l.id),
|
|
98
|
+
tags: ["wantlist", config.source, ...tags],
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
export async function pollWant(ctx, sources, stored) {
|
|
102
|
+
const state = stored ?? wantState(ctx.state);
|
|
103
|
+
const source = sources[ctx.config.source];
|
|
104
|
+
if (!source) {
|
|
105
|
+
return {
|
|
106
|
+
kind: "done",
|
|
107
|
+
outcome: miss(ctx, state, new SourceUnavailableError(`this bot has no ${ctx.config.source === "bgg" ? "BoardGameGeek access" : "such source"}`)),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
let listings;
|
|
111
|
+
try {
|
|
112
|
+
listings = await source.search(ctx.config.target, ctx.ports.fetch);
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
if (err instanceof SourceMiss)
|
|
116
|
+
return { kind: "done", outcome: miss(ctx, state, err) };
|
|
117
|
+
throw err;
|
|
118
|
+
}
|
|
119
|
+
const told = new Set(state.reported);
|
|
120
|
+
const within = listings.filter((l) => withinLimits(l, ctx.config));
|
|
121
|
+
const fresh = within.filter((l) => !told.has(listingKey(l.id))).slice(0, MAX_NEW_PER_RUN);
|
|
122
|
+
const summary = `${listings.length} listed, ${within.length} within limits, ${fresh.length} new`;
|
|
123
|
+
const read = { ...state, misses: 0, warned: false };
|
|
124
|
+
if (fresh.length === 0)
|
|
125
|
+
return { kind: "done", outcome: { state: read, summary } };
|
|
126
|
+
return { kind: "fresh", state: read, fresh, summary };
|
|
127
|
+
}
|
|
128
|
+
/** The type over `sources`: a task whose source this bot lacks (BGG without its token) counts misses. */
|
|
129
|
+
export function wantlistType(sources) {
|
|
130
|
+
return defineTaskType({
|
|
131
|
+
id: "wantlist",
|
|
132
|
+
lane: "notify",
|
|
133
|
+
capabilities: ["notify"],
|
|
134
|
+
schedule: ["poll"],
|
|
135
|
+
intake: {
|
|
136
|
+
options: [
|
|
137
|
+
{
|
|
138
|
+
name: "source",
|
|
139
|
+
description: "Where to look: page, bgg or inbox",
|
|
140
|
+
required: true,
|
|
141
|
+
kind: "string",
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
name: "target",
|
|
145
|
+
description: "The listing page's address, the BGG game, or the inbox's key",
|
|
146
|
+
required: true,
|
|
147
|
+
kind: "string",
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
name: "max",
|
|
151
|
+
description: "Only listings at or under this price",
|
|
152
|
+
required: false,
|
|
153
|
+
kind: "number",
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
name: "currency",
|
|
157
|
+
description: "Only listings in this currency",
|
|
158
|
+
required: false,
|
|
159
|
+
kind: "string",
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
},
|
|
163
|
+
async run(ctx) {
|
|
164
|
+
const polled = await pollWant(ctx, sources);
|
|
165
|
+
if (polled.kind === "done")
|
|
166
|
+
return polled.outcome;
|
|
167
|
+
const { state, fresh, summary } = polled;
|
|
168
|
+
return {
|
|
169
|
+
state: {
|
|
170
|
+
...state,
|
|
171
|
+
reported: [...state.reported, ...fresh.map((l) => listingKey(l.id))].slice(-MAX_REPORTED),
|
|
172
|
+
told: state.told + fresh.length,
|
|
173
|
+
},
|
|
174
|
+
notify: {
|
|
175
|
+
text: renderWant(ctx.task.title, ctx.task.id, fresh, ctx.config),
|
|
176
|
+
actions: ["done"],
|
|
177
|
+
},
|
|
178
|
+
findings: fresh.map((l) => listingFinding(l, ctx.config, priceText(l, ctx.config))),
|
|
179
|
+
summary,
|
|
180
|
+
};
|
|
181
|
+
},
|
|
182
|
+
async onReply(ctx) {
|
|
183
|
+
if (ctx.reply.kind === "done")
|
|
184
|
+
return { complete: true, summary: "found it; stopped looking" };
|
|
185
|
+
return {};
|
|
186
|
+
},
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=wantlist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wantlist.js","sourceRoot":"","sources":["../src/wantlist.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rackbops/docket-types",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "The tracker's task types: reminder, renewal, price, research, scout, wantlist. Built on @rackbops/docket-core.",
|
|
3
|
+
"version": "0.7.0",
|
|
4
|
+
"description": "The tracker's task types: reminder, renewal, price, research, scout, wantlist, wantjudge. Built on @rackbops/docket-core.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
],
|
|
30
30
|
"sideEffects": false,
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@rackbops/docket-core": "^0.
|
|
32
|
+
"@rackbops/docket-core": "^0.7.0"
|
|
33
33
|
},
|
|
34
34
|
"scripts": {
|
|
35
35
|
"build": "tsc",
|