@leemour/max-cli 0.16.0 → 0.17.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 -37
- package/dist/bot/transport.d.ts +4 -0
- package/dist/bot/transport.d.ts.map +1 -1
- package/dist/bot/transport.js +43 -3
- package/dist/bot/transport.js.map +1 -1
- package/dist/bot-mcp/server.d.ts.map +1 -1
- package/dist/bot-mcp/server.js +21 -7
- package/dist/bot-mcp/server.js.map +1 -1
- package/dist/client.d.ts +18 -10
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +51 -29
- package/dist/client.js.map +1 -1
- package/dist/commands/account.d.ts.map +1 -1
- package/dist/commands/account.js +7 -5
- package/dist/commands/account.js.map +1 -1
- package/dist/commands/backup.js +1 -1
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/bot-check.d.ts +2 -2
- package/dist/commands/bot-check.d.ts.map +1 -1
- package/dist/commands/bot-check.js +4 -4
- package/dist/commands/bot-check.js.map +1 -1
- package/dist/commands/bot-comments.d.ts.map +1 -1
- package/dist/commands/bot-comments.js +2 -1
- package/dist/commands/bot-comments.js.map +1 -1
- package/dist/commands/bot-context.d.ts +7 -0
- package/dist/commands/bot-context.d.ts.map +1 -1
- package/dist/commands/bot-context.js +32 -2
- package/dist/commands/bot-context.js.map +1 -1
- package/dist/commands/bot-members.d.ts.map +1 -1
- package/dist/commands/bot-members.js +7 -4
- package/dist/commands/bot-members.js.map +1 -1
- package/dist/commands/bot-people.d.ts.map +1 -1
- package/dist/commands/bot-people.js +3 -3
- package/dist/commands/bot-people.js.map +1 -1
- package/dist/commands/bot-reads.d.ts.map +1 -1
- package/dist/commands/bot-reads.js +11 -6
- package/dist/commands/bot-reads.js.map +1 -1
- package/dist/commands/bot-sends.d.ts.map +1 -1
- package/dist/commands/bot-sends.js +6 -5
- package/dist/commands/bot-sends.js.map +1 -1
- package/dist/commands/bot-setup.d.ts.map +1 -1
- package/dist/commands/bot-setup.js +5 -4
- package/dist/commands/bot-setup.js.map +1 -1
- package/dist/commands/bot.d.ts.map +1 -1
- package/dist/commands/bot.js +7 -3
- package/dist/commands/bot.js.map +1 -1
- package/dist/commands/chats.d.ts.map +1 -1
- package/dist/commands/chats.js +15 -30
- package/dist/commands/chats.js.map +1 -1
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +4 -3
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/complete.d.ts.map +1 -1
- package/dist/commands/complete.js +27 -3
- package/dist/commands/complete.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +29 -27
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/contacts.d.ts.map +1 -1
- package/dist/commands/contacts.js +21 -0
- package/dist/commands/contacts.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +75 -21
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/export.js +1 -1
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/folders.d.ts.map +1 -1
- package/dist/commands/folders.js +3 -2
- package/dist/commands/folders.js.map +1 -1
- package/dist/commands/inbox.d.ts.map +1 -1
- package/dist/commands/inbox.js +1 -1
- package/dist/commands/inbox.js.map +1 -1
- package/dist/commands/messages.d.ts.map +1 -1
- package/dist/commands/messages.js +9 -11
- package/dist/commands/messages.js.map +1 -1
- package/dist/commands/models.d.ts.map +1 -1
- package/dist/commands/models.js +2 -1
- package/dist/commands/models.js.map +1 -1
- package/dist/commands/paging.d.ts +17 -1
- package/dist/commands/paging.d.ts.map +1 -1
- package/dist/commands/paging.js +22 -2
- package/dist/commands/paging.js.map +1 -1
- package/dist/commands/recipients.d.ts.map +1 -1
- package/dist/commands/recipients.js +3 -2
- package/dist/commands/recipients.js.map +1 -1
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +1 -1
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/runs.d.ts.map +1 -1
- package/dist/commands/runs.js +4 -3
- package/dist/commands/runs.js.map +1 -1
- package/dist/commands/sends.d.ts.map +1 -1
- package/dist/commands/sends.js +3 -2
- package/dist/commands/sends.js.map +1 -1
- package/dist/config.d.ts +78 -7
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +143 -72
- package/dist/config.js.map +1 -1
- package/dist/diagnose.d.ts +47 -1
- package/dist/diagnose.d.ts.map +1 -1
- package/dist/diagnose.js +56 -5
- package/dist/diagnose.js.map +1 -1
- package/dist/export.d.ts.map +1 -1
- package/dist/export.js +2 -1
- package/dist/export.js.map +1 -1
- package/dist/generated/operations.generated.d.ts +14 -7
- package/dist/generated/operations.generated.d.ts.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +42 -12
- package/dist/mcp/tools.js.map +1 -1
- package/dist/moderation/check.d.ts +5 -6
- package/dist/moderation/check.d.ts.map +1 -1
- package/dist/moderation/check.js +2 -40
- package/dist/moderation/check.js.map +1 -1
- package/dist/moderation/rules.d.ts +57 -7
- package/dist/moderation/rules.d.ts.map +1 -1
- package/dist/moderation/rules.js +13 -11
- package/dist/moderation/rules.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +9 -3
- package/dist/program.js.map +1 -1
- package/dist/runs/events.d.ts +5 -2
- package/dist/runs/events.d.ts.map +1 -1
- package/dist/runs/events.js +4 -1
- package/dist/runs/events.js.map +1 -1
- package/dist/runs/recording.d.ts +11 -0
- package/dist/runs/recording.d.ts.map +1 -1
- package/dist/runs/recording.js +28 -12
- package/dist/runs/recording.js.map +1 -1
- package/dist/sends/guard.d.ts +2 -2
- package/dist/sends/guard.d.ts.map +1 -1
- package/dist/sends/guard.js +2 -1
- package/dist/sends/guard.js.map +1 -1
- package/dist/sends/journal.d.ts +2 -2
- package/dist/sends/journal.d.ts.map +1 -1
- package/dist/sends/journal.js.map +1 -1
- package/dist/sends/permissions.d.ts.map +1 -1
- package/dist/sends/permissions.js +3 -0
- package/dist/sends/permissions.js.map +1 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +5 -0
- package/dist/server/server.js.map +1 -1
- package/dist/session/store.d.ts +2 -0
- package/dist/session/store.d.ts.map +1 -1
- package/dist/session/store.js +5 -1
- package/dist/session/store.js.map +1 -1
- package/dist/spec/operations/account.d.ts +3 -0
- package/dist/spec/operations/account.d.ts.map +1 -1
- package/dist/spec/operations/account.js +5 -1
- package/dist/spec/operations/account.js.map +1 -1
- package/dist/spec/operations/chats.d.ts +4 -3
- package/dist/spec/operations/chats.d.ts.map +1 -1
- package/dist/spec/operations/chats.js +10 -7
- package/dist/spec/operations/chats.js.map +1 -1
- package/dist/spec/operations/contacts.d.ts +8 -3
- package/dist/spec/operations/contacts.d.ts.map +1 -1
- package/dist/spec/operations/contacts.js +26 -5
- package/dist/spec/operations/contacts.js.map +1 -1
- package/dist/spec/operations/folders.d.ts.map +1 -1
- package/dist/spec/operations/folders.js +1 -0
- package/dist/spec/operations/folders.js.map +1 -1
- package/dist/spec/operations/messages.d.ts +1 -1
- package/dist/spec/operations/messages.d.ts.map +1 -1
- package/dist/spec/operations/messages.js +2 -1
- package/dist/spec/operations/messages.js.map +1 -1
- package/dist/spec/operations/uploads.d.ts +1 -1
- package/dist/spec/operations/uploads.d.ts.map +1 -1
- package/dist/spec/operations/uploads.js +2 -1
- package/dist/spec/operations/uploads.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -1
- package/skills/max-cli/SKILL.md +11 -6
package/dist/diagnose.d.ts
CHANGED
|
@@ -9,6 +9,10 @@ export interface DiagnoseOptions {
|
|
|
9
9
|
readSchemaVersion?: (file: string) => Promise<number | undefined>;
|
|
10
10
|
/** Where a stored token is — the keyring, or the file that stands in for one; `undefined` for none. */
|
|
11
11
|
storedToken?: (profile: string) => "keyring" | "file" | undefined;
|
|
12
|
+
/** The same for the bot token, keyring account `bot:<profile>` (`src/bot/auth.ts`). */
|
|
13
|
+
storedBotToken?: (profile: string) => "keyring" | "file" | undefined;
|
|
14
|
+
/** Profile names the configuration file mentions, for the list of every profile. */
|
|
15
|
+
configured?: string[];
|
|
12
16
|
now?: () => Date;
|
|
13
17
|
install?: () => Install;
|
|
14
18
|
native?: () => Promise<Native>;
|
|
@@ -22,6 +26,13 @@ export interface Native {
|
|
|
22
26
|
sqlite: string;
|
|
23
27
|
}
|
|
24
28
|
export type TokenSource = "environment" | "keyring" | "file" | "none";
|
|
29
|
+
/** A profile is a personal account, a bot, or both (`NEED-294`); which one is read off what exists. */
|
|
30
|
+
export interface ProfileRow {
|
|
31
|
+
name: string;
|
|
32
|
+
personal: boolean;
|
|
33
|
+
bot: boolean;
|
|
34
|
+
configured: boolean;
|
|
35
|
+
}
|
|
25
36
|
export interface Diagnosis {
|
|
26
37
|
/** ⚠ Never the token, and never a prefix or a length of it — only whether one is reachable. */
|
|
27
38
|
token: {
|
|
@@ -50,6 +61,31 @@ export interface Diagnosis {
|
|
|
50
61
|
loginPausedUntil: string | null;
|
|
51
62
|
};
|
|
52
63
|
loggedInProfiles: string[];
|
|
64
|
+
/** Every profile this machine knows of, with what it holds. */
|
|
65
|
+
profiles: ProfileRow[];
|
|
66
|
+
/** This profile's bot side. ⚠ Never the token; the bot's id only as known or not. */
|
|
67
|
+
bot: {
|
|
68
|
+
token: {
|
|
69
|
+
present: boolean;
|
|
70
|
+
from: TokenSource;
|
|
71
|
+
};
|
|
72
|
+
registry: {
|
|
73
|
+
file: string;
|
|
74
|
+
exists: boolean;
|
|
75
|
+
botKnown: boolean;
|
|
76
|
+
chats: number;
|
|
77
|
+
};
|
|
78
|
+
sends: string;
|
|
79
|
+
};
|
|
80
|
+
/** Where this profile's files live — one place to look instead of nine. */
|
|
81
|
+
paths: {
|
|
82
|
+
state: string;
|
|
83
|
+
cache: string;
|
|
84
|
+
runs: string;
|
|
85
|
+
bots: string;
|
|
86
|
+
sends: string;
|
|
87
|
+
messages: string;
|
|
88
|
+
};
|
|
53
89
|
cache: {
|
|
54
90
|
file: string;
|
|
55
91
|
exists: boolean;
|
|
@@ -96,5 +132,15 @@ export declare const STALE_AFTER_DAYS = 60;
|
|
|
96
132
|
* identity and writes it out on first read. A diagnosis that creates the thing it is reporting on
|
|
97
133
|
* is not a diagnosis.
|
|
98
134
|
*/
|
|
99
|
-
export declare const diagnose: ({ profile, env, stateDir, cacheDir, readSchemaVersion, storedToken, now, install, native, speechModel, modelsDir, }: DiagnoseOptions) => Promise<Diagnosis>;
|
|
135
|
+
export declare const diagnose: ({ profile, env, stateDir, cacheDir, readSchemaVersion, storedToken, storedBotToken, configured, now, install, native, speechModel, modelsDir, }: DiagnoseOptions) => Promise<Diagnosis>;
|
|
136
|
+
/**
|
|
137
|
+
* **Every profile, from files only**: a personal state file, a bot registry file, or a name in the
|
|
138
|
+
* configuration. It never reads the keyring — `config show` uses it as is, and that is `doctor`'s
|
|
139
|
+
* job (`CLI-12`); `diagnose` adds the keyring on top.
|
|
140
|
+
*/
|
|
141
|
+
export declare const knownProfiles: ({ stateDir, configured, env, }: {
|
|
142
|
+
stateDir?: string;
|
|
143
|
+
configured?: string[];
|
|
144
|
+
env?: NodeJS.ProcessEnv;
|
|
145
|
+
}) => ProfileRow[];
|
|
100
146
|
//# sourceMappingURL=diagnose.d.ts.map
|
package/dist/diagnose.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"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"}
|
package/dist/diagnose.js
CHANGED
|
@@ -2,6 +2,7 @@ import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { pathsAreOverridden, resolvePaths } from "@leemour/cli-core";
|
|
5
|
+
import { storePath } from "@leemour/cli-messaging/store";
|
|
5
6
|
import { openCache } from "./cache/open.js";
|
|
6
7
|
import { SCHEMA_VERSION } from "./cache/schema.js";
|
|
7
8
|
import { checkInstall, ownScript } from "./install.js";
|
|
@@ -26,7 +27,7 @@ export const STALE_AFTER_DAYS = 60;
|
|
|
26
27
|
* identity and writes it out on first read. A diagnosis that creates the thing it is reporting on
|
|
27
28
|
* is not a diagnosis.
|
|
28
29
|
*/
|
|
29
|
-
export const diagnose = async ({ profile, env = process.env, stateDir, cacheDir, readSchemaVersion = schemaVersionOf, storedToken = () => undefined, now = () => new Date(), install = () => thisInstall(env), native = loadNative, speechModel = DEFAULT_MODEL, modelsDir, }) => {
|
|
30
|
+
export const diagnose = async ({ profile, env = process.env, stateDir, cacheDir, readSchemaVersion = schemaVersionOf, storedToken = () => undefined, storedBotToken = () => undefined, configured = [], now = () => new Date(), install = () => thisInstall(env), native = loadNative, speechModel = DEFAULT_MODEL, modelsDir, }) => {
|
|
30
31
|
const paths = resolvePaths({ appName: "max-cli", prefix: "MAX", env });
|
|
31
32
|
const state = stateDir ?? paths.state;
|
|
32
33
|
const cacheHome = cacheDir ?? paths.cache;
|
|
@@ -39,6 +40,16 @@ export const diagnose = async ({ profile, env = process.env, stateDir, cacheDir,
|
|
|
39
40
|
const cacheExists = existsSync(cacheFile);
|
|
40
41
|
const schemaVersion = cacheExists ? await readSchemaVersion(cacheFile) : undefined;
|
|
41
42
|
const runsDirectory = join(state, "runs");
|
|
43
|
+
const bots = join(state, "bots");
|
|
44
|
+
const registryFile = join(bots, `${profile}.json`);
|
|
45
|
+
const registry = readState(registryFile);
|
|
46
|
+
const botFromEnvironment = (env.MAX_BOT_TOKEN ?? "").trim() !== "";
|
|
47
|
+
const botTokenAt = botFromEnvironment ? undefined : storedBotToken(profile);
|
|
48
|
+
const profiles = knownProfiles({ stateDir: state, configured }).map((row) => ({
|
|
49
|
+
...row,
|
|
50
|
+
personal: row.personal || storedToken(row.name) !== undefined,
|
|
51
|
+
bot: row.bot || storedBotToken(row.name) !== undefined,
|
|
52
|
+
}));
|
|
42
53
|
return {
|
|
43
54
|
token: {
|
|
44
55
|
present: fromEnvironment || tokenAt !== undefined,
|
|
@@ -57,6 +68,28 @@ export const diagnose = async ({ profile, env = process.env, stateDir, cacheDir,
|
|
|
57
68
|
: null,
|
|
58
69
|
},
|
|
59
70
|
loggedInProfiles: profilesWithState(join(state, "profiles")),
|
|
71
|
+
profiles,
|
|
72
|
+
bot: {
|
|
73
|
+
token: {
|
|
74
|
+
present: botFromEnvironment || botTokenAt !== undefined,
|
|
75
|
+
from: botFromEnvironment ? "environment" : (botTokenAt ?? "none"),
|
|
76
|
+
},
|
|
77
|
+
registry: {
|
|
78
|
+
file: registryFile,
|
|
79
|
+
exists: registry !== undefined,
|
|
80
|
+
botKnown: typeof registry?.botId === "string",
|
|
81
|
+
chats: Array.isArray(registry?.chats) ? registry.chats.length : 0,
|
|
82
|
+
},
|
|
83
|
+
sends: join(bots, "sends", `${profile}.jsonl`),
|
|
84
|
+
},
|
|
85
|
+
paths: {
|
|
86
|
+
state,
|
|
87
|
+
cache: cacheHome,
|
|
88
|
+
runs: runsDirectory,
|
|
89
|
+
bots,
|
|
90
|
+
sends: join(state, "sends", `${profile}.jsonl`),
|
|
91
|
+
messages: storePath(env),
|
|
92
|
+
},
|
|
60
93
|
cache: {
|
|
61
94
|
file: cacheFile,
|
|
62
95
|
exists: cacheExists,
|
|
@@ -109,21 +142,39 @@ const readState = (file) => {
|
|
|
109
142
|
return undefined;
|
|
110
143
|
}
|
|
111
144
|
};
|
|
145
|
+
/** `<profile>.moderation.json` shares the directory (`moderation/rules.ts`). */
|
|
146
|
+
const MODERATION_SUFFIX = ".moderation.json";
|
|
112
147
|
/**
|
|
113
148
|
* **Which profiles have been logged in**, which is not the same list as the configured ones —
|
|
114
149
|
* `config show` says so and cannot answer it, because a profile needs no configuration entry.
|
|
115
150
|
*/
|
|
116
|
-
const profilesWithState = (directory) =>
|
|
151
|
+
const profilesWithState = (directory) => jsonNames(directory, MODERATION_SUFFIX);
|
|
152
|
+
/** File names only: `bots/joins/` and `bots/sends/` are folders, not profiles. */
|
|
153
|
+
const jsonNames = (directory, except) => {
|
|
117
154
|
try {
|
|
118
|
-
return readdirSync(directory)
|
|
119
|
-
.filter((
|
|
120
|
-
.map((
|
|
155
|
+
return readdirSync(directory, { withFileTypes: true })
|
|
156
|
+
.filter((entry) => entry.isFile() && entry.name.endsWith(".json") && !(except && entry.name.endsWith(except)))
|
|
157
|
+
.map((entry) => entry.name.slice(0, -".json".length))
|
|
121
158
|
.sort();
|
|
122
159
|
}
|
|
123
160
|
catch {
|
|
124
161
|
return [];
|
|
125
162
|
}
|
|
126
163
|
};
|
|
164
|
+
/**
|
|
165
|
+
* **Every profile, from files only**: a personal state file, a bot registry file, or a name in the
|
|
166
|
+
* configuration. It never reads the keyring — `config show` uses it as is, and that is `doctor`'s
|
|
167
|
+
* job (`CLI-12`); `diagnose` adds the keyring on top.
|
|
168
|
+
*/
|
|
169
|
+
export const knownProfiles = ({ stateDir, configured = [], env = process.env, }) => {
|
|
170
|
+
const state = stateDir ?? resolvePaths({ appName: "max-cli", prefix: "MAX", env }).state;
|
|
171
|
+
const personal = new Set(profilesWithState(join(state, "profiles")));
|
|
172
|
+
const bot = new Set(jsonNames(join(state, "bots")));
|
|
173
|
+
const named = new Set(configured);
|
|
174
|
+
return [...new Set([...personal, ...bot, ...named])]
|
|
175
|
+
.sort()
|
|
176
|
+
.map((name) => ({ name, personal: personal.has(name), bot: bot.has(name), configured: named.has(name) }));
|
|
177
|
+
};
|
|
127
178
|
const countEntries = (directory) => {
|
|
128
179
|
try {
|
|
129
180
|
return readdirSync(directory).filter((name) => statSync(join(directory, name)).isDirectory()).length;
|
package/dist/diagnose.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAgB,SAAS,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"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"}
|
package/dist/export.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,OAAO,EAAiB,MAAM,oBAAoB,CAAA;AAE5E,6FAA6F;AAC7F,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX;AAED,8FAA8F;AAC9F,eAAO,MAAM,WAAW,WAAY,MAAM,EAAE,KAAG,MAAM,EAQpD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,WAClB,MAAM,EAAE,oBACC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KACjD,MAAM,
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,OAAO,EAAiB,MAAM,oBAAoB,CAAA;AAE5E,6FAA6F;AAC7F,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX;AAED,8FAA8F;AAC9F,eAAO,MAAM,WAAW,WAAY,MAAM,EAAE,KAAG,MAAM,EAQpD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,WAClB,MAAM,EAAE,oBACC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KACjD,MAAM,EAiBR,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,UAAW,MAAM,YAAY,OAAO,EAAE,aAAa,MAAM,KAAG,MAuBlF,CAAA"}
|
package/dist/export.js
CHANGED
|
@@ -26,7 +26,8 @@ export const unreadStretches = (ranges, { since, last } = {}) => {
|
|
|
26
26
|
return [];
|
|
27
27
|
const iso = (time) => new Date(time).toISOString();
|
|
28
28
|
const stretches = [];
|
|
29
|
-
|
|
29
|
+
// A window from 0 is one a backup read back to the chat's first message.
|
|
30
|
+
if (first.from > 0 && (since === undefined || first.from > since)) {
|
|
30
31
|
stretches.push({ from: since === undefined ? null : iso(since), to: iso(first.from) });
|
|
31
32
|
}
|
|
32
33
|
for (const [index, window] of held.slice(1).entries()) {
|
package/dist/export.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAc/D,8FAA8F;AAC9F,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAgB,EAAY,EAAE;IACxD,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAI,QAAQ,IAAI,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;;YACnF,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAA;IACjC,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,MAAgB,EAChB,EAAE,KAAK,EAAE,IAAI,EAAE,GAAsC,EAAE,EAC7C,EAAE;IACZ,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,CAAA;IAC9F,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACrB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1B,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAEhC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;IAC1D,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAc/D,8FAA8F;AAC9F,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAgB,EAAY,EAAE;IACxD,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAI,QAAQ,IAAI,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;;YACnF,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAA;IACjC,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,MAAgB,EAChB,EAAE,KAAK,EAAE,IAAI,EAAE,GAAsC,EAAE,EAC7C,EAAE;IACZ,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,CAAA;IAC9F,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACrB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1B,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAEhC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;IAC1D,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,yEAAyE;IACzE,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QAClE,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACxF,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACtD,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACrF,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,GAAG,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACnG,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,QAAmB,EAAE,QAAiB,EAAU,EAAE;IAC1F,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAA;IAC7G,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;IAElH,MAAM,KAAK,GAAG,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACxC,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACxC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,CAAC,CAAA;YAC5B,KAAK,GAAG,IAAI,CAAA;QACd,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;QAClD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAA;QACvE,IAAI,OAAO,CAAC,OAAO;YACjB,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QAClG,IAAI,OAAO,CAAC,aAAa;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAA;QAC1E,IAAI,OAAO,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QAC3D,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3F,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;AAChC,CAAC,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,OAA8D,EAAU,EAAE,CACxF,UAAU,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,CAAA;AAEhG,MAAM,KAAK,GAAG,CAAC,IAAY,EAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;AAErF,MAAM,SAAS,GAAG,CAAC,QAAuB,EAAY,EAAE,CAAC;IACvD,sBAAsB,MAAM,CAAC,QAAQ,CAAC,IAAI;IAC1C,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;CACjF,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,UAAsB,EAAU,EAAE;IACxD,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;IAChF,IAAI,UAAU,CAAC,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,KAAK,KAAK,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAA;IAC9G,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAA;AACjG,CAAC,CAAA"}
|
|
@@ -127,10 +127,15 @@ export declare const OPERATIONS: {
|
|
|
127
127
|
}, undefined>, import("valibot").LooseObjectSchema<{
|
|
128
128
|
readonly contact: import("valibot").OptionalSchema<import("valibot").LooseObjectSchema<{}, undefined>, undefined>;
|
|
129
129
|
}, undefined>>;
|
|
130
|
-
readonly "contacts.update": import("../spec/define.js").Operation<import("valibot").StrictObjectSchema<{
|
|
130
|
+
readonly "contacts.update": import("../spec/define.js").Operation<import("valibot").UnionSchema<[import("valibot").StrictObjectSchema<{
|
|
131
131
|
readonly contactId: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").RegexAction<string, "an id is a whole number written as a string">, import("valibot").TransformAction<string, bigint>]>;
|
|
132
|
-
readonly action: import("valibot").PicklistSchema<["ADD", "REMOVE"], undefined>;
|
|
133
|
-
}, undefined>, import("valibot").
|
|
132
|
+
readonly action: import("valibot").PicklistSchema<["ADD", "REMOVE", "BLOCK", "UNBLOCK"], undefined>;
|
|
133
|
+
}, undefined>, import("valibot").StrictObjectSchema<{
|
|
134
|
+
readonly contactId: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").RegexAction<string, "an id is a whole number written as a string">, import("valibot").TransformAction<string, bigint>]>;
|
|
135
|
+
readonly action: import("valibot").LiteralSchema<"UPDATE", undefined>;
|
|
136
|
+
readonly firstName: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 1, undefined>]>;
|
|
137
|
+
readonly lastName: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
138
|
+
}, undefined>], undefined>, import("valibot").LooseObjectSchema<{
|
|
134
139
|
readonly contact: import("valibot").OptionalSchema<import("valibot").LooseObjectSchema<{}, undefined>, undefined>;
|
|
135
140
|
}, undefined>>;
|
|
136
141
|
readonly "contacts.import": import("../spec/define.js").Operation<import("valibot").StrictObjectSchema<{
|
|
@@ -144,6 +149,8 @@ export declare const OPERATIONS: {
|
|
|
144
149
|
readonly firstName: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 1, undefined>]>;
|
|
145
150
|
readonly lastName: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
146
151
|
readonly description: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
152
|
+
readonly photoToken: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
153
|
+
readonly avatarType: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"USER_AVATAR", undefined>, undefined>;
|
|
147
154
|
}, undefined>, import("valibot").LooseObjectSchema<{
|
|
148
155
|
readonly profile: import("valibot").OptionalSchema<import("valibot").LooseObjectSchema<{}, undefined>, undefined>;
|
|
149
156
|
}, undefined>>;
|
|
@@ -254,7 +261,7 @@ export declare const OPERATIONS: {
|
|
|
254
261
|
}, undefined>>;
|
|
255
262
|
readonly "chats.members": import("../spec/define.js").Operation<import("valibot").StrictObjectSchema<{
|
|
256
263
|
readonly chatId: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").RegexAction<string, "an id is a whole number written as a string">, import("valibot").TransformAction<string, bigint>]>;
|
|
257
|
-
readonly type: import("valibot").
|
|
264
|
+
readonly type: import("valibot").LiteralSchema<"MEMBER", undefined>;
|
|
258
265
|
readonly marker: import("valibot").OptionalSchema<import("valibot").NumberSchema<undefined>, undefined>;
|
|
259
266
|
readonly count: import("valibot").SchemaWithPipe<readonly [import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
|
|
260
267
|
}, undefined>, import("valibot").LooseObjectSchema<{
|
|
@@ -265,7 +272,7 @@ export declare const OPERATIONS: {
|
|
|
265
272
|
readonly chatId: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").RegexAction<string, "an id is a whole number written as a string">, import("valibot").TransformAction<string, bigint>]>;
|
|
266
273
|
readonly userIds: import("valibot").SchemaWithPipe<readonly [import("valibot").ArraySchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").RegexAction<string, "an id is a whole number written as a string">, import("valibot").TransformAction<string, bigint>]>, undefined>, import("valibot").MinLengthAction<bigint[], 1, undefined>]>;
|
|
267
274
|
readonly operation: import("valibot").PicklistSchema<["add", "remove"], undefined>;
|
|
268
|
-
readonly type: import("valibot").OptionalSchema<import("valibot").
|
|
275
|
+
readonly type: import("valibot").OptionalSchema<import("valibot").LiteralSchema<"ADMIN", undefined>, undefined>;
|
|
269
276
|
readonly showHistory: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, undefined>;
|
|
270
277
|
readonly cleanMsgPeriod: import("valibot").OptionalSchema<import("valibot").LiteralSchema<0, undefined>, undefined>;
|
|
271
278
|
readonly permissions: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 0, undefined>]>, undefined>;
|
|
@@ -302,7 +309,7 @@ export declare const OPERATIONS: {
|
|
|
302
309
|
readonly attaches: import("valibot").TupleSchema<[import("valibot").StrictObjectSchema<{
|
|
303
310
|
readonly _type: import("valibot").LiteralSchema<"CONTROL", undefined>;
|
|
304
311
|
readonly event: import("valibot").LiteralSchema<"new", undefined>;
|
|
305
|
-
readonly chatType: import("valibot").
|
|
312
|
+
readonly chatType: import("valibot").PicklistSchema<["CHAT", "CHANNEL"], undefined>;
|
|
306
313
|
readonly title: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 1, undefined>]>;
|
|
307
314
|
readonly userIds: import("valibot").ArraySchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").RegexAction<string, "an id is a whole number written as a string">, import("valibot").TransformAction<string, bigint>]>, undefined>;
|
|
308
315
|
}, undefined>], undefined>;
|
|
@@ -377,7 +384,7 @@ export declare const OPERATIONS: {
|
|
|
377
384
|
readonly count: import("valibot").LiteralSchema<1, undefined>;
|
|
378
385
|
readonly type: import("valibot").LiteralSchema<0, undefined>;
|
|
379
386
|
readonly uploaderType: import("valibot").LiteralSchema<0, undefined>;
|
|
380
|
-
readonly profile: import("valibot").
|
|
387
|
+
readonly profile: import("valibot").BooleanSchema<undefined>;
|
|
381
388
|
}, undefined>, import("valibot").LooseObjectSchema<{
|
|
382
389
|
readonly url: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
383
390
|
}, undefined>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.generated.d.ts","sourceRoot":"","sources":["../../src/generated/operations.generated.ts"],"names":[],"mappings":"AAwCA,yEAAyE;AACzE,eAAO,MAAM,UAAU;aACrB,cAAc;;;;;;;;;;;;;;;;aACd,eAAe;;;;;;;;;;;;;;;;;;;;;;aACf,cAAc;;;aACd,aAAa;;;;;;;;;;;;;;;aACb,iBAAiB;;;;;;aACjB,gBAAgB;;;;;;;;aAChB,YAAY;;;;;;;;;;;;;aACZ,kBAAkB;;;;;;;;aAClB,eAAe;;;;;;;;;;;;;;;aACf,gBAAgB;;;;;;;;;;;aAChB,eAAe;;;;;aACf,kBAAkB;;;;;aAClB,iBAAiB
|
|
1
|
+
{"version":3,"file":"operations.generated.d.ts","sourceRoot":"","sources":["../../src/generated/operations.generated.ts"],"names":[],"mappings":"AAwCA,yEAAyE;AACzE,eAAO,MAAM,UAAU;aACrB,cAAc;;;;;;;;;;;;;;;;aACd,eAAe;;;;;;;;;;;;;;;;;;;;;;aACf,cAAc;;;aACd,aAAa;;;;;;;;;;;;;;;aACb,iBAAiB;;;;;;aACjB,gBAAgB;;;;;;;;aAChB,YAAY;;;;;;;;;;;;;aACZ,kBAAkB;;;;;;;;aAClB,eAAe;;;;;;;;;;;;;;;aACf,gBAAgB;;;;;;;;;;;aAChB,eAAe;;;;;aACf,kBAAkB;;;;;aAClB,iBAAiB;;;;;;;;;;;aACjB,iBAAiB;;;;;;;aACjB,gBAAgB;;;;;;;;;aAChB,kBAAkB;;;aAClB,uBAAuB;;;aACvB,cAAc;;;;;;;aACd,gBAAgB;;;;;;;;;;;aAChB,gBAAgB;;;aAChB,cAAc;;;;;aACd,eAAe;;;;;;aACf,eAAe;;;;;;;aACf,eAAe;;;;;;;;;;;;;aACf,YAAY;;;;;;;;;aACZ,YAAY;;;;;;aACZ,gBAAgB;;;;;aAChB,YAAY;;;;;aACZ,aAAa;;;;;aACb,cAAc;;;;;;;;;;;;;;;;;aACd,eAAe;;;;;;;;;aACf,qBAAqB;;;;;;;;;;;aACrB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACf,eAAe;;;;;;;;;;;;;aACf,gBAAgB;;;;;;;;;;aAChB,kBAAkB;;;;;;aAClB,mBAAmB;;;;;;;;aACnB,oBAAoB;;;;;;aACpB,iBAAiB;;;;;aACjB,mBAAmB;;;;;aACnB,kBAAkB;;;;;;;;aAClB,eAAe;;;;;;;;aACf,cAAc;;;;;;;;aACd,eAAe;;;;;;;;;;;;;CACP,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,UAAU,CAAA"}
|
package/dist/mcp/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,SAAS,EAGf,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,SAAS,EAGf,MAAM,8BAA8B,CAAA;AAuBrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAKvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAstB9C,eAAO,MAAM,aAAa,WAChB,SAAS,WACR,UAAU,oIAYhB;IACD,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,wEAAwE;IACxE,KAAK,EAAE,YAAY,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,sGAAsG;IACtG,SAAS,CAAC,EAAE,SAAS,UAAU,EAAE,CAAA;CAClC,KACA,IA8EF,CAAA"}
|
package/dist/mcp/tools.js
CHANGED
|
@@ -5,6 +5,7 @@ import * as v from "valibot";
|
|
|
5
5
|
import { openProfileCache } from "../cache/index.js";
|
|
6
6
|
import { DELETE_AT_ONCE, EVENTS_DAYS } from "../client.js";
|
|
7
7
|
import { hearingFields } from "../commands/hearing.js";
|
|
8
|
+
import { listed } from "../commands/paging.js";
|
|
8
9
|
import { sendTime } from "../config.js";
|
|
9
10
|
import { maskedProfile } from "../domain/map.js";
|
|
10
11
|
import { fetchBytes, publicOnly } from "../download.js";
|
|
@@ -97,7 +98,7 @@ const READ_TOOLS = {
|
|
|
97
98
|
"downloads a model) and adds `unheard` and `transcribeProblem`. " +
|
|
98
99
|
"Returns { mode, chats: [{ id, title, messages, more }], skipped, partial }.",
|
|
99
100
|
input: v.object({
|
|
100
|
-
since: v.optional(v.pipe(v.string(), v.description("a message id
|
|
101
|
+
since: v.optional(v.pipe(v.string(), v.description("a message id, an ISO 8601 time, or 2h / 1d ago"))),
|
|
101
102
|
limit: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(100), v.description("at most this many per chat"))),
|
|
102
103
|
transcribe: v.optional(v.pipe(v.boolean(), v.description("hear voice messages that have no text yet; slow, never downloads a model"))),
|
|
103
104
|
}),
|
|
@@ -198,23 +199,29 @@ const READ_TOOLS = {
|
|
|
198
199
|
title: "Who joined or left a group",
|
|
199
200
|
description: "A chat's service messages since `since`: who joined, was added or removed, and by whom, oldest first. " +
|
|
200
201
|
`\`event\` as MAX names it — new, add, remove, pin; others pass through. ${EVENTS_DAYS} days back if not given. ` +
|
|
201
|
-
"Returns {
|
|
202
|
+
"Returns { items: [{ messageId, timestamp, event, by, people, title? }], page, limit, hasMore, chatId, since }.",
|
|
202
203
|
input: v.object({
|
|
203
204
|
chat,
|
|
204
|
-
since: v.optional(v.pipe(v.string(), v.description("a message id
|
|
205
|
+
since: v.optional(v.pipe(v.string(), v.description("a message id, an ISO 8601 time, or 2h / 1d ago"))),
|
|
205
206
|
}),
|
|
206
207
|
annotations: READ,
|
|
207
|
-
answer: (client, args) =>
|
|
208
|
+
answer: async (client, args) => {
|
|
209
|
+
const found = await client.chats.events(args.chat, args.since === undefined ? {} : { since: client.messages.moment(args.since, "since") });
|
|
210
|
+
return { ...listed(found.events), hasMore: found.more, chatId: found.chatId, since: found.since };
|
|
211
|
+
},
|
|
208
212
|
}),
|
|
209
213
|
max_chats_members: tool({
|
|
210
214
|
title: "Everyone in a group",
|
|
211
215
|
description: "Every member of a group or channel, from MAX: { id, name, username, registeredAt, lastSeenAt, role? }. " +
|
|
212
216
|
"`role` is owner, admin or member, absent when `rolesKnown` is false. " +
|
|
213
217
|
"`registeredAt` is when their MAX account was made — a days-old account is worth a look. " +
|
|
214
|
-
"Returns {
|
|
218
|
+
"Returns { items, page, limit, hasMore, chatId, rolesKnown }; hasMore means MAX had more than one read takes.",
|
|
215
219
|
input: v.object({ chat }),
|
|
216
220
|
annotations: READ,
|
|
217
|
-
answer: (client, args) =>
|
|
221
|
+
answer: async (client, args) => {
|
|
222
|
+
const found = await client.chats.members.list(args.chat);
|
|
223
|
+
return { ...listed(found.members), hasMore: !found.complete, chatId: found.chatId, rolesKnown: found.rolesKnown };
|
|
224
|
+
},
|
|
218
225
|
}),
|
|
219
226
|
max_chats_rules: tool({
|
|
220
227
|
title: "A group's moderation rules",
|
|
@@ -280,8 +287,8 @@ const READ_TOOLS = {
|
|
|
280
287
|
input: v.object({
|
|
281
288
|
chat,
|
|
282
289
|
limit,
|
|
283
|
-
before: v.optional(v.pipe(v.string(), v.description("a message id
|
|
284
|
-
after: v.optional(v.pipe(v.string(), v.description("a message id
|
|
290
|
+
before: v.optional(v.pipe(v.string(), v.description("a message id, an ISO 8601 time, or 2h / 1d ago"))),
|
|
291
|
+
after: v.optional(v.pipe(v.string(), v.description("a message id, an ISO 8601 time, or 2h / 1d ago; not with before"))),
|
|
285
292
|
transcribe: v.optional(v.pipe(v.boolean(), v.description("hear voice messages that have no text yet; slow, never downloads a model"))),
|
|
286
293
|
}),
|
|
287
294
|
annotations: READ,
|
|
@@ -587,7 +594,7 @@ const answered = (value) => value instanceof Picture
|
|
|
587
594
|
{ type: "text", text: JSON.stringify(value.about) },
|
|
588
595
|
],
|
|
589
596
|
}
|
|
590
|
-
: { content: [{ type: "text", text: JSON.stringify(
|
|
597
|
+
: ((body) => ({ content: [{ type: "text", text: JSON.stringify(body) }], structuredContent: body }))((Array.isArray(value) ? listed(value) : value));
|
|
591
598
|
/** The same object the CLI prints on stderr, so an agent reads one error shape from both. */
|
|
592
599
|
const failed = (error) => {
|
|
593
600
|
const body = isCliError(error)
|
|
@@ -635,6 +642,29 @@ export const registerTools = (server, session, { allowSend, confirmSend = false,
|
|
|
635
642
|
if (allowModerate && (!permitted || (permitted.includes("delete") && permitted.includes("groups")))) {
|
|
636
643
|
registerCheck(server, session, { store, profile });
|
|
637
644
|
}
|
|
645
|
+
server.registerTool("max_status", {
|
|
646
|
+
title: "This server's profile and login",
|
|
647
|
+
description: "Which profile this server speaks for, whether it has a token and has logged in here, and which writing " +
|
|
648
|
+
"tools are on. Never logs in, so it answers when the login is what is broken.",
|
|
649
|
+
inputSchema: toStandardJsonSchema(v.object({})),
|
|
650
|
+
annotations: { ...READ, idempotentHint: true },
|
|
651
|
+
}, async () => {
|
|
652
|
+
let token;
|
|
653
|
+
try {
|
|
654
|
+
token = store.tokenSource() ?? "none";
|
|
655
|
+
}
|
|
656
|
+
catch {
|
|
657
|
+
token = "unreachable";
|
|
658
|
+
}
|
|
659
|
+
return answered({
|
|
660
|
+
profile,
|
|
661
|
+
kind: store.isBot() ? "personal + bot" : "personal",
|
|
662
|
+
token,
|
|
663
|
+
loggedInHere: store.hasLoggedIn(),
|
|
664
|
+
writes: Object.keys(offered),
|
|
665
|
+
allow: permitted ?? "all",
|
|
666
|
+
});
|
|
667
|
+
});
|
|
638
668
|
};
|
|
639
669
|
/**
|
|
640
670
|
* `max_chats_check`, offered with `--allow-moderate` (`NEED-310`): that flag is what consent level
|
|
@@ -647,14 +677,14 @@ const registerCheck = (server, session, { store, profile }) => {
|
|
|
647
677
|
const title = "Check a group by its rules";
|
|
648
678
|
server.registerTool("max_chats_check", {
|
|
649
679
|
title,
|
|
650
|
-
description: "Judge what is new in a group since its last check — messages
|
|
680
|
+
description: "Judge what is new in a group since its last check — messages and people who joined — by the " +
|
|
651
681
|
"owner's rules for it (`max chats rules`), and act where the rules and their consent levels allow. Only " +
|
|
652
|
-
"when the owner asked for a check of this group. Returns rows { kind, rule, personId, personName, " +
|
|
682
|
+
"when the owner asked for a check of this group. Returns { items, … } of rows { kind, rule, personId, personName, " +
|
|
653
683
|
"messageId?, action, outcome, reason?, command? } and notes; a row not done carries the command that would " +
|
|
654
684
|
`do it. ${UNTRUSTED}`,
|
|
655
685
|
inputSchema: toStandardJsonSchema(v.object({
|
|
656
686
|
chat,
|
|
657
|
-
since: v.optional(v.pipe(v.string(), v.description("judge what came after this message id
|
|
687
|
+
since: v.optional(v.pipe(v.string(), v.description("judge what came after this message id, ISO 8601 time, or 2h / 1d ago; the saved point stays"))),
|
|
658
688
|
dry_run: v.optional(v.pipe(v.boolean(), v.description("judge and plan; do nothing"))),
|
|
659
689
|
})),
|
|
660
690
|
annotations: WRITE,
|