@leemour/cli-messaging 0.91.0 → 0.93.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/dist/background/index.d.ts +1 -1
- package/dist/background/index.d.ts.map +1 -1
- package/dist/background/index.js +1 -1
- package/dist/background/index.js.map +1 -1
- package/dist/background/units.d.ts +5 -0
- package/dist/background/units.d.ts.map +1 -1
- package/dist/background/units.js +13 -2
- package/dist/background/units.js.map +1 -1
- package/dist/cli/bot/command.d.ts +8 -0
- package/dist/cli/bot/command.d.ts.map +1 -0
- package/dist/cli/bot/command.js +175 -0
- package/dist/cli/bot/command.js.map +1 -0
- package/dist/cli/bot/context.d.ts +35 -0
- package/dist/cli/bot/context.d.ts.map +1 -0
- package/dist/cli/bot/context.js +48 -0
- package/dist/cli/bot/context.js.map +1 -0
- package/dist/cli/bot/port.d.ts +2 -0
- package/dist/cli/bot/port.d.ts.map +1 -1
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/messenger/admin-folders-command.d.ts.map +1 -1
- package/dist/cli/messenger/admin-folders-command.js +2 -1
- package/dist/cli/messenger/admin-folders-command.js.map +1 -1
- package/dist/cli/messenger/conversations-command.d.ts.map +1 -1
- package/dist/cli/messenger/conversations-command.js +43 -0
- package/dist/cli/messenger/conversations-command.js.map +1 -1
- package/dist/mcp/tools/folders.d.ts.map +1 -1
- package/dist/mcp/tools/folders.js +4 -2
- package/dist/mcp/tools/folders.js.map +1 -1
- package/dist/parity/audit.d.ts +50 -0
- package/dist/parity/audit.d.ts.map +1 -0
- package/dist/parity/audit.js +96 -0
- package/dist/parity/audit.js.map +1 -0
- package/dist/services/conversations.d.ts +21 -1
- package/dist/services/conversations.d.ts.map +1 -1
- package/dist/services/conversations.js +23 -0
- package/dist/services/conversations.js.map +1 -1
- package/dist/services/index.d.ts +2 -2
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -1
- package/dist/services/index.js.map +1 -1
- package/dist/store/sqlite/batches.d.ts +19 -0
- package/dist/store/sqlite/batches.d.ts.map +1 -0
- package/dist/store/sqlite/batches.js +81 -0
- package/dist/store/sqlite/batches.js.map +1 -0
- package/dist/store/store.d.ts +44 -0
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +22 -0
- package/dist/store/store.js.map +1 -1
- package/package.json +3 -3
- package/parity.json +8 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversations-command.js","sourceRoot":"","sources":["../../../src/cli/messenger/conversations-command.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conversations-command.js","sourceRoot":"","sources":["../../../src/cli/messenger/conversations-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folders.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/folders.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"folders.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/folders.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAK/D,OAAO,EAAE,KAAK,OAAO,EAA8B,MAAM,YAAY,CAAA;AAKrE,uGAAuG;AACvG,eAAO,MAAM,WAAW,cAAe,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAmDxE,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as v from "valibot";
|
|
2
|
+
import { listed } from "../../cli/paging.js";
|
|
2
3
|
import { onlineDeps, servicesFor } from "../../services/index.js";
|
|
3
4
|
import { APPROVE, READ, tool, WRITE } from "../tool.js";
|
|
4
5
|
const folderRef = v.pipe(v.string(), v.minLength(1), v.description("folder id, or its title exactly"));
|
|
@@ -9,10 +10,11 @@ export const folderTools = (messenger) => {
|
|
|
9
10
|
return {
|
|
10
11
|
chats_folders_list: tool({
|
|
11
12
|
title: "Chat folders",
|
|
12
|
-
description: "The owner's chat folders, in the order the app shows them, with the chats added to each."
|
|
13
|
+
description: "The owner's chat folders, in the order the app shows them, with the chats added to each. Returns " +
|
|
14
|
+
"{ items, page, limit, hasMore }.",
|
|
13
15
|
input: v.object({}),
|
|
14
16
|
annotations: READ,
|
|
15
|
-
online: (adapter, _args, { guard }) => folders(adapter, guard).list(),
|
|
17
|
+
online: async (adapter, _args, { guard }) => listed(await folders(adapter, guard).list()),
|
|
16
18
|
}),
|
|
17
19
|
chats_folders_create: tool({
|
|
18
20
|
title: "Create a chat folder",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folders.js","sourceRoot":"","sources":["../../../src/mcp/tools/folders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"folders.js","sourceRoot":"","sources":["../../../src/mcp/tools/folders.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type CommandsJson, type Manifest } from "./manifest.js";
|
|
2
|
+
/** What the audit reads from one CLI's checkout and build. Gathered by `scripts/parity-audit.ts`. */
|
|
3
|
+
export interface CliSide {
|
|
4
|
+
commit: string;
|
|
5
|
+
/** The `@leemour/*` packages it pins, by name. */
|
|
6
|
+
pins: Record<string, string>;
|
|
7
|
+
program: CommandsJson;
|
|
8
|
+
/** `tools/list` of its MCP server with every `--allow-*`, prefix kept. */
|
|
9
|
+
tools: string[];
|
|
10
|
+
/** `README.md` and `docs/*.md`, by path from the checkout, with their text. */
|
|
11
|
+
pages: Record<string, string>;
|
|
12
|
+
scripts: string[];
|
|
13
|
+
skills: string[];
|
|
14
|
+
/** Its CI workflows, with each `pnpm <script>` they run followed by that script's command. */
|
|
15
|
+
ci: string;
|
|
16
|
+
}
|
|
17
|
+
export interface AuditInput {
|
|
18
|
+
shared: {
|
|
19
|
+
commit: string;
|
|
20
|
+
version: string;
|
|
21
|
+
};
|
|
22
|
+
manifest: Manifest;
|
|
23
|
+
/** STANDARD.md, whose Documents rule names the pages one tool has alone. */
|
|
24
|
+
standard: string;
|
|
25
|
+
max: CliSide;
|
|
26
|
+
tg: CliSide;
|
|
27
|
+
}
|
|
28
|
+
export interface Split {
|
|
29
|
+
both: string[];
|
|
30
|
+
max: string[];
|
|
31
|
+
tg: string[];
|
|
32
|
+
}
|
|
33
|
+
export declare const split: (max: Iterable<string>, tg: Iterable<string>) => Split;
|
|
34
|
+
export declare const pageSplit: (input: AuditInput) => {
|
|
35
|
+
both: string[];
|
|
36
|
+
max: string[];
|
|
37
|
+
tg: string[];
|
|
38
|
+
explained: (name: string) => boolean;
|
|
39
|
+
};
|
|
40
|
+
export declare const readmeSections: (readme?: string) => string[];
|
|
41
|
+
export declare const toolNames: (side: CliSide, cli: string) => string[];
|
|
42
|
+
/** The `--allow-*` options of a CLI's `mcp` command: passing them all makes its server offer every tool. */
|
|
43
|
+
export declare const allowFlags: (program: CommandsJson) => string[];
|
|
44
|
+
export declare const ciRuns: (side: CliSide) => {
|
|
45
|
+
parity: boolean;
|
|
46
|
+
pages: boolean;
|
|
47
|
+
};
|
|
48
|
+
/** The measured half of a parity audit, as Markdown: everything a script can say without judging. */
|
|
49
|
+
export declare const renderAudit: (input: AuditInput) => string;
|
|
50
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/parity/audit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAY,KAAK,QAAQ,EAAkB,MAAM,eAAe,CAAA;AAI1F,qGAAqG;AACrG,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,OAAO,EAAE,YAAY,CAAA;IACrB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,8FAA8F;IAC9F,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3C,QAAQ,EAAE,QAAQ,CAAA;IAClB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,OAAO,CAAA;IACZ,EAAE,EAAE,OAAO,CAAA;CACZ;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,GAAG,EAAE,MAAM,EAAE,CAAA;IACb,EAAE,EAAE,MAAM,EAAE,CAAA;CACb;AAED,eAAO,MAAM,KAAK,QAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAG,KAQnE,CAAA;AAYD,eAAO,MAAM,SAAS,UAAW,UAAU;UAzBnC,MAAM,EAAE;SACT,MAAM,EAAE;QACT,MAAM,EAAE;sBA0Ba,MAAM;CAEhC,CAAA;AAED,eAAO,MAAM,cAAc,+BAAsF,CAAA;AAEjH,eAAO,MAAM,SAAS,SAAU,OAAO,OAAO,MAAM,aAA0D,CAAA;AAE9G,4GAA4G;AAC5G,eAAO,MAAM,UAAU,YAAa,YAAY,KAAG,MAAM,EAGxD,CAAA;AAED,eAAO,MAAM,MAAM,SAAU,OAAO;IAClC,MAAM;IACN,KAAK;CACL,CAAA;AAKF,qGAAqG;AACrG,eAAO,MAAM,WAAW,UAAW,UAAU,KAAG,MA8F/C,CAAA"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { longName, parityProblems } from "./manifest.js";
|
|
2
|
+
import { pageProblems } from "./pages.js";
|
|
3
|
+
import { wordingProblems } from "./wording.js";
|
|
4
|
+
export const split = (max, tg) => {
|
|
5
|
+
const inMax = new Set(max);
|
|
6
|
+
const inTg = new Set(tg);
|
|
7
|
+
return {
|
|
8
|
+
both: [...inMax].filter((name) => inTg.has(name)).sort(),
|
|
9
|
+
max: [...inMax].filter((name) => !inTg.has(name)).sort(),
|
|
10
|
+
tg: [...inTg].filter((name) => !inMax.has(name)).sort(),
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
/** The pages that answer a user's question: the generated command list and the docs index are not counted. */
|
|
14
|
+
const NOT_PAGES = new Set(["docs/commands.md", "docs/README.md"]);
|
|
15
|
+
const userPages = (side) => Object.keys(side.pages)
|
|
16
|
+
.filter((path) => path.startsWith("docs/") && !NOT_PAGES.has(path))
|
|
17
|
+
.map((path) => path.slice("docs/".length));
|
|
18
|
+
const lineCount = (text = "") => text.split("\n").length - 1;
|
|
19
|
+
const documentsRule = (standard) => standard.split(/^## Documents$/m)[1]?.split(/^## /m)[0] ?? "";
|
|
20
|
+
export const pageSplit = (input) => {
|
|
21
|
+
const pages = split(userPages(input.max), userPages(input.tg));
|
|
22
|
+
const rule = documentsRule(input.standard);
|
|
23
|
+
const explained = (name) => rule.includes(`\`${name}\``);
|
|
24
|
+
return { ...pages, explained };
|
|
25
|
+
};
|
|
26
|
+
export const readmeSections = (readme = "") => [...readme.matchAll(/^## (.+)$/gm)].map((match) => match[1] ?? "");
|
|
27
|
+
export const toolNames = (side, cli) => side.tools.map((name) => name.replace(`${cli}_`, ""));
|
|
28
|
+
/** The `--allow-*` options of a CLI's `mcp` command: passing them all makes its server offer every tool. */
|
|
29
|
+
export const allowFlags = (program) => {
|
|
30
|
+
const mcp = program.commands.find((command) => command.path.join(" ") === "mcp");
|
|
31
|
+
return (mcp?.options ?? []).map((option) => longName(option.flags)).filter((name) => name.startsWith("--allow-"));
|
|
32
|
+
};
|
|
33
|
+
export const ciRuns = (side) => ({
|
|
34
|
+
parity: side.ci.includes("cli-messaging-parity"),
|
|
35
|
+
pages: /cli-messaging-parity \S+ --pages/.test(side.ci),
|
|
36
|
+
});
|
|
37
|
+
const mark = (ok) => (ok ? "✅" : "🔴");
|
|
38
|
+
const code = (names) => (names.length === 0 ? "none" : names.map((name) => `\`${name}\``).join(", "));
|
|
39
|
+
/** The measured half of a parity audit, as Markdown: everything a script can say without judging. */
|
|
40
|
+
export const renderAudit = (input) => {
|
|
41
|
+
const { manifest, max, tg } = input;
|
|
42
|
+
const out = [];
|
|
43
|
+
const section = (title) => out.push("", `### ${title}`, "");
|
|
44
|
+
out.push("## Measured from the two CLIs", "", `cli-messaging \`${input.shared.commit}\` (${input.shared.version}) · max-cli \`${max.commit}\` · ` +
|
|
45
|
+
`tg-cli \`${tg.commit}\`. Statuses: ✅ agrees · 🔴 differs · ⚪ one-sided with a stated reason.`);
|
|
46
|
+
section("The checks CI runs");
|
|
47
|
+
const maxProblems = parityProblems(manifest, "max", max.program);
|
|
48
|
+
const tgProblems = parityProblems(manifest, "tg", tg.program);
|
|
49
|
+
const wording = wordingProblems(manifest, max.program, tg.program);
|
|
50
|
+
const pageCheck = (cli, side) => Object.entries(side.pages).flatMap(([name, text]) => pageProblems(text, cli, manifest, side.program).map((found) => `${name}: ${found}`));
|
|
51
|
+
const pagesMax = pageCheck("max", max);
|
|
52
|
+
const pagesTg = pageCheck("tg", tg);
|
|
53
|
+
out.push(`- ${mark(maxProblems.length === 0)} **max against this manifest** — ${maxProblems.length} difference(s) ${code(maxProblems)}`, `- ${mark(tgProblems.length === 0)} **tg against this manifest** — ${tgProblems.length} difference(s) ${code(tgProblems)}`, `- ${mark(wording.length === 0)} **Help sentences of shared options** — ${wording.length} differ ${code(wording)}`, `- ${mark(pagesMax.length === 0)} **max's pages name only real options** — ${code(pagesMax)}`, `- ${mark(pagesTg.length === 0)} **tg's pages name only real options** — ${code(pagesTg)}`);
|
|
54
|
+
for (const [cli, side] of [
|
|
55
|
+
["max", max],
|
|
56
|
+
["tg", tg],
|
|
57
|
+
]) {
|
|
58
|
+
const runs = ciRuns(side);
|
|
59
|
+
out.push(`- ${mark(runs.parity)} **${cli}'s CI runs the parity check**`, `- ${mark(runs.pages)} **${cli}'s CI runs the page check** (STANDARD, Documents rule 4)`);
|
|
60
|
+
}
|
|
61
|
+
section("Shared package pinned");
|
|
62
|
+
for (const name of ["@leemour/cli-messaging", "@leemour/cli-core"]) {
|
|
63
|
+
const latest = name === "@leemour/cli-messaging" ? input.shared.version : undefined;
|
|
64
|
+
const pins = [max.pins[name], tg.pins[name]];
|
|
65
|
+
const same = pins[0] === pins[1] && (latest === undefined || pins[0] === latest);
|
|
66
|
+
out.push(`- ${mark(same)} **${name}** — max ${pins[0] ?? "none"}, tg ${pins[1] ?? "none"}` +
|
|
67
|
+
(latest ? `, main ${latest}` : ""));
|
|
68
|
+
}
|
|
69
|
+
section("MCP tools");
|
|
70
|
+
const tools = split(toolNames(max, "max"), toolNames(tg, "tg"));
|
|
71
|
+
out.push(`- **Both** (${tools.both.length}) — ${code(tools.both)}`, `- **max only** (${tools.max.length}) — ${code(tools.max)}`, `- **tg only** (${tools.tg.length}) — ${code(tools.tg)}`);
|
|
72
|
+
section("User pages");
|
|
73
|
+
const pages = pageSplit(input);
|
|
74
|
+
for (const name of pages.both) {
|
|
75
|
+
const lines = [lineCount(max.pages[`docs/${name}`]), lineCount(tg.pages[`docs/${name}`])];
|
|
76
|
+
const short = Math.min(...lines) / Math.max(...lines);
|
|
77
|
+
out.push(`- ${short >= 0.75 ? "✅" : "🔴"} \`${name}\` — max ${lines[0]} lines, tg ${lines[1]}`);
|
|
78
|
+
}
|
|
79
|
+
for (const [cli, names] of [
|
|
80
|
+
["max", pages.max],
|
|
81
|
+
["tg", pages.tg],
|
|
82
|
+
])
|
|
83
|
+
for (const name of names)
|
|
84
|
+
out.push(`- ${pages.explained(name) ? "⚪" : "🔴"} \`${name}\` — ${cli} only; ` +
|
|
85
|
+
(pages.explained(name) ? "STANDARD says why" : "STANDARD gives no reason"));
|
|
86
|
+
out.push("", "A pair is 🔴 when the shorter page has under three quarters of the longer one's lines.");
|
|
87
|
+
section("README sections");
|
|
88
|
+
const sections = [readmeSections(max.pages["README.md"]), readmeSections(tg.pages["README.md"])];
|
|
89
|
+
out.push(`- ${mark(sections[0].length === sections[1].length)} max ${sections[0].length}, tg ${sections[1].length}`, `- **max:** ${sections[0].join(" · ")}`, `- **tg:** ${sections[1].join(" · ")}`);
|
|
90
|
+
section("Release and QA tooling");
|
|
91
|
+
const scripts = split(max.scripts, tg.scripts);
|
|
92
|
+
const skills = split(max.skills, tg.skills);
|
|
93
|
+
out.push(`- **pnpm scripts in max only** — ${code(scripts.max)}`, `- **pnpm scripts in tg only** — ${code(scripts.tg)}`, `- **Skills in both** — ${code(skills.both)}; max only ${code(skills.max)}; tg only ${code(skills.tg)}`);
|
|
94
|
+
return out.join("\n");
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/parity/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Id, Message, Page } from "../domain/models.js";
|
|
2
|
-
import type { ConversationSummary, StoredLink } from "../store/store.js";
|
|
2
|
+
import type { ConversationSummary, LinkBatch, StoredLink } from "../store/store.js";
|
|
3
3
|
import type { ServiceDeps } from "./deps.js";
|
|
4
4
|
export interface Built {
|
|
5
5
|
chat: Id;
|
|
@@ -40,6 +40,26 @@ export interface ConversationsService {
|
|
|
40
40
|
messages: Message[];
|
|
41
41
|
}>;
|
|
42
42
|
links(chat: string, message: Id): Promise<MessageLinks>;
|
|
43
|
+
/** What is left for the user's agent to answer, to tell the user before it starts (phase 4 plan A7). */
|
|
44
|
+
batchStatus(chat: string, size: number): Promise<BatchStatus>;
|
|
45
|
+
/** The next window for the agent; `undefined` when every message is answered (A1–A4). */
|
|
46
|
+
nextBatch(chat: string, size: number): Promise<LinkBatch | undefined>;
|
|
43
47
|
}
|
|
48
|
+
export interface BatchStatus {
|
|
49
|
+
chat: Id;
|
|
50
|
+
/** Messages with no messenger reply and no current agent answer. */
|
|
51
|
+
messages: number;
|
|
52
|
+
characters: number;
|
|
53
|
+
/** About how many `batches next` it takes; windows hold context, so it is an estimate. */
|
|
54
|
+
batches: number;
|
|
55
|
+
/** Characters ÷ 4: a rough count of tokens, not a price. */
|
|
56
|
+
tokensEstimate: number;
|
|
57
|
+
}
|
|
58
|
+
/** Messages to answer per batch, by default and at most: the agent's turn stays small (A1). */
|
|
59
|
+
export declare const BATCH_SIZE: {
|
|
60
|
+
default: number;
|
|
61
|
+
min: number;
|
|
62
|
+
max: number;
|
|
63
|
+
};
|
|
44
64
|
export declare const conversationsService: (deps: ServiceDeps) => ConversationsService;
|
|
45
65
|
//# sourceMappingURL=conversations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../src/services/conversations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../src/services/conversations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAS5C,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,EAAE,CAAA;IACR,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,EAAE,CAAA;IACR,OAAO,EAAE,EAAE,CAAA;IACX,6EAA6E;IAC7E,KAAK,EAAE,CAAC,UAAU,GAAG;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,EAAE,CAAA;IAC3C,+EAA+E;IAC/E,KAAK,EAAE,EAAE,EAAE,CAAA;CACZ;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IACnC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACjG,wEAAwE;IACxE,IAAI,CACF,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,EAAE,CAAA;KAAE,GACrD,OAAO,CAAC;QAAE,OAAO,EAAE,mBAAmB,CAAC;QAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAA;IACjE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IACvD,wGAAwG;IACxG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IAC7D,yFAAyF;IACzF,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAA;CACtE;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,EAAE,CAAA;IACR,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,0FAA0F;IAC1F,OAAO,EAAE,MAAM,CAAA;IACf,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,+FAA+F;AAC/F,eAAO,MAAM,UAAU;IAAK,OAAO;IAAM,GAAG;IAAM,GAAG;CAAO,CAAA;AAE5D,eAAO,MAAM,oBAAoB,SAAU,WAAW,KAAG,oBAwGxD,CAAA"}
|
|
@@ -5,6 +5,8 @@ import { storedChatId } from "./messages.js";
|
|
|
5
5
|
const READ_PAGE = 5_000;
|
|
6
6
|
/** How far `links` follows a message's chosen parents back. */
|
|
7
7
|
const CHAIN = 50;
|
|
8
|
+
/** Messages to answer per batch, by default and at most: the agent's turn stays small (A1). */
|
|
9
|
+
export const BATCH_SIZE = { default: 50, min: 10, max: 200 };
|
|
8
10
|
export const conversationsService = (deps) => {
|
|
9
11
|
const found = async (chat) => {
|
|
10
12
|
const store = await deps.store();
|
|
@@ -73,6 +75,21 @@ export const conversationsService = (deps) => {
|
|
|
73
75
|
}
|
|
74
76
|
return conversation;
|
|
75
77
|
},
|
|
78
|
+
batchStatus: async (chat, size) => {
|
|
79
|
+
const { store, account, chatId } = await found(chat);
|
|
80
|
+
const { messages, characters } = await store.batchStatus(account, chatId);
|
|
81
|
+
return {
|
|
82
|
+
chat: chatId,
|
|
83
|
+
messages,
|
|
84
|
+
characters,
|
|
85
|
+
batches: Math.ceil(messages / sized(size)),
|
|
86
|
+
tokensEstimate: Math.round(characters / 4),
|
|
87
|
+
};
|
|
88
|
+
},
|
|
89
|
+
nextBatch: async (chat, size) => {
|
|
90
|
+
const { store, account, chatId } = await found(chat);
|
|
91
|
+
return store.nextBatch(account, chatId, { size: sized(size) });
|
|
92
|
+
},
|
|
76
93
|
links: async (chat, message) => {
|
|
77
94
|
const { store, account, chatId } = await found(chat);
|
|
78
95
|
const chosenOf = (links) => links.find((link) => !link.stale);
|
|
@@ -89,4 +106,10 @@ export const conversationsService = (deps) => {
|
|
|
89
106
|
},
|
|
90
107
|
};
|
|
91
108
|
};
|
|
109
|
+
const sized = (size) => {
|
|
110
|
+
if (!Number.isInteger(size) || size < BATCH_SIZE.min || size > BATCH_SIZE.max) {
|
|
111
|
+
throw new CliError("validation_error", `--size takes ${BATCH_SIZE.min} to ${BATCH_SIZE.max} messages`);
|
|
112
|
+
}
|
|
113
|
+
return size;
|
|
114
|
+
};
|
|
92
115
|
//# sourceMappingURL=conversations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../src/services/conversations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAkB,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAItF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,8GAA8G;AAC9G,MAAM,SAAS,GAAG,KAAK,CAAA;AAEvB,+DAA+D;AAC/D,MAAM,KAAK,GAAG,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../src/services/conversations.ts"],"names":[],"mappings":"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"}
|
package/dist/services/index.d.ts
CHANGED
|
@@ -17,8 +17,8 @@ export type { ArchiveService, Fetched, FetchOptions } from "./archive.js";
|
|
|
17
17
|
export { archiveService } from "./archive.js";
|
|
18
18
|
export type { ChatFilter, ChatsService, MarkedRead, PageWindow } from "./chats.js";
|
|
19
19
|
export { CHAT_SCAN, chatsService, EVENTS_DAYS } from "./chats.js";
|
|
20
|
-
export type { Built, ConversationsService, MessageLinks } from "./conversations.js";
|
|
21
|
-
export { conversationsService } from "./conversations.js";
|
|
20
|
+
export type { BatchStatus, Built, ConversationsService, MessageLinks } from "./conversations.js";
|
|
21
|
+
export { BATCH_SIZE, conversationsService } from "./conversations.js";
|
|
22
22
|
export type { ServiceDeps } from "./deps.js";
|
|
23
23
|
export { OFFLINE, onlineDeps, storedDeps } from "./deps.js";
|
|
24
24
|
export type { FolderEdit, FoldersService } from "./folders.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAkB,MAAM,cAAc,CAAA;AAClE,OAAO,EAAE,KAAK,YAAY,EAAgB,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAE,KAAK,cAAc,EAAkB,MAAM,cAAc,CAAA;AAClE,OAAO,EAAE,KAAK,YAAY,EAAgB,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAE,KAAK,oBAAoB,EAAwB,MAAM,oBAAoB,CAAA;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,KAAK,cAAc,EAAkB,MAAM,cAAc,CAAA;AAClE,OAAO,EAAE,KAAK,YAAY,EAAgB,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAE,KAAK,eAAe,EAAmB,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,KAAK,iBAAiB,EAAqB,MAAM,iBAAiB,CAAA;AAC3E,OAAO,EAAE,KAAK,aAAa,EAAiB,MAAM,aAAa,CAAA;AAE/D,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAClF,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACjE,YAAY,EAAE,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"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"}
|
package/dist/services/index.js
CHANGED
|
@@ -12,7 +12,7 @@ export { accountService } from "./account.js";
|
|
|
12
12
|
export { adminService } from "./admin.js";
|
|
13
13
|
export { archiveService } from "./archive.js";
|
|
14
14
|
export { CHAT_SCAN, chatsService, EVENTS_DAYS } from "./chats.js";
|
|
15
|
-
export { conversationsService } from "./conversations.js";
|
|
15
|
+
export { BATCH_SIZE, conversationsService } from "./conversations.js";
|
|
16
16
|
export { OFFLINE, onlineDeps, storedDeps } from "./deps.js";
|
|
17
17
|
export { foldersService } from "./folders.js";
|
|
18
18
|
export { inboxService } from "./inbox.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,cAAc,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,EAAqB,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAuB,cAAc,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,EAAqB,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAA6B,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEpF,OAAO,EAAuB,cAAc,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,EAAqB,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAwB,eAAe,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAA0B,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,EAAsB,aAAa,EAAE,MAAM,aAAa,CAAA;AAG/D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,cAAc,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,EAAqB,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAuB,cAAc,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,EAAqB,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAA6B,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEpF,OAAO,EAAuB,cAAc,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,EAAqB,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAwB,eAAe,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAA0B,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,EAAsB,aAAa,EAAE,MAAM,aAAa,CAAA;AAG/D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEjE,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAErE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAWzC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEnD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAqBpD,4GAA4G;AAC5G,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAiB,EAAY,EAAE;IACzD,MAAM,IAAI,GAAa;QACrB,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC;QAC/B,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;QACzB,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC;QAC3B,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;QACzB,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;QAC7B,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;QACzB,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;QAC7B,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;QAC7B,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC;QACnC,aAAa,EAAE,oBAAoB,CAAC,IAAI,CAAC;KAC1C,CAAA;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC7F,CAAC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Id } from "../../domain/models.js";
|
|
2
|
+
import type { LinkBatch } from "../store.js";
|
|
3
|
+
import type { StoreContext } from "./open.js";
|
|
4
|
+
/** How many messages before the first one to answer the agent sees: 97% of reply parents sit within 50. */
|
|
5
|
+
export declare const BATCH_CONTEXT = 50;
|
|
6
|
+
/** `b1.<chat>.<first>.<last>.<hash>`: the window's core, so an answer can be checked against it (A3). */
|
|
7
|
+
export declare const batchId: (chatKey: number, core: number[]) => string;
|
|
8
|
+
/** How much is left to answer, for the agent to tell the user before it starts (A7). */
|
|
9
|
+
export declare const batchStatus: ({ orm }: StoreContext, chatKey: number) => {
|
|
10
|
+
messages: number;
|
|
11
|
+
characters: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* The earliest window that holds a message needing the agent (A1–A2): from that message, the next
|
|
15
|
+
* `size` live messages — those needing the agent are the core, the rest context — and the `BATCH_CONTEXT`
|
|
16
|
+
* messages before it. `undefined` when nothing is left to answer.
|
|
17
|
+
*/
|
|
18
|
+
export declare const nextBatch: (context: StoreContext, chatKey: number, chatId: Id, size: number) => Omit<LinkBatch, "remaining"> | undefined;
|
|
19
|
+
//# sourceMappingURL=batches.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batches.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/batches.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,aAAa,CAAA;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAG7C,2GAA2G;AAC3G,eAAO,MAAM,aAAa,KAAK,CAAA;AA6B/B,yGAAyG;AACzG,eAAO,MAAM,OAAO,YAAa,MAAM,QAAQ,MAAM,EAAE,KAAG,MAC2D,CAAA;AAErH,wFAAwF;AACxF,eAAO,MAAM,WAAW,YAAa,YAAY,WAAW,MAAM;IAKvD,QAAQ;IAA8B,UAAU;CAC1D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,YACX,YAAY,WACZ,MAAM,UACP,EAAE,QACJ,MAAM,KACX,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,SA+BjC,CAAA"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { sql } from "./drizzle/core.js";
|
|
3
|
+
import { toIso } from "./values.js";
|
|
4
|
+
/** How many messages before the first one to answer the agent sees: 97% of reply parents sit within 50. */
|
|
5
|
+
export const BATCH_CONTEXT = 50;
|
|
6
|
+
/**
|
|
7
|
+
* Phase 4 plan A2: a live message the agent is asked about — no reply the messenger itself records to a
|
|
8
|
+
* message held here, and no current agent answer. A stale answer makes it need the agent again.
|
|
9
|
+
*/
|
|
10
|
+
const needsAgent = (m) => sql `(
|
|
11
|
+
NOT EXISTS (SELECT 1 FROM messages p WHERE p.chat_pk = ${m}.chat_pk AND p.native_id = ${m}.reply_to_native_id
|
|
12
|
+
AND p.deleted_at IS NULL)
|
|
13
|
+
AND NOT EXISTS (SELECT 1 FROM message_links l WHERE l.message_pk = ${m}.pk AND l.source = 'agent'
|
|
14
|
+
AND l.stale_at IS NULL))`;
|
|
15
|
+
const COLUMNS = sql `m.pk, m.native_id, m.sent_at, m.text, coalesce(m.sender_chat_native_id, i.native_id) AS sender_id,
|
|
16
|
+
m.sender_name, m.reply_to_native_id, m.thread_native_id, m.mentions, ${needsAgent(sql `m`)} AS needs`;
|
|
17
|
+
const FROM = sql `messages m LEFT JOIN identities i ON i.pk = m.sender_identity_pk`;
|
|
18
|
+
/** `b1.<chat>.<first>.<last>.<hash>`: the window's core, so an answer can be checked against it (A3). */
|
|
19
|
+
export const batchId = (chatKey, core) => `b1.${chatKey}.${core[0]}.${core.at(-1)}.${createHash("sha256").update(core.join(",")).digest("hex").slice(0, 12)}`;
|
|
20
|
+
/** How much is left to answer, for the agent to tell the user before it starts (A7). */
|
|
21
|
+
export const batchStatus = ({ orm }, chatKey) => {
|
|
22
|
+
const row = orm.get(sql `SELECT count(*) AS messages, sum(length(m.text)) AS characters FROM messages m
|
|
23
|
+
WHERE m.chat_pk = ${chatKey} AND m.deleted_at IS NULL AND ${needsAgent(sql `m`)}`);
|
|
24
|
+
return { messages: Number(row?.messages ?? 0), characters: Number(row?.characters ?? 0) };
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* The earliest window that holds a message needing the agent (A1–A2): from that message, the next
|
|
28
|
+
* `size` live messages — those needing the agent are the core, the rest context — and the `BATCH_CONTEXT`
|
|
29
|
+
* messages before it. `undefined` when nothing is left to answer.
|
|
30
|
+
*/
|
|
31
|
+
export const nextBatch = (context, chatKey, chatId, size) => {
|
|
32
|
+
const { orm } = context;
|
|
33
|
+
const first = orm.get(sql `SELECT m.pk, m.sent_at FROM messages m WHERE m.chat_pk = ${chatKey} AND m.deleted_at IS NULL
|
|
34
|
+
AND ${needsAgent(sql `m`)} ORDER BY m.sent_at, m.pk LIMIT 1`);
|
|
35
|
+
if (!first)
|
|
36
|
+
return undefined;
|
|
37
|
+
const live = sql `m.chat_pk = ${chatKey} AND m.deleted_at IS NULL`;
|
|
38
|
+
const span = orm.all(sql `SELECT ${COLUMNS} FROM ${FROM} WHERE ${live} AND (m.sent_at, m.pk) >= (${first.sent_at}, ${first.pk})
|
|
39
|
+
ORDER BY m.sent_at, m.pk LIMIT ${size}`);
|
|
40
|
+
const before = orm
|
|
41
|
+
.all(sql `SELECT ${COLUMNS} FROM ${FROM} WHERE ${live} AND (m.sent_at, m.pk) < (${first.sent_at}, ${first.pk})
|
|
42
|
+
ORDER BY m.sent_at DESC, m.pk DESC LIMIT ${BATCH_CONTEXT}`)
|
|
43
|
+
.reverse();
|
|
44
|
+
const core = span.filter((row) => Number(row.needs) === 1);
|
|
45
|
+
const candidates = candidatesOf(context, core.map(({ pk }) => pk));
|
|
46
|
+
return {
|
|
47
|
+
batch: batchId(chatKey, core.map(({ pk }) => pk)),
|
|
48
|
+
chat: chatId,
|
|
49
|
+
messages: [...before, ...span].map((row) => toBatchMessage(row, candidates.get(row.pk))),
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
/** The current build's messenger and rule links for the core: the rules' guesses, for the agent to weigh. */
|
|
53
|
+
const candidatesOf = ({ orm }, pks) => {
|
|
54
|
+
const found = new Map();
|
|
55
|
+
if (pks.length === 0)
|
|
56
|
+
return found;
|
|
57
|
+
const rows = orm.all(sql `SELECT l.message_pk, p.native_id AS parent, l.source, l.kind, l.confidence
|
|
58
|
+
FROM message_links l LEFT JOIN messages p ON p.pk = l.parent_pk
|
|
59
|
+
WHERE l.message_pk IN (${sql.join(pks.map((pk) => sql `${pk}`), sql `, `)}) AND l.source IN ('provider', 'rule')
|
|
60
|
+
AND l.build = (SELECT s.current_build FROM conversation_state s WHERE s.chat_pk = l.chat_pk)
|
|
61
|
+
ORDER BY l.message_pk, l.confidence DESC`);
|
|
62
|
+
for (const row of rows) {
|
|
63
|
+
found.set(row.message_pk, [
|
|
64
|
+
...(found.get(row.message_pk) ?? []),
|
|
65
|
+
{ parent: row.parent, source: row.source, kind: row.kind, confidence: row.confidence },
|
|
66
|
+
]);
|
|
67
|
+
}
|
|
68
|
+
return found;
|
|
69
|
+
};
|
|
70
|
+
const toBatchMessage = (row, candidates) => ({
|
|
71
|
+
id: row.native_id,
|
|
72
|
+
at: toIso(row.sent_at),
|
|
73
|
+
sender: { id: row.sender_id, name: row.sender_name },
|
|
74
|
+
text: row.text,
|
|
75
|
+
...(row.reply_to_native_id === null ? {} : { replyTo: row.reply_to_native_id }),
|
|
76
|
+
...(row.thread_native_id === null ? {} : { thread: row.thread_native_id }),
|
|
77
|
+
...(row.mentions === null ? {} : { mentions: JSON.parse(row.mentions) }),
|
|
78
|
+
answer: Number(row.needs) === 1,
|
|
79
|
+
...(Number(row.needs) === 1 ? { candidates: candidates ?? [] } : {}),
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=batches.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batches.js","sourceRoot":"","sources":["../../../src/store/sqlite/batches.ts"],"names":[],"mappings":"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"}
|
package/dist/store/store.d.ts
CHANGED
|
@@ -137,6 +137,15 @@ export interface MessageStore {
|
|
|
137
137
|
conversationOf(key: AccountKey, chatId: Id, messageId: Id): Promise<string | undefined>;
|
|
138
138
|
/** Every link a message has, the messenger's first. */
|
|
139
139
|
links(key: AccountKey, chatId: Id, messageId: Id): Promise<StoredLink[]>;
|
|
140
|
+
/** How many messages still need the user's agent, and their characters (phase 4). */
|
|
141
|
+
batchStatus(key: AccountKey, chatId: Id): Promise<{
|
|
142
|
+
messages: number;
|
|
143
|
+
characters: number;
|
|
144
|
+
}>;
|
|
145
|
+
/** The earliest window holding a message the agent has not answered; `undefined` when none is left. */
|
|
146
|
+
nextBatch(key: AccountKey, chatId: Id, options: {
|
|
147
|
+
size: number;
|
|
148
|
+
}): Promise<LinkBatch | undefined>;
|
|
140
149
|
/** Whether the chat's conversations were built, and when; `undefined` when never. */
|
|
141
150
|
conversationState(key: AccountKey, chatId: Id): Promise<{
|
|
142
151
|
enabledAt: string;
|
|
@@ -275,6 +284,41 @@ export interface ConversationSummary {
|
|
|
275
284
|
builtAt: string;
|
|
276
285
|
algorithmVersion: number;
|
|
277
286
|
}
|
|
287
|
+
/** One message as the user's agent sees it in a batch (phase 4 plan A4). */
|
|
288
|
+
export interface BatchMessage {
|
|
289
|
+
id: Id;
|
|
290
|
+
at: string;
|
|
291
|
+
sender: {
|
|
292
|
+
id: Id | null;
|
|
293
|
+
name: string | null;
|
|
294
|
+
};
|
|
295
|
+
text: string;
|
|
296
|
+
/** The message it answers, by the messenger's own record. */
|
|
297
|
+
replyTo?: Id;
|
|
298
|
+
thread?: Id;
|
|
299
|
+
mentions?: Id[];
|
|
300
|
+
/** `true`: the agent is asked which earlier message this one answers. `false`: context only. */
|
|
301
|
+
answer: boolean;
|
|
302
|
+
/** For a message to answer: the current build's messenger and rule links, strongest first. */
|
|
303
|
+
candidates?: {
|
|
304
|
+
parent: Id | null;
|
|
305
|
+
source: string;
|
|
306
|
+
kind: string;
|
|
307
|
+
confidence: number;
|
|
308
|
+
}[];
|
|
309
|
+
}
|
|
310
|
+
/** A window of a chat for the agent: the messages to answer and the ones before them (A1). */
|
|
311
|
+
export interface LinkBatch {
|
|
312
|
+
/** Names the window, so an answer can be checked against it (A3). */
|
|
313
|
+
batch: string;
|
|
314
|
+
chat: Id;
|
|
315
|
+
messages: BatchMessage[];
|
|
316
|
+
/** Messages still needing the agent after this batch, and their characters. */
|
|
317
|
+
remaining: {
|
|
318
|
+
messages: number;
|
|
319
|
+
characters: number;
|
|
320
|
+
};
|
|
321
|
+
}
|
|
278
322
|
export interface StoredLink {
|
|
279
323
|
/** `null`: the source says the message starts a conversation. */
|
|
280
324
|
parentId: Id | null;
|