@wirecat/max-cli 0.55.0 → 0.56.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/adapter/max-adapter.d.ts +1 -5
- package/dist/adapter/max-adapter.d.ts.map +1 -1
- package/dist/adapter/max-adapter.js +21 -53
- package/dist/adapter/max-adapter.js.map +1 -1
- package/dist/client/account.d.ts +3 -3
- package/dist/client/account.d.ts.map +1 -1
- package/dist/client/account.js +4 -4
- package/dist/client/account.js.map +1 -1
- package/dist/client/chat-members.d.ts +2 -1
- package/dist/client/chat-members.d.ts.map +1 -1
- package/dist/client/chat-members.js.map +1 -1
- package/dist/client/chat-reads.d.ts +2 -1
- package/dist/client/chat-reads.d.ts.map +1 -1
- package/dist/client/chat-reads.js +9 -7
- package/dist/client/chat-reads.js.map +1 -1
- package/dist/client/chat-writes.d.ts +5 -12
- package/dist/client/chat-writes.d.ts.map +1 -1
- package/dist/client/chat-writes.js +40 -67
- package/dist/client/chat-writes.js.map +1 -1
- package/dist/client/contacts.d.ts +4 -4
- package/dist/client/contacts.d.ts.map +1 -1
- package/dist/client/contacts.js +6 -6
- package/dist/client/contacts.js.map +1 -1
- package/dist/client/delivery.d.ts +1 -1
- package/dist/client/delivery.d.ts.map +1 -1
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/folders.d.ts +2 -3
- package/dist/client/folders.d.ts.map +1 -1
- package/dist/client/folders.js +4 -4
- package/dist/client/folders.js.map +1 -1
- package/dist/client/history.d.ts +2 -1
- package/dist/client/history.d.ts.map +1 -1
- package/dist/client/history.js +4 -3
- package/dist/client/history.js.map +1 -1
- package/dist/client/live.d.ts +2 -1
- package/dist/client/live.d.ts.map +1 -1
- package/dist/client/live.js.map +1 -1
- package/dist/client/message-reads.d.ts +1 -1
- package/dist/client/message-reads.d.ts.map +1 -1
- package/dist/client/message-reads.js +7 -5
- package/dist/client/message-reads.js.map +1 -1
- package/dist/client/message-writes.d.ts +2 -8
- package/dist/client/message-writes.d.ts.map +1 -1
- package/dist/client/message-writes.js +75 -178
- package/dist/client/message-writes.js.map +1 -1
- package/dist/client/people.d.ts +1 -1
- package/dist/client/people.d.ts.map +1 -1
- package/dist/client/people.js.map +1 -1
- package/dist/client/polls.d.ts +5 -10
- package/dist/client/polls.d.ts.map +1 -1
- package/dist/client/polls.js +27 -74
- package/dist/client/polls.js.map +1 -1
- package/dist/client/session.d.ts +1 -1
- package/dist/client/session.d.ts.map +1 -1
- package/dist/client/session.js.map +1 -1
- package/dist/client/shapes.d.ts +59 -0
- package/dist/client/shapes.d.ts.map +1 -0
- package/dist/client/shapes.js +6 -0
- package/dist/client/shapes.js.map +1 -0
- package/dist/client/stickers.d.ts +1 -1
- package/dist/client/stickers.d.ts.map +1 -1
- package/dist/client/stickers.js.map +1 -1
- package/dist/client/types.d.ts +0 -8
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/values.d.ts +7 -1
- package/dist/client/values.d.ts.map +1 -1
- package/dist/client/values.js +5 -0
- package/dist/client/values.js.map +1 -1
- package/dist/client/writes.d.ts +6 -15
- package/dist/client/writes.d.ts.map +1 -1
- package/dist/client/writes.js +21 -118
- package/dist/client/writes.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +9 -19
- package/dist/client.js.map +1 -1
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +2 -6
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/serve.js +1 -1
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/session.js +1 -1
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +21 -13
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/watch.d.ts +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +6 -4
- package/dist/commands/watch.js.map +1 -1
- package/dist/domain/map.d.ts +4 -3
- package/dist/domain/map.d.ts.map +1 -1
- package/dist/domain/map.js +27 -22
- package/dist/domain/map.js.map +1 -1
- package/dist/download.d.ts +1 -1
- package/dist/download.d.ts.map +1 -1
- package/dist/messenger.d.ts +1 -1
- package/dist/messenger.d.ts.map +1 -1
- package/dist/messenger.js +36 -9
- package/dist/messenger.js.map +1 -1
- package/dist/permissions.d.ts +3 -3
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +20 -4
- package/dist/permissions.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +2 -3
- package/dist/program.js.map +1 -1
- package/dist/report.d.ts +2 -2
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +25 -13
- package/dist/report.js.map +1 -1
- package/dist/resolve.d.ts +1 -1
- package/dist/resolve.d.ts.map +1 -1
- package/dist/resolve.js.map +1 -1
- package/dist/sends.d.ts +3 -3
- package/dist/sends.d.ts.map +1 -1
- package/dist/sends.js +3 -3
- package/dist/sends.js.map +1 -1
- package/dist/server/replies.d.ts +1 -2
- package/dist/server/replies.d.ts.map +1 -1
- package/dist/server/replies.js.map +1 -1
- package/dist/server/server-connection.js +1 -1
- package/dist/server/server-connection.js.map +1 -1
- package/dist/server/server.d.ts +2 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +0 -2
- package/dist/server/server.js.map +1 -1
- package/dist/transcribe/index.d.ts +1 -1
- package/dist/transcribe/index.d.ts.map +1 -1
- package/dist/transcribe/index.js +2 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/skills/max-cli/SKILL.md +5 -4
- package/dist/client/read-policy.d.ts +0 -2
- package/dist/client/read-policy.d.ts.map +0 -1
- package/dist/client/read-policy.js +0 -34
- package/dist/client/read-policy.js.map +0 -1
- package/dist/commands/mcp.d.ts +0 -29
- package/dist/commands/mcp.d.ts.map +0 -1
- package/dist/commands/mcp.js +0 -176
- package/dist/commands/mcp.js.map +0 -1
- package/dist/domain/models.d.ts +0 -238
- package/dist/domain/models.d.ts.map +0 -1
- package/dist/domain/models.js +0 -17
- package/dist/domain/models.js.map +0 -1
- package/dist/mcp/instructions.d.ts +0 -4
- package/dist/mcp/instructions.d.ts.map +0 -1
- package/dist/mcp/instructions.js +0 -16
- package/dist/mcp/instructions.js.map +0 -1
- package/dist/mcp/legacy-check.d.ts +0 -12
- package/dist/mcp/legacy-check.d.ts.map +0 -1
- package/dist/mcp/legacy-check.js +0 -46
- package/dist/mcp/legacy-check.js.map +0 -1
- package/dist/mcp/photo.d.ts +0 -9
- package/dist/mcp/photo.d.ts.map +0 -1
- package/dist/mcp/photo.js +0 -38
- package/dist/mcp/photo.js.map +0 -1
- package/dist/mcp/prompts.d.ts +0 -7
- package/dist/mcp/prompts.d.ts.map +0 -1
- package/dist/mcp/prompts.js +0 -102
- package/dist/mcp/prompts.js.map +0 -1
- package/dist/mcp/resources.d.ts +0 -15
- package/dist/mcp/resources.d.ts.map +0 -1
- package/dist/mcp/resources.js +0 -60
- package/dist/mcp/resources.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -23
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js +0 -98
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/session.d.ts +0 -30
- package/dist/mcp/session.d.ts.map +0 -1
- package/dist/mcp/session.js +0 -109
- package/dist/mcp/session.js.map +0 -1
- package/dist/mcp/shared.d.ts +0 -14
- package/dist/mcp/shared.d.ts.map +0 -1
- package/dist/mcp/shared.js +0 -46
- package/dist/mcp/shared.js.map +0 -1
- package/dist/mcp/tools.d.ts +0 -19
- package/dist/mcp/tools.d.ts.map +0 -1
- package/dist/mcp/tools.js +0 -257
- package/dist/mcp/tools.js.map +0 -1
- package/dist/moderation/check.d.ts +0 -103
- package/dist/moderation/check.d.ts.map +0 -1
- package/dist/moderation/check.js +0 -273
- package/dist/moderation/check.js.map +0 -1
- package/dist/moderation/points.d.ts +0 -8
- package/dist/moderation/points.d.ts.map +0 -1
- package/dist/moderation/points.js +0 -21
- package/dist/moderation/points.js.map +0 -1
- package/dist/rendering/messages.d.ts +0 -24
- package/dist/rendering/messages.d.ts.map +0 -1
- package/dist/rendering/messages.js +0 -172
- package/dist/rendering/messages.js.map +0 -1
package/dist/mcp/session.js
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { isCliError } from "@wirecat/cli-base";
|
|
2
|
-
import { maxRecord } from "../record.js";
|
|
3
|
-
/** The caller's mistake, not the connection's — nothing about the socket is in doubt after these. */
|
|
4
|
-
const HARMLESS = new Set(["validation_error", "not_found", "permission_error", "confirmation_required", "rate_limited"]);
|
|
5
|
-
/**
|
|
6
|
-
* **One connection for the whole agent session, and never for long** (`NEED-152`).
|
|
7
|
-
*
|
|
8
|
-
* The CLI logs in once per command. Here the process outlives the call, so the connection is kept
|
|
9
|
-
* between calls — and dropped after `idleMs` of quiet, after `maxAgeMs` whatever the traffic, and
|
|
10
|
-
* after any failure that may have been the connection's. The age limit is there because a login
|
|
11
|
-
* answers the chat list and the profile once; without it an agent that keeps talking would read a
|
|
12
|
-
* snapshot that never moves.
|
|
13
|
-
*
|
|
14
|
-
* Calls run **one at a time**. A client may send read-only calls in parallel, and one socket with
|
|
15
|
-
* one `seq` space is not the place to find out whether MAX minds.
|
|
16
|
-
*/
|
|
17
|
-
export class MaxSession {
|
|
18
|
-
#context;
|
|
19
|
-
#idleMs;
|
|
20
|
-
#maxAgeMs;
|
|
21
|
-
#now;
|
|
22
|
-
#dispose;
|
|
23
|
-
#held;
|
|
24
|
-
#idle;
|
|
25
|
-
#queue = Promise.resolve();
|
|
26
|
-
#events = () => { };
|
|
27
|
-
#closed = false;
|
|
28
|
-
#locals = new Set();
|
|
29
|
-
constructor(context, { idleMs = 120_000, maxAgeMs = 300_000, now = Date.now, dispose } = {}) {
|
|
30
|
-
this.#context = context;
|
|
31
|
-
this.#idleMs = idleMs;
|
|
32
|
-
this.#maxAgeMs = maxAgeMs;
|
|
33
|
-
this.#now = now;
|
|
34
|
-
this.#dispose = dispose;
|
|
35
|
-
}
|
|
36
|
-
use(name, body) {
|
|
37
|
-
const turn = this.#queue.then(() => this.#call(name, body));
|
|
38
|
-
this.#queue = turn.catch(() => { });
|
|
39
|
-
return turn;
|
|
40
|
-
}
|
|
41
|
-
async close() {
|
|
42
|
-
this.#closed = true;
|
|
43
|
-
try {
|
|
44
|
-
await Promise.allSettled(this.#locals);
|
|
45
|
-
await this.#queue;
|
|
46
|
-
await this.#release();
|
|
47
|
-
}
|
|
48
|
-
finally {
|
|
49
|
-
await this.#dispose?.();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
local(name, body) {
|
|
53
|
-
if (this.#closed)
|
|
54
|
-
return Promise.reject(new Error("the MCP server is shutting down"));
|
|
55
|
-
// A store operation may await an online turn, so it cannot hold the connection queue.
|
|
56
|
-
const turn = Promise.resolve().then(() => this.#context.run(name, body));
|
|
57
|
-
this.#locals.add(turn);
|
|
58
|
-
void turn.then(() => this.#locals.delete(turn), () => this.#locals.delete(turn));
|
|
59
|
-
return turn;
|
|
60
|
-
}
|
|
61
|
-
async #call(name, body) {
|
|
62
|
-
if (this.#closed)
|
|
63
|
-
throw new Error("the MCP server is shutting down");
|
|
64
|
-
clearTimeout(this.#idle);
|
|
65
|
-
try {
|
|
66
|
-
return await this.#context.run(name, async (events) => {
|
|
67
|
-
this.#events = events ?? (() => { });
|
|
68
|
-
return body(await this.#hold(), () => this.#release());
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
if (!(isCliError(error) && HARMLESS.has(error.code)))
|
|
73
|
-
await this.#release();
|
|
74
|
-
throw error;
|
|
75
|
-
}
|
|
76
|
-
finally {
|
|
77
|
-
this.#events = () => { };
|
|
78
|
-
if (this.#held) {
|
|
79
|
-
this.#idle = setTimeout(() => void this.#release(), this.#idleMs);
|
|
80
|
-
this.#idle.unref();
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
async #hold() {
|
|
85
|
-
if (this.#held && this.#now() - this.#held.openedAt >= this.#maxAgeMs)
|
|
86
|
-
await this.#release();
|
|
87
|
-
if (this.#held)
|
|
88
|
-
return this.#held.client;
|
|
89
|
-
const { store, createClient } = this.#context;
|
|
90
|
-
const record = maxRecord({ account: () => store.readState().viewerId });
|
|
91
|
-
const client = createClient({ events: (event) => this.#events(event), record });
|
|
92
|
-
this.#held = { client, record, openedAt: this.#now() };
|
|
93
|
-
return client;
|
|
94
|
-
}
|
|
95
|
-
async #release() {
|
|
96
|
-
clearTimeout(this.#idle);
|
|
97
|
-
const held = this.#held;
|
|
98
|
-
this.#held = undefined;
|
|
99
|
-
if (!held)
|
|
100
|
-
return;
|
|
101
|
-
try {
|
|
102
|
-
await held.client.close();
|
|
103
|
-
}
|
|
104
|
-
finally {
|
|
105
|
-
await held.record.close();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
//# sourceMappingURL=session.js.map
|
package/dist/mcp/session.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/mcp/session.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/shared.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { type Services } from "@wirecat/cli-core/services";
|
|
2
|
-
import type { MaxClient } from "../client.js";
|
|
3
|
-
import type { SessionStore } from "../session/store.js";
|
|
4
|
-
/** The held client guards writes; this call owns only the shared store handle. */
|
|
5
|
-
export declare const withShared: <T>(client: MaxClient, { store: state, profile, warn }: {
|
|
6
|
-
store: SessionStore;
|
|
7
|
-
profile: string;
|
|
8
|
-
warn: (message: string) => void;
|
|
9
|
-
}, read: (services: Services) => Promise<T>, { local, login, reads }?: {
|
|
10
|
-
local?: boolean;
|
|
11
|
-
login?: boolean;
|
|
12
|
-
reads?: "store";
|
|
13
|
-
}) => Promise<T>;
|
|
14
|
-
//# sourceMappingURL=shared.d.ts.map
|
package/dist/mcp/shared.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/mcp/shared.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,QAAQ,EAAe,MAAM,4BAA4B,CAAA;AAGnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIvD,kFAAkF;AAClF,eAAO,MAAM,UAAU,GAAU,CAAC,UACxB,SAAS,mCACgB;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,QACpG,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,4BACC;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,KAC7F,OAAO,CAAC,CAAC,CAqCX,CAAA"}
|
package/dist/mcp/shared.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { CliError } from "@wirecat/cli-base";
|
|
2
|
-
import { stored } from "@wirecat/cli-core/cli";
|
|
3
|
-
import { onlineDeps, servicesFor } from "@wirecat/cli-core/services";
|
|
4
|
-
import { openStore } from "@wirecat/cli-core/store";
|
|
5
|
-
import { maxAdapter } from "../adapter/max-adapter.js";
|
|
6
|
-
import { maxMessenger } from "../messenger.js";
|
|
7
|
-
const PASS = { check: () => { }, record: () => { } };
|
|
8
|
-
/** The held client guards writes; this call owns only the shared store handle. */
|
|
9
|
-
export const withShared = async (client, { store: state, profile, warn }, read, { local = false, login = false, reads } = {}) => {
|
|
10
|
-
let opened;
|
|
11
|
-
let connection;
|
|
12
|
-
const store = () => (opened ??= openStore());
|
|
13
|
-
const key = {
|
|
14
|
-
provider: "max",
|
|
15
|
-
get account() {
|
|
16
|
-
const id = state.readState().viewerId;
|
|
17
|
-
if (id === undefined)
|
|
18
|
-
throw new CliError("authentication_error", `no MAX account known for profile ${profile}`);
|
|
19
|
-
return id;
|
|
20
|
-
},
|
|
21
|
-
};
|
|
22
|
-
const account = async () => ({ provider: key.provider, account: key.account });
|
|
23
|
-
const adapter = maxAdapter(client, state);
|
|
24
|
-
try {
|
|
25
|
-
if (login)
|
|
26
|
-
await client.account.me();
|
|
27
|
-
return await read(servicesFor({
|
|
28
|
-
...onlineDeps(maxMessenger, adapter, PASS, { profile }),
|
|
29
|
-
store,
|
|
30
|
-
account,
|
|
31
|
-
offline: local,
|
|
32
|
-
...(reads ? { reads } : {}),
|
|
33
|
-
connection: async () => {
|
|
34
|
-
if (connection)
|
|
35
|
-
return connection;
|
|
36
|
-
connection = stored(adapter, { account: key, store, warn, events: () => { } });
|
|
37
|
-
return connection;
|
|
38
|
-
},
|
|
39
|
-
}));
|
|
40
|
-
}
|
|
41
|
-
finally {
|
|
42
|
-
if (opened)
|
|
43
|
-
await opened.then((store) => store.close(), () => { });
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
//# sourceMappingURL=shared.js.map
|
package/dist/mcp/shared.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/mcp/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAyB,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAAE,UAAU,EAAiB,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACnF,OAAO,EAAqB,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAA;AAElD,kFAAkF;AAClF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,MAAiB,EACjB,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAA6E,EAC1G,IAAwC,EACxC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,GAA0D,EAAE,EACvF,EAAE;IACd,IAAI,MAAyC,CAAA;IAC7C,IAAI,UAAwC,CAAA;IAC5C,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC,CAAA;IAC5C,MAAM,GAAG,GAAG;QACV,QAAQ,EAAE,KAAc;QACxB,IAAI,OAAO;YACT,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAA;YACrC,IAAI,EAAE,KAAK,SAAS;gBAAE,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,oCAAoC,OAAO,EAAE,CAAC,CAAA;YAC/G,OAAO,EAAE,CAAA;QACX,CAAC;KACF,CAAA;IACD,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IAC9E,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACzC,IAAI,CAAC;QACH,IAAI,KAAK;YAAE,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAA;QACpC,OAAO,MAAM,IAAI,CACf,WAAW,CAAC;YACV,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;YACvD,KAAK;YACL,OAAO;YACP,OAAO,EAAE,KAAK;YACd,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,UAAU,EAAE,KAAK,IAAI,EAAE;gBACrB,IAAI,UAAU;oBAAE,OAAO,UAAU,CAAA;gBACjC,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC,CAAA;gBAC7E,OAAO,UAAU,CAAA;YACnB,CAAC;SACF,CAAC,CACH,CAAA;IACH,CAAC;YAAS,CAAC;QACT,IAAI,MAAM;YACR,MAAM,MAAM,CAAC,IAAI,CACf,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EACxB,GAAG,EAAE,GAAE,CAAC,CACT,CAAA;IACL,CAAC;AACH,CAAC,CAAA"}
|
package/dist/mcp/tools.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { McpServer } from "@modelcontextprotocol/server";
|
|
2
|
-
import { type PersonalMcpDefaults } from "@wirecat/cli-core/cli";
|
|
3
|
-
import type { Reach } from "../download.js";
|
|
4
|
-
import type { SessionStore } from "../session/store.js";
|
|
5
|
-
import type { MaxSession } from "./session.js";
|
|
6
|
-
interface Options {
|
|
7
|
-
store: SessionStore;
|
|
8
|
-
defaultLimit: number;
|
|
9
|
-
history?: boolean;
|
|
10
|
-
profile: string;
|
|
11
|
-
permission?: string[];
|
|
12
|
-
transcribeModel?: string;
|
|
13
|
-
warn?: (message: string) => void;
|
|
14
|
-
reach?: Reach;
|
|
15
|
-
embedders?: PersonalMcpDefaults["embedders"];
|
|
16
|
-
}
|
|
17
|
-
export declare const registerTools: (server: McpServer, session: MaxSession, { store, defaultLimit, history, profile, permission, transcribeModel, warn, reach, embedders, }: Options) => void;
|
|
18
|
-
export {};
|
|
19
|
-
//# sourceMappingURL=tools.d.ts.map
|
package/dist/mcp/tools.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAGL,KAAK,mBAAmB,EASzB,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAM3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAMvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAM9C,UAAU,OAAO;IACf,KAAK,EAAE,YAAY,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,SAAS,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAA;CAK7C;AAED,eAAO,MAAM,aAAa,WAChB,SAAS,WACR,UAAU,mGAWhB,OAAO,KACT,IAiPF,CAAA"}
|
package/dist/mcp/tools.js
DELETED
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
import { CliError } from "@wirecat/cli-base";
|
|
2
|
-
import { AI_SETTING_KEYS, itemOf, personalMcpCommand, personalMcpToolKey, personalMcpTools, registerPersonalMcpSurface, rememberAccount, stored, } from "@wirecat/cli-core/cli";
|
|
3
|
-
import { levelFor } from "@wirecat/cli-core/sends";
|
|
4
|
-
import { openStore } from "@wirecat/cli-core/store";
|
|
5
|
-
import * as v from "valibot";
|
|
6
|
-
import { maxAdapter } from "../adapter/max-adapter.js";
|
|
7
|
-
import { MAX_APP } from "../app.js";
|
|
8
|
-
import { resolveSettings } from "../config.js";
|
|
9
|
-
import { maxMessenger } from "../messenger.js";
|
|
10
|
-
import { migrateModerationPoints } from "../moderation/points.js";
|
|
11
|
-
import { assertReadable, withPermissionApproval } from "../permissions.js";
|
|
12
|
-
import { maxRecord } from "../record.js";
|
|
13
|
-
import { transcribe } from "../transcribe/index.js";
|
|
14
|
-
import { modelsDirectory } from "../transcribe/install.js";
|
|
15
|
-
import { DEFAULT_MODEL, speechModel } from "../transcribe/models.js";
|
|
16
|
-
import { legacyCheckTool } from "./legacy-check.js";
|
|
17
|
-
import { photoForMcp } from "./photo.js";
|
|
18
|
-
import { withShared } from "./shared.js";
|
|
19
|
-
const PASS = { check: () => { }, record: () => { } };
|
|
20
|
-
const READ = { readOnlyHint: true, destructiveHint: false, openWorldHint: true };
|
|
21
|
-
export const registerTools = (server, session, { store, defaultLimit, history, profile, permission, transcribeModel = DEFAULT_MODEL, warn = () => { }, reach, embedders, }) => {
|
|
22
|
-
const settings = () => resolveSettings({ profile, permission });
|
|
23
|
-
const adapters = new WeakMap();
|
|
24
|
-
const definitions = personalMcpTools(maxMessenger);
|
|
25
|
-
for (const name of Object.keys(definitions))
|
|
26
|
-
if (name.startsWith("topics_"))
|
|
27
|
-
delete definitions[name];
|
|
28
|
-
const rules = definitions.chats_rules_show;
|
|
29
|
-
if (rules)
|
|
30
|
-
definitions.chats_rules = { ...rules, key: "chats.rules.show" };
|
|
31
|
-
const keyOf = (name, definition) => name === "status" ? null : (personalMcpToolKey(name, definition) ?? "messages");
|
|
32
|
-
const writable = (name, definition) => {
|
|
33
|
-
const key = keyOf(name, definition);
|
|
34
|
-
if (key === null)
|
|
35
|
-
return null;
|
|
36
|
-
const own = settings();
|
|
37
|
-
assertReadable(own, key);
|
|
38
|
-
if (definition.annotations.readOnlyHint !== true && levelFor(own.permissions, key).level === "readonly")
|
|
39
|
-
throw new CliError("permission_error", `profile ${profile} does not let ${key} write`, { permission: key });
|
|
40
|
-
return key;
|
|
41
|
-
};
|
|
42
|
-
const inScope = (name, definition, work) => {
|
|
43
|
-
const key = writable(name, definition);
|
|
44
|
-
if (key === null)
|
|
45
|
-
return work();
|
|
46
|
-
if (key === "chats.moderate")
|
|
47
|
-
migrateModerationPoints(store);
|
|
48
|
-
return withPermissionApproval(key, () => key === "chats.moderate"
|
|
49
|
-
? withPermissionApproval("messages.delete", () => withPermissionApproval("chats.members.remove", work))
|
|
50
|
-
: work());
|
|
51
|
-
};
|
|
52
|
-
const remember = () => {
|
|
53
|
-
const account = store.readState().viewerId;
|
|
54
|
-
if (!account)
|
|
55
|
-
return;
|
|
56
|
-
try {
|
|
57
|
-
rememberAccount(MAX_APP, profile, account, process.env);
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
// A secondary local binding must not replace a successful send or prevent store cleanup.
|
|
61
|
-
warn("could not remember the account for local archive tools");
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
// cli-core asks for the account before a write; a profile that never logged in has none until LOGIN answers.
|
|
65
|
-
const knowAccount = async (client) => {
|
|
66
|
-
if (store.readState().viewerId === undefined)
|
|
67
|
-
await client.connect();
|
|
68
|
-
};
|
|
69
|
-
const adapterFor = (client) => {
|
|
70
|
-
const adapter = maxAdapter(client, store, reach, warn);
|
|
71
|
-
adapters.set(adapter, client);
|
|
72
|
-
return adapter;
|
|
73
|
-
};
|
|
74
|
-
const offered = Object.fromEntries(Object.entries(definitions).filter(([name, definition]) => {
|
|
75
|
-
const key = keyOf(name, definition);
|
|
76
|
-
const level = key === null ? "allow" : levelFor(settings().permissions, key).level;
|
|
77
|
-
return level !== "deny" && (definition.annotations.readOnlyHint === true || level !== "readonly");
|
|
78
|
-
}));
|
|
79
|
-
const direct = offered.messages_transcribe;
|
|
80
|
-
const picture = offered.messages_photo;
|
|
81
|
-
if (picture)
|
|
82
|
-
offered.messages_photo = {
|
|
83
|
-
...picture,
|
|
84
|
-
online: (adapter, args) => {
|
|
85
|
-
const client = adapters.get(adapter);
|
|
86
|
-
if (!client)
|
|
87
|
-
throw new Error("MAX photo preview requires its held adapter");
|
|
88
|
-
return photoForMcp(client, {
|
|
89
|
-
chat: String(args.chat),
|
|
90
|
-
message: String(args.message),
|
|
91
|
-
...(typeof args.index === "number" ? { index: args.index } : {}),
|
|
92
|
-
}, reach);
|
|
93
|
-
},
|
|
94
|
-
};
|
|
95
|
-
if (direct)
|
|
96
|
-
offered.messages_transcribe = {
|
|
97
|
-
...direct,
|
|
98
|
-
description: "A MAX voice message as text on this machine. Reuses a retained transcript from the same model; never downloads a model. Answers item { message_id, text, pending, via, model }.",
|
|
99
|
-
online: async (adapter, args, defaults) => {
|
|
100
|
-
const client = adapters.get(adapter);
|
|
101
|
-
if (!client)
|
|
102
|
-
throw new Error("MAX transcription requires its held adapter");
|
|
103
|
-
const message = String(args.message);
|
|
104
|
-
if (!/^\d+$/.test(message))
|
|
105
|
-
throw new CliError("validation_error", "MAX message IDs must be decimal strings");
|
|
106
|
-
const chatId = await client.chats.resolve(String(args.chat));
|
|
107
|
-
const model = speechModel(typeof args.model === "string" ? args.model : transcribeModel);
|
|
108
|
-
const record = maxRecord({ account: () => store.readState().viewerId });
|
|
109
|
-
try {
|
|
110
|
-
const kept = await record.transcript(chatId, message);
|
|
111
|
-
const text = kept?.source === model.id
|
|
112
|
-
? kept.text
|
|
113
|
-
: (await transcribe(client, chatId, message, {
|
|
114
|
-
model,
|
|
115
|
-
directory: modelsDirectory(),
|
|
116
|
-
record,
|
|
117
|
-
...(defaults.release ? { release: defaults.release } : {}),
|
|
118
|
-
})).text;
|
|
119
|
-
return itemOf({ message_id: message, text, pending: false, via: "local", model: model.id });
|
|
120
|
-
}
|
|
121
|
-
finally {
|
|
122
|
-
await record.close();
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
};
|
|
126
|
-
for (const [name, definition] of Object.entries(offered)) {
|
|
127
|
-
if (!definition._meta)
|
|
128
|
-
continue;
|
|
129
|
-
const metadata = { ...definition._meta };
|
|
130
|
-
delete metadata["anthropic/requiresUserInteraction"];
|
|
131
|
-
offered[name] = { ...definition, _meta: metadata };
|
|
132
|
-
}
|
|
133
|
-
const moderation = definitions.chats_moderate;
|
|
134
|
-
const level = levelFor(settings().permissions, "chats.moderate").level;
|
|
135
|
-
if (moderation && ["allow", "ask"].includes(level))
|
|
136
|
-
offered.chats_check = legacyCheckTool(session, {
|
|
137
|
-
store,
|
|
138
|
-
profile,
|
|
139
|
-
allowDangerous: false,
|
|
140
|
-
yes: true,
|
|
141
|
-
confirmSend: false,
|
|
142
|
-
scope: (work) => inScope("chats_moderate", moderation, work),
|
|
143
|
-
});
|
|
144
|
-
offered.status = {
|
|
145
|
-
title: "This server's profile and login",
|
|
146
|
-
description: "The profile, known account and offered writes. Reads local state only; never connects or prints a token.",
|
|
147
|
-
key: null,
|
|
148
|
-
input: v.strictObject({}),
|
|
149
|
-
annotations: { ...READ, idempotentHint: true },
|
|
150
|
-
local: async () => {
|
|
151
|
-
const account = store.readState().viewerId ?? null;
|
|
152
|
-
let token;
|
|
153
|
-
try {
|
|
154
|
-
token = store.tokenSource() ?? "none";
|
|
155
|
-
}
|
|
156
|
-
catch {
|
|
157
|
-
token = "unreachable";
|
|
158
|
-
}
|
|
159
|
-
return itemOf({
|
|
160
|
-
profile,
|
|
161
|
-
account,
|
|
162
|
-
kind: store.isBot() ? "personal + bot" : "personal",
|
|
163
|
-
token,
|
|
164
|
-
logged_in_here: store.hasLoggedIn(),
|
|
165
|
-
has_token: store.readToken() !== undefined,
|
|
166
|
-
has_logged_in: account !== null,
|
|
167
|
-
writes: [
|
|
168
|
-
...Object.entries(offered)
|
|
169
|
-
.filter(([, one]) => one.annotations.readOnlyHint !== true)
|
|
170
|
-
.map(([name]) => personalMcpCommand(name)),
|
|
171
|
-
],
|
|
172
|
-
permissions: settings().permissions,
|
|
173
|
-
});
|
|
174
|
-
},
|
|
175
|
-
};
|
|
176
|
-
const currentSettings = settings();
|
|
177
|
-
const ai = Object.fromEntries(AI_SETTING_KEYS.map((key) => [key, currentSettings[key]]));
|
|
178
|
-
registerPersonalMcpSurface(server, offered, {
|
|
179
|
-
command: "max",
|
|
180
|
-
messenger: maxMessenger,
|
|
181
|
-
defaults: {
|
|
182
|
-
limit: defaultLimit,
|
|
183
|
-
history: history ?? settings().keepFailedRuns,
|
|
184
|
-
guard: PASS,
|
|
185
|
-
settings: {
|
|
186
|
-
...ai,
|
|
187
|
-
profile,
|
|
188
|
-
searchCatchUp: currentSettings.searchCatchUp,
|
|
189
|
-
configured: ai,
|
|
190
|
-
shared: { ...ai, speechModel: transcribeModel },
|
|
191
|
-
get permissions() {
|
|
192
|
-
return settings().permissions;
|
|
193
|
-
},
|
|
194
|
-
},
|
|
195
|
-
env: process.env,
|
|
196
|
-
...(embedders ? { embedders } : {}),
|
|
197
|
-
},
|
|
198
|
-
around: inScope,
|
|
199
|
-
session: {
|
|
200
|
-
use: (name, work) => session.use(name, async (client, release) => {
|
|
201
|
-
await knowAccount(client);
|
|
202
|
-
let opened;
|
|
203
|
-
const account = {
|
|
204
|
-
provider: "max",
|
|
205
|
-
get account() {
|
|
206
|
-
const id = store.readState().viewerId;
|
|
207
|
-
if (!id)
|
|
208
|
-
throw new CliError("authentication_error", `no MAX account known for profile ${profile}`);
|
|
209
|
-
return id;
|
|
210
|
-
},
|
|
211
|
-
};
|
|
212
|
-
const adapter = stored(adapterFor(client), {
|
|
213
|
-
account,
|
|
214
|
-
store: () => (opened ??= openStore()),
|
|
215
|
-
warn,
|
|
216
|
-
events: () => { },
|
|
217
|
-
});
|
|
218
|
-
adapters.set(adapter, client);
|
|
219
|
-
try {
|
|
220
|
-
return await work(adapter, release);
|
|
221
|
-
}
|
|
222
|
-
finally {
|
|
223
|
-
remember();
|
|
224
|
-
if (opened)
|
|
225
|
-
await opened.then((store) => store.close(), () => { });
|
|
226
|
-
}
|
|
227
|
-
}),
|
|
228
|
-
},
|
|
229
|
-
withStore: (work, { name }) => session.local(name, async () => {
|
|
230
|
-
const account = store.readState().viewerId;
|
|
231
|
-
if (!account)
|
|
232
|
-
throw new CliError("authentication_error", `no MAX account known for profile ${profile}`);
|
|
233
|
-
const opened = await openStore();
|
|
234
|
-
try {
|
|
235
|
-
return await work(opened, { provider: "max", account });
|
|
236
|
-
}
|
|
237
|
-
finally {
|
|
238
|
-
await opened.close();
|
|
239
|
-
}
|
|
240
|
-
}),
|
|
241
|
-
withServices: (work, { name }) => session.use(name, async (client, release) => {
|
|
242
|
-
await knowAccount(client);
|
|
243
|
-
return withShared(client, { store, profile, warn }, async (services) => {
|
|
244
|
-
remember();
|
|
245
|
-
return work(services, async (read) => {
|
|
246
|
-
try {
|
|
247
|
-
return await read(adapterFor(client));
|
|
248
|
-
}
|
|
249
|
-
finally {
|
|
250
|
-
await release();
|
|
251
|
-
}
|
|
252
|
-
});
|
|
253
|
-
}, name === "mcp messages link" ? { reads: "store" } : { login: true });
|
|
254
|
-
}),
|
|
255
|
-
});
|
|
256
|
-
};
|
|
257
|
-
//# sourceMappingURL=tools.js.map
|
package/dist/mcp/tools.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import type { MaxClient } from "../client.js";
|
|
2
|
-
import type { GroupMember, Id, Message } from "../domain/models.js";
|
|
3
|
-
import { moderationPoints } from "./points.js";
|
|
4
|
-
import { type GroupRules } from "./rules.js";
|
|
5
|
-
export type Action = "report" | "delete" | "remove";
|
|
6
|
-
export type Outcome = "reported" | "done" | "planned" | "forbidden" | "declined" | "refused" | "failed" | "skipped";
|
|
7
|
-
export interface Finding {
|
|
8
|
-
/** A message, or somebody who joined. */
|
|
9
|
-
kind: "message" | "member";
|
|
10
|
-
rule: "blocked" | "invites" | "links" | "forwards" | "flood" | "newAccount";
|
|
11
|
-
personId: Id;
|
|
12
|
-
personName: string | null;
|
|
13
|
-
messageId?: Id;
|
|
14
|
-
action: Action;
|
|
15
|
-
}
|
|
16
|
-
export interface CheckRow extends Finding {
|
|
17
|
-
outcome: Outcome;
|
|
18
|
-
reason?: string;
|
|
19
|
-
/** What the owner types to do it by hand, on a row that was not done. */
|
|
20
|
-
command?: string;
|
|
21
|
-
}
|
|
22
|
-
export interface CheckInput {
|
|
23
|
-
rules: GroupRules;
|
|
24
|
-
messages: Message[];
|
|
25
|
-
joined: GroupMember[];
|
|
26
|
-
/** The owner's admins; the owner's own messages are known by `outgoing`. */
|
|
27
|
-
answerers: ReadonlySet<Id>;
|
|
28
|
-
now: number;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* What the rules say about what is new. Pure: nothing here talks to MAX. One finding per message —
|
|
32
|
-
* the rule with the strongest action — and one removal per person, whatever else they did.
|
|
33
|
-
*/
|
|
34
|
-
export declare const judge: ({ rules, messages, joined, answerers, now }: CheckInput) => Finding[];
|
|
35
|
-
export interface ActOptions {
|
|
36
|
-
chatId: Id;
|
|
37
|
-
rules: GroupRules;
|
|
38
|
-
/** `--allow-dangerous` on this run: what `flag` asks for. */
|
|
39
|
-
allowDangerous: boolean;
|
|
40
|
-
dryRun: boolean;
|
|
41
|
-
maxActions: number;
|
|
42
|
-
/** Asks the owner about one action; `undefined` when nobody is there to ask. */
|
|
43
|
-
confirm?: (finding: Finding) => Promise<boolean>;
|
|
44
|
-
}
|
|
45
|
-
/** The two things a check may do, whoever does them: the personal account, or a bot. */
|
|
46
|
-
export interface Moderator {
|
|
47
|
-
deleteMessage(chatId: Id, messageId: Id): Promise<void>;
|
|
48
|
-
removePerson(chatId: Id, personId: Id): Promise<void>;
|
|
49
|
-
}
|
|
50
|
-
/** The personal account: deleting is for everyone, removing leaves messages and cannot ban. */
|
|
51
|
-
export declare const personal: (client: MaxClient) => Moderator;
|
|
52
|
-
/**
|
|
53
|
-
* Does what the findings ask, as far as consent, the per-run limit and the guard let it. Stops
|
|
54
|
-
* acting at the first hourly-limit refusal: the rest is `skipped`, never tried.
|
|
55
|
-
*/
|
|
56
|
-
export declare const act: (moderator: Moderator, findings: Finding[], options: ActOptions) => Promise<CheckRow[]>;
|
|
57
|
-
/** One action in words, for a prompt or a confirmation form. */
|
|
58
|
-
export declare const describe: (finding: Finding) => string;
|
|
59
|
-
/** Whether acting on it waits for the owner's yes. */
|
|
60
|
-
export declare const needsConfirm: (rules: GroupRules, finding: Finding) => boolean;
|
|
61
|
-
export interface Gathered extends Omit<CheckInput, "rules" | "now"> {
|
|
62
|
-
/** The newest message read, ISO 8601: where the next check starts. */
|
|
63
|
-
until: string | null;
|
|
64
|
-
/** More history than one check reads. */
|
|
65
|
-
more: boolean;
|
|
66
|
-
notes: string[];
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* What is new in the group since `since`: its messages, who joined (from the service messages —
|
|
70
|
-
* `add` measured, `joinByLink` assumed to name the joiner or be sent by them), who asks to join,
|
|
71
|
-
* and who the admins are.
|
|
72
|
-
*/
|
|
73
|
-
export declare const gather: (client: MaxClient, chatId: Id, since: number) => Promise<Gathered>;
|
|
74
|
-
export declare const MAX_ACTIONS = 10;
|
|
75
|
-
/** Where each chat's next check starts, ISO 8601. */
|
|
76
|
-
export interface SavedPoints {
|
|
77
|
-
read(chatId: Id): string | undefined;
|
|
78
|
-
write(chatId: Id, at: string): void;
|
|
79
|
-
}
|
|
80
|
-
export declare const sessionPoints: typeof moderationPoints;
|
|
81
|
-
export interface Prepared {
|
|
82
|
-
chatId: Id;
|
|
83
|
-
title: string | null;
|
|
84
|
-
rules: GroupRules;
|
|
85
|
-
found: Gathered;
|
|
86
|
-
findings: Finding[];
|
|
87
|
-
/** `--since` was given: the saved point is not read, and not moved. */
|
|
88
|
-
explicit: boolean;
|
|
89
|
-
notes: string[];
|
|
90
|
-
}
|
|
91
|
-
/** Reads and judges; changes nothing. `since` overrides the group's saved point. */
|
|
92
|
-
export declare const prepare: (client: MaxClient, { points, profile, chat, since }: {
|
|
93
|
-
points: SavedPoints;
|
|
94
|
-
profile: string;
|
|
95
|
-
chat: string;
|
|
96
|
-
since?: number;
|
|
97
|
-
}) => Promise<Prepared>;
|
|
98
|
-
/** Acts on what `prepare` found, moves the group's saved point, and says what is left. */
|
|
99
|
-
export declare const finish: (moderator: Moderator, points: SavedPoints, prepared: Prepared, options: Omit<ActOptions, "chatId" | "rules">) => Promise<{
|
|
100
|
-
rows: CheckRow[];
|
|
101
|
-
notes: string[];
|
|
102
|
-
}>;
|
|
103
|
-
//# sourceMappingURL=check.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/moderation/check.ts"],"names":[],"mappings":"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"}
|